Re[12]: .Net так и не взлетел?
От: pestis  
Дата: 20.09.16 02:59
Оценка:
Здравствуйте, bazis1, Вы писали:

B>Какое преимущество имеет генератор кода перед готовым языком, где все, что надо, уже реализовано? Возможность потрахаться с отладкой генератора? Вот недостатков целая куча:


Покажи мне язык в который встроена матричная или хотя бы веторная алгебра. Покажи мне язык, в который встроены операции над ГИС примитивами типа мультиполиногов в полярных координатах. Покажи мне язык в котором реализованы графы и трансформации над ними. Не покажешь, потому что в реальности в готовых языках НИЧЕГО нужного не реализовано. Максимум, есть тормозные библиотеки написанные на этом самом языке.

B>1. IDE не будет понимать синтаксис ваших расширений, которые парсит генератор.


С чего бы? На внешнем языке у меня валидные конструкции нормального языка типа python или java, например, a + b, а внутри эффективный алгоритм мерджа двух деревьев, при это ни аргументы ни результат во внешний язык не просачиваются иначе как в виде указателей. Поэтому я могу использовать тормозной python и все равно рвать C++, если не по производительности, то по скорости разработки.

При желании, я могу посмотреть реализацию "мяса" в любом редакторе который умеет С, взрослая IDE мне для этого не нужна.

B>2. Придется таскать за собой дополнительную утилиту для генерации, заморачиваться с dependencies, добавлением в проекты/скрипты и т.п.


Не вижу проблемы. Современные фереймворки типа Django, RoR, Play таскают с собой кодогенераторы, чем я хуже? Тем более что технологии кодогенерации не стоят на месте и с нуля писать генератор нет никакой необходимости.

Кстати, генератор совершенно необязательно хранить вместе с проектом. Можно держать его в секьюрном хранилище и тогда рядовые кодеры не смогут спереть кодовую базу проекта, или наоборот, можно держать его на машине разработчика и тогда работодатель не сможет заменить тебя на тупого индуса.

B>3. Отлаживать вы будете генерируемый код? Или вставлять в него #line и надеятся, что не пропадет читаемость?


Не буду, нафига? На уровень С выносятся достаточно изолированные функции которые без проблем можно покрыть юнит тестами. Этого, вместе с проверкой предусловий, постусловий и инвариантов в рантайме более чем достаточно.

B>Ну напишите мне на Node.js прошивку для микроконтроллера с 256 байтами (!) памяти. Или движок специализированной БД для хранения данных для рефакторинга с моментальным поиском.


Мы вообще-то начали с обсуждения многопорточности и интеграции со сторонними сервисами, а в контроллерах с 256 байтами ни того, ни другого нет. Зато там есть ардуина, где ты пишешь на нормальном языке из которого потом получается ассемблерная прошивка.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.