> Да почему? Тормозят и глючат просто изумительно. Особенно если гамнокодом накормить.ответ на этот вопрос дает замечательный мультик, https://www.youtube.com/watch?v=vIZVWVJ4_9M
Эйййй, двое из ларца .... :))))))))) загибайте
> В ассемблере нет штатных средств декларирования намерений, нормальной типизации, средств
> организации структур данных и проч.
типы, структуры это же формальные понятия, а машина работает с понятием плоской последовательностью. Что значить создать массив из N элементов с точки зрения асм или любую другую структуру? Что из себя представляет тот же C++-ный код в асм листинге? Что мешает писать на асм так же как и генерит компилятор? Компилятор лучше сделает? - не согласен.
> Проблема в том что
> 1) Это не наглядно и нет хорошей декларации структуры которая у меня
> в мозгу.
Так для наглядности я могу нарисовать квадратиков прямоугольников, стрелочки указать, подписать блоки и т.д. куда нагляднее будет, чем сидеть и вчитываться в код какого-то непонятного мне формального языка. Да, все что вы говорите легче псевдокодом описать, а дальше сесть и написать инструкции к исполнению.
> 2) Остальные не телепаты чтобы все это знать.
Допустим, человек умеет читать код (знаком с синтаксисом), но не знает предметную область, поможет ли ему "читабельность" кода? Промолчу про то, что "читабельный" код якобы не нуждается в комментариях.
> 3) А иногда хочется и
> вещи посложнее хелловорлдов делать.
Так сначала надо предметную область изучить, чтоб потом кодить. К вопросу "читабельности", всякая ли прочитанная книжка нам ясна с первого прочтения? Но не поняв прочитанного, мы грешим на автора. Усердие надо прикладывать, поэтому рекомендую программистам в первую очередь заниматься обратной разработкой, а после программировать на формальных языках.
> 4) Никакой верификации что фактические действия совпадают с намерениями - нет. Это
> ведет к багам на манер яваскриптеров, когда можно в принципе замесить
> бананы, гвозди, яблоки и что-то еще, сразу может даже и не
> упадет, а откуда оно потом вон тот бред через полчаса счета
> берет - поди догадайся вообще. Все тулсы для формальной верификации в
> жестком пролете.
исполнение и отладка, формальные языки вообще отвергают понятие отладки, хотя у них есть понятие "покрытие тестами".
> 1) Это не описывает допустим прототип функции и что я его правильно
> вызываю.
прототипы, соглашение об вызовах все это формальные понятия.
> 2) Это не описывает истинный характер данных.
плоская модель памяти, конечная, вон Тьюринг описывал бесконечную ленту, что по вашему мне мешает реализовать алгоритм с понятием о бесконечной ленте?
> 3) И кстати это все не портабельно а писать код каждый раз
> с ноля под разные процы мне таки лениво.
Лениво? а как же усердие? Знаете почему когда берут в ученики в Шаолиньский монастырь первые пол года ученик с метлой в руках подметает дворы, носит воду и т.д.? То что код должен быть написан под все архитектуры это очевидность, а то что код должен быть написан на всех языках - маразм?
> 4) И кстати на том же сишке вполне реально затестить сишный алго
> на компе, с мощной инструментацией, типа ubsan/asan/etc под fuzzer'ом, и 1
> в 1 его на МК какой перетащить потом, будучи более-менее уверенным
> в этом блоке кода, что он способен пережить взаимодействие с враждебным
> внешним миром, получая оттуда любую мыслимую труху.
баловался с МК на сях и ручками выставлял биты в регистрах, спрашивается зачем мне С, если тоже самое я делаю на асм?
> Я могу даже вообще не знать этот код и подсистему,
> но при этом за весьма обозримое время локализовать проблему
а с проблемой ведь сталкиваемся не при прочтении "читабельного" кода, так ведь?
> ...а еще я билдую ядро линуха под штук пять разных архитектур. На
> асме я бы зассал кодить пять раз одно и то же,
> скажем прямо.
я тоже может и зассу с 5-ю на улице драться, а есть же люди которые четверых по углам раскидает, а пятый сам себе угол искать будет. Необходимо усердие, плохой я программист когда отказываюсь писать под ту или иную архитектуру? Должен ли я писать код под архитектуру которую слабо знаю?
> Есть глобальная навигация, есть локальная. Я в это умею, поэтому при возникновении
> проблем, я вполне себе осознаю сначала грубо из какой подсистемы трабл,
> а потом уже более детально изучаю так или как и почему
> это там образовалось.
почему навигация? описанный вами процесс - отладка (пусконаладка), ну и не стоит забывать про профилирование, ибо внесенные изменения после обнаружения трабла могут регрессивно повлиять.
> А уж сделать на нем что-то типа хотя-бы сишного struct вообще не особо
> вариант.
а что представляет из себя struct в плоской памяти?
> Я про структурированность программы и данных с которыми она работает. В ассемблере
> для этого практически нет средств.
в асм есть работа с плоской памятью, ваши структуры на сях представлены так же в плоской памяти. а вот в С++ в структурах есть методы, классы какие-то, а в сях нет и т.д. Все это смахивает на один анекдот, Вася готовится к экзамену по зоологии и выучил только раздел про вшей, приходит на экзамен и попадается билет про рыб. Начинает рассказывать про рыб, делая резкий переход на тему вшей, "а если бы у рыб была бы шерсть, то у них бы завелись вши, а вши это ......"
> // NB я умею прогать на штуках 5 разных асмах, правда x86
> знаю весьма базово, ибо мерзость
лично для меня всякие макро асмы мерзость, и попытка сделать их подобием формальных языков высокого уровня. Да легче на формальном языке высокого уровня писать, чем на асм кишащий макросами и всеми конструкциями которые реально не отражены в архитектуре.