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

Сегодня поговорим о универсальном языке программирования «для всего» и причинах появления новых ЯП. Обсудим несколько свежих разработок — например, Carbon, которому пророчат будущее преемника C++, язык для проектирования нейросетей Mojo, облачный язык программирования Wing.

Почему старые ЯП сохраняют популярность

Самые популярные языки программирования во всем мире по состоянию на 2023 г. Statista
Самые популярные языки программирования во всем мире по состоянию на 2023 г. Statista

Почему вообще некоторые языки не уходят в небытие? Тот же COBOL серьезно повлиял на культуру программирования в шестидесятых, но и в наше время остается востребованным. По оценкам аналитиков из Micro Focus, сегодня на этом языке выполняются более 800 млрд строк кода в продакшн системах, по сравнению с 200 млрд в 1997 году. Хотя все же стоит отметить, что язык получил множество обновлений, и нынешний COBOL уже не тот ЯП, что видел перфокарты.

Кроме того, есть еще и FORTRAN, созданный Джоном Бэкусом (IBM) в 1957 году. Это старейший язык программирования, который используется до сих пор.

Языки живут пока получают ключевые обновления, но порой такие инициативы встречают сопротивление со стороны сообщества. Достаточно вспомнить ситуацию с Python, которая вызвала продолжительные дискуссии относительно поддержки второй версии и миграции на третью. Тогда многие ИТ-специалисты выразили мнение, что история с Python — наглядный пример того, как не нужно управлять экосистемой. Однако несмотря на критику и ошибки, этот язык программирования остается одним из наиболее востребованных в мире.

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

Новые технологии и работа над ошибками

Эволюция языков программирования. Источник: Computer History Museum
Эволюция языков программирования. Источник: Computer History Museum

Одна из причин появления новых ЯП — необходимость переосмысления существующих подходов и исправление недостатков языков предыдущего поколения. Даже C++, будучи одним из наиболее распространенных ЯП, имеет определенные недостатки.

В то же время, процесс внесения изменений в C++ сильно затруднен: решения принимает специальная комиссия, структура которой направлена скорее на продвижение стандартов и интересов корпораций. Улучшить его, чтобы предоставить разработчикам тот опыт, который сегодня ожидают от ЯП, сложно отчасти потому, что C++ имеет десятилетия технического долга, накопленного при разработке языка.

Стать преемником C++ может Carbon. Его представил инженер Google Чендлер Каррут в 2022 году. Преемственность достигается за счет интероперабельности. Предполагается, что все библиотеки и кодовые базы можно будет «бесшовно» импортировать в двустороннем порядке. Кроме того, система построена на принципах открытого кода, авторы собираются своевременно делиться своими приоритетами с сообществом, а также быстро принимать решения об изменениях. Предполагается, что разработчики смогут без особых усилий перейти на новый язык. Carbon имеет современную систему дженериков, модульную организацию кода и простой синтаксис, который сокращает период адаптации при переходе на новое решение.

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

Но Carbon далеко не единственный проект, стремящийся исправить недостатки прошлых ЯП. Другим примером может быть язык V. Если раньше в фокусе была производительность процессов, то с развитием технологий большую важность обрела продуктивность разработчика. Главная особенность заключается в том, что V мотивирует писать простой и понятный код с минимальным уровнем абстракций. Например, он не содержит глобальных переменных, которые могут создавать неограниченное число зависимостей и усложнять программу.

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

Язык для систем ИИ

Согласно опросу, проведенному McKinsey среди полутора тысяч компаний в апреле 2023 года, треть организаций использует модели машинного обучения хотя бы в одной сфере бизнеса. Более того, 40% собираются активно инвестировать в новую индустрию.

Поскольку технология стремительно развивается, возникла потребность в оптимальном языке программирования для разработки систем ИИ. Закрыть её взялись Крис Латтнер, один из ведущих разработчиков Swift, и Тим Дэвис, бывший сотрудник Google — они представили Mojo.

Разрабатывая системы ИИ на Python, инженеры, так или иначе, подключают модули, написанные на более производительных языках. Такой «билингвальный» подход усложняет отладку, обучение и развертывание приложений на базе искусственного интеллекта. Mojo использует MLIR (Multi-Level Intermediate Representation), фреймворк для разработки компиляторов, и значительно обходит Python в вычислительной скорости. Например, для выполнения алгоритма Мандельброта первому нужно 0,03 секунды, а второму — 17 минут.

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

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

От единого языка к большим данным

До сих пор не существует языка программирования, который мог бы одинаково успешно справляться со всеми задачами. Попытки его создать предпринимались еще в 1960 годах, когда IBM разработала PL/I. Он должен был объединить преимущества FORTRAN, COBOL и ALGOL.

Однако, на что сразу не обратили внимание, с новым языком разработчики должно были прекратить использовать FORTRAN, COBOL и ALGOL. Эту проблему усугублял тот факт, что три языка сами развивались в реальном времени. Языки постоянно эволюционировали, и объединить старые и новые функции в одном инструменте оказалось невыполнимой задачей.

Учитывая неудачи разработчиков универсальных языков, некоторые их коллеги идут в другом направлении, предлагая сообществу предметно-ориентированные ЯП, призванные решать узкие задачи. Например, в области работы с big data появился Logica.

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

Облачные языки

С развитием облачной индустрии также появляются ЯП, заточенные под разработку облачных сервисов. Один из таких языков — Wing. Он имеет две фазы выполнения: preflight и inflight. Так, на первом этапе генерируется инфраструктурная конфигурация, а на втором — код компилируется в JavaScript и выполняется в облаке в среде Node.js.

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

Разумеется, узкоспециализированные языки программирования тоже сталкиваются с критикой. «Облачную» функциональность всегда можно реализовать в виде фреймворка, а не разрабатывать отдельный ЯП. Например, Shuttle — это облачная платформа для разработки приложений на Rust.

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

Заключение

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

  • Исходя из этого, языки программирования появляются в зависимости от конкретной задачи, целей и контекста. Один из ярких примеров настоящего времени — быстро развивающая область языков квантового программирования.

  • В сообществе нет единого мнения на тему того, остановится ли рост новых языков программирования. Хотя возможно мы будем наблюдать определенное замедление прогресса — все новые языки будут выглядеть просто как оптимизация старых ЯП.

  • Наконец, вполне возможно, что будущее программирования лежит именно в области узкоспециализированных языков. Вероятно, на рынке труда будет высокий спрос на специалистов с опытом разработки новых ЯП. Эти инженеры будут проектировать языки под конкретные отраслевые задачи, что приведет к стремительному росту индустрии.

Комментарии (45)


  1. 0Bannon
    11.04.2024 10:20
    +6

    Чтоб перегореть побыстрее. Следующий вопрос.


  1. unreal_undead2
    11.04.2024 10:20
    +5

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

    Что, и исключения между Carbon и C++ прозрачно перекидываются?


    1. knstqq
      11.04.2024 10:20

      перекидываются между C++ и cppfront (cpp2). Совместимость бинарная на уровне линковки, на уровне хидеров, более того в одном файле можно писать на миксе языков в "не строгом" режиме

      https://www.youtube.com/watch?v=ELeZAKCN4tY


      1. unreal_undead2
        11.04.2024 10:20

        Так там вроде только синтаксис меняется, семантику плюсов не трогают.


        1. knstqq
          11.04.2024 10:20

          всё так. Единственный существующий прототип компилятора - трансформер в обычный С++


  1. sergey_prokofiev
    11.04.2024 10:20
    +7

    Даже C++, будучи одним из наиболее распространенных ЯП, имеет определенные недостатки.

    Да неужели :))))

    А вообще статья совершенно гуманитарная.


    1. ImagineTables
      11.04.2024 10:20

      А какая часть цитаты имелась в виду? Первая, вторая или обе?


      1. sergey_prokofiev
        11.04.2024 10:20

        Несмотря на то что С++ сейчас гораздо менее популярен чем 30 лет назад, он все еще очень популярен - с этим не поспоришь.

        А вот

        Даже C++...... имеет определенные недостатки.

        вызывает исключительно улыбки. Как будто популярность коррелирует с "отсутсвием недостатков"(чтобы это ни значило) языков программирования.


        1. ImagineTables
          11.04.2024 10:20

          с этим не поспоришь

          По моим наблюдениям, большинство проектов, якобы написанных на C++, на самом деле написаны на квазиязыке под названием «C/C++». Именно на C++ их пишется так мало, что популярным его назвать трудно.


          1. DistortNeo
            11.04.2024 10:20

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


            1. ImagineTables
              11.04.2024 10:20

              Лично у меня универсальность ассоциируется с уменьшением сложности, а не увеличением. Просто потому, что одно универсальное правило покрывает множество частных случаев.

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


              1. DistortNeo
                11.04.2024 10:20

                У меня универсальность ассоциируется ещё и с покрытием кейсов, для которых используются узкоспециализированные языки.

                Стандартная бибилиотека как раз std::string предоставляет. Но разработчики библиотек используют кто во что горазд, потому что C++ не принуждает к использованию только стандартной библиотеки.


                1. ImagineTables
                  11.04.2024 10:20
                  +1

                  По-моему, всё это в другом порядке происходит ))

                  Стандартная библиотека НЕ предоставляет универсальный string, который можно было бы использовать в любых сценариях (посмотреть на универсальный string можно в .Net, где он поддерживает все мыслимые операции с текстом).

                  В результате, разработчики вынуждены искать string на стороне, например, в Qt, т.к. их не «не принудили». То есть, если называть вещи своими именами, лишили функционала. (Этак можно и собаку из дома выгнать, сказав, что решил «не принуждать её к совместному проживанию»).

                  И где же тут претензия на универсальность («…с любым языком, претендующим на универсальность…»)? Такой цели просто не ставится. Ставится цель сделать язык пригодным для написания ядер ОС. Я уж не знаю, где все эти ядра, и зачем нам столько ядер, но так говорят активные члены C++ комьюнити.

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


          1. sergey_prokofiev
            11.04.2024 10:20

            С - это подмножество С++. У самого C++ штуки 4 больших "рефакторинга" с подддержкой предыдущих фичеров языка. В результате непонятно что называть "чистым С++". Почитайте "дизайн и эволюция С++" за авторством мертвой птицы, которая не умеет летать. Посмотрите на год написания, прикиньте сколько еще наворотили после издания...


            1. grossws
              11.04.2024 10:20
              +1

              Скорее был подмножеством во времена C++98 или даже раньше. Во времена C11 и C++11 расхождений уже было достаточно


          1. GospodinKolhoznik
            11.04.2024 10:20

            Но ведь код написанный на C компилируется в компиляторе С++. Значит С тоже С++ ))


            1. unreal_undead2
              11.04.2024 10:20
              +2

              Весь-весь? И с неявным int? И все преобразования типов нормально компилируются?


              1. GospodinKolhoznik
                11.04.2024 10:20

                А в каком компиляторе вы компилируете сишный код?


                1. unreal_undead2
                  11.04.2024 10:20

                  Да хотя бы gcc. Конечно, warning'и в описанных ситуациях выдаются, но код от этого не перестаёт быть валидным.


                  1. GospodinKolhoznik
                    11.04.2024 10:20

                    Т.е. ваш сишный код и с неявным int и со всеми преобразования типов компилируется компилятором под C++ ?


                    1. unreal_undead2
                      11.04.2024 10:20
                      +2

                      Именно что нет - компилируется компилятором C, но не компилируется компилятором C++. Вы же утверждали

                      ведь код написанный на C компилируется в компиляторе С++


  1. Batalmv
    11.04.2024 10:20
    +2

    Ответ простой в виде аналогии: а почему в мире так много "естественных" языков. Давайте все будем говорить на эсперанто :)

    Мне кажется статья подразумевает какую-то логику. Здесь просто попросили бот накидать текста на тему

    --------------------

    Ну смотрите, все ж тривиально

    Есть существующая система. Ее нужно допилить напильником, а сделать новую с нуля дороге. Какой язык будем использовать? Бинго, тот на котором написана система. Так как legacy систем вокруг нас просто огромное количество, вот и ответ почему старые языки все еще живы

    Есть новая система, и надо выбрать стек. Ну все просто. Из тех вариантов, которые в принципе есть берется тот, где есть разработчики, либо они дешевле, так как во всем остальном это уже не так критично. К примеру, на одном из проектов надо было выбрать Java vs C# :). Дальше популярность тянет за собой язык, как если бы вы играете в монополию и начинаете выигрывать. Больше куплено, больше вам платят, вы больше покупаете. Так и с языком

    Также есть специфика, которая только множится, точнее к существующим слоям добавляются новые, но старые никуда не деваются. К примеру, появился "клауд", но ведь это никак не отменило bash, так как внутри конкретной виртуалки надо тоже чего-то делать. И т.д. Развитие ИТ идет методом добавления, что очевидно ведет к тому, что новые инструменты появляются, а старые просто занимают свою нишу либо активную, либо медленно умирающую (что-то вроде функции 1/x, которая конечно стремится к нулю, но его никогда не достигает)

    Почему не переиспользуются языки? Да все просто. Язык, хотим мы этого или нет, не существует в абстрактном мире. Конечно в документации да. Но в реальном мире нет. Программисты не хотят писать с нуля базу. Все хотят брать готовый фреймворк и докруить его под задачу. Вы же не хотите изобретать обычное серверное приложение, которое наружу торчит REST API наружу с нуля. Вы хотите сразу чтобы было все. Контроллер, авторизация, валидация и т.д. Те языки, где это запилили, очевидно применяются для таких задач.

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

    Но людям всегда интересно что-то запилить новое. Что-то взлетит, что-то - нет


  1. vitiok78
    11.04.2024 10:20
    +2

    Если оставить один язык программирования для всего, то его выбор (создание) будет набором компромиссов. А что такое компромисс? Это не решение, от которого все ахают в экстазе. Компромисс - это вынужденное решение, которое не нравится ни одной из сторон, и к которому приходят только потому, что иначе нельзя. Т.е. компромиссом в нашем случае будет язык программирования, который одинакового плохонько будет решать все задачи. Оно нам надо? Подумайте об этом... Выберут же JavaScript... У меня от одной этой мысли холодок по спине пробегает)

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


    1. unreal_undead2
      11.04.2024 10:20

      А если не выберут из существующих, а специально задизайнят новый универсальный с учётом всех предложений - появится просто ещё один язык который ничего не вытеснит. Вроде как Pl/I с такой целью разрабатывался.


      1. vitiok78
        11.04.2024 10:20
        +1

        Любой мульти-тул всегда хуже отдельных инструментов, любой шампунь "10 в одном" всегда хуже десяти специализированных. И т.д. Это прямое следствие компромиссов, принятых при создании таких монстров.

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


        1. Tuvok
          11.04.2024 10:20
          +1

          Не всегда так, в информационном ракурсе наоборот, программы поглощают друг друга становясь многофункциональными. То что раньше было отдельными утилитами сейчас вполне себе программный продукт. И все цифровые вещи такое свойство имеют, например современный смартфон много чего заменяет что в прошлом было отдельными девайсами. Что в материальном мире трудно или невозможно, в цифровом легко и непринужденно. Что мешает языку программирования быть таковым?


          1. vitiok78
            11.04.2024 10:20
            +4

            Дело в том, что у нас давным-давно есть такой язык. Это C++. На нём можно вообще всё, что угодно, написать.

            Только вот C++ - это язык, который я ненавижу больше всех после JavaScript. И почти все его недостатки как раз напрямую и проистекают от того, что он такой вот мульти-тул. И даже если они окончательно разберутся с проблемами с памятью, то самая настоящая его проблема так и останется. Знаете, какая это проблема? Это когда два программиста вполне себе могут не понять C++ код друг друга из-за чудовищного количества фич в языке.


  1. Tuvok
    11.04.2024 10:20
    +1

    Машинные коды и язык ассемблеров никуда не денутся.


    1. grossws
      11.04.2024 10:20

      Давно вы писали на ассемблере, скажем, 8051? Или R2000? Или ARM Thumb (первой версии)?


      1. Tuvok
        11.04.2024 10:20
        +1

        Разве асм не нужен для новых железок и компиляторов под них?


        1. grossws
          11.04.2024 10:20

          Таки имел ввиду что ассемблеры приходят и уходят вместе с ISA и железом.

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


          1. unreal_undead2
            11.04.2024 10:20

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


  1. maisvendoo
    11.04.2024 10:20

    HTML/CSS - язык программирования? Серьезно?


    1. unreal_undead2
      11.04.2024 10:20

      1. maisvendoo
        11.04.2024 10:20

        Ок, тьюринг-полный, так тьюринг-полный. Пусть будет на втором месте)


    1. Tuvok
      11.04.2024 10:20

      С учётом того, что на голом HTML/CSS сделали игру, то да.


    1. vitiok78
      11.04.2024 10:20

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


      1. unreal_undead2
        11.04.2024 10:20

        Выше кинул ссылку на тьюринг полноту (хотя есть нюансы).


  1. c0r3dump
    11.04.2024 10:20

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

    Статья начинается с ошибочного утверждения. Количество естественных языков тоже растёт, просто на некоторых из них почти не говорят, но часто остаются артефакты с этими языками. Бывают случаи и воскрешения древнего языка после того, как на нем перестали говорить. Примером может послужить возражение Иврита, после того, как он был заброшен и большая часть евреев говорила на идише или других языках, а сейчас ничего - вполне жив язык-то, идиш же отмирвет тк молодёжи не нужен, а старики - не вечные. Как минимум стоило бы в начале тогда дать определение что вы называете языком и что значит "существует" в вашем случае? Сколько человек должно на нем говорить, чтобы язык считался существующим?

    С языками программирования тоже похоже, количество кода на Ada не очень растёт...

    Почему так? Потому что по сравнению с языками общения все языки программирования очень молодые. Подождите хотя бы лет 500 с их появления и поглядим. Также, в создании языков общения участвуют обычно целые народы и культуры, причём долгое время. Да, есть искусственно созданные языки вроде эсперанто, ложбана, язык туземцев в фильме Аватар или эльфийские языки Толкина, но на них очень мало кто говорит, правда это не делает их несуществующими. Что проще - создать свой язык программирования или язык общения? Для меня на самом деле не очевидно, наверное Толкину как лингвисту проще Тенгвар эльфийский запилить, чем язык программирования, а кому-то - наоборот. Правда вот уговорить попробовать использовать новый язык программирования кого-то всяко кажется проще, чем уговорить освоить новый язык общения.

    Язык общения часто становится частью идентичности человека, некоторые готовы даже воевать и умирать за свое право использовать тот или иной язык. Много кто в окопы пойдёт за право писать на Perl в 2024? Ну и ещё - чтобы обучить людей языку программирования придётся использовать какой-то из языков общения, но не наоборот. Так что язык общения играет в жизни гораздо более значимую роль.


    1. Tuvok
      11.04.2024 10:20

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


    1. unreal_undead2
      11.04.2024 10:20

      Сколько человек должно на нем говорить, чтобы язык считался существующим?

      Достаточно одного носителя, выучившего язык как первый от родителей.


  1. JQuery567
    11.04.2024 10:20
    +1

    1-е место js да еще и html/css это (#%#%#%, не хочу ругаться) - мошенничество неверная методика.

    а) javascript в рейтинге надо делить на: 1) серверный Node.js и 2) браузерный javascript, в конце-концов в IE кроме javascript еще был и браузерный visual basic (еще точнее vba), может даже в 11-м IE он еще остался, не проверял, а IE во всех windows-ах есть, так что тоже 1-е место по распространенности дадим встроенному visual basic-у? По крайней мере среди компьютеров с Windows?

    б) html/css мало того, что не языки программирования, а языки разметки, так "произрастают" из тех же грабель - они работают только внутри другой программы - браузера!!!

    б-2) забыл про typescript - его зачем сделали? чтобы починить js, т.к. он работает на js, не так ли? Может еще в рейтинг запихаем jquery, react, vue, angular?

    js и html/css, typescript в общем рейтинге - это карточное шулерство!

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

    Опять же - например сайт (бэкенд) на питоне, а фронтэнд того же сайта на javascript. Как считать рейтинг при таком раскладе без злоупотреблений???

    в) еще такой специализированный язык - это SQL - опять же - сайт на питоне, фронтенд на html/css/js, в бд-SQL, - нужен честный рейтинг!

    г) ассемблер - основа всех языков, но сейчас только для драйверов и прочей специфики - в итоге ни он, ни SQL, ни js/html/css не должны быть в общем рейтинге - это не языки общего назначения!!!

    д) наконец (не бросайте в меня дохлыми помидорами :-) ) конечно это только мое частное мнениё :-)

    java, c#, kotlin: c# был сделан как бы javo-й под win из-за трений MS и SUN/Oracle, а kotlin - для google - чтобы Oracle "не доставала" по поводу java на android. я бы их объединил в одну позицию в рейтинге - это три разновидности одного языка.


    1. Tuvok
      11.04.2024 10:20

      Этак вы лихо сказали "внутри другой программы". Тогда вообще все что существует, кроме машинных кодов, асма и голого си идут курить в сторонке, особенно всякие интерпретаторы и ВМ. И то уверенным можно быть только в машинных кодах - только они на голом железе работают, остальное "внутри программы".


  1. axe_chita
    11.04.2024 10:20

    Языки программирования, это всего лишь инструмент в руках программиста для решения конкретных задач. А поскольку задачи с которыми сталкивается программист меняются, появляется потребность в новых инструментах. Нужно образно клубни из земли ковырять, вот есть замечательная палка-копалка. Посадил "картоплю" на маленьком поле и вот уже требуется три инструмента лопата, тяпка и капарулька. И как бы у каждого своя ниша. Увеличь масштаб и нам уже нужен трактор с навесным оборудованием, картофелеуборочный комбайн и самолет сельхоз авиации. Масштаб одной и той же изменился и изменились инструменты для её решения.

    Ещё пример: Можно ли забивать гвозди микроскопом? Можно, но молоток надежнее;)

    Иногда от безысходности бывает и наоборот: Кто сказал что гитара, не ударный инструмент? ;)


  1. domix32
    11.04.2024 10:20

    MLIR фреймворк для разработки компиляторов,

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