Ruby восходит к 1995 году. Если вы писали переводчика в 1995 году, каковы были ваши варианты? Java была выпущена в том же году. (И был мучительно медленным в v1.0 и во многих отношениях, действительно не стоит использовать)
C ++ еще не был стандартизирован, и поддержка компилятора была очень отрывочной. (он также еще не перешел на «современный C ++», который мы используем сегодня. Я думаю, что STL был предложен для стандартизации примерно в то же время. На самом деле он не был добавлен к стандарту до нескольких лет спустя. И даже после того, как он был добавлен, потребовалось еще несколько лет, чтобы 1) компиляторы наверстали упущенное и 2) люди привыкли к этому общему стилю программирования. Тогда C ++ был языком ООП в первую очередь, и во многих случаях этот стиль C ++ был немного медленнее, чем C. (В современном коде C ++ это различие в производительности почти полностью устранено, частично с помощью лучших компиляторов и частично с помощью лучших стилей кодирования, меньшей зависимости от конструкций ООП и большей степени от шаблонов и общего программирования)
Python был запущен в 1991 году. Perl еще старше (1987)
PHP тоже с 1995 года, но, кроме того, и это важно, был создан парнем, который практически ничего не знал о программировании . (и да, конечно, это во многом повлияло на язык)
Языки, о которых вы говорите, были созданы в C, потому что тогда C был лучшим выбором для портативной, ориентированной на будущее платформы.
И хотя я еще не смотрел на это, я готов поспорить, что помимо случая с PHP, который больше всего зависит от некомпетентности, разработчики языков других языков выбрали C, потому что они * уже знали это , Так что, возможно, урок не "C лучше", но "язык, который вы уже знаете, лучше"
Существуют и другие причины, по которым С часто выбирают:
- опыт и доступность: C - это простой язык, который довольно легко подобрать, снижая барьер входа. Это также популярно, и вокруг много опытных программистов. Одной из причин, по которой эти языки стали популярными, может быть просто то, что было легко найти программистов, которые могли бы помочь в разработке переводчиков. C ++ сложнее в освоении и использовании. Сегодня это может быть не такой большой проблемой, как 10 или 15 лет назад?
- совместимость: большинство языков взаимодействуют через интерфейсы Си. Поскольку ваш модный новый язык будет опираться на компоненты, написанные на других языках (особенно в ранних версиях, когда сам язык ограничен и имеет мало библиотек), всегда приятно и просто вызывать функцию C. Так как мы собираемся в любом случае имейте некоторый C-код, может быть соблазнительно пройти весь путь и просто написать все это на C.
- производительность: C не сильно мешает вам. Он волшебным образом не делает ваш код быстрым, но позволяет достичь хорошей производительности. Как и C ++, конечно же, или многие другие языки. Но это верно и для Си.
- переносимость: практически на каждой платформе есть компилятор Си. До недавнего времени компиляторы C ++ были гораздо более популярными.
Эти причины не означают, что C на самом деле является превосходным языком для написания интерпретаторов (или для чего-либо еще), они просто объясняют некоторые мотивы, которые заставили других писать на C.