Привет, Хабр! Меня зовут Дарья Фролова, я редактор направления спецпроектов в МТС Диджитал. Хочу предложить вам вспомнить, что сегодня за дата — и я сейчас не про первый день последнего месяца лета. Спойлер: поговорим о Грейс Хоппер и ЯП. Жду вас под катом!

Что там с 1-м августа?

Именно в этот день, но в 1967 году Грейс Хоппер заняла пост директора Группы языков программирования в Департаменте информационных систем ВМФ США. Она разработала валидационное программное обеспечение для языка COBOL и его компилятора — это было частью его стандартизации. Считается, что сам COBOL родился в 1959 году. Основой для него послужил FLOW-MATIC, который был разработан для компьютера UNIVAC I в Remington Rand под руководством той же Грейс Хоппер.

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

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

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

Грейс Хоппер получила признание военных, ученых и обычных людей. В ее честь были названы корабль USS Hopper (DDG-70) и суперкомпьютер Cray XE6. Многие ее идеи и проекты до сих пор с нами — включая тот самый COBOL, древний по современным меркам язык программирования.

А COBOL до сих пор используется?

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

Конечно, компании постепенно отказываются от COBOL. Но в ряде сфер он пока что незаменим — на его основе работают системы, связанные в основном с финансами: банковская отрасль, фондовые биржи, социальные сервисы (биржа труда в США как пример). А вот инфографика, которая показывает актуальность языка в 2017 году (немного устарело, но все же):

Так что популярность ЯП не падает, а держится на плаву и иногда даже растет. В августе 2023 года COBOL вышел на 15 место в рейтинге среди ЯП. А в июле этого года занял 19 место в рейтинге TIOBE.

TIOBE — популярный рейтинг. Он формируется на базе таких критериев:

  • количество запросов о языке в популярных поисковиках;

  • активность обсуждения на профильных ресурсах;

  • количество вакансий с указанием языка.

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

Еще одно доказательство — в 2022 году количество строк кода, написанных на COBOL, составило 800 млрд. Востребованность языка оказалась настолько высокой, что несколько лет назад 75-летний программист Билл Хиншо основал новую организацию, которая занималась поддержкой решений на базе COBOL.

Пример программы на COBOL — это обычный Hello World:

Пример программы на COBOL — это обычный Hello World:
      	IDENTIFICATION DIVISION.
       	PROGRAM-ID. HELLO-WORLD.
    	*
     	ENVIRONMENT DIVISION.
    	*
     	DATA DIVISION.
    	*
     	PROCEDURE DIVISION.
     	PARA-1.
       	DISPLAY "Hello, world.".
    	*
         	EXIT PROGRAM.
       	END PROGRAM HELLO-WORLD.

Но ситуация постепенно меняется. Корпорация IBM разработала набор инструментов, позволяющий портировать COBOL-программы на Java — Watsonx Code Assistant. В основу положена модель генерации кода CodeNet — она может понимать не только COBOL и Java, но и около 80 других языков программирования. Платформа обучена на огромном массиве данных, у нее 20 млрд параметров.

Компания предложила свое решение партнерам, и они постепенно переходят со старой инфраструктуры на новую. Не только в США, но и в других странах, где до сих пор используется COBOL.

По оценкам IBM, сейчас 220 миллиардов строк кода действуют на мэйнфреймах и прочих системах. Обновленная версия языка обеспечивает точность вычислений, по-прежнему трудно достижимую в других ЯП. Например, COBOL может выполнять математические операции с точностью до 38 знаков после запятой, с усечением.

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

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


  1. Sazonov
    01.08.2024 14:26

    В каких таких современных языках сейчас есть труднодостижимая точность вычисления до 38 знаков после запятой? (Опять учёные что-то с журналистами сотворили)


    1. ukmsz
      01.08.2024 14:26

      У кобола фиксированная точка, количество разрядов до и после точки задается программистом


      1. SpiderEkb
        01.08.2024 14:26

        Там есть ограничения. Про кобол не знаю, мы с RPG работаетм. Там тоже есть поддержка типов с фиксированной точкой. Так вот тип packed (packed decimal - фактически BCD) ограничен 63-мя знаками всего и 31-м знаком после запятой. Т.е. максимально можно объявить

        packed(63:31)

        Это тип, который соответствует SQL типу DECIMAL


        1. ukmsz
          01.08.2024 14:26

          Если верить статье у кобола ограничение до 38 знаков после запятой


          1. SpiderEkb
            01.08.2024 14:26

            Ну насколько можно верить человеку, ни строчки на коболе не написавшему :-)
            Смотреть надо спецификации. Но мне лень сейчас (по крайней мере) :-)


  1. x89377
    01.08.2024 14:26
    +5

    Руководитель разъёмы паяет, редактор COBOL. Хорошие спецпроекты МТС. Жаль вакансий нет.


    1. SysManOne
      01.08.2024 14:26

      Руководительша скоро за ADA напишет, из солидарности. Так что, поддержим начинание! ;)


  1. SpiderEkb
    01.08.2024 14:26
    +1

    Пример программы на COBOL — это обычный Hello World

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

    Но ситуация постепенно меняется. Корпорация IBM разработала набор инструментов, позволяющий портировать COBOL-программы на Java — Watsonx Code Assistant.

    Рекламы много, вот только не видел ни одного восторженного отзыва типа "Вау!!! Перевели с кобола на джаву - он сразу стало быстрее работать и при этом меньше ресурсов потреблять - смогли заменить один дорогой мейнфрейм на пару дешевых мелких серверов".


    1. Serge3leo
      01.08.2024 14:26

      смогли заменить один дорогой мейнфрейм на пару дешевых мелких серверов".

      Хм, да только одна регламентная перезагрузка какого-нибудь бытового Linux-а раз в год, недопустимо снижает коэффициент доступности. Этот инструмент для переноса ПО со старых мейнфремов IBM на новомодные мейнфреймы IBM, и, как бы понятно, не в деньгах счастье.


      1. SpiderEkb
        01.08.2024 14:26

        Я с мейнфреймами не работал. Которые нынче IBM z, но работаю с middleware платформой IBM i (бывшая AS/400). Так вот там COBOL до сих пор поддерживается. Т.е. перенести все написанные на COBOL приложения со старого сервера на новый - никаких проблем.

        Более того, архитектура этой системы подразумевает хранение в бинарнике не только собственно исполняемого кода, но и промежуточного TIMI (Technology Independant Machine Instructions) кода. И метки под какой процессор сгенерирован исполняемый бинарный код. При переносе на новый сервер (процессор) при первом запуске система обнаружит что исполняемый код не под тот процессор и автоматически перегенерирует его из TIMI.


  1. SysManOne
    01.08.2024 14:26

    За DIBOL (не лекарство) МТС скоро напишет? ;)

    До тех, кто помнит ... маловато написано, а тех, кто нет - совсем мало ;)

    Пока жабоиды не уничтожили интерес к коболу вместе с коболом, можно легко найти VAX/VMS и к нему набор цомпилеров, пощупать на практике, так сказать.