Следующий язык программирования
От: Зверёк Харьковский  
Дата: 25.09.05 02:48
Оценка: 40 (6) +1
Нашел в блоге одного хорошего человека одну интересную запись. Хотел ответить там, но учитывая, что мой письменный английский оставляет желать, решил обсудить тут.
2ПК: Я, честно говоря, не знаю, почему ты не вынес эту информацию на РСДН. (Но догадываюсь). Если что, больно не бить.

Очень вкратце и упрощая, там обсуждается статья о том, что наиболее новые и распространенные языки (Java, C#) не привносят в индустрию ничего нового, а являются объединением давно известных и используемых идей. (Таким же объединением был некогда PL/I. Судьба его печальна.)
Attention: большая просьба! Я не буду утверждать, что эта мысль абсолютно верна или абсолютно неверна. Мне бы не хотелось дискутировать на эту тему.

Что мне хотелось бы обсудить, так это следующее:

I can’t stop asking myself the same question: is it still possible for a new language to make a breakthrough like C and C+ did at the time?


Так вот, о "language to make a breakthrough". C — тема вообще совсем отдельная (его история слишком тесно переплетена с историей Unix), но вот если взять историю таки "breakthrough", как Fortran и C++, мне бы хотелось отметить некоторые общие моменты:

1. вообще говоря, ни тот ни другой язык не были "совершенно новыми": и до Фортрана были попытки создать язык высокого уровня; и до С++ существовали объектно-ориентированные языки.
2. основным свойством и того и другого языка, определившим их популярность, стало приспособление "идей будущего" к "железу настоящего":
— до Фортрана считалось, что любой язык высокого уровня будет порождать слишком неэффективный код; поэтому одной из главных задач команды Фортрана было создание эффективного компилятора
— до С++ считалось, что ОО языки — академическая игрушка, не позволяющая писать эффективные программы; одной из главных задач Страуструпа было порождение эффективного кода.

Т.е. и в том и в другом "прорыве" действовала модель "взять уже известные (но все же новаторские) идеи, и создать их эффективную реализацию". Я довольно сильно упрощаю, но общая тенденция, кажется, такова.

В современных условиях прорыв такого типа представляется маловероятным, т.к. "железо больше не ресурс": для новых языков программирования вопрос зверской эффективности уже не является определяющим фактом популярности. (В связи с этим фактом интересен "пролет" функциональных языков: когда "железо еще было ресурсом", они заработали ту самую стойкую репутацию "академических поделок", а сегодня — это уже слишком старые идеи, чтобы кого-то увлечь; то же со Smalltalk.)

Еще одним существенным фактором мне представляется накопляемая в индустрии инерция типа "я могу принять новую парадигму, если она приложится к моему любимому языку" (всякие там AspectXXX, да и R# наверное, это достаточно ярко демонстрируют). Тут нужно заметить, что и для С++ важным фактором была совместимость с С (что некоторые и полагают главной ошибкой ), но чем дальше, тем сложнее языки; попытка сделать язык с одной стороны совершенно новый, с другой стороны совместимый со "старым", столкнется со слишком большими идеологическими ограничениями, накладываемыми "старым". (Отсюда можно сделать вывод, что новые парадигмы могут стать не развитиемм старых, а "уходом в другую сторону").

И последнее: лично мне наиболее современным и "впередсмотрящими" языками представляются не тяжеловесные "все-в-одном + своя платформа + вообще-все-что-вам-может-понадобиться-когда-либо" Java и C#, а более легковесные, без груза "обратной совместимости по парадигме", приспособленные к сегодняшнему миру Python и Ruby.

Такие дела.
FAQ — це мiй ай-кью!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.