Спор о том, какой язык программирования лучше, не утихает долгие годы. Многие соглашаются с тем, что все же нельзя говорит о «лучшем языке программирования». Какие-то более распространенные, какие-то — менее. Причем изучая один какой-то язык программирования, приходится учить связанные с ним вещи, что нередко приводит к изучению еще одного языка программирования, потом — следующего и так далее…
Для того, чтобы показать, какие языки программирования более востребованы или распространены на данный момент, ряд организаций ведут собственные рейтинги. Данные этих рейтингов берутся из ряда источников данных. Это форумы, предложения работы для программистов, упоминания в социальных сетях, опросы, репозитории кода. Такого рода рейтинги полезны для отслеживания трендов. В продолжении — несколько рейтингов, которые считаются наиболее авторитетными.
Рейтинг RedMonk
Эта аналитическая компания регулярно публикует собственный рейтинг языков программирования. Он строится на основе оценки сочетания популярности на GitHub, плюс активность обсуждений на Stack Overflow. Лидерами здесь являются JavaScript, Java, PHP и Python.
- JavaScript
- Java
- PHP
- Python
- C#,
- C++
- Ruby
- CSS
- C
- Objective-C
- Shell
- R
- Perl
- Scala
- Go
- Haskell
- Swift
- Matlab
- Visual Basic
- Clojure
IEEE Spectrum
IEEE Spectrum — это журнал, который издается Институтом инженеров электротехники и электроники (IEEE). Несколько дней назад этот журнал опубликовал свой рейтинг популярности языков программирования. Как видим, лидером здесь является Си, следом идут Java, Python и C++.
В этом рейтинге довольно необычным является выход R на пятое место. Объяснение здесь простое — этот язык востребован в системах обработки больших объемов данных. Соответственно, растет количество запросов на Stack Overflow. Следует учесть и то, что на GitHub появилось сразу 62 тысячи новых репозиториев. Много новых вакансий и упоминаний языка в научно-исследовательских публикациях.
Для создания своего рейтинга специалисты IEEE использовалис 12 различных метрик из 10 источников. Основное — это поиск результатов по запросу «название языка programming» на ряде популярных сайтов. Учитываются и материалы, которые выдаются в поисковой выдаче Google, данные Google Trends, упоминания в социальных сетях.
TIOBE
Компания TIOBE Software, публикуя свой рейтинг, отмечает рост популярности ассемблера. Согласно этому рейтингу язык поднялся на две позиции — с 12 на 10 место. Это объясняется бурным развитием сферы интернета вещей. Анализ данных проводится на основе результатов поисковой выдачи многих систем, включая Google, Google Blogs, Yahoo!, Wikipedia, MSN, YouTube, Bing, Amazon и Baidu.
Что все это значит?
Только то, что лучшего в мире языка программирования попросту не существует. Многие разработчики работают не с одним, а несколькими языками программирования, попутно изучая новые технологии. Кроме того, популярность и востребованность языка программирования во многом зависит от востребованности технологии, которая требует использования определенного языка. Сейчас трендом является Big Data, и, как видим, начинает расти значимость R. Еще мы видим, что однозначными лидерами всех трех рейтингов можно назвать С, Java и Python. Хотите учить какой-то из этих языков? Вряд ли прогадаете.
Но рейтинги — это всего лишь информация к размышлению. Если вы собираетесь приступать к изучению языка программирования, эта информация может быть вам очень полезна. Но не стоит слепо доверять рейтингу, лучше изучите особенности каждого языка. Если же вы уже опытный программист, то вам все равно будет интересно взглянуть на статистику — может, ради спортивного интереса, а может, и ради того, чтобы знать, какие высоты преодолевать в следующий раз.
Другие наши публикации:
Поделиться с друзьями
FluffyMan
Странно в рейтингах языков программирования видеть языки разметки (*ML) и SQL.
mird
Эээ. С какого боку SQL — язык разметки?
ozerothik
Языков разметки (*список языков) и (отдельной) SQL.
mird
Хорошо. Чем вас смущает SQL среди языков программирования?
m0Ray
Меня вот тоже смущает. Без расширения PL/SQL это язык структурированных запросов, не описывающий алгоритмы.
mird
Что вы имеете ввиду под «не описывающий алгоритмы»? То есть по вашему, на sql не возможно написать программу которая будет получать на вход список целых чисел и выдавать на выходе эти же числа но в порядке возрастания (алгоритм сортировки)?
lair
А описание алгоритмов — обязательное свойство языка программирования? Скажем, языки пятого поколения (типа пролога) никакие алгоритмы не описывают — только ограничения. Чем SQL от них отличается (в этом аспекте)?
(собственно, SQL, как и многие другие DSL, часто относят к языкам четвертого поколения)
Idot
Ни чистый Prolog, ни чистые Функциональные Языки Программирования — тоже не описывают алгоритмы, в принципе! Что им тем не менее не мешает являться языками программирования. Потому что все они как и SQL — декларативные языки программирования.
inversed
С введением Cyclic Tag System в стандарт 1999-го года язык SQL стал Тюринг-полным. Вот тут, во второй части заметки приведен код, который отображает множество Мандельброта.
Так что чистый SQL все же является языком программирования (хоть и декларативным).
Cubicmeter
«Составление структурированных запросов» иначе называют «программирование баз данных». Поэтому не надо смущаться.
claygod
Разве SQL язык разметки?
vtrushin
Тогда было бы двоеточие. "… языки разметки: (*ML) и SQL."
mird
Если как минимум два человека поняли неправильно что сказал автор, наверное фраза построена криво.
ComradeAndrew
Либо два человека поняли криво.
SomeSQL
С точки зрения русского языка всё грамотно (уточнение вынесено в скобки), и все, кто его знают, поняли правильно. Если два человека из множества всех прочитавших статью поняли неправильно — наверное, проблема не в построении фразы.
Source
По-моему такое уточнение *ML вообще с другими языками ассоциируется: https://ru.wikipedia.org/wiki/ML, которые тоже в этих рейтингах фигурируют )))
FluffyMan
* это как-бы wildcard. То есть там не может быть ML, там будет «любой символ»ML. Прекратите уже) Зашел и удивился какую ветку комментарием тут посвятили моему выражению.
deniskreshikhin
Не все языки программирования являются языками программирования общего назначения.
Idot
SQL — не язык разметки, а декларативный язык программирования. Почему Вам странно его видеть в языках программирования?
Bojczuk
Для меня самым главным показателем популярности языка является выдача поиска рекрутингового сайта по моему региону.
pengyou
Где же habralang?
pengyou
Видимо, нету.
Suvitruf
JavaScript, как я понимаю, включает node.js?
Bringoff
Видимо, node.js — это не язык, а технология.
Suvitruf
Но, всё же, я разграничиваю node.js и js.
Fen1kz
Простите, пожалуйста, не знал что Вы их разграничиваете. Уже пишу гневное письмо авторам, дескать, ребята, вы накосячили, Suvitruf же разграничивает. Прослежу чтобы поправили!
pengyou
Обычно после такого начинают петь про то, что в 21-м веке язык неотделим от компилятора, рантайма и стандартной библиотеки, и всё это вместе только и можно называть языком.
NeoCode
Язык это язык, компилятор это компилятор. Вот c++/msvc и c++/gcc — это тоже два разных языка? На самом деле там конечно есть специфические языковые расширения, так что про них можно сказать что это «два разных языка» даже в большей степени чем про js и nodejs… но все-же это рейтинг именно языков, уж не знаю насколько сие полезно — но интересно.
А если уж вводить рейтинг библиотек/фреймворков, то возможно будет совсем другой расклад. Много ли вы знаете библиотек/фреймворков на Си? Зато на php их сотни если не тысячи:)
tangro
Поверьте, на Си их в разы\десятки раз больше.
handicraftsman
Фреймворки для чего только не пишут. Даже для ассемблера где-то на гитхабе видел
raidhon
Особенно если учесть что сам PHP написан на С как и большая часть скриптовых языков, компиляторов и ещё черт знает чего.
Думаю тут будет разница в сотни.
Idot
Обычно да, но в случае Delphi… изначально был язык Object Pascal версии Borland, но затем они его перекроили настолько, что разница между обычным Object Pascal что был в Borland Pascal и тем что стало в Borland Delphi потянула на новый язык.
bentall
Маркетинговый ход производителей Delphi, после того, как их покинули все, кто стоял у истоков. Неумный. Borland Pascal и так был стандартом de facto для объектного паскаля, за исключением маков, где как-то есть традиция think different
Idot
В Boralnd Pascal язык именуемый Object Pascal заметно отличался своей работе с классами от того что в Delphi, не считая появившейся поддержки Event-Driven-Programming.
PS возможно я не прав, имхо, Delphi отличается от Pascal больше, чем Modula объявленная Виртом дальнейшим развитием Паскаля.
bentall
Хм. Всегда считал обработчики событий в Дельфи (ну или Лазарусе) реализованными на уровне не языка, но фреймворка (VCL/LCL). Это не Qt-шные сигнал-слоты, которые потребовали либо специального прекомпилятора, либо чёрной Boost-магии, либо новейшей серой магии из арсенала Modern C++. А в дельфях/лазаре обработчик — это просто наполненная некими действиями реализации процедуры заглушки родительского объекта. ООП-полиморфизм как он есть в самом своём наиклассическом применении (в TurboVision действительно не так, там, ЕМНИП, один обработчик событий на весь обект, а события различаются в операторе выбора, но язык-то тут причём, просто разная архитектура фреймворков).
Что до изменения объектной модели — да, изменили. Как раз при переходе от TurboPascal к Borland ObjectPascal, е.м.н.и.п. В Delphi язык переименовали сильно позже. При том, что тот же язык реализован во вполне живом FreePascal, и тогда ещё живых Virtual и TMT Pascal.
Вот по этому я и написал про не слишком умный маркетинговый ход.
MacIn
И да и нет.
Вот обработчик сообщения:
procedure CMStart(var Msg: TMessage); message CM_START;
Привязка кода сообщения к обработчику есть в языке. Да, черной ассемблерной магии там под капотом — тоже выше крыши.
Опять же, если говорить об отличиях, важных шагом вперед является рефлексия и возможность доступа к полям во время выполнения. Не говоря о самих properties.
bentall
Что до ключевого слова message, да, забыл про него: Pointers to message methods are stored in a special table. Property вроде уже в TP7 как минимум были. Новая объектная система с поддержкой RTTI — да, серьёзное изменения, и если бы язык переименовали вместе с её, вопросов бы было намного меньше.
MacIn
Нет.
stychos
Он ещё успел трубо-паскалем поназываться.
Jef239
Будете смеяться — RatFor. Язык реализовывался при помощи препроцессора фортрана-66. При этом отличия от фортрана-66 — сильные, ратфор ближе к Си, чем к фортрану.
tangro
Уж и операционку сюда записывайте и всё железо, чего уж там. А на самом деле это можно назвать средой выполнения, а язык — это язык.
Suvitruf
Я ни к чему не призывал, просто высказал мнение. Или это запрещено? К чему этот сарказм?
napa3um
Node.js, как я понимаю, включает в себя JavaScript.
Neuronix
Да, а stdlib включает в себя C
napa3um
Нет, спецификация языка Си включает в себя в том числе спецификацию стандартной библиотеки. А Node.JS — это платформа, которая в себя включает интерпретатор языка JS.
MacIn
Что входит в эту стандартную библиотеку?
napa3um
https://ru.m.wikipedia.org/wiki/Стандартная_библиотека_языка_Си
https://ru.m.wikipedia.org/wiki/Stdlib.h
А к чему этот вопрос?
MacIn
Просто любопытство. Не знал, что стандартная библиотека в таком составе входит в спецификацию.
Free_ze
Очевидно, раз там еще и иконка мобильника есть (т.е. PhoneGap/Cordova тоже там)
azsx
Pascal уже 12! Надо немного подождать…
umren
Какой смысл в таких абстрактных рейтингах?
Думается мне, надо выбирать язык под задачу которой вы хотите заниматься, а там вам уже никакой рейтинг не поможет, обычно выбор весьма скромен и упирается в пару языков, где специалист уже сам разберется.
Если же человек только начинает программировать и думать, какой язык ему изучать, то пускай вначале изучит предложения о работе в его городе.
pengyou
Так ведь и получаются рейтинги — видишь хороший язык, хочешь его изучить и поднять его рейтинг, потом смотришь в вакансии, смотришь в глаза менеджеру с табличой "bus factor" и в итоге выбираешь один из паршивых языков, который был вытолкнут рынком в топы ещё на рубеже веков, прибавляя и укрепляя его вес в рейтинге.
iCpu
Я понимаю птичье желание собирать блестяшки в своё гнёздышко. Я не понимаю, почему вы не хотите посмотреть на всё с высоты птичьего полёта.
> в итоге выбираешь один из паршивых языков, который был вытолкнут рынком в топы ещё на рубеже веков
Который был тогда популярен и точно так же выталкивал другие языки, созданные ещё до вашего рождения. Ничто не меняется, это рынок, и в нём идёт борьба за клиентов. И все евангелисты, пропагандирующие Rust или GoLang, они именно промывают вам мозги, какой у них хороший товар, с ним ваша пи… производительность вырастет аж в полтора раза. Я сейчас не касаюсь качества тех или иных ЯП. Я пишу о том, что 10-15 лет назад такие же молодые и красивые, как вы сегодня, покупали блестящий delphi или FoxPro, а евангелисты того времени писали, насколько удобнее вот эта фишка, как круто поддерживается вот эта платформа и сколько % приростёт всё туда же. А в итоге выяснялось, что под лаком оказывался убитый хлам. А сегодня они вынуждены тащить этот выброшенный всеми хлам, потому что нет у них ресурсов на перезапуск. И ведь посмотрите, те же FoxPro или MFC, они были разработаны флагмоном, и их это не спасло. Нет оснований считать, что через 5 лет точно так же не будут выброшены ваши любимые ЯП в пользу новых блестяшек, а вы останетесь у разбитого mysql.
Gorthauer87
Новые нишы постоянно рождаются, туда может вообще любой самый непопулярный язык пролезть и обрести известность. Тот же R же как-то пролез через этот самый барьер.
pengyou
Но для разработчиков это будет означать смену места работы и специализации, речь именно о том, что в текущей реальности программист на условной джаве не сможет сподвигнуть всех вокруг себя попробовать в новом проекте условный го, то есть по сути языки, которые сейчас мы видим в рейтингах являются бессменными монополистами на своей полянке уже лет десять.
Gorthauer87
Не так уж это и страшно. К тому же у одной компании может быть множество проектов на разных языках
MacIn
«Хороший» он хороший потому что вам нравится по ряду причин (субъективный фактор), или потому что он устоялся, под него написано множество библиотек, можно легко найти документацию?
pengyou
Чтобы стать по-вашему-хорошим языком нужно попасть в замкнутый круг, потому что пользователи по-вашему-хороших на сегодня языков в свое время пришли в эти языки и использовали их даже в том состоянии, которое вы бы не назвали по-вашему-хорошим. И на тот момент, возможно, у людей даже не было выбора (взять хотя бы историю Питона), и со временем (которого уже нет у новых языков) те языки заматерели и обросли компонентами и сообществом. Но время изменилось и современное ИТ в ловушке — никто уже не будет отказываться от старого, хотя его косяки за всё время использования уже всем очевидны, но новое тоже использовать страшно. Получается, что каждый новый проект на старом языке это акт отрицательного отбора по критериям не технологий, а бизнеса (по-вашему-хороший).
MacIn
Я говорю о том, что язык можно и нужно рассматривать как инструмент в конкретный момент времени, а не просто некоторую идею. Если инструмент позволяет решить задачу быстро и дешево, его вполне можно назвать хорошим. На данный момент, естественно. По аналогии — если у нас есть, например, перфоратор, но нет электричества, то ручная дрель будет более хорошим инструментом. Когда же распространенность электроинструмента приведет к тому, что электричество появится и в этой точке, перфоратор станет более хорошим инструментом, потому что позволит решить задачу быстрее.
Потенциальная выгода от нового может быть неочевидна, или вовсе не существовать. Да, новое должно «проибиться», и пробьется если только имеет конкурентные преимущества.
pengyou
Отрицательный отбор слышали?
MacIn
Вы могли этого не писать — это (ваша позиция с отбором) и так ясно из ваших предыдущих сообщений. Отбор действительно может быть отрицательным, вы правы. Мы можем, условно говоря, иметь дело с локальным минимумом, а не абсолютным. Но я предлагаю задуматься над тем, что мы вкладываем в понятие «хороший», причитая о том, что хорошее давят.
Shamov
Я тоже очень долго удивлялся, не понимая, зачем нужны такие рейтинги. Но недавно мне в комментариях всё объяснили. Дело в том, что на рынке труда существует одна острая проблема. Разработчики хотят получать слишком много денег, потому что не чувствуют страха не найти работу. Традиционно эта проблема решается привлечением в отрасль новых специалистов. Чем выше будет конкуренция за рабочие места, тем ниже будут ожидания по зарплате. А чтобы повысить конкуренцию среди разработчиков на каком-то конкретном языке, нужно просто заказать где-нибудь исследование популярности языков по такой методике, которая покажет, что наиболее популярным является заданный язык. Как выясняется, в мире полно людей, которые хотят просто программировать. Им неважно, какие именно задачи. Лично мне кажется, что это какая-то абсурдная мотивация. Типа, как хотеть купить машину, чтобы просто ездить. Неважно, куда именно. Просто ездить и всё.
iCpu
Отчасти верно, привлечение масс, да, но, скажите, разве число высококлассных специалистов за последние годы достигло хотя бы половины от открытых вакансий? Увы и ах. Рождённые летать…
> в мире полно людей, которые хотят просто программировать
В мире полно людей, которые хотят просто рисовать. Их на девиантарте можно найти. В мире полно людей, которые хотят просто петь. Их на тытубе и вконтакте навалом. В мире полно людей, которые хотят просто ездить. Некоторые из них — исплючительно по говнам бездорожья. В мире полно людей, которые хотят просто смотреть сериальчики. Абсурдная мотивация, они сумашедшие, не иначе.
Shamov
Про высококлассных речь не идёт. Они вне основной конкуренции.Точнее, если среди них и может быть конкуренция, то уж точно не по цене. Это как luxury-сегмент рынка. Если тебе действительно нужен высококлассный специалист и тебе повезло его найти, то тебе, по большому счёту, без разницы сколько он стоит. Всё равно он своим трудом заработает тебе несравнимо больше. Есть даже более точная аналогия, чем luxury-сегмент. Это заводы по сжижению природного газа. Так сложилось, что они очень круто автоматизированы. Для обслуживания завода, напоминающего своими размерами город средних размеров, достаточно нескольких десятков человек. Годовая выручка на таком заводе генерируется в объёме нескольких миллиардов долларов. И в расчёте на одного работника получается порядка 50 млн. в год. Владельцу завода абсолютно безразлично, какая зарплата будет у сотрудников. Если нужный ему специалист захочет получать 200 тыс. в год, то ради бога. Захочет получать 300 тыс. — тоже не проблема. Проще всего, если он сам назовёт комфортную сумму и всё. Заранее известно, что она будет исчезающе мала в сравнении с выручкой в расчёте на человека.
iCpu
Маленькое «НО!», увеличение количества происходит на всех уровнях. Значит, если бы вы были правы, появился бы переизбыток, что сразу бы привело к понижению мобильности разработчиков. На деле этого нет.
Почему? Видимо, программировать — не мешки ворочить, кроме спины тут нужна ещё и голова. И в неё желательно не только есть, но и читать. И думать, о ужас!
Shamov
Представьте, что производство автомобилей Ролс-Ройс Фантом вырастет в два раза. Появится ли переизбыток на рынке? Упадут ли цены на авто представительского класса? А затем представьте, что в те же самые два раза вырастет производство Форд Фокусов. Появится ли переизбыток в этом случае? Упадут ли цены на авто в эконом сегменте? Какой из этого можно сделать вывод? А такой, что увеличение количества на разных уровнях имеет разные последствия.
Применительно к разработчикам можно сказать следующее. Существенное увеличение высококлассных специалистов, — например, разработчиков компиляторов, — приводит к тому, что появляются новые языки программирования, которые в чём-то лучше старых. Другими словами, происходит прогресс и развитие отрасли. А вот увеличение числа веб-разработчиков и разработчиков мобильных приложений приводит лишь к тому, что цены на разработку в этом секторе снижаются. Двоим приходится работать за зарплату одного и делать вдвое больше работы: два сайта для двух заказчиков вместо одного сайта для одного крупного заказчика. И работать приходится в два раза быстрее, поэтому они оба вынуждены использовать стандартные фреймворки, чтобы было хотя бы минимальное разделение труда. Каждый из этих разработчиков ощущает себя очень эффективным. Хотя общая эффективность всей системы остаётся прежней. Просто система растёт и внутри неё происходит перераспределение ресурсов. Никакого реального прогресса и развития всей системы не происходит. Число нужных сайтов более-менее постоянно. Просто они чаще переделываются. При этом отдельные разработчики ощущают то, что они активно развиваются. Можно сказать, что в их случае происходит «развитие на месте» (аналог «бега на месте»). Тратится куча усилий на приобретение новых актуальных навыков, однако ранее приобретённые навыки утрачивают актуальность примерно с той же скоростью.
alek0585
А где мой любимый HTML?
Miraage
JSON еще скажите.
Suvitruf
А что, xml вон есть.
bentall
Ну, в инфрастуктуру XML входит вполне тьюринг-полный функциональный язык XSLT, например
alek0585
JSON это JavaScript Object Notation
HTML это HyperText Markup *Language*
А насчет XML – где вы видели программиста по xml? А вот программист по html называется верстальщик. Ну правда еще CSS надо знать. Но сам по себе CSS не имеет ценности, он специально для HTML и используется только с ним.
umren
Каждый день программирую на xml и Java :)
DeLuxis
Есть реализация терминального ПО, которая в качестве описания логики и экранов использует xml. Тьюринг-полная схема.
:D
Idot
А можно чуть подробнее как такое возможно?
DeLuxis
Есть теги if, else, then, set-value. Есть экраны со своими id, между ними можно переходить в зависимости от логики.
Есть математические теги.
Есть void экран, который можно использовать как функцию.
У компании Soft-logic это сделано.
pengyou
Правильно называется такое чудо не xml, а xml-based language.
DeLuxis
Спасибо, буду знать.
Idot
Спасибо! Не ожидал!
napa3um
XML может выражать любые иерархические («деревянные») данные, даже AST ( https://ru.wikipedia.org/wiki/Абстрактное_синтаксическое_дерево ).
MacIn
И чисто в CSS возможно, как оказалось. Есть игры на CSS.
https://www.google.com/search?site=&source=hp&q=css+game
scottKey
Есть вакансии в банках где программисты только на xml пишут логику преобразования данных под выдачу из БД. Естественно используя возможности других программных продуктов.
handicraftsman
Странно — 2017 год ещё не наступил, а рейтинги на 2016 уже имеются
unixwz
Приятно видеть Си на 1 месте у IEEE Spectrum
SECL
JS и Python ожидаемо.
AndreyDmitriev
Вот смотрю я на эти рейтинги, и одна мысль не даёт мне покоя — вместе с развитием языков растёт их сложность. Приятно видеть Си в лидерах, но С++ и С# тоже там, и я плохо представляю, как нынешнее поколение программистов может постичь все премудрости современных языков. Я вот о чём. В школе мы вообще не изучали языки — у нас был предмет «Основы информатики», там изучались основы логики, а единственным программируемым устройством у меня был калькулятор Электроника МК61. В институте была стандартная программа — сначала Фортран, затем Паскаль. В то время Вирт был моей настольной книгой. Курсе на четвёртом я начал самостоятельно изучать Си (я вообще физик по образованию, Си в стандартной программе не было) и место на столе заняла книга Кернигана и Ричи.После Паскаля это было невообразимо круто. Потом была Модула-2, и ассемблер PDP-11. На пятом курсе я сделал подход к С++, но Бъёрн Страуструп оказался тяжеловат. Я попробовал написать пару оконных приложений для Windows 3.11 и уже в то время это оказалось сложновато, ибо количество кода, необходимое для самых простых вещей зашкаливало все разумные пределы. В конце девяностых судьба связала меня с Дельфи — знание Паскаля помогло, а интуитивно-понятная среда позволяла клепать Windows приложения как на конвейере, ну и мозаика ООП наконец-то сложилась. В какой-то момент я упирался в производительность, и пришлось изучить x86 ассемблер и досконально разобраться в MMX. Тогдашнее расширение MMX ещё можно было удержать в голове, но может ли кто-нибудь похвастаться, что он досконально знает все современные SIMD расширения? Дальше был интересный период — я перешёл на LabVIEW и пятнадцать лет программировал на нём, пройдя от версии 5.1 до 2016. LabVIEW образца 2000 года был прост как пять копеек, но LabVIEW 2016 несоизмеримо сложнее. И вот теперь я изучаю C# 6.0, у меня на столе Альбахари и Михаелис с Липпертом, и это просто взрывает мой немолодой уже мозг (и это я ещё до Рихтера не дошёл). Для тех, кто много лет «рос» вместе с языком начиная с начала двухтысячных, каждая следующая версия воспринимается достаточно легко — примерно как для меня LabVIEW, который я знаю вдоль и поперёк. Однако для тех, кто начинает изучать язык сегодня, этот процесс похож на попытку вскочить в поезд на ходу, причём поезд движется всё быстрее и быстрее. Возможно именно простота Си и удерживает его в десятке лидеров. И процесс усложнения высокоуровневых языков не останавливается, постоянно удлинняя процесс изучения, и ведь когда-нибудь наступит момент, когда от момента изучения до момента свободного владения несколькими языками просто жизни не хватит. Сегодня программирование начинают изучать ещё со школьной скамьи, чуть ли не с первого класса, это стало более чем доступно, есть прекрасные наборы Lego EV3, о которых я даже и мечтать не мог, но если не случится какой-нибудь революции, то в какой момент нас настигнет «кризис сложности языков». Или я неправ?
Idot
C удерживает в лидерах, то что самые быстрые языки это Assembler, Forth и C. Из которых C легче всего освоить, да и компиляторов Forth я ни разу в живую не видел (ни под DOS, ни под Windows).
iCpu
Оглянитесь на любую другую научно-прикладную область. Как справляются физики? Химики? Химия уже не так проста, как во времена Ломоносова и Менделеева, сегодня < и далее по тексту > Берут и справляются. То, что люди выводили через мучения десятилетиями, ими получается в готовом виде. У них свои методы работы. То, что раньше приходилось держать в уме, сегодня выводится и проверяется с помощью компьютеров. У них свои казусы, свои формулы, над которыми они будут биться. Упёрлись ли они в «кризис»? Да, во многих областях упёрлись, но это не значит, что они отступили.
Упрёмся ли в стену? Уже упёрлись, новые языки и методологии не решают первостепенных проблем. Конец? Нет, преддверие смены парадигмы. Увеличение роли ИИ в написании приложений, автоматическая оптимизация, генерирование программного кода из текстового описания задачи. Квантовые и оптические компьютеры, графеновые источники питания и сверхпроводники. У нас есть масса технологий, которые могут выстрелить. И будет новая итерация, и тогда я буду писать «ну вот, теоретические возможности оптического вычислителя практически достигнуты, достигнута огромная сложность. Не уж то стена?» И тогда уже мне какой-нибудь дерзкий молокосос будет писать, что, мол, чего ты боишься, ничего страшного, осваиваем же субатомные технологии, скоро получим новые стабильные виды атомов, и на них построим ещё какую-нибудь фигню.
AndreyDmitriev
В принципе согласен, вы правы. Ещё такой момент — технический прогресс, он как бы «рывками» развивается, резкие прорывы сменяются периодами плавного наращивания знаний для следующего «прорыва». Изобретение транзистора, затем процессора были примерно такими прорывами. ИИ безусловно будет одним из следующих, но вот конкретно в данный исторический момент имеющаяся база программно-аппаратных средств ещё совсем не готова к созданию ИИ, как мне кажется.Сменится как минимум пара-тройка поколений программистов, прежде чем что-то радикально изменится.
perfect_genius
Революция рано или поздно случится, не сомневайтесь. Бывают люди, которые никак не хотят привыкать к плохому и потихоньку пилят своё решение у себя в пещере. Кто-нибудь из-таких обязательно выйдет на свет и изменит мир.
MacIn
Оно на чистом Си действительно занимает много места, никакого ООП.
В принципе, появление GO — как раз ответ на такой кризис.
ncuxomozg
Я один кто пропустил тот момент, когда github стал индексом популярности? Явно не хватает статистики с других источников, скажем, специализированных для конкретного языка. Есть же cpan, rubygems, PyPI, %укажи свой%. Я более чем уверен, что далеко не все проекты дублируются в github.
iCpu
То же справедливо и для других ЯП. Этот показатель — один из лучших за неимением иных. Хотя, например, можно было бы включить в рейтинг статистику codegaming, на котором все программируют на удобных для себя ЯП (или для учёбы).
stepik777
По количеству пакетов в репозиториях разных языков есть такой рейтинг: http://www.modulecounts.com/
sugadu
По вакансиям бы кто сделал рейтинг.
Alexey2005
Он сильно зависит от региона. Например, злые языки утверждают, что в России программирование можно обнаружить всего в четырёх городах, за пределами которых имеется только 1C и немного PHP.
Тем не менее, многие рекрутинговые ресурсы предоставляют такой рейтинг. Например вот по UK.
Hayter
По итогам рейтингов Java первая и это радует. До python руки не дойдут никак, но рейтинги мотивируют.
lany
По количеству проектов на GitHub несколько странно судить. Сравните средний размер библиотек на Java и на JavaScript. У JavaScript гранулярность гораздо выше. Вон пресловутый Azer Koculu имеет больше сотни JS-репозиториев. Типичный выглядит как-то так.