Что лучше: Ассемблер или Языки высокого уровня?

Ассемблер
9
Нейтральная
сторона
10
Языки высокого уровня
22
ASM - первородный язык, созданный в кузнице опкодов
Прежде чем писать комментарии или выбрать сторону вы должны авторизироваться!
HLL - выбор для экономии времени на разработку и обучение

16-04-2009 21:24 +1

Ассемблер был, есть и будет. Во всех языках высокого уровня (кроме разве что предназначенных для web - программирования) есть возможность вставки ассемблерного кода.

3 комментария
aalnd 22-04-2009 18:46 +1

box, возможность ассемблерных вставок безусловно полезна. но вот кроме как вставками асм сейчас почти не юзается (исключение - микроконтроллеры), ибо прирост в скорости не окупает затрат времени при разработке.

asmer 24-04-2009 04:48 +1

box, возможность есть. Реальной потребности - нет

Tro 07-06-2014 13:09 0

box, В Java их тоже нет, что логично.

17-04-2009 02:16 +1

Ассемблер это набор кирпичей, цемента и разных строительных материалов а HLL это готовые строительные блоки. Я строю свои дома из кирпича, всегда точно рассчитываю нужное количество цемента. Мой дом будет иметь такую форму которую я захочу и если я все правильно спланирую то закончу строительство быстрее чем другой человек свое из строительных блоков. Мне не нужно боятся что мой дом рухнет из за некачественных строй-материалов, ведь мои кирпичи и цемент делают компании с большим опытом и это именно те компании которые одобряли фундамент и поставляют мне инструменты. Плюс ко всему, благодаря знаниям полученным от низкоуровневого строения домов, я могу обучится практически любому языку программирования - главное для меня понять как его разработали.

6 комментариев
savraska 19-04-2009 00:17 +2

ivan0x32, Если у вас полно времени и вдохновения, то конечно флаг в руки, однако в реал ворлде обычно требуется за минимальное время созать что-то стандартизированное :)

ivan0x32 22-04-2009 15:03 0

savraska, Ну тот кто создает что то стандартизированное на самом деле кодер, а не программист:) Или по крайней мере работает им.

savraska 22-04-2009 18:35 +1

ivan0x32, Согласен, но таковы требования времени, никто не будет сидеть и ждать когда вы наваяете несколько сот строчек кода, вместо того, что бы сделать это 3мя-4мя :)

aalnd 22-04-2009 18:52 +1

ivan0x32, ну даже если пишешь что-то нестандартизированое, чем-то стандартизированым пользоваться придётся (хотя бы системные вызовы) - и в данном случае, по-моему, высокоуровневые языки как раз лучше, так как избавляет от необходимости заморачиваться на рутине

ivan0x32 23-04-2009 10:32 0

aalnd, Некоторые вещи кстати только на ассемблере можно написать. А по поводу рутины - если разработать свой фреймворк, то она просто отпадает. Под системными вызовами вы имеете виду вызов функций WinAPI? ZwQuerySystemInformation

и invoke ZwQuerySystemInformation - вроде бы ничем особо не отличаются, на одно слово больше, на одно меньше.

В конце концов есть макросы - они и избавят от рутины:)

Вот кстати в FASM есть особый инклуд - Win32ax. Он парсит такие строки как

invoke MessageBox,HWND_DESKTOP,"Hello world","HW",MB_OK

Т.е. отпадает надобность каждый раз все прописывать самому в секции данных.

aalnd 28-04-2009 10:06 0

ivan0x32, "если разработать свой фреймворк" - тут не поспоришь. только вот его разработка и доведение до нормального уровня - занятие долгое и редко когда оправданное. Я не спорю, что знание асма (= представление о том, как работает железо) нужно - я лишь считаю, что в реальных условиях его использование крайне редко оправданно - выигрыш в скорости по сравнению с С/С++ в 99.9% случаев неощутимый, а вот затраты времени на разработку - явно больше.

"Под системными вызовами вы имеете виду вызов функций WinAPI?" - в частности да. Но вот интересно, сколько времени потребуется, чтобы ваш код портировать на линукс/мак?

17-04-2009 02:17 0

Кстати стоит вспомнить что CGI-скрипты можно так же писать на ассемблере.

0 комментариев
17-04-2009 20:39 +1

Хоть некоторые языки высокого уровня и удобнее для определенных целей, но ассемблер все же логичнее и приятнее.

0 комментариев
19-04-2009 00:09 +2

Весомым аргументом в пользу ASM-а будет так же тот факт что Дональд Кнут в своей книге примеры писал именно на ассемблере.

1 комментарий
asmer 24-04-2009 04:53 +1

ivan0x32, Нихрена это не весомый аргумент. Сам люблю асм, но он уже не нужен :).

Даже под микроконтроллеры пишут на Си. И намного дешевле проапргейдить железо чем переписать с Сей на асм.

И не забывайте о развитии и поддержке. И о скорости разработки.

Факт в том, что разработка стоит дорого. Час работы программиста - стоит дорого. А мегабайты ОЗУ и гигагерцы процессора - намного дешевле.

Тот же Кнут писал о том, что морочится с оптимизацией надо только после того, как всё работает.

16-04-2009 20:33 +2

Логика и структура на языках высокого уровня более очевидна и ясна. Если не гнаться за скорость, то здорово можно сэкономить время, так как на отладку уйдет меньше времени.

11 комментариев
box 16-04-2009 21:21 +1

silent, На любом языке можно написать код, логика и структура которого будет непонятна. На языках высокого уровня это сделать проще чем на Ассемблере

ivan0x32 17-04-2009 02:07 +1

box, Silent в корне несогласен с вашим мнением. Вы имхо путаете соленое с мокрым. Логичность и структурированность кода лежит на плечах программиста. HLL это всего лишь совокупность наработок и часто реализуемых решений. Классы , структуры - это формирования в памяти, указатели, делегаты - адресаторы. Кстати "Очевидность" и простота этих решений на ассемблере гораздо выше чем на HLL, ведь в ассемблере вы работаете напрямую с памятью.

aalnd 22-04-2009 18:49 +2

box, Ну не сказал бы, всё-таки разобраться в незнакомом коде на АСМе как правило сложнее, чем в коде на С++/Жаве/Питоне/etc. по ассемблерному коду легче понять, как именно работает программа на железе, но вот разобраться в логике довольно сложно

box 22-04-2009 21:57 +1

aalnd, Точно также человеку привыкшему к одному языку высокого уровня, будет сложно разобраться с кодом, написанных на других языках.

А средства организации логики программы в Ассемблере очень просты для понимания.

ivan0x32 23-04-2009 10:36 +1

silent, Согласен с мнением Box, добавлю лишь то что ассемблерщику будет легче понять не свой язык, т.е. тот же С++ Python итд.

asmer 24-04-2009 04:57 0

silent, box, ivan0x32, т. е. в среднем вы считаете читабельность кода на асме и кода на Си/любом другом алгоритмическом языке одинаковой, да?

Возьмите if с более-менее сложным условием и напишите аналог на асме. Один if превращается с простыню j*. И так со всем.

box 25-04-2009 00:21 0

asmer, В современных Ассемблерах (например MASM32) есть макросы if, else, switch, case.

Их использование ничем не отличается от аналогов в языках высокого уровня.

asmer 28-04-2009 02:58 0

box, Осталось добавить структуры данных, циклы, функции и получить С.

Когда писал под Tasm не юзал всю эту дрянь, ибо не Ъ(даже не знаю, можно ли юзать такие макросы под тасм). А сейчас не ясно, нафиг оно вообще надо. Выпендриваешься асмом - пиши все командами. Юзаешь if, else, switch - возьми язык высокого уровня и не выпендривайся.

aalnd 28-04-2009 10:00 0

box, Не сказал бы. Если код написан через задницу, то понять его трудно независимо от языка. А вот логику нормально написаного кода можно понять без проблем, даже если язык не разу не юзал (пришлось однажды в отсутсвие инета и манов разбираться в одном куске кода на Руби при том, что до этого я руби в глаза не видел).

box 29-04-2009 22:09 0

asmer, Уберите из С библиотеки - останется всё тот же Ассемблер.

Вообще, у языков высокого уровня перед Ассемблером только одно преимущество: СТАНДАРТИЗОВАННЫЕ библиотеки.

В Ассемблере тоже полно библиотек, реализующих все необходимые функции, но единого стандарта на них нет.

А остальные преимущества ЯВУ перед Ассемблером - это миф.

aalnd 29-04-2009 22:45 0

box, Ну ничего неожиданного в этом нет, ведь всё в итоге и АСМ, и другие языки приводится к машинным кодам, и принципиальной разницы получить нельзя. Именно СТАНДАРТИЗИРООВАНЫЕ библиотеки и делают высокоуровневые языки высокоуровневыми. А так как для не-скриптовых языков разницы в поризводительности почти нет, то выгода от использования АСМа остаётся лишь в *очень* редких случаях