XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
DampirTBs

offline
Опыт: 28,311
Активность:
Программирование.
Ребят, а вот скажите плиз, я немного знаю си ++ мне будет легче понять джасс?
Старый 12.03.2006, 16:20
NETRAT

offline
Опыт: 83,712
Активность:
Элементарно
Старый 12.03.2006, 16:51
DampirTBs

offline
Опыт: 28,311
Активность:
Элементарно - значит будет легче? =)
Старый 12.03.2006, 16:55
exploder
iOS zealot
offline
Опыт: 19,394
Активность:
Джас всяко писался с Си так что, знать Си - лучший вариант
Старый 12.03.2006, 16:55
remal
нечто
offline
Опыт: 2,087
Активность:
Цитата:
Сообщение от exploder
Джас всяко писался с Си так что, знать Си - лучший вариант

обсалютно независимые вещи!

имхо, ближе к паскалю. да и дело не в том, на чём ты раньше писал, а в мозгах.
Старый 27.03.2006, 06:42
0pJl9lTa

offline
Опыт: 3,397
Активность:
А я немного знаю жас :)
мне легче будет писать на си ++??
Старый 27.03.2006, 12:23
FellGuard
Losyash
offline
Опыт: 39,547
Активность:
DampirTBs, начинал я лично с триггеров, си не знаю впринципе, нмного знаю паскаль. Не важно, на чём писался джаз, он вещь в себе. Довольно простая для изучения, притом. Недавно почитал мануал - даже человек, не сталкивавшийся с программированием в принципе поймёт.
0pJl9lTa, навряд ли :)
Цитата:
дело не в том, на чём ты раньше писал, а в мозгах
истинно.
Старый 27.03.2006, 13:36
Aspid

offline
Опыт: 8,361
Активность:
FellGuard Я барсик и паскаль изучаю. Разумеется джас проще. Просто в нем несть аспекты присущие только си. поэтому бывает иногда сложно понять.
Старый 09.04.2006, 05:06
Медведь
ФффыррфррфффФФфф!
offline
Опыт: 21,702
Активность:
Цитата:
Просто в нем несть аспекты присущие только си. поэтому бывает иногда сложно понять.

Угу. Я как-то больше привык к пасику, лого, форту (не фортрану а именно форту). Си мне несколько непривычен, как и джасс. Аналогично с разными скриптовыми языками, типа Явы и ЯваСкрипт.
Старый 09.04.2006, 05:11
Aspid

offline
Опыт: 8,361
Активность:
Медведь форт? никогда не слышал. Ява и ява скрипт это отдельный разговор.
они не похожи ни на один из языков объектно-ориентированного программирования (есть конечно некоторые похожие элементы но по большей части они самостоятельное направление)
помнится я брался когда-то за яву. так ниче и не получилось. "ниасилил многа букф" (c) Tonic
Старый 09.04.2006, 05:34
Медведь
ФффыррфррфффФФфф!
offline
Опыт: 21,702
Активность:
Форт - язык низкоуровенный но легкий, гибкий, и самое интересное - саморасширяющийся. работает только со стеком :(
Старый 09.04.2006, 05:50
FellGuard
Losyash
offline
Опыт: 39,547
Активность:
Алексей долго и упорно изъяснялся в одной из своих статей о преимуществах ассемблера как языка программирования :). Объясните нубу, почему все остальные его так боятся О.О
Старый 09.04.2006, 10:05
0pJl9lTa

offline
Опыт: 3,397
Активность:
FellGuard допустим что бы построить график функции там нада написать примерна 3-4 листа вордовских :)
Могет даже больше... кроме того он ооочень труден для изучения
Старый 09.04.2006, 11:05
ComotozNick
Активность: 666
offline
Опыт: 26,206
Активность:
Я ваще щас си изучаю и в джассе то и дело ошибаюсь ставя ; после строк.
Старый 09.04.2006, 11:28
NETRAT

offline
Опыт: 83,712
Активность:
После жасса в С непривычно условия в скобки вносить...
Старый 09.04.2006, 11:43
FellGuard
Losyash
offline
Опыт: 39,547
Активность:
NETRAT, ну тогда наверное проще условия в Джассе вносить в скобки - вроде бы, интерпретатору всё равно.
Старый 09.04.2006, 11:51
Алексей
Где кошачья мята?!
offline
Опыт: 26,303
Активность:
Цитата:
допустим что бы построить график функции там нада написать примерна 3-4 листа вордовских. Могет даже больше...
Выкладываю экзешник программы, строящей волновой пакет (набор родственных функций). Вот процедура, строящая график:
Код:
proc    DrawFrame,.hWin                 ;расчёт и вывод кадра
enter                                   ;с номером [dwFrame]
  ;очистка заднего буфера кадра (частичная)
 invoke PatBlt,[hCompDC],[rVirtWin.left],0,[rVirtWin.left],\
               [rVirtWin.bottom],PATCOPY
  ;вывод линии координат
 mov    ecx,[rVirtWin.bottom]
 shr    ecx,1                           ;/2
 push   ecx
 invoke MoveToEx,[hCompDC],[rVirtWin.left],ecx,NULL
 pop    ecx
 invoke LineTo,[hCompDC],[rVirtWin.right],ecx
 invoke MoveToEx,[hCompDC],[rVirtWin.left],[rVirtWin.top],NULL ;начало
  ;инициализация цикла
 xor    ecx,ecx                         ;счётчик цикла
  ;вычислим каждую точку вывода (цикл)
m_df_loop:                              ;начало цикла
 push   ecx
 fninit                                 ;инициализация сопроцессора
 fld    dword [siPos]                   ;считать позицию
 fld    dword [siStep]                  ;шаг
 fadd   st,st1                          ;сложить
 fstp   dword [siPos]                   ;записать в переменную

 fldpi                                  ;Pi->st0
 mov    [dwTmp],10                      ;10
 fimul  dword [dwTmp]                   ;st0=10*Pi
 fld    dword [siPos]                   ;наш x
 fmul   st,st1                          ;st0=10*Pi*x
 fsin                                   ;st0=sin(10Pi*x)
 fld    dword [siPos]                   ;st0=x,st1=sin(10Pi*x)
 fsin                                   ;st0=sin(x)
 fmul   st,st1                          ;st0=sin(x)*sin(10Pi*x)
 fld    dword [siPos]                   ;st0=x,st1=pi
 fimul  dword [dwFrame]                 ;st0=Pi*x*frame
 mov    [dwTmp],32
 fidiv  dword [dwTmp]                   ;st0=Pi*x*frame/100
 fsin                                   ;st0=sin(Pi*x*frame/100)
 fmul   st,st1                          ;st0=f(x,frame) - ура!

 fldz                                   ;st0=0,st1=yCounted
 fsub   st,st1                          ;st0=-yCounted
 fimul  dword [dwStretchY]              ;масштабируем
 fistp  dword [dwTmp]                   ;извлекаем с округлением
 mov    eax,[dwTmp]                     ;загружаем в eax
 add    eax,[rVirtWin.top]              ;получаем реальную координату Y

 fld    dword [siPos]                   ;грузим x
 fld    dword [siStretchX]              ;st1=x,st0=StretchX
 fmul   st,st1                          ;st0=x*StretchX
 fistp  dword [dwTmp]                   ;извлекаем округлённое
 mov    edx,[dwTmp]
 add    edx,[rVirtWin.left]             ;получается реальная координата X
 invoke LineTo,[hCompDC],edx,eax        ;вывод куска линии
 pop    ecx
 inc    ecx                             ;следующая итерация
jif     ecx,b,300,m_df_loop             ;конец рассчётного цикла
 fldz
 fstp   dword [siPos]                   ;X на начало
  ;вывод на передний буфер кадра
 mov    ecx,[rVirtWin.right]
 shr    ecx,1                           ;половина окна по x
 mov    edx,[rWinRect.right]
 shr    edx,1
 invoke StretchBlt,[hDC],edx,0,edx,[rWinRect.bottom],\
                   [hCompDC],ecx,0,ecx,[rVirtWin.bottom],SRCCOPY
return
Ну и где тут 4 вордовских страницы? Полторы от силы. Да и то - обратите внимание, что команды asm'а очень короткие, т.е. программа идёт "столбиком". Если смотреть объем текста программы не в страницах, а в Кб, то будет не намного больше паскалевской. К тому же волновой пакет построить сложнее, чем отдельную функцию. Зато смотрится куда красивее ;).
Цитата:
кроме того он ооочень труден для изучения
Но не потому, что сам язык трудный, а потому, что инфы нормальной нигде нет. А так - не сложнее Cи.
Ещё одна причина - повышенное время разработки. Создание программы на ASM'е требует на 10-15% больше времени, чем на Си. Поэтому применение asm'а редко бывает оправдано. Например, если бы War писали на asm'е вместо Си, то уменьшение его экзешников в 10 раз погоды бы не сделало, т.к. основной объём War'а приходится на данные (содержащиеся в MPQ). А вот времени потратили бы больше... Сейчас ведь 99,9% объёма программ занимают данные, а не код. А уменьшить размер данных asm, разумеется, не позволяет.
Старый 09.04.2006, 13:20
NETRAT

offline
Опыт: 83,712
Активность:
Однако, некоторый функции могли бы быстрее работать, хотя мало ли, может они догадались ассемблерные вставки использовать(этому я еще на первом курсе научился)
Старый 09.04.2006, 15:56
Алексей
Где кошачья мята?!
offline
Опыт: 26,303
Активность:
А вот насчёт скорости - это ещё один миф. Как ни странно, скорость asm-приложений, создаваемых программистами средней руки, почти не превышает быстродействия аналогичных сишных алгоритмов.
Особенно это касается тех программ, где основное время уходит не на обмен данными с памятью и не загрузка процессора вычислениями, а на работу с периферийными устройствами. Например, графический движок War'а от переноса на ASM не стал бы работать быстрее.
Но это - для "среднестатистических" программ. Просто в ASM больше возможностей для оптимизации.
Старый 09.04.2006, 20:43
NETRAT

offline
Опыт: 83,712
Активность:
На мой взгляд, используя асм, можно существенно сократить количество обменов с регистрами - например, если мы используем две последовательных операции над одним регистром, то нет необходимости результат первой закидывать стек, что делают функции любого другого языка... То есть на этом уже можно выиграть, я не говорю про тот яркий пример с циклом
Старый 10.04.2006, 10:35
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 10:30.