Добавлен , опубликован

Что это?

cJass - это еще одно расширение языка JASS, которое полностью совместимо с популярным vJass. Цель его создания - дать программистам еще больше возможностей по созданию простого и качественного кода. Основными направлениями являются:
  1. Макросредства и стандартная библиотека - избавляют от рутины, позволяя сконцентрироваться на основном коде.
  2. Упрощение синтаксиса - мы не хотим снова начинать спор, какой синтаксис лучше (блоки через begin & end или {}), и более того, мы не навязываем свою точку зрения - все конструкции cJass имеют JASS-style аналоги, тем не менее мы предоставляем выбор.
  3. Оптимизация карты - основная концепция cJass - это то, что все языковые конструкции не должны сказываться на качестве генерируемого кода. Также мы работаем над встроенным оптимизатором.

Как это использовать?

Просто скачайте дистрибутив (пароль для архива: cjass), распакуйте и запустите инсталлятор. У вас уже должен быть установлен Jass New Gen Pack.
Ознакомиться с возможностями можно, прочитав руководство пользователя cJass (off-line версия этого файла также имеется в директории программы).

Что-то не работает!

В настоящий момент мы активно дополняем язык всевозможными конструкциями, поэтому полноценная проверка синтаксиса пока отсутствует. Но мы всегда внимательно изучаем
bug-репорты, которые можно оставить в этой теме.

У меня есть идея: а не плохо бы...

Мы всегда рады выслушать Ваши идеи и предложения по внесению каких либо новых возможностей в язык, расширению стандартной библиотеки и т.д. Иногда мы даже действительно делаем то, что Вы нам предлагаете ;) Наша секция обратной связи ждет Вас!
И напоследок немного истории.
А история программы начинается на ресурсе wc3c.net, когда Vexorian, выслушав предложение от ADOLF'a сделать инструкции инкремента и декремента создает ветку с обсуждением синтаксиса... и благополучно забывает об этом. Тогда ADOLF подумал: "А неплохо было бы сделать свой парсер и включить в него всяких вкусностей". Изначально программа весила меньше заветных 9000 байт, распространялась по сети ICQ/Jabber и ее использовали несколько человек.
Однажды один из ее пользователей - Van Damm (впоследствии стал соавтором) сказал "это очень удобно!" (это было сказано про то, что можно вызывать функции без ключевого слова call) - и тогда мы решили, что если это удобно, почему бы не выложить программу на публичное обозрение. Благодаря zibade у нас появился сайт, где сразу стал отписываться Dark Dragon, который помог выявить львиную долю багов и внес множество интересных предложений.
С тех пор прошло много времени, мы сделали много новых версий, вес программы вырос в 3 раза (сейчас 26 Кбайт). На данный момент у нас есть планы, касающиеся многих конструкций, оптимизатора, и всего прочего.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
22
15 лет назад
0
library/endlibrary тоже работает. Другое дело, что после имени функции должны стоять скобки! Это ведь чёрным по белому написано в руководстве! Его кто-то читает вообще?
0
33
15 лет назад
0
[quote]ForGroup name{
}[/quote]
это векс делает, я пока над анонимными функциями не думал
0
13
15 лет назад
0
Van_Damm, "Затыкаемся" - значит АдикХелпер зависает!
И с чего это твой апдейтер стал распознаваться трояном?
Кстати, в момент зависания (на функции Zlo) опять вылез антивирус.
ADOLF, Я понимаю, что вперёд Векса анонимные функции делать чревато, но может быть всё просто:
sometype somefunction(int arg){
...
      TimerStart(t, 65.0, false,  function(){ BJDebugMsg("65 seconds later") }  )
...
}
Выносим анонимную функцию перед текущей, даём ей уникальное имя, подставляем это имя в выражение. - Всё. Этого достаточно.
Векс, правда, хочет , чтобы внутрь передавались локалки, чтобы использовались интерфейсы, ещё что-то. Но уже этого будет достаточно для начала.
0
33
15 лет назад
0
bb:ну мне сейчас надо баги отфиксить))) т.е. там их много... очень
насчет апдейтера - хз, ну вообще он даунлоадит... вд, а ты не думал мд делать сам .ехе апдейтера статичным, а даунлоадитть .длл, а потом ее через лоад либрари?
0
19
15 лет назад
0
function = nothing
дефаин с таким типом записи, умирает на убиистве векса.
0
22
15 лет назад
0
bb:Эм, странный дефайн вообще-то. Но вам ведь сказали, что вылеты ещё есть (
0
13
15 лет назад
0
narayan, Это типа "функция - ничто, юнит - всё" ?
Ну да. Делает из кода такую кашу, что cJass вешается. Хотя надо, конечно выдавать ошибку.
Нож - инструмент опасный. Можно и порезаться.
После такого, даже если в пользовательском коде всё хорошо (да хоть пусто), близовские функции рушатся.
0
12
15 лет назад
0
bb:у меня вопрос по оптимизатору - а является ли эта штука супер чудоштукой?))))
поясню немного:
допустим есть в карте несколько триггерных спелов, разумеется они регистрируются эквивалентными событиями с разными условиями
дак супероптимизатор объединяет их события в один триггер - где будет одна функция GetSpellAbilityId() и кучка ифоф?))
ну и соответственно с другими событиями...
если нет, то можно считать это предложением)
0
22
15 лет назад
0
Elf_Stratigo, нет офк
Van Damm добавил:
Пока оптимизатор только режет неиспользуемые функции, и всё.
0
19
15 лет назад
0
Мне это нужно было, чтобы восстановить возможности zInc частично, так скажем. Все равно неприятный. Надо исправлять (догадываюсь что лаг изза main и конфиг)
0
13
15 лет назад
0
Elf_Stratigo:
у меня вопрос по оптимизатору - а является ли эта штука супер чудоштукой?))))
поясню немного:
допустим есть в карте несколько триггерных спелов, разумеется они регистрируются эквивалентными событиями с разными условиями
дак супероптимизатор объединяет их события в один триггер - где будет одна функция GetSpellAbilityId() и кучка ифоф?))
ну и соответственно с другими событиями...
если нет, то можно считать это предложением)
Такого делать нельзя!
Автор карты может явно использовать подобные системы (они есть), но оптимизатор не может.
Разные триггеры могут использовать по нескольку разных событий, разные функции - фильтры, на их хэндлы могут быть привязаны разные данные. Всего этого просто так не учесть.
narayan:
Мне это нужно было, чтобы восстановить возможности zInc частично, так скажем. Все равно неприятный. Надо исправлять (догадываюсь что лаг изза main и конфиг)
Э-это как???
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.