Satyr, без всякого холивара

1) По проверке ошибок. Асм в этом плане, по большому счёту, не намного хуже Си, поскольку не так уж и много возможностей для совершения случайных ошибок: он не абсолютный ноль в части проверки ошибок. Например, там, где должно быть указано имя регистра и только оно, он не пропустит ни число, ни имя переменной, ни выражение, ну и т.д. Тем не менее, что с контролем там слабовато, с Вами трудно не согласиться. Применительно к системе команд ARM можно, например, забыть написать S в команде, которая должна менять флаги, и транслятор ни слова не скажет, поскольку запись остаётся корректной. Однако возможностей для подобных случайных (по невнимательности или там из-за случайного двойного нажатия клавы вместо однократного) в асме не больше, чем на сях. Ошибки же вроде неверного написания числовой константы или имени переменной вообще во всех языках программирования совершаются с одинаковой лёгкостью по понятным причинам. В общем, я не считаю, что асм в этом плане имеет сколько-нибудь существенно меньшую надёжность, чем Си. Но тут можно вопрос и с другой стороны рассмотреть: а зачем с одного ненадёжного языка (ассемблера) переходить на другой ненадёжный (Си)? Если уж переходить, то на реально надёжный (Паскаль, Ада и т.п.), благо, трансляторы для них, пусть и не шедеврального качества, имеются.
2) Производительность (моя, во всяком случае) на асме отнюдь не на порядок ниже, если речь идёт о низкоуровневых задачах. У меня основная часть времени (никак не меньше половины) уходит не на кодирование программы, а на продумывание, как её реализовать на алгоритмическом уровне, написание комментариев к подпрограммам (что делают, какие имеют входные-выходные данные и т.п.), а на всё это затраты времени одинаковы что для асма, что для ЯВУ.
3) Что Вы _вообще никогда_ не делаете подобных ошибок -- извините, не поверю, тем более, что в Си проблемы с надёжностью крутятся не только вокруг парочки =/==. Другое дело, что опытный программист подобные ошибки будет делать редко, а не через каждые 30 секунд, да и обнаруживать их будет достаточно быстро. Что касается меня, в первый раз я столкнулся с Си лет в 16, ну и после того, как полдня (буквально) -- из-за отсутствия опыта, естественно -- потратил на поиск как раз вот такой тупой случайной ошибки, сам себе сказал: "А какого, собсно, хрена, тебе надо выёживаться и изучать ещё один язык? Только потому, что А, Б и Ц считают, что он крутой? Но я-то прекрасно вижу, что всё, что я мог бы написать на Си, могу с тем же успехом написать на Паскале (который к тому времени я хорошо знал), который свободен от целого склада недостатков Си". В общем, тогда я на него забил. Потом лет пять приходилось писать почти исключительно на Си, поскольку работал в конторе, где именно его и использовали. Любви к нему мне это не добавило, скорей, наоборот, хотя случайных ошибок делал немного -- опыта поднабрался, естественно. Тем не менее, когда ушёл "на вольные хлеба", постарался поскорей забыть про работу на нём как страшный сон, и уже много лет ту же Визуал Студию если и запускаю, то исключительно для компиляции и, может, лёгкой модификации какого-нибудь примера, который нужно понять для себя. На ПК пишу исключительно на Дельфях (изредка используя асм), для микроконтроллеров -- пока только на асме.
4) Никакие параметры никакого компилятора не снимают проблемы Си и снять не могут, поскольку язык порочен изначально. В лучшем случае они помогают снизить их остроту и снизить число незамеченных ошибок (которые, тем не менее, на Паскале и тем более Аде невозможно допустить в принципе). Ну а "устаревшие языки" -- это немножко громко сказано. Сейчас, например, идёт подготовка к выпуску очередной спецификации Ады (последняя вышла в 2005-м, кажись).
5) Насчёт наличия эффективных компиляторов под разные платформы. Во-первых, кроссплатформенность лично меня не волнует абсолютно. Во-вторых, эффективность любого компилятора в плане качества генерируемого кода ниже моей личной эффективности: я без особых усилий и ухищрений пишу более компактный и быстрый код, чем выдают компиляторы (хотя не буду утверждать, что мой код оптимальный, поскольку с целенаправленной оптимизацией не слишком заморачиваюсь: в подавляющем большинстве случаев это попросту не требуется; кстати говоря, по этой причине мне, в общем-то, плевать, насколько эффективный код выдаёт компилятор: если будет что-то критически важное, я без всяких затруднений реализую это на ассемблере). В-третьих, для двух из трёх используемых мною в настоящее время платформ (IA-32 и ARM) компиляторы и Ады, и Паскаля есть (Ада входит в состав GCC, Паскаль -- в виде Фри Паскаля для ARM, у а на ИА-32 под Виндой -- он же либо Дельфи). Третья платформа -- AVR8, там пишу на чистом ассемблере, причём выбора нет из-за жёстких ограничений на память (в серийном производстве просто так не перейдёшь на другой микроконтроллер, поэтому приходится втискиваться в то, что заложили изначально).
6) Паскаль изучить можно за несколько часов. С Адой в полном объёме, конечно, посложней, но в достаточном для практической работы -- тоже вряд ли больше дня. А насчёт "причуды" Вы абсолютно неправы. Есть, например, задачи, где надёжность стоит абсолютно и безусловно на первом месте, и там речь идёт не о поиске абы каких "типа специалистов", коих пруд пруди (и все более-менее знают Си), а о действительно квалифицированных людях, коих многократно меньше, но которые без проблем адаптируются под требования проекта. Почему, например, ПО военного назначения в мире пишут главным образом на Аде (встречается и Паскаль -- например, на шведском истребителе "Грипен"; естественно, это не Дельфи, поскольку аппаратная платформа совершенно другая, но это не принципиально в данном случае)? Как раз из-за надёжности. Так что, если проект крупный и _серьёзный_, то всем вполне резонно выучить нормальный надёжный язык, а не использовать Си только потому, что "его все используют".
7) Насчёт переносимости я уже написал: _мне_ это абсолютно без разницы. Другое дело, что чисто прикладное ПО, не имеющее сколько-нибудь жёстких связей с используемой аппаратурой (максимум -- минимальные требования к разрешению экрана, свободному объёму на диске и т.п.) я бы не стал писать целиком на ассемблере (другое дело, что я писал бы не на Си, а на Паскале/Аде). А вот системное ПО (ядро ОС, драйверы и т.п.), а также прикладное, но жёстко связанное с используемой аппаратурой (какие-нибудь промышленные датчики, например) вполне можно делать непереносимым: во-первых, при переезде на другую платформу их всё равно придётся весьма существенно менять, так что переносимость там весьма и весьма относительна по-любому, а во-вторых, от эффективности этих компонентов зависит эффективность вычислительной системы в целом (как бы гениально не было написано прикладное ПО, оно будет тормозить, если ОС отжирает на себя половину ресурсов), поэтому можно и вложить побольше усилий и времени в создание действительно эффективной системы -- если, конечно, создаётся не нечто одноразовое.