Почему Ruby и Python не могут занять место стареющей Java

Даниэль Пьетрару (Daniel Pietraru) провел анализ статистики популярности различных языков программирования в запросах к поисковым системам: TIOBE index (tiobe.com) и langpop.com. Были сделаны следующие выводы:

1. Синтаксис очень важен. Программисты тратят меньше сил для изучения нового синтаксиса, если он концептуально похож на старый, уже известный, они также могут использовать старые концепции и найти больше времени на изучении новых. Пока предпочтение отдается языкам с синтаксисом, похожим на С: C (15.292) + C++ (10.484) + Java (20.176) + C# (3.963) = 49.915% Если добавить PHP (10.637) (тоже очень похожий синтаксис), получим 60.552% - языки с синтаксисом, похожим на С пользуются популярностью практически половины всей аудитории.

2. Смотря на группу языков, претендующих на внимание программистов: Python (4.613) + Ruby (2.851) + Lisp/Scheme (0.449) + Lua (0.393) + SmallTalk (0.138) + Haskell (0.137) + Groovy (0.131) + Erlang (0.110) + Caml (0.090) + Scala (0.073) = 8.985% можно сказать: этих языков очень много и они очень разные, а программисты занятые люди и имеют слишком мало времени, чтобы изучить и попробовать все имеющиеся альтернативы и сделать выбор.

3. Tiobe представила графики, показывающие многолетнюю статистику по популярности первой десятки языков. По этим графикам видно, за исключением нескольких исключений, вроде потери популярности Perl, что существенных изменений не происходит. Объяснение просто: рынок стабилен, существующие языки всех удовлетворяют и отсутствует давление на программистов со стороны менеджеров, которое могло-бы заставить их изучать новые языки.

4. Статистика langpop.com интересна тем, что есть анализ языков, используемых в новых проектах. Аналогично, безусловные лидеры C/C++/Java, и некоторое внимание получил Python. Это означает, что языки-претенденты не смогли в нужный момент привлечь внимание достаточного для лавинного роста количества разработчиков, по всей видимости также ввиду слишком большого разнообразия.

5. Психология важна. Люди, предпочитающие альтернативные языки, очень часто указывают на недостатки Java, но почти не делают попыток рассказать о достоинствах предпочитаемой альтернативы, и не пытаются помочь желающим перейти с распространенного языка на альтернативный.

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

Как же языки становятся популярны?

7. Альтернативные языки малоуспешны, потому что не делают существенных улучшений в жизни программистов и проектов, как Java упростил проблемы с распределением памяти в сравнении C/C++ и оказался проще C++.

8. Нет такого существенного роста нового рынка, как рост интернет, на котором выросли Java и PHP и альтернативные языки соревнуются с сильными игроками на старых, устойчивых рынках.

9. Ни один из альтернативных языков не имеет сильного спонсора с достаточными желанием и финансами для продвижения на рынок. И все альтернативные языки родились в университетских кругах или пришли из специфических ниш, и не все достаточно универсальны, чтобы перекрыть все приложения или хотя-бы большинство.

10. Все альтернативные языки слишком долго засиживались в узком кругу последователей, не делая существенных шагов в мир. Вот даты рождения альтернативных языков: Ruby (середина 1990-х), Python (1991), Lisp (1958), Scheme (1970-е), Lua (1993), Smalltalk (1969-1980), Haskell (1990), Erlang (1987), Caml (1985), OCaml (1996), Groovy (2003), Scala (2003). А это даты рождения успешных: C (1972), C++ (1983), Java (1995), C# (2001), BASIC (1964), Pascal (1970), FORTRAN (1957), Ada (1983), COBOL (1959).

11. Особенности некоторых языков выглядят и иногда являются опасными для больших проектов. Например использование Python отступов для выделения блоков, является потенциальным источником проблем, поскольку зависит от настроек редактора, которые могут быть разными у разных программистов.

12. Неестественные концепции повышают входной порог для большинства программистов - функциональные языки предлагают писать программы в виде математических формул, но кто из нас настолько любит математику. В то же время, объектно-ориентированные языки позволяют думать о моделируемой области а не о языке машины. И очень хорошо, когда язык позволяет (или заставляет?) сразу писать правильно работающий код, но написание первой версии кода это только начало жизни программы, дальше идет поддержка и развитие, которые намного важней.

13. Особенности некоторых языков затрудняют создание действительно эффективных инструментов для работы с большими объемами кода. И опять-же, с написанием первой версии кода жизнь программы только начинается.

Как будет выглядеть язык, который вытеснит Java.

Успешный претендент должен попытаться использовать имеющиеся знания и инфраструктуру. Поэтому интересным претендентом является Scala, которая работает на JVM и может использовать библиотеки Java. Претендент нуждается в приложении-убийце. Например Erlang интересен средствами работы с распределенными приложениями, но пока это не мейнстрим, даже на рынке серверов. Язык-претендент должен иметь поддержку мощной компании-спонсора, но все языки-претенденты не имеют серьезного спонсора. Очень сильный претендент Python, но ему нужно что-то делать с системой отступов, чтобы стать популярным в крупных проектах.

Сообщает Opennet.ru



Опубликовал admin
23 Июн, Понедельник 2008г.



Программирование для чайников.