au> Сергей:au> Вы посмотрите на название темы и учитывайте этой контекст. Я его тут учитываю. То что можно выдумать нерешаемую задачу, или нерешаемую определённым методом задачу — это ёжику ясно. Я вот выставлю требование написать мне баг-фри софт, и послушаю ваших интевьюеров, как они будут выкручиваться.
Они немного в курсе.
Один из них, например, по совместительству начальник крупного центра в Карнеги-Меллоне (не вчерашний, но из той же конторы). Собственно, если все пройдет хорошо я озвучу имя, надеюсь, будет звучать убедительно.
Что, впрочем, вряд ли - интервью там зверские.
au> Насчёт реальных проектов. У вас они одни, у других другие, и цели и приоритеты в каждом разные. То что важно для вас, не имеет значения для других, и наоборот. Удивляюсь что вы этого не понимаете.
Кто ж не понимает - да, есть проекты, где важен ассемблер. Скажем, в 1 % всех проектов.
au> Насчёт отношения к делу. Увы, оно имеет свои последствия. И последствия эти — паталогически некачественные продукты. Опять же, для кого-то безошибочная компиляция — уже качество; для кого-то нужна гарантия баг-фри, или все в сад.
Я не понял, в чем связь баг-фри и ассемблера?
au> Насчёт превосходства компилятора над человеком. Тут не о чем спорить. Если у вас так получилось, значит у вас просто не получилось. Может вы не знаете ту архитектуру. Люди, пишущие на ассемблере, не раскладывают логику в машинные коды. Они знают архитектуру как свои пять пальцев, и думают в командах процессора. В результате получается хорошо или очень хорошо, но есть предел по сложности. Ассемблер с наскока не берётся именно из-за необходимости знать архитектуру и возможности процессора. Это всё равно что пересесть с велосипеда в истребитель, и либо критиковать что он не едет, либо ожидать сразу взлетишь в небо. Этому учатся, тренируются, и потом за ноги не оттащишь. Ваш пример с ассемблером потому совершенно некорректен.
В смысле, вы думаете, что я не в курсе, что такое ассемблер? Вы не совсем правы, я с ассемблером вполне на ты - приходилось во времена моей игрово-софтверной молодости.
Кстати, а где чудеса программизма, созданные этими людьми, которые думают в командах процессора? И, кстати, что за достижение - так думать?
au> Я помню пример, который вы попросили, но найти не смог.
Там в два столбика человек и компилятор — никаких вопросов не остаётся. Хороший компилятор делает не хуже человека простые вещи. Когда вещи уже не простые, компилятор делает консервативно, и результат уже другой.
Ага, то есть, как минимум, ваши примеры - исчезающе редки (иначе бы вы нашли, правильно?). И вообще - показательно, два столбика вы помните, а результата нет.
Еще раз, отделим мух от котлет. Вы фактически заявили, что есть проекты, в которых переход от грамотно написанного кода на С, C++, Java к ассемблеру даст существенное увеличение эффективности, правда? Дайте, все таки, класс таких задач. Впрочем, давайте я буду гадать.
1. UI. Не улучшается полезно с вашими подходами. Конкретно - на плоских UI отрисовка уже и так более чем достаточно быстра. Увеличение фактически не даст никаких плюсов.
2. DB. Практически не зависит от этих трюков, ибо обычно это внешний проект, уже хорошо оптимизированный. Внутри такого проекта, конечно, есть некоторое место для таковой оптимизации, но вполне небольшое.
3. Файловая система - то же.
4. Network - то же.
Что остается? Остаются:
a. Драйверы, системные библиотеки, ядро и проч. Интересно, но вполне специализированно.
б. "Околодрайверные" проблемы прикладных пакетов.
Все, список окончен.
au> Может вас удивит, но DSP сплошь и рядом программируют на ассемблере при давнем наличии довольно неплохих компиляторов. Системный уровень на них сбагрить приятно, а вот ядра алгоритмов — "нафиг-нафиг"(с).
Еще бы. Потому, что это как раз околодрайверная задачка - полупереварить данные от устройства по некоторому сильносчетному пути и отдать в дальнейшую обработку прикладной программе. Только что это доказывает?