image

На Земле живет 7,5 миллиардов человек и 30 миллионов программистов. Человеческих языков около 7099, сколько компьютерных — никто не знает. CodeLani насчитал около 4248 языков, HOPL — 8945.

Хочу поделиться самыми интересными находками по языкам программирования. Никто не знает как дать определение, что такое «язык программирования». Первый язык высокого уровня — Plankalkül, созданный Конрадом Цузе в 1942-45 году. Первый коммерческий язык — FORTRAN (1956).

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

Кто считал и продолжает считать языки программирования:

  • TIOBE index — один из самых известных каталогов, он содержит около 250 языков программирования, критерии такие: 1) про него есть страница в Википедии 2) язык Тьюринг-полный 3) Гугл выдает более 5000 результатов
  • Википедия говорит нам о 700 языках.
  • Олдфаг из 90-х FOLDOC насчитывает 1000 языков.
  • The Language List насчитывает ~2,500 языков
  • Коллекция HOPL насчитывает 8945 языков
  • J.E. Sammet помогала разрабатывать COBOL и одной из первых задалась вопросом отслеживания языков программирования в 1971 году, она насчитала тогда 167 языков


Визуализации


image

Генеалогическое древо языков от Online Historical Encyclopaedia of Programming Languages. (PDF с окраской по странам)

image

Постер от O’Reilly с визуализацией 66 языков программирования до 2004 года (PDF формат постера)

image

Интерактивная визуализация от GitHut, 49 языков до 2014 года.

image

Интерактивная визуализация от Exploring Data’s D3, 1220 языков до 2014 года

image

Sammet’s chart

Одна из первых инфографик по языкам программирования от 1972 года, содержит 167 языков.

image

Обложка книги 1969 года, 117 языков программирования.

С какой буквы начинаются языки?


image

Какие страны создают языки программирования?


image

Отступы


image

Менее 2% языков используют отступы

Репозитории


image

  • ~1% языков имеет центральные репозитории
  • в мире насчитывается 2,000,000 packages (в 200-500 раз больше чем ЯП)
  • у Javascript’s npm 900 000 packages, у Javascript, Java, PHP, Perl и Python — 80% от общего числа packages.


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


  1. Flagman
    03.01.2022 16:20
    +2

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


    1. Jammarra
      03.01.2022 16:26
      +3

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

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


      1. DaneSoul
        04.01.2022 00:10
        +1

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


        1. novoselov
          04.01.2022 11:17
          +2

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


          1. MagisterLudi Автор
            04.01.2022 11:28

            Вроде Compreno по такой парадигме языка-посредника работали?


            1. novoselov
              04.01.2022 15:14
              +1

              Посмотрел Compreno, судя по описанию это больше инструмент для парсинга текста, чем собственно язык. Смысл мета-языка в том, чтобы каждое слово в отдельности максимально точно описывало сущность. В человеческом языке есть естественное ограничение на количество букв, а машинный язык может создавать слова как токены с дополнительным описанием. Грубо говоря, слово-токен 74628462363 соответствует "Лук" как растение, а 9472723654 соответствует "Лук" как оружие. При этом само слово имеет привязанную аттрибутику, начиная с описания "овощ"/"растение" и языковую специфику в контексте конкретного языка "род = мужской". При этом в конкретном тексте "лук" может означать как растение целиком, так и луковицу или перо лука. При разборе текста происходит извлечение смысла исходя из контекста повестования, но результат включает конечные токены, а не сложную композицию типа "верхняя зеленая часть растения лук". В общем идея в том, что слово мета-языка должно иметь свой смысл независимый от внешнего контекста, а вся суть взаимосвязей была частью самого языка - по сути это абсолютное аттрибутирование всего.


          1. ddinochrome
            04.01.2022 21:07

            Насколько я знаю работа по созданию такого языка ведётся: https://metalanguage.tech/


      1. unclegluk
        05.01.2022 02:54

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


    1. napa3um
      03.01.2022 16:46

      .


    1. Sadler
      03.01.2022 16:48

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


      1. GospodinKolhoznik
        03.01.2022 20:41
        +3

        Не скажу насчёт устной речи, но письменность усложняется. Сейчас, наверное, больше слов, которые пишутся не так, как слышатся. Если бы слова писались так, как слышатся, мой комментарий представлял бы из себя следующее:

        Нь скажу нащот усной речь, но письминась усажняитса. Сичас, наверна, большь слоф, кторые пишатса ни так, как слышатса...

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


        1. Sadler
          03.01.2022 20:45
          +1

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


        1. aelaa
          03.01.2022 21:00
          +1

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

          А к иероглифам мы уже давно пришли ;)


        1. Sychuan
          04.01.2022 15:08
          +1

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


    1. vutmuk123
      03.01.2022 19:59
      -4

      где-то слышал, якобы у якутов 15 разных слов, означающих разные виды снега...)


      1. vadimr
        03.01.2022 20:46
        +3

        Вообще-то и в русском можно примерно столько насчитать. Если с диалектами, так точно.


        1. vutmuk123
          03.01.2022 22:37
          +1

          а у эфиопов?)


          1. vadimr
            03.01.2022 22:42
            +3

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


    1. vadimr
      03.01.2022 20:47

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

      А семантикой в разных культурах вообще беда.


    1. Dmitriy_Volkov
      04.01.2022 13:40

      Если ИИ будет способен изобрести язык, который полный по Тьюрингу, и удобный всем (читаю, любому) людям, то поздравляю, ИИ уже давно захватил этот бренный мир


    1. OlegZH
      04.01.2022 21:49
      +1

      А Вы попробуйте. В этом случае, придётся сделать что-то вроде иероглифов. Тут, ведь, проблема в чём? Обычно противопоставляют звуковой способ и иеорглифический. Наверное, оптимальный вариант — это (наоборот!) сочетание звукового и иероглифического. Но для этого придятся признать, что:

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

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

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

      А ещё есть такая проблема, о которой говорил У. Матурана в своей "Биологии познания": всё сказанное сказано наблюдателем. Это значит, что более прадоподобна именно коннотативная теория информации. Такая теория помогает понять, почему любые попытки построить универсальный язык обречены на неудачу, поскольку информация не переносится, а привностится. В каком-то смысле, всё это смыкается с тем, о чём говорит Роджер Пенроуз в своих "Тенях разума".


  1. icommerce777
    03.01.2022 16:51

    Набирайте запрос в интернете "codelani язык программирования", особено из корпоративной сети, иначе неправильно поймут :)


  1. valis
    03.01.2022 17:12

    Создам свой ЯП и назову его Ы

    Подпорчу статистику :-)


    1. MagisterLudi Автор
      03.01.2022 17:15

  1. FlyingDutchman2
    03.01.2022 19:29
    +7

    J.E. Sammet помогал разрабатывать COBOL и одним из первых задался вопросом

    Только не "помогал", а "помогала". Jean Sammet - женщина.


    1. MagisterLudi Автор
      03.01.2022 20:00
      -4

      Спасибо!
      (правки принято в личном сообщении присылать)


  1. OlegPatron92
    04.01.2022 19:34
    +3

    Интересно, сколько в мире людей, имеющих опыт программирования, особенно старшего поколения, пик карьеры которых приходил на догитхабовскую эпоху, не имеют аккаунта на хитхабе?! Лично моё мнение, что людей считающих себя программистами, так или иначе практикующих программирование, гораздо больше чем 30 млн. Мало того не все у кого есть аккаунт на bitbucket, gitlab, пользуются github. Не все вообще используют VCS.


  1. ufm
    05.01.2022 08:40
    +1

    Еще хорошее место в плане языков программирования — http://www.rosettacode.org
    Что-бы не искать вот сразу два полезных линка: http://www.rosettacode.org/wiki/Category:Programming_Tasks
    и
    http://www.rosettacode.org/wiki/Category:Programming_Languages