Почему многие пишут только на асме?
Когда-то давно это было вполне допустимо и считалось признаком мастерства. Во времена 32-битных систем это было вполне оправданно, но с приходом 64-битных, ассемблерщикам пришлось не сладко.
Разумеется, основные опкоды просто расширили DWORD до QWORD и стали занимать места на 4 байта больше. В 64-битном мире больше не нужны релоки, все относительные адреса помещаются в 4 байта!
Я постараюсь перечислить основные преимущества Си: как оказалось есть множество людей, которые не могут пересесть на новую лошадку, в силу страха неизвестного или предубеждений.
- Легкая компиляция как в 32 так и 64 битных файлов. Зачастую достаточно просто переключить режим сборки и если код написан правильно, он будет одинаково хорошо работать и там и там. Единственное ограничение - ассемблерные вставки, для 64 битных сборок их надо делать в отдельном файле.
- Больше хидеров. Каждый кто писал на асме знает - перегонять хидеры из msdn - неизбежное зло. На си они поставляются вместе с sdk или даже visual studio.
- Больше исходников. В силу того, что написав приложение используя только стандартную библиотеку си - оно будет кросплатформенно, исходников на си огромное множество. Больше не придется выдирать бинарные куски или переписывать алгоритмы с других языков.
- Классы, у Си с плюсами есть эта классная фишка. Они могут казаться чем-то подозрительным, но когда вы посмотрите как они выглядят в ассемблированном виде вы успокоитесь. Классы абсолютно не избыточны и не тормозят работу программы, но ускоряют разработку и облегчают понимание кода.
- Оптимизация. Коронная фишка ассемблера. Времена ms-dos давно прошли, никто не заметит лишнюю пару сотен процессорных тактов, да и ключи оптимизации компилятора позволят сильно срезать углы! На хабре обсуждалось какие ключи дают лучшую производительность, но скажу по секрету, что лучшую производительность даёт лучший алгоритм.
- Дебаг. Снова ставить int3 и ловить исключение в Olly? Нет, отладка в VisualStudio позволяет идти прямо по сишному коду, заглядывая в значение переменных, раскрывая вложенные структуры и даже подсматривая ассемблерный код!
- Скорость. Всё вышеизложенное приводит к ускорению рабочего цикла, от задумки до релиза. Ты думаешь о действительно важных вещах, а не о том какой выбрать регистр.
P/S Если вы тоже прошли долгий путь от "Пишу всё на ассемблере" до "Пересел на си", расскажите о нём в