Вопрос
Другой нить была эта цитата
- Erlang VM BEAM и HiPE написаны в основном на C.
- Связанные драйверы написаны в основном на C.(Они подключены к виртуальной машине и служат общению с внешним миром.)
Я читал некоторые мнения о том, что строгая типизация Ады, модульность, проверка во время выполнения, параллельная обработка и т. д.и т. д.лучше, чем у C.
Будет ли Erlang, скомпилированный с использованием Ada, заметно лучше или хуже, чем Erlang, созданный с помощью C?
Просто гипотетический вопрос.
Решение
Обычно я бы бросил в тебя кучу грубых словечек на подобную тему, но оказывается именно этот вопрос был изучен (это файл .doc.Извини).
У Rational был компилятор с большим объемом кода на обоих языках и большим объемом данных, собранных за несколько лет о частоте ошибок, времени исправления и т. д.Из любопытства один из их инженеров подсчитал цифры.
Ответ был: «Затраты на разработку C превышают затраты на Ada».Если вы прочитаете заголовок краткого изложения, вы увидите, что они решили написать тот же код на Ada стоил им примерно вдвое дешевле, чем написание его на C.
Я знаю, что каждый, кто читает это, стремится найти дыры в этом выводе.Я тоже был.Но они рассмотрели в отчете почти все аспекты, о которых я только мог подумать.
Другие советы
«Лучше» в каком смысле?Лучше, как быстрее?Лучше, чем меньше ошибок?Лучше, чем более портативный?Лучше как более читаемый?Лучше, как более расширяемый?
Для любого подходящего определения «лучшего» аргументы могут быть приведены в любом случае.Однако это священное писание, что ни один компилируемый язык не является более переносимым, чем C.Таким образом, если одна из ваших целей — сделать ваше приложение легко переносимым, C — отличный выбор.
Больше людей понимают C, чем Ada.Написание расширений erlang могло бы быть намного сложнее, если бы они были написаны на Ada, просто потому, что с этим языком знакомо меньше людей.
Код C может быть высокопроизводительным, но мне не известно о каких-либо сравнениях между C и Ada с оптимизацией компилятора.
Проверка типов в Аде может оказаться полезной, а может стать настоящей проблемой.Предполагается, что виртуальная машина выполняет собственную проверку типов тех частей, которые для нее важны.Накладные расходы на RTTC в Ada могут стать совершенно ненужной нагрузкой.
Возможно, но на каком языке был написан ваш компилятор Ады?Ада?А как насчет компилятора, который напишет ваш ПЕРВЫЙ компилятор Ada?
В какой-то момент, когда вы создаете программное обеспечение, формальная семантика и программные процессы становятся гораздо более важными, чем то, на каком языке что-то было написано.