Цитата(Ruslan1 @ Oct 12 2011, 00:58)

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

Да разве это работа была, сдаешь бланки (или колоду правленную)- на следующий день забираешь 3 метра распечатки с ошибкой.... А терминал свободный найти только в выходные можно было.... И свободный перфоратор тож фиг найдешь чтоб перфокарту заменить, спасибо дубликатор был. Я-то баловался, а люди так работали..... Уважаю.
С перфокартами чуть-чуть поработал, хотя мы с Вами практически ровесники. Однако ещё в школе (с 15 лет) работал фактически системщиком на СМ-1420 (де-юре, естественно, техником-программистом: в СССР занять инженерную должность невозможно было, не имея диплома), а затем несколько лет на ЕСках и системщиком, и электронищком...
Цитата
1) Ассемблер имеет более читабельный код чем си
Ну, именно так я не писал. Я писал о возможности ужасно запутать код на Си, в чём его превосходят только Си++ (в силу своей большей сложности) и Брэйнфак (ну, тут, как говорится, без комментариев, но понятно, что его я в шутку упомянул). На самом деле, если писать на Си аккуратно, не пользуясь его свободой, программа, конечно же, будет на нём более читабельной. Однако немаловажную роль играют комментарии, благодаря которым читабельность ассемблерной программы можно существенно поднять (ведь главная сложность в восприятии программы на ассемблере -- понять, что она делает в "глобальном" смысле, а не каждую отдельную инструкцию; в программах на ЯВУ это обычно намного очевиднее, если не валить множество действий в одну кучу -- чем, кстати, злоупотребляют программисты на Си, но это уже вопрос стиля). Хорошо написанная ассемблерная программа вполне себе читабельна и сопровождабельна (и уж точно легче, чем как попало написанная на Си). В общем, хотя низкая читабельность ассемблера и является реальным недостатком, это отнюдь не что-то такое фатальное, делающее его практически непригодным и т.д. и т.п.
Цитата
2) скорость написания на ассемблере немногим уступает скорости написания на ЯВУ.
А вот это я действительно утверждаю, но отнюдь не в таком категоричном виде. Здесь программа -- это некий сфероконь в вакууме, но ведь от рода задачи существенно зависит и скорость её написания на том или ином языке. Возьмите, например, программу, которая считает некие экономические данные (зарплату, например), а потом печатает огроменный отчёт на бумаге (платёжную ведомость). И ненавистный мне Си, и любимые Паскаль и Ада, и древний Кобол -- все являются языками высокого уровня. Однако, несмотря на все недостатки Кобола, именно он наилучшим образом подходит для решения этой задачи средствами самого языка (не привлекая сторонние библиотеки, программы и т.п.), поскольку в нём имеется свой генератор отчётов. Ну а на классическом Фортране писать подобную задачу -- это вообще ужас (мало того, что никаких отчётов он генерировать не может, так ещё и не имеет записей, удобных файловых операций, управляющих конструкций и т.п. -- заточен же под научно-технические расчёты).
То же самое касается и ассемблера. Есть задачи, где его использование действительно тормозит работу во многие разы и даже десятки раз, однако есть и такие, где применение ЯВУ не даёт действительно значительного выигрыша во времени создания программы. Плюс, как я писал, это сильно зависит от системы команд, ведь то, что на VAX-11 можно сделать одной командой, на ARMе (отнюдь не самая плохая система команд!) может потребовать целой подпрограммы. Соответственно, какую-нибудь задачу, сводящуюся к куче действий вроде "проверить бит -- установить бит", на Си можно написать за 1 час, на ассемблере VAX-11 -- за час с четвертью, а на ARMе -- уже за два-три часа. Программу, насыщенную сложными расчётами, на Си можно написать за час, на ассемблере VAX-11 -- за 5-10 часов, на ARMe -- пару дней убьёшь точно (и то, если уже есть библиотека для вещественной арифметики или имеется соответствующий сопроцессор, а если всё это самому писать и отлаживать... ну, ещё пару дней -- если алгоритмы знаешь).
Цитата
Угу, таки не в 2-3 раза, а уже в 50. Но поверьте, писать простейшую базу данных с индексированием на сях может быть даже не в 50, а в 100 раз быстрее. А уж если менять что-то в структуре или методах доступа к записям- отрыв от ассма будет еще больше. Я писал на асме один раз такое (да еще с логом статистики)- на всю жизнь воспоминания остались
О чём и речь: задачи разные бывают, а посему нечего ассемблер категорически отметать. Я вот с ужасом вспоминаю программу расчёта зарплаты для госучреждений вроде детсадов -- писали горячие литовские парни на ассебмлере, а когда Союз рухнул и разрядности полей экстренно поползли, то такое началось... Интересно, какой идиот решил писать экономическую задачу на ассемблере, когда имелся вполне вменяемый компилятор Кобола?..
Цитата
А матфункции- фигня, я как-то писал умножение-деление-тригонометрию, легко и непринужденно, книжки есть с алгоритмами, только закодировать правильно нужно было
Ну, не такая уж фигня, особенно если означенных книжек под рукой нет... Хотя по-любому проще, чем СУБД

Цитата
Про преславутое дрыгоножество и рассчет тактов - что, реально можете рассчитать на ARM по тактам с включенным кэшем и незапрещенными прерываниями количество циклов и его гарантировать? Уважаю...
Вообще, эта задача (но при запрещённых всё же прерываниях) решаемая даже при наличии кэша -- хотя гемор тот ещё будет, конечно. Однако существуют и АРМы без кэшей, где подобное решается почти столь же просто, как на AVR8 (ATtiny и ATmega всякие; думаю, со знакомыми Вам PICами та же история).
Цитата
Уж не помню когда последний раз вообще такты считал ручками, обычно для дрыгоножества с точными времянками есть аппаратная периферия, да и не может дрыгоножество быть главным, тогда уж плисину проще приклеить
Не всегда такая возможность есть...
Цитата
Сами себе противоречите. Если бы сказали "Есть задачи которые конкретный программист не может решить на ЯВУ" -я бы согласился. Потому что другой программист может быть и может, кто его знает
То же дрыгоножество на ЯВУ решить невозможно в принципе, как и куча других низкоуровневых вещей. Другое дело, что обычно можно обойтись маленькими ассемблерными вставочками, а всё остальное писать на ЯВУ, но, тем не менее, знать ассемблер для этого необходимо.
Цитата
неа, описатель volatile понимается любым компилятором иначе, чем Вы думаете. Думаю, отсюда и наезды на компилятор- вы друг друга не поняли.
Нет, я абсоютно точно знаю, что означает volatile. Там самая настоящая ошибка компилятора. Кейловский Си тот же код мало того, что чуть ли не вдвое компактнее сделал, но ещё и без этой двойной записи по одному и тому же адресу. А на Си мне лет пять писать пришлось -- до сих пор с содроганием вспоминаю (хуже только вышеупомянутый расчёт зарплаты на ассемблере).
Цитата
Если бы вы сказали что знание ассма более полезно чем умение стоять на голове- я бы согласился. Про необходимость- категорически против. Если совсем приспичит- откроет описание асмовских команд и построчно разрисует нужный кусочек. Но ни Вы ни я не можем предсказать на какой архитектуре ему это понадобится, то есть мнемоники зубрить- гиблое дело.
Зубрить -- абсолютно с Вами согласен. Но, не изучив ассемблер, нельзя вот просто так взять, открыть справочник и начать писать. Вот когда изучил хотя бы один на хорошем уровне, перейти на 95% других особого труда не составит.
Цитата
Лично мне жаль тех лет, которые я убил потому что не использовал ЯВУ на МК. Мог же быстро написать- и все, ан нет, сидел и корпел на ассме. А ценилось, что 10 лет назад, что сейчас, скорость получения продукта, а не его внутренняя вылизанность, от которой после двух-трех эктренных кординальных правок может ничего не остаться
От задачи зависит. У нас в конторе, например, заложили в проект весьма мелкую АТмегу с 16 килобайтами флэш-памяти, а задача всё разрасталась и разрасталась (аппетит приходит во время еды, как известно). В конце концов от этого флэша осталось меньше 200 байт. Писал бы на сях -- так и не выпустили б финальную версию продукта без кардинальной переделки железа. Что стратегический просчёт тех, кто такое решение принимал, оно понятно (меня тогда ещё в этой конторе не было, и почему именно её избрали, я понятия не имею), но ситуация, тем не менее, вполне жизненная и реальная.
Кстати говоря, на сроках применение ассемблера не сказалось ровным счётом никак: грубо говоря, я кодил не больше одного рабочего дня, а потом буквально неделю, а то и больше, продолжались полевые испытания очередной версии, потом опять ко мне на день -- и снова испытания, и т.д. Править же в полевых условиях по-любому было бы нереально: во-первых, они действительно полевые, аккумуляторов для ноутбука не напасёшься, да и проблематично работать на жаре или в мороз; а во-вторых, результаты испытаний обычно требовали достаточно длительного осмысления и обсуждения, что выливалось потом в очень краткий период доработок.
Цитата
Дурак был и никто не подсказал вокруг (интернета толком тогда и не было, а сам до такой крамольной мысли пользовать ЯВУ на МК не сразу додумался).
Возможно, у Вас столь негативное отношение к ассемблеру сложилось из-за того, что использовали его там, где это действительно не нужно и неоправданно было. Плюс, возможно, сам язык неудобный (например, у PICов на первый взгляд мне он показался ужасным, но, поскольку не вникал, то и критиковать не буду).