company_banner

Горячая четвёрка умирающих языков программирования

Автор оригинала: Shubham Dixit
  • Перевод
Я занимался поиском лучших языков программирования 2020 года и наткнулся на страницы, на которых шла речь о языках, теряющих популярность. Я программист, и я понимаю, что любому программисту крайне важно знать о том, какие технологии являются актуальными, а какие — нет.

Каждый программист — это писатель.

Серкан Лейлек


Я, после того, как насмотрелся на отчёты о языках программирования, теряющих актуальность, выбрал 4 языка, которые, как я полагаю, уже не стоят того, чтобы их изучали. Я, ради подкрепления своих выводов, прибегну к некоторым показателям популярности языков. В частности, речь идёт об индексе PYPL (PopularitY of Programming Language Index, индекс популярности языков программирования), о данных Google Trends и о некоторых сведениях, которые можно найти на платформе YouTube.


Фрагмент рейтинга PYPL (источник)

Платформа YouTube использовалась мной в качестве источника данных о перспективности языков программирования через оценку популярности видеоуроков по соответствующим языкам.

Хочу отметить, что анализ рейтингов языков программирования способен оказать большую помощь тому, кто планирует построить карьеру в сфере информационных технологий. Дело в том, что эти рейтинги позволяют выбирать языки, которые стоит учить, а правильный выбор языка может оказать огромное влияние на профессиональный путь программиста.

Но хватит предисловий. Поговорим об умирающих языках программирования.

1. Perl


Интерес к языку программирования Perl стремительно падает. Хорошие показатели он демонстрировал в период с 2004 по 2009 годы, а после этого начался спад. Хотя этот язык пока и не мёртв, но он уже и не очень-то жив.

Информацию по нему не особенно активно ищут на YouTube и в Google. Например, есть видео по Perl, загруженное 4 года назад и набравшее всего 240 тысяч просмотров.


Видео по Perl

Кроме того, показатели языка идут вниз и в рейтинге PYPL.

Я решил сравнить Perl с каким-нибудь другим языком, с Python в данном случае, и обратился к Google Trends.


Сравнение Perl (красная линия) и Python (синяя линия), последние 12 месяцев

Как видно, красная линия, представляющая Perl, находится где-то на уровне нуля.

2. Haskell


Язык Haskell выглядит лучше, чем Perl. Он, к тому же, используется во многих крупных компаниях вроде Facebook и IBM. На YouTube есть видео по Haskell, загруженное 5 лет назад. Оно набрало 535тысяч просмотров.


Видео по Haskell

Посмотрим теперь на показатели Google Trends, сравним Haskell и Python.


Сравнение Haskell (синяя линия) и Python (красная линия), последние 5 лет

Haskell, в сравнении с Python, выглядит более чем скромно. Синяя линия, представляющая Haskell, «стелется по земле», а Python, представленный красной линией, показывает уверенный восходящий тренд.

3. Objective-C


Язык Objective-C, если ориентироваться на рейтинг PYPL, вырос в популярности на 0,2%. А что будет, если взглянуть на данные с YouTube?


Видео по Objective-C

Видео, загруженное 5 лет назад, набрало 250 тысяч просмотров.

Обратимся теперь к показателям Google Trends.


Сравнение Objective-C (синяя линия) и Python (красная линия), последние 5 лет

Конечно, многие всё ещё пользуются Objective-C. Но, хотя по этому языку есть вакансии, если вы строите планы на будущее и посматриваете на Objective-C, то вам стоит переключить внимание на Swift.

4. Visual Basic for Applications


Visual Basic for Applications, VBA, был у всех на слуху в 2004 году, а вот после 2009 интерес к нему начал падать. Я, например, изучал этот язык в школе.

Рейтинг PYPL указывает на то, что популярность VBA упала на 0,2%.

В моей ленте на YouTube видео по VBA мне видеть не доводилось. Возможно, это говорит о падении интереса к данному языку. Правда, когда я поискал подобные видео, мне попалось одно, загруженное 9 месяцев назад, набравшее 810 тысяч просмотров.


Видео по VBA

Если посмотреть на данные по VBA, которые имеются на Google Trends, то окажется, что интерес к VBA с 2004 года стабильно падает.


Сравнение VBA (красная линия) и Python (синяя линия), c 2004 года по настоящее время

В целом можно отметить, что VBA, несмотря на падение популярности, выглядит в сравнении с другими умирающими языками не так уж и плохо.

Python


Я занимаюсь серверной разработкой, используя Python. Я, кроме того, сделал несколько проектов, используя фреймворк Django. Что тут сказать — мне нравится Python.

Это, если верить тому, что выдаёт Google, язык, который лучше других языков помогает в поиске работы в 2020 году.


Языки, знание которых помогает в поиске работы

Я, например, создал проект на Django. А именно, речь идёт о сайте с вопросами и ответами для разработчиков. Этот проект всё ещё в работе. Я расширяю его и занимаюсь его оптимизацией.

Python в рейтинге PYPL демонстрирует рост на 2,9%. Если поинтересоваться данными YouTube по просмотрам видео о Python, то окажется, что они, за короткие промежутки времени, набирают миллионы просмотров.


Видео по Python

Анализ исследования Stack Overflow


Выше я опирался на рейтинг PYPL, на данные с Google Trends и на анализ видео по интересующим меня языкам программирования на YouTube. Теперь же я обращусь к результатам опроса разработчиков, проведённого Stack Overflow в 2020 году. А именно, к данным по языкам программирования, на которых программисты пишут, но не хотят продолжать этим заниматься.


Данные опроса Stack Overflow (источник)

Но надо отметить, что есть много вакансий, требующих знания языков, занимающих высокие позиции в этом «антирейтинге». Тем, кто пишет на этих языках, хорошо платят, вознаграждая за их опыт. Эти языки используются во многих компаниях, хотя некоторые компании меняют их на что-то другое.


Зарплаты разработчиков и их связь с языками программирования (источник)

Итоги


Я постоянно наблюдаю за ситуацией в сфере языков программирования. И я считаю, что подобные наблюдения способны принести немалую пользу. Ведь правильный выбор языка способен помочь карьерному росту программиста.

Кроме того, я изучал некоторые из языков, о которых сегодня рассказал. Правда, на практике я ими не пользуюсь. Собственно, надеюсь, что эта статья сможет уберечь других от изучения устаревших языков.

Если же вы пишете на этих языках, если у вас есть крупные проекты и интересная работа, то не думаю, что вам стоит бросаться на поиски чего-то нового. Просто занимайтесь тем, чем занимались, и не обращайте внимания на всякие индикаторы, указывающие на то, что популярность того или иного языка снизилась на 0,2%.

Какими языками программирования вы дополнили бы список умирающих технологий из этой статьи?



RUVDS.com
VDS/VPS-хостинг. Скидка 10% по коду HABR

Комментарии 266

    +30
    Пусть совсем замёрзнет Haskell,
    всё равно его не брошу,
    буду грызть его зубами,
    потому что он хороший!
      +1

      Тут вон Дядюшка Боб вывалил в своём очередном visionary talk, что "ФП это дисциплина по отношению к присваиванию". Ну вот и результат того, что человек не изучил достаточно и не знает Haskell — мифическое представление о большой области программирования.

        0
        Эта мысль была им озвучена и в Чистой архитектуре. Но что-то я не увидел внятного оппонирования.
      +39
      Тренд понятен, но думаю youtube-статистика, это скорее о популярности среди новичков, а не о использовании в продакшен
        +11
        На мой взгляд одна из выжнейших, если не важнейшая, метрика популярности технологии — это кол-во вакнсий по ней. Причём интереснее всего тренд, а не кол-во на момент. А PYPL это не учитывает.
          +1
          необходимо уточнение: не просто количество вакансий, а меняющихся. По старым языкам, тому же COBOLу вакансии могут висеть годами. И уровень оплаты там неслабый. Но — нет умельцев, не хотят (и я их понимаю :-).
          +41
          Более того, иные товарищи уроки и учебные материалы на ютубе в принципе не смотрят, поскольку это просто неудобно в сравнении с чтением хорошей статьи и доков:

          навязанная скорость потока информации против той, которая тебе удобна( нередко суть уроков на ютубчике — это 90% времени чувак что-то открывает и запускает и остальные 10% — это все отвальное, включая упоминание какой-либо важной фичи, разумеется, мельком ), тогда как в случае с написанными текстом материалами восприятие информации идет с комфортной скоростью

          проблемы с возвращением на нужный участок против незначительного перелистывания страницы до нужного фрагмента и его неспешное( иногда — многократное ) перечитывание — собсно, на ролике не особо удобно перемещаться по этапам, поскольку это, в первую очередь, видосик
            +14
            Вот вам пример. Я видео не смотрю никогда (кроме случаев, когда нет вообще никакого другого способа получить информацию). А когда смотрю — много проматываю. И всё равно ничего не понимаю (даже если не проматываю)… Натыкался на канал одного хорошего парня, который всегда выкладывал текст и скриншоты из видео в ссылке под видео (но сейчас уже давно потерял его — его темы неинтересны стали, мне пришлось сменить вектор).

            Да и вообще — я интроверт и предпочитаю всю информацию получать текстом, если это возможно и удобно источнику информации (если не удобно — не заставляю, но жду когда распознавание голоса дойдёт до нужно уровня).

            И да, есть ещё такое — я сначала пробегаюсь «по-диагонали» чтобы понять интересен ли мне материал, интересен ли мне стиль изложения… С видео и аудио (подкасты, например) — такое сделать невозможно.
              +9
              Всё так. На мой взгляд, видео-подача материала оправдана тогда, когда сам материал динамический, представляет собой процесс, и никакой другой способ просто не может адекватно и полно передать суть, если только не включать в состав материала GIF'ы, например, но это, считай, то же самое видео.

              Изучать же языки программирования по видео… Брр.

              И еще. Я могу ошибаться, конечно, но, возможно, видео-формат используется еще и потому, что но — отличный способ защитить свои материалы от копирования и подделки, в отличие от текста. А это важный момент.
                +5
                Вместо видео, по крайней мере для консольных программ *nix, придумали замечательные вещи навроде asciinema. Сам пользуюсь. Из плюсов, оно на сайте показывает js скриптом, всё выводится в виде текста и всегда можно поставить на паузу и скопипастить. Ну и так как исходники полностью открыты, как клиента, так и сервера, то можно заселфхостить, например для употребления внутри конторы.
                  0
                  Да, я знаю asciinema, прикольное средство, причем, скорее, именно прикольное. Полноценной заменой видеороликов оно, конечно, не является — во-первых, не всё можно отобразить с его помощью, во-вторых, нет звука. Ну и в третьих, для тех целей, для которых его применяют, вполне можно обойтись просто текстом. Там ведь и так текст, только анимированный.
                    +1
                    Как по мне asсiinema хорош именно как гарантированно работающий пример на живой системе. То-есть если выбирать копипастить из asciinema ролика или из примера где-нить на сайте, я предпочту первое. Ибо там, если не было ошибок во время выполнения, больше гарантии что где-то не лопустили опечатку. Да и потом, особенно новичкам из «поколения Z», больше нравятся когда на экране всё шевелится. ;-) А отстутствие звука лечится конструкциями вида. # This is example of jq command usage
                      +1
                      «Всё шевелится» — хорошо сказали :)
                      +1

                      Сам использовал asciinema для иллюстрации процесса загрузки свеженастроенной платы. Может, конечно, и баловство, но по идее окно minicom с реально то бегущим, то не бегущим текстом — это намного больший эффект погружения.


                      Кроме того, не уверен, корректно ли это отрабатывает конкретно asciinema, но нужно помнить, что вывод консольной утилиты — "это не только 10 кб текста, но и не очень легко усвояемые escape-последовательности". Бывают обычные "консольные" утилиты (да хоть тот же git), для наглядности переписывающие какой-нибудь индикатор прогресса. Бывают полноценные tui (тот же aptitude), "скриншот" которых, может, и получится передать в виде текста в <pre>, но не весь процесс работы.

                        0

                        Я пытался через asciinema записывать процесс разработки внутри vim — как-то плохо оно работает с раскраской, лигатурами (неудивительно), да и уникодом (не факт, что на целевой системе будут все нужные символы в шрифте). Короче, гифка проще и надёжнее.

                          0
                          уникодом

                          На агде разрабатывали? :)

                            0

                            На идрисе, но кое-какие вещи были с уникодом. А сейчас вот, кстати, на агде, там даже в веб-морде гитхаба не всё отображается как надо!

                      +1

                      Курс лекций по Rust отличный. Неформальный язык сильно отличается от письменного по передаче нюансов и вторичных смыслов, а они (иногда) важнее, чем первичные при рассказ про технологию или её аспекты. (https://www.youtube.com/watch?v=Oy_VYovfWyo&list=PLlb7e2G7aSpTfhiECYNI2EZ1uAluUqE_e)

                        +2
                        Я бы предпочел ту же лекцию с тем же неформальным языком — но в виде текстовой транскрипции. Особенно (сходил посмотрел начало) лекцию конкретно этого лектора в виде транскрипции, потому что его скорость подачи материала не выдерживает никакой критики. Лекция длится 1:40, в текстовом виде я ее минут за 15-20 осилю, а оставшиеся почти полтора часу потрачу с большей пользой, например, разберу подробно какие-то вопросы, примеры кода, отвлекусь на более подробное прояснение каких-то нюансов, которые лектор оставил за кадром, а мне они непонятны, и т.д.

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

                        А за себя я могу только повторить то, что выше — информацию в виде текста я усваиваю с примерно на порядок лучшей эффективностью, чем в виде аудио или видео. Как по вполне объективным причинам, так и в силу личных особенностей восприятия.

                        Каким бы распрекрасным ни был видео-курс лекций по Rust, он — видео. Всё, приехали, поезд дальше не пойдет. :)
                          0

                          Я искренне утверждаю, что за 20 минут лекцию (кроме вводной) не осилите. Прочитать — прочитаете, а вот осилить… Есть вероятность, что вы уже хорошо пишите на Rust/scala/haskell/modern C++, тогда вам всё просто и понятно. Если нет, то ни какими 20 минутами (и даже час сорок) оно даже близко не пахнет.

                            +6
                            Перечитывать непонятный кусочек удобнее, чем пересматривать (ИМХО).
                              +2
                              Если нет, то ни какими 20 минутами (и даже час сорок) оно даже близко не пахнет.

                              Лекция по вашей ссылке идет час сорок. Я сравниваю текстовую транскрипцию лекции с самой лекцией. Я не имею в виду «выучить язык». Два формата одного и того же материала. Простите, если у меня не получилось внятно сформулировать эту мысль.

                              Потратить на текстовую транскрипцию больше времени, чем на оригинал — думаю, что это невозможно. Хотя… если читать, шевеля губами, то возможно всё. :)

                              «Осилю» == «потреблю», это, наверное, самое подходящее слово, одинаково применимое как к видеоформату, так и к текстовому.
                            –2
                            Глянул, господи, этого лектора на пушечный выстрел нельзя к преподаванию подпускать с этими его всеми беее-мееее
                              0

                              Говорить ему тяжеловато, но у вас есть варианты либо лектора с mad skill в риторике и едва-едва в Rust, либо человека, который хорошо разбирается в Rust.

                                0
                                Лекции должны быть максимально понятными, а не пересказывать спецификацию (для того, чтобы прочитать спеку — лучше читать спеку).

                                В это смысле именно эти лекции отличные (сам их смотрю).
                                К 4й лекции есть 4 непонятных момента (и все они связаны с примерами кода).
                              0

                              Мне кажется вы забыли о видео лекциях

                                +1
                                Мне кажется, руководствоваться правилом «краткость — сестра таланта» далеко не всегда является удачной стратегией. Не могли бы вы развить ваш тезис?
                              0
                              я интроверт и предпочитаю всю информацию получать текстом

                              Путаете тёплое и мягкое.

                                +2
                                Он же не написал «интроверт и поэтому...», это два несвязанных утверждения, а не второе следствие из первого.
                                  +4
                                  Обычно, одни адекватные люди упоминают вместе взаимосвязанные утверждения. А другие адекватные люди, встречая намеренное совместное упоминание утверждений, предполагают, что для рассказчика важна их взаимосвязь.
                                    0
                                    Взаимосвязь не означает следствие. Видео и выступления, очевидно, для экстравертов-докладчиков, является ли их аудитория тоже экстравертами? Возможно (но требуются исследования). Интроверту, как мне кажется, не нужен человек в качестве источника информации, он предпочтет обезличенный вариант — текст.
                                      +1
                                      Видео и выступления, очевидно

                                      очевидно, вы вообще не понимаете, о чём говорите:

                                      выступления — это работа с аудиторией
                                      записывать видео (а в нашем контексте, скорее скринкаст) — уютно сидеть за компьютером в одиночестве
                                  –1
                                  Не придирайтесь… Интроверсию я упомянул в контексте что предпочёл, чтобы человек мне не звонил, а написал в СМС или мессенджере… И наоборот — если есть возможность человеку написать СМС или в мессенджере, я использую именно этот способ, вместо звонка.
                                    +1

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

                                      –3
                                      Нет, не путаю. Уж поверьте. Вам каждое слово объяснять? Или вы уж как-нибудь сами?
                                        +1

                                        Хамить не обязательно.
                                        А про интроверсию я знаю достаточно, чтобы видеть, что вы заблуждаетесь в простых терминах.
                                        Если есть, что сказать по делу – вперёд.

                                          –3
                                          Попробуйте подумать ещё раз… Вы слишком напыщенны.
                                          И хамить я даже не пытался. Поверьте, если я захочу вам нахамить — я меня забанят в русском сегменте интернета.
                                            +1
                                            Думаю пассивную-агрессию тоже надо начать рассматривать как хамовство.
                                            +1

                                            По делу? Восприятие через слуховой канал ближе к общению, чем чтение текста. Для интроверта логично снизить эту нагрузку (у нас уровень возбуждения соответствующих нейронов и так выше), если возможно.

                                          +1

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

                                            0
                                            разного рода приветствия, формальные вопросы, не предполагающие ответа, и т.п.

                                            Это всё отлично переносится в мессенджеры.
                                              0
                                              или по крайней мере взять паузу на обдумывание своего ответа на подобные неинформативные изыски общения с обычными людьми.

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

                                        0
                                        «Путаете тёплое и мягкое»
                                        Разве теплое и мягкое друг другу мешают? По моему они всегда живут по соседству.
                                          0

                                          В том-то и дело, что далеко не всегда.

                                          0

                                          Я тоже интроверт и тоже предпочитаю получать текстом.

                                          +3

                                          Могу посоветовать смотреть видео на x2 скорости, здорово экономит время

                                            +5
                                            С дикцией многих авторов как бы не на 0,5× скорости хочется включить.
                                              0
                                              Вы не полностью прочитали мой комментарий. И да — суть не в скорости… На слух информацию я воспринимаю хуже (поэтому даже после телефонного разговора, прошу собеседника, если это возможно, продублировать важное из сказанного электронным письмом).
                                          0
                                          о популярности среди новичков, а не о использовании в продакшен

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

                                            Т.е. ваш implicit посыл понятен: у новичков меньше ошибок вида true negative: если задали новое — новичёк лезет в интернет.
                                            Но вы упускаете ошибки типа false positive: новичёк в интернете интересуется, но промышленно программировать на этом не будет.
                                            0
                                            То есть, Вы предполагаете что популярность среди новичков — это некое самостоятельное явление, никак не связанное с индустрией?
                                            +10

                                            Все я понимаю с тремя языками, но почему Хаскель то теряет? В своей нише он же единственный, или все нынче на Idris смотрят?

                                              +13

                                              Хороший вопрос, почему. Вакансий больше, чем 5 лет назад, в не-хаскель-компании его протаскивать проще, чем 5 лет назад, и так далее. ИМХО ничего там не умирает.


                                              Но время покажет, конечно.

                                                +2
                                                Наверное потому как он более академичный. В сфере сетевых технологий успешно применяют Erlang, убивают C++ с помощью Rust, а Java — Kotlin
                                                  +2

                                                  Скорее убиваеют с помощью F# — куда более приближенном к "трудовым будням" языком, но при этом достаточно похожим на тот-же хаскель по многим параметрам, и что важно — хорошо интегрированным в .NET стек языков.

                                                    +5

                                                    Только вакансий на F# раз в пять меньше, .NET-стек используется, мягко скажем, далеко не везде, и (по крайней мере, согласно тому, что я знаю об F#), от хаскеля по фичам он очень далёк, на самом деле. Проще сказать, что там есть похожего, чем чем они различаются.

                                                      0

                                                      А если от тру ФП он все же далек, то легче использовать C# — тем более в последний завозят фичи более интенсивно.

                                                +4
                                                В своей нише

                                                В какой?
                                                  0

                                                  Язык для академиков же.

                                                    +5

                                                    Типобезопасный, выразительный и достаточно производительный язык без потребности в близости к железу, максимальной производительности и максимальной типобезопасности.

                                                      +2
                                                      Это не ниша, а его качества. Ниша это что-то вроде: «используется на всех микроконтроллерах», "№1 в системном программировании". Я так думаю
                                                        +4

                                                        Её тогда довольно трудно сформулировать кратко. Какая вот ниша у C++ или Java?


                                                        Если мне надо будет написать тайпчекер или компилятор, я выберу хаскель. Если бекенд веб-сервиса — хаскель. Если небольшой скрипт для того, чтобы распарсить чьи-то логи и посчитать всякую статистику, а потом по ней построить график — снова хаскель.


                                                        Ну, при прочих равных и отсутствии констрейнтов типа «у нас в команде одни питонисты, и они должны понимать то, что ты написал». Тут уж ни хаскеля, ни окамля, ни F#.


                                                        Если же мне нужно написать доказуемо корректный компилятор, то тогда вот хаскель я не выберу, он для этого слабоват. Если нужно дёргать какой-нибудь тензорфлоу, то на хаскеле, конечно, это делать можно, но бессмысленно. Если нужно написать прошивку для какой-нибудь attiny — ну тоже.


                                                        Фиг знает, как это в одну нишу уместить.


                                                        А вообще есть ещё такой периодически обновляемый документ, с которым я по большей части согласен (разве что, с numeric programming у меня очень позитивный опыт, так что я бы скорее там поставил mature).

                                                          0
                                                          C++ или Java?

                                                          C++ — значительная часть Windows; Microsoft Office, Adobe и другое прикладное ПО.
                                                          Java — почти весь банкинг, почти весь биллинг, куча другого Enterprise.
                                                            0
                                                            C++ — значительная часть Windows; Microsoft Office, Adobe и другое прикладное ПО.

                                                            В моей практике — прикладные приложения для embedded-систем, кросс-платформенные библиотеки, бэкенд сервисы. Вакансий тоже полно встречал в этих же областях.
                                                            Да, ещё в геймдеве это самый популярный язык, если не ошибаюсь.


                                                            Java — почти весь банкинг, почти весь биллинг, куча другого Enterprise.

                                                            Как минимум в мобильной разработке она до сих пор очень популярна.

                                                              0

                                                              ИМХО, говорить, что ниша C++ — прикладное ПО, как-то некорректно.


                                                              Я на нём и прошивки под attiny писал, и всякие хайлоад-машиннообучательные серверы, и так далее.

                                                              0

                                                              У Си++ ниша осталась довольно узкая — сложные проекты, где требуются высокопроизводительные вычисления, очень хорошо ложащиеся на объектную модель, т.е. работа с графикой (например, игры).

                                                                0
                                                                Компиляторы, тем не менее, пишут на C++, а не на Haskell.
                                                                  +1

                                                                  Какие, кроме LLVM и gcc, которые начались очень давно?


                                                                  Ну и, как думаете, мне компилятор моего PoC-языка в текущем проекте, или компилятор для DSL в предыдущем проекте, или компилятор для другого DSL в другом предыдущем проекте — все их стоило писать на плюсах, а не на хаскеле?

                                                                    0
                                                                    Какие, кроме LLVM и gcc, которые начались очень давно?

                                                                    V8 достаточно новый?

                                                                    stackoverflow.com/questions/17216232/why-compilers-are-written-in-c-c-instead-of-using-coffeescript-javascript-no
                                                                      +1
                                                                      V8 достаточно новый?

                                                                      12 лет. Ближе к LLVM, чем к нашему времени.


                                                                      stackoverflow.com/questions/17216232/why-compilers-are-written-in-c-c-instead-of-using-coffeescript-javascript-no
                                                                      I suspect that the majority of them will tell you that common compiler-writing software (yacc, flex, bison, etc) produce C code.

                                                                      Ну да, за последнее время ничего лучше этих инструментов ведь не появилось.


                                                                      Написать парсер — очень просто. Сделать по нему какие-то преобразования потом, тайпчекинг, оптимизацию — тоже.

                                                                        0
                                                                        12 лет. Ближе к LLVM, чем к нашему времени.

                                                                        Я с ходу не назову ни одного компилятора, который бы начали писать меньше 12 лет назад, и у которого сейчас больше пользователей, чем сам создатель и полтора его последователя.

                                                                        Ну да, за последнее время ничего лучше этих инструментов ведь не появилось. Написать парсер — очень просто.

                                                                        К парсингу относятся меньше 2% строчек кода в V8, я вот только что проверил.
                                                                          +3
                                                                          Я с ходу не назову ни одного компилятора, который бы начали писать меньше 12 лет назад, и у которого сейчас больше пользователей, чем сам создатель и полтора его последователя.

                                                                          Rust какой-нибудь? Agda 2?


                                                                          К парсингу относятся меньше 2% строчек кода в V8, я вот только что проверил.

                                                                          Там ещё следующее предложение было. Энивей, а что на плюсах сделать проще?

                                                                            +1
                                                                            Agda 2 старше чем V8 :-P

                                                                            Rust — ок, на пару лет моложе. Ещё за ночь вспомнил Kotlin и Swift, те ещё моложе. Но ни один из них, чсх, не написан на Haskell / OCaml / Scheme и т.п.
                                                                              +1

                                                                              Первая версия раста писалась на ocaml (емнип), потом он переписывался на расте, потому что быть self-hosted для языка общего назначения — это хорошо.


                                                                              Agda 2, действительно, старше (но всё равно написана на хаскеле, ЧСХ) — ну возьмите идрис, по нему уже даже вакансии есть. Первая версия на хаскеле, вторая — на идрисе.

                                                                            +1
                                                                            +- Roslyn.
                                                                      +1
                                                                      Вообще-то бутстрапинг вполне себе обычная тема, когда компилятор какого-нибудь языка пишут на этом-же самом языке: List_of_languages_having_self-hosting_compilers
                                                                        +1
                                                                        Речь о том, что когда компилятор пишут не на этом же самом языке, то его пишут на C++: Perl, Cython, V8, Swift, PHP JIT.
                                                                          +2
                                                                          Perl, Cython, V8, Swift, PHP JIT.

                                                                          …Coq, Agda, Idris 1, Purescript, Elm, QML (который для квантов).


                                                                          И вы упорно не отвечаете, что, по-вашему, делает написание компиляторов на плюсах более удобным, и стоит ли мне на всякий случай переписывать (или в будущем писать) свои язычки на плюсах.

                                                                            0
                                                                            …Coq, Agda, Idris 1, Purescript, Elm, QML (который для квантов).

                                                                            Тогда докину в свой список Delphi, Visual Basic и csc (который для C#).

                                                                            И вы упорно не отвечаете, что, по-вашему, делает написание компиляторов на плюсах более удобным, и стоит ли мне на всякий случай переписывать (или в будущем писать) свои язычки на плюсах.

                                                                            Лично я не пробовал писать компиляторы на Haskell, так что сравнить не могу. Но на правах байки могу рассказать, что один из инструментов, генерирующий какие-то таблицы для нашего компилятора, пришлось переписывать с OCaml на Python после того, как его создатель самоубился, а ни одного другого программиста, владеющего OCaml, в отделе не оказалось.
                                                                              +1
                                                                              Тогда докину в свой список Delphi, Visual Basic и csc (который для C#).

                                                                              csc не на сишарпе? Прикольно, не знал.


                                                                              Лично я не пробовал писать компиляторы на Haskell, так что сравнить не могу. Но на правах байки могу рассказать, что один из инструментов, генерирующий какие-то таблицы для нашего компилятора, пришлось переписывать с OCaml на Python после того, как его создатель самоубился, а ни одного другого программиста, владеющего OCaml, в отделе не оказалось.

                                                                              А чего на питоне, а не на C++?


                                                                              А так и у меня кулстори есть. Надо было сделать компилятор для стороннего DSL'я дла описания правил entity extraction'а. Команда из трёх плюсистов потратила 9 месяцев на оценку сроков, и выдала, что реализация займёт три года. Команда из одного меня потратила два месяца и выдала готовую рабочую реализацию на хаскеле (которую, правда, зарубили по политическим причинам, и тут хаскель это сделать помог, чего таить, несмотря на наличие целого отдела, занимающегося поддержкой инфраструктуры на нём, но неважно). В итоге реализации нет никакой, плюсисты с проекта слились (да и я их понимаю, переписать это на плюсах у меня заняло бы от этак полугода-года до бесконечности — уж больно много и тяжело надо печатать).

                                                                                0
                                                                                csc не на сишарпе? Прикольно, не знал.

                                                                                Именно это и стало причиной создания Roslyn, упомянутого чуть выше в ветке.

                                                                                А чего на питоне, а не на C++?

                                                                                Со мной, естественно, не советовались, так что истинных причин я не знаю; но предположу, что потому, что программисты на Python доступнее и дешевле, чем на C++ (и уж тем более на OCaml).
                                                                                0
                                                                                «а ни одного другого программиста, владеющего OCaml» в стране не оказалось
                                                                                0
                                                                                >> И вы упорно не отвечаете, что, по-вашему, делает написание компиляторов на плюсах более удобным, и стоит ли мне на всякий случай переписывать (или в будущем писать) свои язычки на плюсах.

                                                                                С фронтэндами языков лично я знаком лишь шапошно, но вот как написать бэкэнд на Хаскеле представляю крайне слабо (ну да сейчас всё в LLVM заворачивают):

                                                                                На бэкэнде же ну не знаю 90% преобразований подпадают под один или оба паттерна:
                                                                                — проанализировать граф и что-то в нём преобразовать (воможно транзитивно)
                                                                                — заменить одно представление CFG-узла другим (идти «сверху вниз» по куску графа, храня какое-то очень большое состояние и меняя операции, в соответствии с состоянием — распределение регистров, IceBreaker, ...).

                                                                                По-моему и то и то на Хаскеле писать больно (ну или не менее больно чем на условной Java).
                                                                                  0

                                                                                  Почему же больно? По графам как раз бегать на хаскеле очень приятно. Какие-то простые случаи вообще покрываются uniplate'ом (типа того, что найти узлы, удовлетворяющие одному условию, и заменить их на другие, основываясь на исходных узлах). Делать то же с состоянием тоже просто — ну просто вы живёте в монаде типа State, и всё.

                                                                                    0
                                                                                    >> Почему же больно?
                                                                                    > по-моему

                                                                                    В смысле я не знаю как это реализовано.
                                                                                    Я вас позже спрошу какую библиотеку посмотреть (надо сразу руками щупать, пока не дошли).

                                                                                    А сейчас объясните плз, как это идейно реализовано, ведь immutable data несовместимо с циклическими структурами данных, при наивной реализации.
                                                                                      0
                                                                                      Я вас позже спрошу какую библиотеку посмотреть (надо сразу руками щупать, пока не дошли).

                                                                                      Да я могу сразу названий накидать — uniplate для беготни по деревьям, hoopl для всяких графовых оптимизаций, unbound для работы с байндингами (я сейчас очень так конкретно испытываю с этим проблемы в агде, где готовых абстракций для этого не хватает), туда же всякие вещи типа таких (но последние два — скорее про чистый тайпчекинг, но в тех компиляторах, которые мне интересны, это более сложная часть, чем классический бекенд).


                                                                                      А сейчас объясните плз, как это идейно реализовано, ведь immutable data несовместимо с циклическими структурами данных, при наивной реализации.

                                                                                      А зачем вам там циклические структуры? :)


                                                                                      В любом случае, ленивость + иммутабельность вполне себе совместимы с циклическими структурами. Есть даже паттерн завязывания узла.

                                                                                        0
                                                                                        Спасибо, посмотрю.

                                                                                        >> А зачем вам там циклические структуры? :)

                                                                                        Не понял вопроса.

                                                                                        В принципе — потому, что IR содержит графы с циклами.

                                                                                        Технически потому, что представление графов: вершина содержит список дуг, дуга — два указателя на вершины технически наиболее удобно.
                                                                                        Поскольку эти графы сильно разряжены, активно изменяются, и большие (получить граф на 1000000 вершин (gcc -lto) дело не то, чтобы обычное, но и необычным не назовёшь), — то остальные представления проигрывают этому.

                                                                                        ПС
                                                                                        Вот смотрю материалы по Rust — и похоже(*) видел альтернативу циклической структуры, где вместо указателя содержался НОМЕР элемента в соответствующем векторе.
                                                                                        Ну т.е. это пиздец товарищи, не для такого мы коммунизм строили, чтобы значит ошибки из низкого уровня переносить в логику программы.
                                                                                        *) похоже — потому, что это бесплатная лекция с выложенного курса. Ролик без материалов.
                                                                                          0

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

                                                                                            +1
                                                                                            >> тупо список детей, и всё

                                                                                            Но даже в таком представлении (где вы непонятно что выигрываете — вверх по зависимостям ходить требуется довольно регулярно (*)) если в графе цикл: a -> b -> a то у вас тоже цикл.

                                                                                            *) в оптимизирующем компиляторе.
                                                                                              0
                                                                                              если в графе цикл: a -> b -> a то у вас тоже цикл.

                                                                                              Так я про то и говорю, что в тех графах, с которыми мне приходилось работать, удавалось обойтись без циклов.


                                                                                              Либо завязывайте узлы. Алгоритмы типа «пометить все достижимые из данной вершины» прекрасно выражаются в ленивом иммутабельном сеттинге даже в том случае, если в графе есть циклы.


                                                                                              вверх по зависимостям ходить требуется довольно регулярно

                                                                                              Обратный проход рекурсии в простых случаях (пройти односвязный хаскель-список из конца в начало не так сложно, как кажется, это обычный foldr), зипперы всякие в более сложных.

                                                                                                0
                                                                                                По теме: не вижу конструктивного способа продолжения спора (мне видится, что всё это чрезвычайно неэффективно, по скорости, на ваших задачах было ок) — слишком много несовпадений в параметрах сравнения.

                                                                                                Когда / если дойдут руки (на других уже задачах) — обращусь к вам. Спасибо.
                                                                                                  0

                                                                                                  А, у меня не было цели вести спор, я всего-то хотел рассказать, как можно или нельзя бывает делать. Обращайтесь, конечно, как руки дойдут!


                                                                                                  Наваять что ли статью про это всё при случае.

                                                                                            0
                                                                                            Вот смотрю материалы по Rust — и похоже(*) видел альтернативу циклической структуры, где вместо указателя содержался НОМЕР элемента в соответствующем векторе.

                                                                                            Да, это распространённый паттерн в Rust, зародившийся как часть Entity-Component-System, и приобрётший самостоятельность.


                                                                                            "Перенос ошибок низкого уровня в логику программы" — это хорошо, это значит что вместо UB вы получите панику. Но это не главная причина использования индексов вместо указателей. Главное — что это позволяет сохранять данные перемещаемыми.


                                                                                            P. S. Вот мой велосипед https://crates.io/crates/components-arena

                                                                                              0
                                                                                              Технически может быть и ок:
                                                                                              — удаление из такого массива ассимптотически дороже
                                                                                              + массивы кэш-френдли, а читаем мы чаще, чем удаляем.

                                                                                              Но идейно: пока у вас всё хорошо инкапсулировано в хорошо отлаженной библиотеке — всё хорошо.
                                                                                              Но как только вы такой поттерн применяете в своём коде — вы сильно мешаете ошибки прикладного кода с ошибками структур данных.
                                                                                              Это меня очень смущает (до такой степени, что выглядит как антипаттерн).
                                                                                                0
                                                                                                удаление из такого массива ассимптотически дороже

                                                                                                Поэтому вряд ли это применяется там, где удаление необходимо. Просто место помечается как свободное и занимается следующим новым айтемом. В общем, обычный arena allocator.


                                                                                                Есть случаи, когда структура данных сильно связана с прикладным кодом, и смешение оправдано и необходимо (поэтому существует, например, intrusive collections). А если у вас не этот случай, вам такой подход и не нужен: тогда вы просто воспользуетесь библиотекой, в которой внутри инкапсулированы обычные сырые указатели.


                                                                                                В любом случае инкапсуляция всё равно должна быть, только уровнем выше. То есть всего слоёв три: "generic data structures" — "domain specific data structures" — "прикладной код", и смешиваются первые два слоя, но не все три.

                                                                                                  0
                                                                                                  Ну как бы это уже немного обманывает ожидания, которые я имел от Раста исходя из постов на Хабре (сейчас по сути пытаюсь для себя решить — надо ли мне это (изучение Rust)? ).

                                                                                                  И такие моменты очень сильно смущают.
                                                                                                  Мы создали такую хорошую и такую строгую систему (Borrow Checker), что один из паттернов программирования на языке — им не пользоваться // я несколько утрирую.
                                                                                                    0

                                                                                                    Почему не пользоваться? Ровно наоборот, этот паттерн как раз и позволяет по-полной задействовать borrow checker, в отличие от более привычного подхода с Rc, RefCell и т. п.

                                                                                                      +1
                                                                                                      Когда вы сохранили «Vec» + «index_in_vec = 3» (вместо указателя \ ссылки) — то зависимость у вас логически никуда не делась, а в терминах доступных Borrow Checker её нет.
                                                                                                        0
                                                                                                        зависимость у вас логически никуда не делась, а в терминах доступных Borrow Checker её нет

                                                                                                        И не должно быть. Это просто не задача borrow checker — отслеживание подобных зависимостей. Borrow checker следит за указателями. Индекс — не указатель: в отличие от указателя, он не препятствует перемещению содержимого Vec в памяти, не создаёт проблем в многопоточном окружении, не вызывает проблем с некорректным алиасингом — вот это вещи за которыми borrow checker следит. Иначе говоря, индекс — это существенно более слабая зависимость, чем указатель, основная часть зависимости сидит в базовом указателе и borrow checker за ней следит.


                                                                                                        Да, было бы круто, если бы и такую слабую зависимость можно было автоматически чекать в компайл-тайме, но по сравнение с мутотой с указателями это сущая ерунда.

                                                                                                          +1
                                                                                                          Да вы правы.
                                                                                                          Действительно это зависимость другого рода и действительно Rust не обещает мне консистентность данных, а только отсутсвие ошибок с указателями (насколько я адекватно нагуглил после вашего комментария — разумеется прочитать и понять всю Rust Book я не упел).

                                                                                                          Тут может быть только замечание, оно уже было произнесено, но хотелось бы его проартикулировать ещё раз.
                                                                                                          С одной стороны «никто не виноват» вероятно циклические структуры данных — это действительно математически очень сложная штука раз такой паттерн вообще нужен.
                                                                                                          Но мои ожидания всё-таки были другими: что инструмент сделает мой «список» безопасным оставив прежнюю производительность, а не вынудит использовать структуры данных переводящие «локальную опасную» ошибку в «неопасную и `менее локальную` ».
                                                                                                          Мои ожидания — вроде как моя проблема (тем более циклические СД — наверное действительно сложно), а с другой стороны не упоминание довольно известных и актуальных проблем в популяризирующих материалах — не очень хороший тон.
                                                                                                0
                                                                                                Но это не главная причина использования индексов вместо указателей. Главное — что это позволяет сохранять данные перемещаемыми.

                                                                                                Я сходу не вспомню ни одного раза, когда мне бы надо было сделать граф перемещаемым. У вас есть примеры, зачем это может быть нужно?
                                                                                                  0

                                                                                                  Нет. Это просто удобство, а не необходимость. Но удобство существенное, хотя я не готов сходу его вербализовать. Просто чувствуешь, что просто и удобно, очень удобно.

                                                                    +26
                                                                    Потому-что автору очень хотелось рассказать о том, что он любит Питон, а посторонний заголовок просто для отвлечения внимания, как в анекдоте про студента на экзамене, который выучил один билет про блох.
                                                                    Какая-то, блин, халтура, притянул за уши ролики на ютубе, кто вообще учит языки по роликам на ютубе, дети чтоли?
                                                                      +1

                                                                      Анекдот в студию

                                                                        +1

                                                                        "Анекдот в студию"


                                                                        Google://студент экзамен блохи
                                                                        ;)

                                                                    0

                                                                    Может потому что проигрывает OCaml

                                                                  +6

                                                                  А ActionScript ещё где то кроме флеша используется? Если нет, то он самый умирающий должен быть.

                                                                    +19
                                                                    Мне казалось, что не «умирающий», а «умерший»…
                                                                      0

                                                                      "Зомби" же. Вроде и есть ещё местами, где менять сложно, больно или банально овчинка выделки не стоит.

                                                                    +11
                                                                    Самым франкенштейном должен быть Cobol, никакая серебрянная пуля его не берет:-)
                                                                      +2
                                                                      Все (около) IBM-овские так или иначе живы и используются в экосистеме мейнфреймов (Ну разве что кроме LinuxOne) и Power Systems. Включая мой любимый REXX.
                                                                      +7

                                                                      Довольно странные выводы. Ну вот я понимаю, что с одного языка можно перескочить на другой. Но с VBA куда переходить? Это единственный язык, встроенный в office, поэтому если нужно написать макрос, то писать приходится на VBA — что 20 лет назад, что сейчас.

                                                                        +1
                                                                        Это единственный язык, встроенный в office, поэтому если нужно написать макрос, то писать приходится на VBA — что 20 лет назад, что сейчас.

                                                                        Вы немного старомодны.
                                                                          +5

                                                                          Данное решение даёт возможность писать надстройку для офиса на JS, но не макросы. Макросы всё так же надо писать на VBA.

                                                                            0
                                                                            Конечно, формат взаимодействия чуть другой (в том числе и по соображениям безопасности). Но сделать в итоге можно всё то же и даже больше.
                                                                            +1

                                                                            Дополнения писать можно на других языках давно, можно при определённой сноровке даже Javascript вставить, но это не тот use case.

                                                                            +2
                                                                            Более того, автор путает VBA с, собственно, Visual Basic. Который, к примеру, используется на платформе .NET.
                                                                              +4
                                                                              На платформе .NET используется VB.NET. В нем отличий от VB гораздо больше, чем между VB и VBA.
                                                                                –2
                                                                                VB и VBA — это один и тот же язык.
                                                                                  +3
                                                                                  Язык один, а набор инструментов — разный. Вплоть до контролов (как сейчас помню, что нет таймеров в VBA).
                                                                                    0

                                                                                    Разные библиотеки, язык один. C++ в attiny и внутри office это тоже один язык.

                                                                                      +1

                                                                                      Это как JavaScript в браузер и в node.js. VBA грубо равен JavaScript+Dom в браузере

                                                                                +15
                                                                                Забавный факт: в первоначальной версии этой статьи, которая пришла мне в рассылке медиума, этими языкам были Альберт Эйнштейн Perl, Ruby, Scala и VBA. Очень неожиданный апдейт, надо признать
                                                                                  0
                                                                                  В каких это вселенных Скала умирает, интересно.
                                                                                  +26
                                                                                  <сарказм>
                                                                                  Статья неполна без похорон PHP. Это же хороший тон уже примерно лет 15 — его хоронить. Требую немедленно добавить PHP в статью!
                                                                                  </сарказм>
                                                                                    0

                                                                                    Так он есть, на картинке с мнением Гугла, четвёртое место в номинации «Best programming languages», при том, что лучшим языком для вёба стала Ява. Такая вот рокировочка.

                                                                                      0
                                                                                      лучшим языком для вёба стала Ява

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

                                                                                      Более того, там еще и C/C++/Go среди лучших Programming Languages. Похоже гуманитарий составлял эти рейтинги.
                                                                                        +1
                                                                                        это надо совсем не разбираться в текущих стеках веб-разработки.

                                                                                        Хмм, а почему? Мне казалось, что на Java можно сейчас разрабатывать просто и удобно. В 2020 году уже не нужны большие xml файлы и бинами и еще не пойми чем. Для сборки не надо устанавливать на комп maven/gradle, все происходит автоматом. Ну и, конечно, есть море библиотек, можно переиспользовать код с Android приложением и тд.


                                                                                        Тут ведь просто паритет с PHP, как мне казалось. Разве нет?

                                                                                          –1
                                                                                          Тут ведь просто паритет с PHP

                                                                                          В вёбе пых однозначно «царь горы», его теснят JavaScript, Go и много кто ещё, но Ява где-то в конце этого списка, рядом с исчезающим Рубином (ака Ruby). В свою очередь за пределами вёба пыха такой же ноль без палочки, как Ява в вёбе. Но ява на царя горы тянет, разве что, в разработке под андроид, так что никакого паритета не получается.

                                                                                            0
                                                                                            И в разработке под Андроид сильно быстро пятится от Котлина.
                                                                                            0
                                                                                            Насчет «на Java можно сейчас разрабатывать просто и удобно» — это если не сравнивать с действительно простыми и удобными фреймворками ala Rails/Django/YII/Next.js etc. Если посмотреть на тех. стек стартапов, то на Java хорошо, если 1 из 10 будет.
                                                                                              +1
                                                                                              В вёбе пых однозначно «царь горы», его теснят JavaScript, Go и много кто ещё, но Ява где-то в конце этого списка, рядом с исчезающим Рубином (ака Ruby)
                                                                                              Если посмотреть на тех. стек стартапов, то на Java хорошо, если 1 из 10 будет.

                                                                                              Вы и batyrmastyr мне привели вывод от размышлений, а я же изначально спрашивал: какие факты, предпосылки и рассуждения приводят к этому выводу.


                                                                                              В 2012 году, когда я заканчивал вуз, у нас на потоке ряд людей решили начать стартапы и пр. И из них никто тогда не использовал PHP. Python был, .Net был, Java немного даже использовалась, но не PHP. Не знаю, почему, однако, как Вы сами видите, это наблюдение не самое статистически корректное.
                                                                                              Однако, в то время PHP был распространен для небольших интернет-магазинов (бюджет на один был 12-30 тыс рублей). Насколько мне казалось, сейчас Тильда и Ко забрали просто этот рынок себе.


                                                                                              Если говорить про стартапы, то я знаю Рокет Банк, Uber, Тинькофф, Деливери Клаб, Револют, ДелиМобиль, Aviasales, Instagram, WhatsApp и подобные. И мне казалось, что там backend пишется на Java/.Net, а frontend — на TypeScript + Vue/React/Angular. Мобильные системы, очевидно, на Java/Kotlin/Swift.


                                                                                              По Вашим словам, я сильно ошибаюсь. И вот мне интересно — где можно посмотреть на статистику?


                                                                                              Куча рейтингов сейчас строится по Google Trends. Я не знаю как, но запрос "CompositeDisposable RxNet" ассоциируют с .Net, а "ktor client авторизация" — с Kotlin. Если таких ассоциаций нет, то эти запросы вообще покрывают хорошо если 1% всех вопросов про программирование (с моей точки зрения). Так что эти числа просто непоказательны.


                                                                                              Статистики по стартапам я не видел (то есть я не видел достоверных данных, что именно используется в стартапах, однако, есть исследования вида "в нашем инкубаторе 50% кодят на Windows, а оставшиеся 40% — на JavaScript").


                                                                                              Также я видел аналитику по GitHub, однако, большинство строк кода, как мне казалось, пишется в приватных репозиториях. А значит, эта статистика тоже непоказательна. Аналогично, как и статистика скачивания какой-нибудь библиотеки, так как из-за работы кешей и корпоративных Artifactory, она сильно искажена.


                                                                                              А потому у меня вопрос — а на основе каких данных делается вывод, что "В вёбе пых однозначно «царь горы», его теснят JavaScript, Go и много кто ещё, но Ява где-то в конце этого списка, рядом с исчезающим Рубином (ака Ruby)"? И аналогично — откуда был получен факт "Если посмотреть на тех. стек стартапов, то на Java хорошо, если 1 из 10 будет."?

                                                                                                0
                                                                                                Также я видел аналитику по GitHub, однако, большинство строк кода, как мне казалось, пишется в приватных репозиториях. А значит, эта статистика тоже непоказательна.

                                                                                                Статистика по строкам кода вообще непонятно что должна показывать; предположу, что больше всего строк кода написано на Фортране, Коболе и Си, но о популярности этих языков в 2020 это не говорит ничего.
                                                                                                  0
                                                                                                  WhatsApp

                                                                                                  Здесь используется Erlang, взяли ejabberd и доработали, оптимизировали.
                                                                                                  Использовался по крайней мере, сейчас то под крышей Facebook и с ушедшими основателями уже может быть всё что угодно, как было со Скайпом.
                                                                                                    0
                                                                                                    Вы можете посмотреть примерный тех. стек актуальных стартапов здесь:
                                                                                                    djqyo3vqv2.execute-api.us-west-1.amazonaws.com/latest

                                                                                                    Я не знаю, откуда Вы взяли, что Uber используют Java на бэке, но по их словам, там NodeJS — eng.uber.com/uber-tech-stack-part-two:
                                                                                                    The core of our web tech stack is built on top of Node.js
                                                                                                      0

                                                                                                      Отвечу Вам и wlr398.


                                                                                                      Я не знаю, откуда Вы взяли, что Uber используют Java на бэке, но по их словам, там NodeJS — eng.uber.com/uber-tech-stack-part-two:
                                                                                                      Здесь используется Erlang, взяли ejabberd и доработали, оптимизировали.

                                                                                                      Про WhatsApp — спасибо. Про Uber — я и не знал, что там работает. У удивился, что PHP везде используется. И, кстати, NodeJS не входит в множество "Rails/Django/YII/Next.js".


                                                                                                      Со ссылкой https://djqyo3vqv2.execute-api.us-west-1.amazonaws.com/latest/. Как я понял, там доска из 500 объявлений (для осознания масштабов — в Сбер Техе чуть меньше 10.000 человек было в 2017 году, если в среднем человек работает в этой компании 10 лет, то раз в год уходят 1000 и надо нанимать еще 1000, чтобы просто удержать численность), где ряд американских компаний ищет кого-то удаленно. Причем, у одной ссылка на сайт для подачи — https://www.usds.gov/apply, что намекает на то, что это не совсем стартап.


                                                                                                      Вот как я и говорил — нет особо фактов, есть только. На том сайте ищут, как я вижу, в основном разработчиков под TypeScript. На другом могут искать под Java. Причем, если разработчик под TypeScript меняет работу раз в N лет, а разработчик на Java — раз в M лет, то численность вакансий надо еще будет скорректировать в соответствии с этим фактором.
                                                                                                      Плюс надо учесть, что в ряде случаев ищется в принципе "Разработчик", ибо если человек не может кодить на разных языках, то редко такой человек будет действительно "сеньором" (хотя разные случаи бывают), ибо такой сотрудник не может осознанно выбирать инструмент под задачу, так как хорошо знает только один.


                                                                                                      Как следствие, возвращаемся к вопросу — откуда вообще идут данные о распространенности языка/технологии в web? У нас же просто нет достоверных источников.

                                                                                                        0
                                                                                                        И, кстати, NodeJS не входит в множество «Rails/Django/YII/Next.js».

                                                                                                        Почитайте про Next.js и как оно устроено. На бэке там именно NodeJS.

                                                                                                        Я вижу, что Вы не очень хорошо знаете, что такое HackerNews и что это за объявления. HackerNews — это очень популярное сообщество в основном по разработке и около того, но также там обсуждаются и просто актуальные вопросы. Возникло на базе широко известного YCombinator. Раз в месяц различные стартапы публикуют там вакансии. По ссылке выше — за текущий месяц. Подобные треды стали настолько популярны, что там публикуют вакансии и многие крупные компании типа FB, Apple, а также гос. службы типа FBI. Я не очень понимаю, какие именно достоверные источники Вы хотите, если не можете сделать выводы по данным источникам. Впрочем, Вы можете считать, что Java — лучший web-фреймворк, я не ставлю цели Вас в этом разубедить.
                                                                                                          0
                                                                                                          Почитайте про Next.js и как оно устроено. На бэке там именно NodeJS.

                                                                                                          Посыпаю голову пеплом. Вы правы.


                                                                                                          Я не очень понимаю, какие именно достоверные источники Вы хотите, если не можете сделать выводы по данным источникам.

                                                                                                          Повторюсь — я не понимаю, откуда идут выводы про "лучшая технология". Если это субъективное восприятие, то окей, вопросов нет. Если объективный факт — то откуда эти данные?
                                                                                                          Я согласен, что с PHP работают немало людей. Это не доказывает факт, что это лучшая технология, но является неплохим косвенным доказательством.
                                                                                                          Вы сказали про "тех стек стартапов", а в доказательство привели сайт по поиску вакансий, где явно не только стартапы, плюс число вакансий там сопоставимо с числом вакансий одной компании (условно, сейчас у Citi банка в Лондоне более 300 открытых позиций, а на той странице — около 500), что нивелирует полезность информации с сайта. Если кратко — малая выборка и это не только стартапы.
                                                                                                          А потому я опять прихожу к выводу, что данные про "лучший фреймворк" — это мнение, так как даже статистики использования особо нет.


                                                                                                          Вы можете считать, что Java — лучший web-фреймворк, я не ставлю цели Вас в этом разубедить.

                                                                                                          Я не говорил этого (вроде, такое называется подменой тезиса?). Более того, называть Java фреймворком было бы странно. ktor+khtml еще можно назвать с натяжкой, конечно. Ну или Spring можно было бы, наверное.


                                                                                                          Мне интересны факты в первую очередь — где что удобнее разрабатывать, а самое главное — почему. Если ответом будет "тут и школьник справится" — это одно. Если ответом будут детали в стиле "можно писать код сразу для сервера и браузером" — это другое. Если ответом будет "я просто знаю, что X удобнее" — то это не факт, а мысли человека. И вот мне интересны именно факты, а потому и спрашиваю.

                                                                                                          0
                                                                                                            0

                                                                                                            Ну тут Тинькофф сайт создавался силами 18000*0.7 человек (общая численность — 18000, из них 70% — IT специалисты). И он внесет 10 сайтов в статистику от силы. А какая-нибудь web студия на 100 человек сделает сотню сайтов на PHP за год. Правда, говоря про распространенность, меня больше интересовало "где больше людей задействовано", а не "на каких технологиях крутятся сайты".


                                                                                                            Но спасибо за ресурс.

                                                                                                        0
                                                                                                        В 2012 году, когда я заканчивал вуз.
                                                                                                        в то время PHP был распространен для небольших интернет-магазинов

                                                                                                        А на скамейках возле технопарка в Иннополисе красуются следующие языки: C#, PHP, HTML, Ruby, Objective-C, JavaScript, Java, Python, Swift (слева направо, сверху вниз, размер шрифта передать не могу). Столь же непригодны для экстраполяции на страну.


                                                                                                        какие факты, предпосылки и рассуждения приводят к этому выводу.

                                                                                                        Я посчитал, что вопрос был «почему вы над этими утверждениями ржёте?».


                                                                                                        По части рассуждений: посмотрите на поддержку хостингами разных языков — 100% поддерживают php, мало кто поддерживает питон или перл, а java поддерживает примерно никто. В результате мелкие сайтики, кому тесно в соцсетях и конструкторах, но нет денег на админа начинают с cms / готового движка или фрилансерского самопала на php. Яве в этой нише ловить нечего, но именно из доработок этого ужаса вырастают средние и крупные по размерам сайты и тут уже совсем не факт, что кто-то станет менять язык.


                                                                                                        Кроме ваших вариантов подсчёта популярность можно считать как: количество сайтов и количество разработчиков.


                                                                                                        Если смотреть на количество сайтов, то пыхе приписывают около 80% (https://w3techs.com/technologies/overview/programming_language и https://www.wappalyzer.com/technologies/programming-languages/), во многом из-за огромного количества сайтов на WordPress (с хостингом у самого вордпресса).
                                                                                                        Даже если выкинуть Вордпресс, доминирование пыхи в количестве сайтов опровергнуть нереально.


                                                                                                        сейчас Тильда и Ко забрали просто этот рынок себе.

                                                                                                        Таких Тильд и 20 лет назад было порядочное количество, и сейчас не меньше. WooCommerce, OpenCart, 1С-Битрикс — этих я знаю даже будучи «не в теме».


                                                                                                        Если говорить про стартапы

                                                                                                        Никто из не является стартапом, строго говоря, но раз уж вам интересны «серьёзные проекты», то получите, распишитесь: Facebook, Wikipedia, Вконтакте и сама Mail.ru, Yahoo, Baidu, Tumblr, Flickr, BlaBlaCar, Авито и уже упомянутый ранее WordPress (15 место в списке самых посещаемых сайтов мира), ну и 1С-Битрикс у нас в стране тоже популярен по вине маркетологов 1С.


                                                                                                        Статистики по стартапам я не видел

                                                                                                        Её нельзя экстраполировать на страну, даже если она у вас будет.


                                                                                                        Аналогично, как и статистика скачивания какой-нибудь библиотеки

                                                                                                        Вполне себе показывает изменение популярности языка со временем. Особенно если посмотреть на изменения в количестве библиотек и людей ими занимающимися.


                                                                                                        Для оценки количества разработчиков мы можем ориентироваться только на количество вакансии и смириться с некоторым количеством шума.
                                                                                                        Например, рейтинги по данным Хедхантера: https://m.habr.com/ru/company/hh/blog/474096/
                                                                                                        На самом Хедхантере упоминаний «java web» в раза меньше, чем php, но даже на первой странице большинство не про предложений не про разработку сайтов, поэтому сложно судить во сколько раз их меньше.


                                                                                                        У нас же просто нет достоверных источников.

                                                                                                        Тогда на основании чего вы писали, что у них паритет?

                                                                                                          0
                                                                                                          Я посчитал, что вопрос был «почему вы над этими утверждениями ржёте?».

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


                                                                                                          Если смотреть на количество сайтов, то пыхе приписывают около 80%

                                                                                                          Вопросов нет, Вы правы. На PHP есть миллиард сайтов, сделанных на 1-2 недели.


                                                                                                          Для оценки количества разработчиков мы можем ориентироваться только на количество вакансии и смириться с некоторым количеством шума.

                                                                                                          Да, Вы правы.

                                                                                                          0
                                                                                                          Instagram,
                                                                                                          Инстаграм на питоновской джанге.
                                                                                                  0
                                                                                                  Именно так :)
                                                                                                  Просто на самом деле у Пайтона не получилось вытеснить РНР, поэтому он живее всех живых. Что по цене, что по скорости разработки (опуская опусы о «красоте»).
                                                                                                    0

                                                                                                    Лет 15? Да ладно. Это Perl вот столько всё хоронят и хоронят.

                                                                                                    +14

                                                                                                    Уфф, слава богу, 1С не упоминается. Значит, с ним всё хорошо. Продолжаем продолжать.

                                                                                                      0
                                                                                                      Это «ненужно» не нужно, на глобальном рынке языков программирования. А продолжать конечно можно. Местами вон и на коболе продолжают. И даже неплохо так.
                                                                                                        +7

                                                                                                        Иногда хочется поиграть в сарказм и самоиронию без тегов сарказм и самоирония.

                                                                                                        +1
                                                                                                        SAP ABAP зато упоминается, я с ним работаю и действительно все обсуждения на форумах были в 2005-2011 годах, потом всё меньше информации, несколько блогов абаперов и всё в рунете.
                                                                                                          0

                                                                                                          Так ведь у статьи стоит плашка "перевод". Логично, что у них там просто не знают про 1С.

                                                                                                          0
                                                                                                          А где же срач?
                                                                                                            +6
                                                                                                            PHP забыли упомянуть же :)
                                                                                                              –1

                                                                                                              Надо начать? Окей… PERL ЖИВ!!

                                                                                                                0
                                                                                                                Слишком толсто (или наоборот).
                                                                                                              +2

                                                                                                              Никак не пойму, почему python выстрелил, а perl скатился. Достаточно программировал на обоих языках, и perl мне показался более цельным и зрелым. Что с ним оказалось не так, что он "не пошёл"?

                                                                                                                +9

                                                                                                                Perl "write-only". Не совсем, конечно, но в существенной степени. Его вынужденно использовали когда не было достойной альтенативы, а когда она появилась в лице Python, желающих добровольно разбирать эзотерические закорючки Perl оказалось мало.

                                                                                                                  +5

                                                                                                                  Первым убийцей Перла был, имхо, ПХП

                                                                                                                    0

                                                                                                                    Он не был "убийцей", он просто появился в нужное время в нужном месте — новая ниша бурно растущего веба и низкий порог входа "для домохозяек".

                                                                                                                      +1

                                                                                                                      И отобрал эту нишу у Перла, где он чуть ли не монополистом был для CGI

                                                                                                                    +3

                                                                                                                    Его и создавали как парсер регулярных выражений, а не язык ;). Собственно, с php похожая история.

                                                                                                                      0
                                                                                                                      ПХП же вроде изначально задумывался просто как препроцессор? Типа SSI (кстати вспомнил что от артёмия татьяныча был какой-то препроцессор, но вот никак не могу вспомнить название).
                                                                                                                        +1

                                                                                                                        Скорее как шаблонизатор итоговый, постпроцессор если угодно.

                                                                                                                          0
                                                                                                                          Вспомнил наконец parser (https://www.parser.ru/). Но так и ни разу ничего на нём не сделал… Оказывается он ещё развивается (ну или развивался до 2017 года :-))
                                                                                                                          0

                                                                                                                          Нет. Его создавали как клей shell + sed + awk при похожести на Си. Любой Unix-админ, которому приходилось использовать в скриптах sed и awk (то есть все в соответствующую эпоху), прекрасно его оценит.

                                                                                                                          +1
                                                                                                                          Perl не «write-only», вот не надо. Если культура разработки есть, то всё ок — OTRS тому пример.
                                                                                                                          Питон появился всего через 4 года после перла, так что альтернатива всегда была, форсить его начали только в районе 2010 года из-за бума веб-разработки(пхп фу-фу, мы не такие) и очередной волны ML, до этого он мало кому нужен был в публичном поле(хотя даже в десктопном игростроении применялся — Severance: Blade Of Darkness тому пример).
                                                                                                                            0
                                                                                                                            Python, имхо, более универсальный язык, чем просто очередной ЯП для веб-разработки.
                                                                                                                            На Питоне можно писать сервера приложений, какие-то обработчики данных (не обязательно больших), какую-то автоматизацию для серверов, еще много всякого.
                                                                                                                            К примеру, мой последний относительно крупный проект — автоматическая проверка корпуса текстов — написан полностью на Питоне. И там нет веб-интерфейса.
                                                                                                                              0

                                                                                                                              Питон весьма специфичен как ООП-язык, имхо. И специально или нет, но как-то продвигается то ли процедурный, то ли функциональный подход, а не ООП. Переход, вернее переключение на него с "Си с классами"-образных и обратно не очень практичный.

                                                                                                                                0

                                                                                                                                Из популярных "языков для веб-разработки" фактически, только PHP да JavaScript. Все остальные, как тот же Perl, многоцелевые (GUI-приложения на нём тоже делали).

                                                                                                                              +1

                                                                                                                              на любом языке можно писать "write-only". Но совсем не обязательно пользоваться этой возможностью.

                                                                                                                                0
                                                                                                                                Его вынужденно использовали когда не было достойной альтенативы

                                                                                                                                У них разница всего в 4 года (1987 Perl и 1991 Python), так что Python вполне мог выступать альтернативой большую часть прошедшего времени
                                                                                                                                  +1
                                                                                                                                  Чтоб его за ногу, старый добрый Perl был моим фаворитом на FreeBSD.
                                                                                                                                  https://www.my-old-version.com/perl/

                                                                                                                                  Теперь он вообще никому не нужен, впрочем, как и сама FreeBSD :-)
                                                                                                                                    0

                                                                                                                                    Куче контор нужен.

                                                                                                                                  0

                                                                                                                                  Это популярный миф, что write only: на нём прекрасно можно писать — и пишут — читабельно. Из-за таких мифов и хоронят до сих пор. Про Python и вынужденность тоже ошибка — он повяился в начале 90-х, возможность "не разбирать закорючки" была еще на заре веба. Нет, причины другие.

                                                                                                                                  +3

                                                                                                                                  Потому что в питоне в какой-то момент появился джанго и это он выстрелил а не питон.


                                                                                                                                  А в перле какое-то время была стагнация, разброд и шатания. Причем они уже лет 10 как кончились.

                                                                                                                                    +3
                                                                                                                                    У перла выше порог входа и меньше читаемость. Намного меньше.
                                                                                                                                    Причем это я сначала перл учил, потом питон.
                                                                                                                                    Ну и джанго в момент выхода был, конечно, шикарной вещью. 20 минут на поднятие админки с довольно сложными моделями или даже моделями авто-сгенерированными по базе — на тот момент было недостижимо.
                                                                                                                                      0
                                                                                                                                      У перла выше порог входа

                                                                                                                                      Чуть выше бейсика.
                                                                                                                                        0
                                                                                                                                        Ну это если писать как на бейсике, а так — надо регекспы понимать как минимум, а это не всем просто дается. Да и неименованные параметры — тоже.

                                                                                                                                        Уж у питона точно меньше порог.
                                                                                                                                          0
                                                                                                                                          надо регекспы понимать как минимум

                                                                                                                                          Необязательно. К тому же регэкспы не только в перле есть.
                                                                                                                                            0

                                                                                                                                            Поэтому perl не нужен. Goodnight, sweet prince.

                                                                                                                                            +1

                                                                                                                                            Зачем использовать регэкспы там, где задача не предполагает? За сколько лет опыта разработки на Перле — регэкспы применяются редко, не во всякой программе они нужны.

                                                                                                                                              0
                                                                                                                                              Потому, что perl-way изменения строк — регексп
                                                                                                                                        +2
                                                                                                                                        Python так же скатывался постепенно в небытие, пока лет 5 назад его не начали массово использовать для Machine Learning. А раз уж он уже у вас в ML используется и есть кодеры, то вполне логично и весь backend на нем же писать.

                                                                                                                                        Perl был погублен своим же основателем, который решил Perl 6 сделать совершенно несовместимым с Perl 5 и к тому же разрабатывался настолько долго, что даже самые консервативные Perl-кодеры устали ждать и перешли на что-то более актуальное.
                                                                                                                                          0
                                                                                                                                          До machine learning он уже вовсю использовался для data science
                                                                                                                                            0
                                                                                                                                            Python много где использовался, но это было очень нишево и популярность его была сильно ниже того же php. На порядок, может даже не один.