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