Язык программирования кобол сообщение

Обновлено: 19.05.2024

В 1950-е году было очень мало стандартных языков программирования, и большинство компьютеров работали на персональных вариантах. В 1959 году Министерство обороны США собрало 40 экспертов из правительства и компьютерной индустрии для создания Конференции по языкам систем обработки данных (CODASYL). Они вдохновились стандартным языком программирования FORTRAN, который использовался в научном сообществе, а также языками MATH-MATIC и FLOW-MATIC. В 1960 году COBOL был готов к коммерческому запуску, а к 1970 стал самым популярным компьютерным языком мира.

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

Интересные отсылки

Почему бы не обновиться?

Сейчас с трудом можно найти новых программистов на COBOL, поэтому возникает очевидный вопрос: почему бы не перейти на более современные технологии?

Ответ прост: дорого и рискованно. COBOL работает с банковской индустрией, где любая ошибка может сильно ударить как по прибыли, так и по репутации, о чем недавно узнал на своем опыте британский банк TSB. В его мобильной банковской системе произошел сбой, из-за которого люди, зайдя в свой аккаунт, видели чужие данные.

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

Австралийский опыт

В 2012 году Банк содружества начал заменять систему COBOL на программу, разработанную немецкой компанией SAP. После того, к чему это привело, вряд ли многие банки захотят последовать примеру Австралии.

Процесс занял пять лет и обошелся в более чем $749,9 миллиона. За это время произошло множество неприятностей. Например, в июне 2015-го в системе произошел сбой, из-за чего пропало 600 тысяч платежей и операций по списанию средств. Через три месяца случился еще один крупный сбой, из-за которого клиенты банка не могли пользоваться карточками, платежными приложениями и оплачивать счета. Некоторые успели понадеяться, что банк простил им задолженности, потому что на какое-то время у них обнулился остаток долга.

Другие древние языки

COBOL (англ. COmmon Business Oriented Language ) — один из старейших языков программирования, предназначенный, в первую очередь, для разработки бизнес-приложений. Около 50 лет назад, комитет, состоявший из представителей шести крупнейших, на то время, производителей компьютеров и трёх правительственных агентств, выбрал для нового языка имя — COBOL, от Common Business-Oriented Language. Язык пережил многих своих создателей, и даже сейчас используется очень широко. К счастью, или к сожалению, в России он почти неизвестен, но в США, судя по статистике от Datamonitor до сих пор пишется до 5 миллионов строчек кода на Коболе ежегодно.

Основная сфера применения — банковская сфера, телефонные операторы, правительственные агентства.

Содержание

История


Руководителем проекта по созданию Кобола была женщина — Грейс Хоппер , часто ее называют "бабушка Кобола". Грейс делала свои первые шаги программирования в резерве ВМС США, набирая машинный код для компьютера Harvard Mark I в течение Второй Мировой Войны. В конце 1950-х она пришла к мысли, что языки ЭВМ можно было бы сделать похожими на человеческий язык, и тем самым более понятными, чем используемые тогда ассемблер и машинный код. В 1959 году совещание в Пентагоне даёт начало компьютерному языку, который позднее станет известен как “Кобол” (COBOL) и будет основным средством бизнес-вычислений в последующие 40 лет. [Источник 1]

“Кобол”, сокращённо от Common Business-Oriented Language (Общий бизнес-ориентированный язык программирования), был одним из первых компьютерных языков. И, наряду с “Фортраном”, он был одним из первых языков программирования, основанных на английской лексике.Всего было выпущено пять стандартов языка: COBOL-60, COBOL-68, COBOL-74, COBOL-85, COBOL 2002.

Спецификация COBOL

COBOL-60

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

Спецификации были представлены исполнительному Комитету на 4 сентября. Они не оправдали ожиданий: Джозеф Wegstein отметил, что "он содержит шероховатостей и требует некоторых дополнений", и Боб Бемер позже описал их как "мешанина". Комитет дал срок до декабря для улучшения языка. [Источник 2]


COBOL-61 - COBOL-65

Многие логические ошибки были найдены в COBOL 60. Неохотно краткосрочный комитет принялся за тотальную зачистку и к марту 1963 г., сообщалось, что COBOL-это синтаксис определяющийся как Algol, несмотря на то,что смысловые неясности остались.Ранние компиляторы COBOL были примитивными и медленными.

В конце 1962 года, IBM объявила, что COBOL будет их основным языком разработки, а развитие COMTRAN прекратится.

Спецификация COBOL была пересмотрена три раза в течение пяти лет после ее публикации. COBOL-60 была заменена в 1961 году на COBOL-61. Этот позже был заменен на COBOL-61 расширенные характеристики в 1963 году, который представил сортировки и отчет писателя объектов.Были добавлены объекты, исправлены недостатки, выявленные Honeywell в конце 1959 года.COBOL издание в 1965 году принес дополнительные пояснения к спецификации и появились средства для обработки массового хранения файлов и таблиц.

COBOL-68

Начались усилия по стандартизации COBOL и по преодолению несовместимости между версиями. В конце 1962 года ISO и ANSI сформировали группы для создания стандартов. ANSI произвел стандартный COBOL Х3.23 в августе 1968 года, который впоследствии стал основой для более поздних версий.Эта версия стала известна, как американский Национальный Стандарт COBOL и был принят ISO в 1972 году.

COBOL-74

К 1970 году, COBOLстал самым широко используемым языком программирования в мире.

Независимо от ANSI комитета, комитет CODASYL работает над совершенствованием этого языка программирования. CODASYL рассказала о новых версиях в 1968, 1969, 1970 и 1973, включая такие изменения, как новое межпрограммное общение, отладки и объединения файлов, а также улучшенную обработку строк и библиотек. И хотя CODASYL была независима от ANSI комитета, CODASYL был использован ANSI для идентификации функций для гарантирования реализации. В 1974 году ANSI опубликовал пересмотренный вариант COBOL, содержащий такие новые функции, как сегментацию модуля.

COBOL-85

В июне 1978 года начались работы по пересмотру COBOL-74. Предложенный стандарт существенно отличался от предыдущего, вызывая опасения по поводу несовместимости и конверсионных расходов. Г-н Брофи описывал предыдущие преобразования как "непродуктивные" и "трата наших программных ресурсов".

COBOL 2002 и объектно-ориентированный COBOL

В 1997 году, группа компании Gartner подсчитали, что в общей сложности из 200 миллиардов строк 80% всех бизнес-программ производились на COBOL.

В начале 1990-х годов начались работы по добавлению объекта-ориентации в следующей полной ревизии COBOL. Объектно-ориентированные средства были взяты из С++ и языка smalltalk.Некоторые производители (в том числе микро-Фокус, компания Fujitsu, и корпорация IBM) представила объектно-ориентированный синтаксис, основанный на проекты полного пересмотра. Окончательный утвержденный стандарт ISO был утвержден и опубликован в конце 2002 года.

COBOL 2014

Между 2003 и 2009, три технических отчеты выпустились с описанием объекта доработки в XML обработке и набора классов для COBOL.

COBOL 2002 страдал от плохой поддержки: нет компиляторов полностью поддерживающих стандарт. Это было из-за отсутствия пользовательского спроса на новые функции.

COBOL 2014 включает в себя следующие изменения:

  • Портативные арифметические результаты были заменены на стандарт IEEE 754
  • Основные характеристики были сделаны необязательными, такие как VALIDATE объекта.
  • Перегрузка метода
  • Динамическая емкость таблицы

Языковые особенности

Синтаксис

Cobol имеет английский синтаксис, который используется, чтобы описать почти все в программе. Например, условие может быть выражено x IS GREATER THAN y или более кратко, как x GREATER y или x > y. Можно использовать и более сложные условия, при этом нужно удалить повторяющиеся условия и переменные. Например, a > b AND a > c OR a = d можно сократить до a > b AND c OR = d. В следствие этого, синтаксис COBOL имеет более чем 300 запросов,и некоторые из ключевых слов являются альтернативой простому или множественному числу написания одного и того же слова, которое предоставляет дополнительные английские предложения; например, IN и OF ключевые слова могут быть взаимозаменяемы, как IS и ARE или VALUE и VALUES.

Каждая COBOL программа состоит из четырех основных лексических единиц: слов, литералов, картинок персонажа-строки и сепараторов. Слова включают зарезервированные слова и пользовательские идентификаторы. Они не превышают 31 символ и могут включать буквы, цифры, дефисы и подчеркивания. Литералы включают цифры (например, 12) и строки (например 'Hello!'). Сепараторы включают в себя пробел, запятые и точки с запятой.

COBOL требует чёткого структурирования файлов с исходным кодом программ. Каждая из них должна состоять из четырёх частей (в терминах COBOL - разделов):

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

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

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

COBOL часто критиковали за его многословие. Сторонники говорят, что он был предназначен для того, чтобы облегчить программу обслуживания.COBOL был также предназначен для легкого использования и освоения программистами,но и в то же время понятным для не технического персонала, такого как диспетчеры.Стремление к доступной читаемости привело к использованию английского языка и его структурных элементов, таких как существительные, глаголы и т.д. [Источник 3]

Влияние на другие языки программирования

Структуры данных COBOL повлияли на последующие языки программирования. Его записи и файловая структура влияет на PL/I и Паскаль. Явная структура файла предшествовала развитию систем управления базами данных и, в связи с этим, произошел значительный прогресс, по сравнению с массивом Фортран.

COBOL-это COPY сооружение, хотя и считалось примитивным,но в итоге повлияло на развитие директивы include.

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

Масштабы использования

Кобол обычно критикуется за многословность и громоздкость, поскольку одной из целей создателей языка было максимально приблизить конструкции к английскому языку. (До сих пор Кобол считается языком программирования, на котором было написано больше всего строк кода). Так широко известно высказывание Дейкстры: “Использование Кобола калечит ум. Его преподавание, следовательно, должно рассматриваться как уголовное преступление”.

В то же время, COBOL имел прекрасные для своего времени средства для работы со структурами данных и файлами, он стал первым языком, в котором появился тип данных “запись”. Это обеспечило ему долгую жизнь в бизнес-приложениях, по крайней мере, в США.

Согласно исследованию Gartner от 2001 года (в случае с данным конкретным языком это вполне можно назвать “недавно”), 85% мирового объема бизнес-информации обрабатывалось на языке COBOL, а к текущему моменту объем кода, написанный этим языком программирования, начинает снова увеличиваться. Компания Micro Focus, занимающаяся разработкой и продажей инструментов модернизации COBOL, заявляет, что 70% мирового бизнеса до сих пор активно использует этот язык. Общая стоимость используемого в настоящее время кода COBOL оценивается в 2 триллиона долларов США. До сих пор ежегодно пишутся миллиарды новых строк кода на COBOL. [Источник 4]

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

Поэтому его мать предложила нечто странное и новомодное: как насчёт… программирования компьютеров?

И дело в том, что его код по-прежнему работает даже сегодня.

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

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

Переживёт ли Томаса его код на COBOL?

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

Но как насчёт более старых и массивных отраслей, являющихся центральными для экономики? В них по-прежнему вездесущ COBOL. Из-за этого инновации усложняются. Как создавать и прикручивать новые возможности с помощью древнего языка, который неинтересен энергичным молодым кодерам? Если крупные старые банки — это не компании, двигающие прогресс вперёд с помощью сервисов наподобие Venmo или Square, или других громких финтех-продуктов, то из этого следует, что COBOL является частью проблемы. Но если это так, то почему же Томаса по-прежнему тревожат на его заслуженной пенсии, чтобы он поддерживал жизнь в этих системах? Почему нельзя обойтись без них?

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

В 1959 году программистка Мэри Хоуэс решила, что её отрасли нужен язык, на котором писать будет так же просто, как на FLOW-MATIC, способный при этом работать на любой машине. Она собрала комитет специалистов, в том числе из только зарождающейся отрасли бизнес-компьютеров, чтобы приступить к созданию языка под руководством министерства обороны. Задача заключалась в написании языка, который бы мог читать и понимать обычный менеджер компании, даже если он не учился на программиста.

Спустя десятилетие работы, активно продвигаемой множеством женщин-суперзвёзд этой отрасли, например, пионеркой компьютерных наук Джин Саммет, был создан язык, во многом напоминавший FLOW-MATIC и простой в понимании. Например, для сложения двух чисел можно было написать ADD Num1, Num2 GIVING Result . Чтобы выполнить вычисление три раза, нужно было написать PERFORM 3 TIMES .

Изменил он и круг тех, кто мог на нём писать. COBOL демократизировал кодинг; теперь компании могли нанимать обычных людей и обучать их, за несколько месяцев превращая в полезных программистов на COBOL, а через пару лет — в специалистов. Это было критически важно, учитывая, что компаниям отчаянно требовалось больше гребцов, чтобы писать ПО.

С банками та же ситуация: в течение рабочего дня они суматошно принимают транзакции, запросы на вывод и поступление денег клиентов на их счета. По вечерам у них есть несколько часов на подсчёт баланса всей этой бухгалтерии. Возможно, вы задавались когда-нибудь вопросом, почему клиринг размещённого вами чека занимает какое-то время. Частично это вызвано тем, что обоим банкам нужно провести все эти огромные вычислительные задачи на COBOL после ухода дневного персонала. В Citibank код Теплицки выполнялся в огромном центре из 248 компьютеров-мейнфреймов.

COBOL был оптимизирован для выполнения именно этой задачи: обработки целого множества транзакций. Компьютерные языки часто имеют определённую когнитивную или творческую специализацию; каждый из них создавался под конкретный тип задач. Python превосходно работает с data science и искусственным интеллектом; Fortran был создан для преобразования математических формул в код; JavaScript создавался, чтобы программисты могли делать веб-сайты интерактивными.

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

Как ни странно, сам возраст систем COBOL идёт ему на пользу. Поскольку его экосистема стара, её тщательно избавляли от ошибок и багов. Когда программа пишется впервые, она неизбежно имеет проблемы. Иногда это опечатка или команда не на своём месте; в другом случае пользователь делает нечто неожиданное для программиста, из-за чего всё разваливается. Когда появляется новое приложение, в нём много багов и оно подвержено вылетам: его создатели отправили его в мир со всеми этими несовершенствами. На обнаружение всех проблем уходят дни, недели или годы.

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

Адриана Стерн (на этот раз это не псевдоним!), ещё одна программистка, с которой я общался, работала на крупные канадские банки. Её карьера началась в 80-х, когда из систем всё ещё устраняли различные странные баги. Однажды она выяснила, что один банковский терминал в Квебеке передаёт в систему буквы со знаками ударения, чего не предусмотрел программист системы.

Эта идея о том, что старый код может быть не только хорошим, но в критических аспектах и превосходить новый, противоречит мифологемам Кремниевой долины. Финансируемые венчурным капиталом стартапы зачастую расхваливают блестящие новые технологии. Основатели обычно не хвастаются всем, насколько стара их кодовая база. Всё наоборот: они хвалятся, насколько прогрессивен их код, написанный благодаря ночному труду сонных двадцатиоднолетних гениев. Но почти любой программист скажет вам, что чем недавней написано ПО, тем больше вероятность, что оно представляет собой сборище багов.

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

Они определённо знают, что он работает. Ведь он функционирует каждый день, за мгновение обрабатывая миллионы транзакций! Но никто точно не знает, как и почему. COBOL превратился в непостижимую загадку, в демона, покорно исполняющего свои задачи, но таким способом, который никто не понимает полностью.

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

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

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

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

По словам Томаса, это означает, что проблема Y2K для них решена не полностью. Они просто отложили её решение. Когда наступит 2045 год, у них снова может возникнуть паника. А это означает, что специалистам по COBOL нужно будет исправлять новый COBOL.

Если только они ещё будут живы… Крейг Бейли из программной фирмы Faircom работал с клиентами, помогая им мигрировать со старых систем COBOL. Фирма работала с каждым клиентом, находя старых уволившихся сотрудников, которые изначально писали эти системы, но время от времени ветераны в процессе работы умирали.

Банкам приходится надеяться, что старички продержатся как можно дольше, потому что сегодня не так много молодёжи, изучающей COBOL.

Некоторые фирмы, озабоченные тем, что в будущем будет слишком трудно найти адептов COBOL, пытаются переписать всю свою систему на новом языке. Почти всегда это является адской задачей: необходимо продумать каждый аспект задач, выполняемый сложным, создававшимся десятки лет программным обеспечением, и воссоздать каждый малейший шаг на новом языке. Три года назад New York Times переписал систему циркуляции газет с COBOL на Java; попытка оказалась успешной, однако на подтверждение того, что новая система способна на всё то, что и старая, потребовалось неожиданно много времени.

И им ещё повезло. Commonwealth Bank of Australia попробовал переписать ядро системы на новом языке: на проект потратили вдвое больше ожидаемого, 1 миллиард австралийских долларов. Специалист по мейнфреймам с большим опытом Лен Санталусия однажды работал с финансовой организацией DTCC над исследованием возможности перехода с COBOL на Java.

Однако проблема банков в том, что несмотря на стабильность их кода на COBOL, ожидания их клиентов могут оказаться не столь постоянными. Как вы могли догадаться, ситуация в финансовой отрасли быстро меняется. Транзакции всё больше происходят в приложениях типа Venmo, позволяющих людям отправлять деньги друзьям; сервисы наподобие Coinbase позволяют покупать криптовалюты; существуют новые приложения для кредитования наподобие Tala и Upstart. Сегодня люди ожидают максимально простых способов управления своими деньгами через ПО.

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

К 1960 году комитет, изобретавшего COBOL, проработал всего лишь год, однако один из членов комитета, представитель RCA Говард Бромберг, беспокоился, что они движутся слишком медленно. Он утверждал, что если не выпустить COBOL быстрее, то мир бизнеса может уйти вперёд! Изготовители компьютеров выпустят собственные уникальные языки, а в бизнес-программировании возникнет ситуация вавилонского смешения языков.


Сегодняшний герой — COBOL. Этот язык изучался в ВУЗах по всему миру несколько десятилетий, и даже сегодня, почти 60 лет спустя вы можете найти 20-30-летних гиков, которые аргументировано докажут, что COBOL ничуть не устарел, а специалисты по этому языку будут востребованы еще очень долго.

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

Краткая справка

COBOL (аббревиатура от COmmon Business-Oriented Language) — императивный процедурный язык, созданный в 1959 году для разработки бизнес приложений. Одной из главных его особенностей является максимальная приближенность к английскому языку, что в конечном счёте привело к громоздкости каждого отдельного кода, а в 2006 году даже обнаружилось, что COBOL — абсолютный лидер по количеству написанных строк кода. Вот пример базовой программы:

$ SET SOURCEFORMAT"FREE"
IDENTIFICATION DIVISION.
PROGRAM-ID. ShortestProgram.


PROCEDURE DIVISION.
DisplayPrompt.
DISPLAY "I did it".
STOP RUN.

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

Популярность

Вопреки мнению о неудобности и допотопности языка COBOL, он по-прежнему сохраняет уверенные позиции, как в сводных рейтингах, так и на рынке. Так, например, в мартовском рейтинге TIOBE он занял 25 место, причём летом прошлого года он находился на 6 позиций выше.

Здесь, конечно, стоит оговориться, что популярность COBOL в основном касается западных стран, в частности, США и Великобритании, где, как уже было сказано, во многих ВУЗах до сих пор его преподают, что в конечном счете накручивает счетчик поисковиков.

Самый сокрушительный удар по сомнениям относительно этого языка нанесли, как и положено, его нынешние разработчики — компания MicroFocus. Согласно отчёту, опубликованному в 2013 году, стало известно, что 90% из списка компаний Fortune 500 до сих используют COBOL, а ещё на этом языке проводится 85% транзакций. Да, эти цифры неизбежно снижаются, но говорить о том, что лучшие дни COBOL далеко позади, пока рано.

Причина жить

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

Но есть и приятная сторона COBOL. Было бы странно предполагать, что за 58 лет язык абсолютно не изменился и не появилось удобных сред разработки, которые бы не позволяли закрыть глаза на некоторые неудобства. Тот же MicroFocus создал для COBOL вполне удобные инструменты.


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

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

Есть что почитать?

Ну а напоследок я очень рекомендую почитать вот эту историю, которая очень наглядно показывает, что творится в мире языка COBOL.

Вы возможно удивитесь, но в наше время актуальными и востребованными остаются языки, разработанные ещё на заре общедоступного компьютеростроения. О некоторых из них, таких как язык Ассемблера или Фортран, мы уже говорили, о других наверняка поговорим еще в будущем.

Сегодняшний герой — COBOL. Этот язык изучался в ВУЗах по всему миру несколько десятилетий, и даже сегодня, почти 60 лет спустя вы можете найти 20-30-летних гиков, которые аргументировано докажут, что COBOL ничуть не устарел, а специалисты по этому языку будут востребованы еще очень долго.

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

Краткая справка

COBOL (аббревиатура от COmmon Business-Oriented Language) — императивный процедурный язык, созданный в 1959 году для разработки бизнес приложений. Одной из главных его особенностей является максимальная приближенность к английскому языку, что в конечном счёте привело к громоздкости каждого отдельного кода, а в 2006 году даже обнаружилось, что COBOL — абсолютный лидер по количеству написанных строк кода. Вот пример базовой программы:

$ SET SOURCEFORMAT"FREE"
IDENTIFICATION DIVISION.
PROGRAM-ID. ShortestProgram.


PROCEDURE DIVISION.
DisplayPrompt.
DISPLAY "I did it".
STOP RUN.

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

Популярность

Вопреки мнению о неудобности и допотопности языка COBOL, он по-прежнему сохраняет уверенные позиции, как в сводных рейтингах, так и на рынке. Так, например, в мартовском рейтинге TIOBE он занял 25 место, причём летом прошлого года он находился на 6 позиций выше.

Здесь, конечно, стоит оговориться, что популярность COBOL в основном касается западных стран, в частности, США и Великобритании, где, как уже было сказано, во многих ВУЗах до сих пор его преподают, что в конечном счете накручивает счетчик поисковиков.

Самый сокрушительный удар по сомнениям относительно этого языка нанесли, как и положено, его нынешние разработчики — компания MicroFocus. Согласно отчёту, опубликованному в 2013 году, стало известно, что 90% из списка компаний Fortune 500 до сих используют COBOL, а ещё на этом языке проводится 85% транзакций. Да, эти цифры неизбежно снижаются, но говорить о том, что лучшие дни COBOL далеко позади, пока рано.

Причина жить

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

Но есть и приятная сторона COBOL. Было бы странно предполагать, что за 58 лет язык абсолютно не изменился и не появилось удобных сред разработки, которые бы не позволяли закрыть глаза на некоторые неудобства. Тот же MicroFocus создал для COBOL вполне удобные инструменты.


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

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

Есть что почитать?

Ну а напоследок я очень рекомендую почитать вот эту историю, которая очень наглядно показывает, что творится в мире языка COBOL.

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

Эволюция Кобола

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

В 1959 COBOL был разработан CODASYL (Конференция по языку систем данных).

Следующая версия, COBOL-61, была выпущена в 1961 году с некоторыми изменениями.

В 1968 году COBOL был утвержден ANSI в качестве стандартного языка для коммерческого использования (COBOL-68).

Он был снова пересмотрен в 1974 и 1985 годах для разработки последующих версий, названных COBOL-74 и COBOL-85 соответственно.

В 2002 году был выпущен объектно-ориентированный COBOL, который мог использовать инкапсулированные объекты как обычную часть программирования на COBOL.

В 1959 COBOL был разработан CODASYL (Конференция по языку систем данных).

Следующая версия, COBOL-61, была выпущена в 1961 году с некоторыми изменениями.

В 1968 году COBOL был утвержден ANSI в качестве стандартного языка для коммерческого использования (COBOL-68).

Он был снова пересмотрен в 1974 и 1985 годах для разработки последующих версий, названных COBOL-74 и COBOL-85 соответственно.

В 2002 году был выпущен объектно-ориентированный COBOL, который мог использовать инкапсулированные объекты как обычную часть программирования на COBOL.

Важность кобола

COBOL был первым широко используемым языком программирования высокого уровня. Это английский язык, который удобен для пользователя. Все инструкции могут быть закодированы простыми английскими словами.

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

COBOL может обрабатывать огромные данные.

COBOL совместим с его предыдущими версиями.

COBOL был первым широко используемым языком программирования высокого уровня. Это английский язык, который удобен для пользователя. Все инструкции могут быть закодированы простыми английскими словами.

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

COBOL может обрабатывать огромные данные.

COBOL совместим с его предыдущими версиями.

Особенности КОБОЛ

Стандартный язык

COBOL — это стандартный язык, который можно скомпилировать и выполнить на таких машинах, как IBM AS / 400, персональные компьютеры и т. Д.

Бизнес ориентированный

COBOL был разработан для бизнес-ориентированных приложений, связанных с финансовой областью, областью защиты и т. Д. Он может обрабатывать огромные объемы данных благодаря своим расширенным возможностям обработки файлов.

Надежный язык

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

Структурированный язык

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

Установка COBOL в Windows / Linux

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

Одним из таких эмуляторов является Hercules, который можно легко установить в Windows, выполнив несколько простых шагов, приведенных ниже —

После того, как вы установили пакет на компьютер с Windows, он создаст папку, подобную C: / hercules / mvs / cobol .

Запустите командную строку (CMD) и перейдите в каталог C: / hercules / mvs / cobol на CMD.

Полное руководство по различным командам для написания и выполнения программ JCL и COBOL можно найти по адресу:

После того, как вы установили пакет на компьютер с Windows, он создаст папку, подобную C: / hercules / mvs / cobol .

Запустите командную строку (CMD) и перейдите в каталог C: / hercules / mvs / cobol на CMD.

Полное руководство по различным командам для написания и выполнения программ JCL и COBOL можно найти по адресу:

Hercules — это программная реализация с открытым исходным кодом для архитектур мэйнфреймов System / 370 и ESA / 390 в дополнение к новейшей 64-битной архитектуре z / Architecture. Hercules работает под Linux, Windows, Solaris, FreeBSD и Mac OS X.

Пользователь может подключиться к серверу мэйнфреймов несколькими способами, такими как тонкий клиент, фиктивный терминал, система виртуального клиента (VCS) или система виртуального рабочего стола (VDS). Каждому действительному пользователю предоставляется логин для входа в интерфейс Z / OS (TSO / E или ISPF).

Компиляция программ COBOL

Чтобы выполнить программу на языке COBOL в пакетном режиме с использованием JCL, необходимо скомпилировать программу и создать модуль загрузки со всеми подпрограммами. JCL использует модуль загрузки, а не фактическую программу во время выполнения. Загруженные библиотеки объединяются и передаются JCL во время выполнения с использованием JCLLIB или STEPLIB .

Существует множество утилит компилятора мэйнфреймов, доступных для компиляции программы COBOL. Некоторые корпоративные компании используют такие инструменты управления изменениями, как Endevor , который компилирует и сохраняет каждую версию программы. Это полезно для отслеживания изменений, внесенных в программу.

IGYCRCTL — это утилита компилятора IBM COBOL. Параметры компилятора передаются с использованием параметра PARM. В приведенном выше примере RMODE указывает компилятору использовать в программе режим относительной адресации. Программа COBOL передается с использованием параметра SYSIN. Тетрадь — это библиотека, используемая программой в SYSLIB.

Выполнение программ COBOL

Ниже приведен пример JCL, где программа MYPROG выполняется с использованием входного файла MYDATA.URMI.INPUT и создает два выходных файла, записанных в спул.

Загрузочный модуль MYPROG находится в MYDATA.URMI.LOADLIB. Важно отметить, что вышеуказанный JCL можно использовать только для модуля COBOL, отличного от DB2.

Выполнение программ COBOL-DB2

Для запуска программы на языке COBOL-DB2 в JCL и программе используется специализированная утилита IBM; Регион DB2 и необходимые параметры передаются в качестве входных данных утилите.

Шаги, выполняемые при запуске программы COBOL-DB2, следующие:

Когда программа на языке COBOL-DB2 компилируется, DBRM (модуль запроса базы данных) создается вместе с модулем загрузки. DBRM содержит операторы SQL программ на языке COBOL, синтаксис которых проверен на корректность.

DBRM привязан к региону DB2 (среде), в которой будет работать COBOL. Это можно сделать с помощью утилиты IKJEFT01 в JCL.

После шага связывания программа COBOL-DB2 запускается с использованием IKJEFT01 (снова) с библиотекой загрузки и библиотекой DBRM в качестве входных данных для JCL.

Когда программа на языке COBOL-DB2 компилируется, DBRM (модуль запроса базы данных) создается вместе с модулем загрузки. DBRM содержит операторы SQL программ на языке COBOL, синтаксис которых проверен на корректность.

DBRM привязан к региону DB2 (среде), в которой будет работать COBOL. Это можно сделать с помощью утилиты IKJEFT01 в JCL.

После шага связывания программа COBOL-DB2 запускается с использованием IKJEFT01 (снова) с библиотекой загрузки и библиотекой DBRM в качестве входных данных для JCL.

В приведенном выше примере MYCOBB — это программа COBOL-DB2, запущенная с использованием IKJEFT01. Обратите внимание, что имя программы, идентификатор подсистемы DB2 (SSID) и имя плана DB2 передаются в операторе SYSTSIN DD. Библиотека DBRM указана в STEPLIB.

Структура программы COBOL состоит из подразделений, как показано на следующем рисунке —

Структура программы

Краткое введение этих разделов дано ниже —

Разделы являются логическим подразделением логики программы. Раздел представляет собой набор абзацев.

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

Утверждения являются осмысленными операторами COBOL, которые выполняют некоторую обработку.

Символы являются самыми низкими в иерархии и не могут быть делимыми.

Разделы являются логическим подразделением логики программы. Раздел представляет собой набор абзацев.

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

Утверждения являются осмысленными операторами COBOL, которые выполняют некоторую обработку.

Символы являются самыми низкими в иерархии и не могут быть делимыми.

Вы можете связать вышеупомянутые термины с программой COBOL в следующем примере —

Разделы

Программа COBOL состоит из четырех отделов.

Отдел идентификации

Это первое и единственное обязательное разделение каждой программы COBOL. Программист и компилятор используют это разделение для идентификации программы. В этом разделе PROGRAM-ID является единственным обязательным пунктом. PROGRAM-ID указывает имя программы, которое может содержать от 1 до 30 символов.

Попробуйте следующий пример, используя опцию Live Demo онлайн.

Ниже приведен JCL для выполнения вышеуказанной программы COBOL.

Когда вы компилируете и запускаете вышеуказанную программу, она дает следующий результат —

Отдел окружающей среды

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

Раздел конфигурации предоставляет информацию о системе, в которой написана и выполнена программа. Он состоит из двух параграфов —

Исходный компьютер — система, используемая для компиляции программы.

Объектный компьютер — система, используемая для выполнения программы.

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

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

IO control — предоставляет информацию о файлах, используемых в программе.

Раздел конфигурации предоставляет информацию о системе, в которой написана и выполнена программа. Он состоит из двух параграфов —

Исходный компьютер — система, используемая для компиляции программы.

Объектный компьютер — система, используемая для выполнения программы.

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

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

IO control — предоставляет информацию о файлах, используемых в программе.

Отдел данных

Разделение данных используется для определения переменных, используемых в программе. Он состоит из четырех разделов —

Раздел File используется для определения структуры записи файла.

Раздел Working-Storage используется для объявления временных переменных и файловых структур, которые используются в программе.

Раздел Local-Storage аналогичен разделу Working-Storage. Единственное отличие состоит в том, что переменные будут выделяться и инициализироваться каждый раз, когда программа начинает выполнение.

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

Раздел File используется для определения структуры записи файла.

Раздел Working-Storage используется для объявления временных переменных и файловых структур, которые используются в программе.

Раздел Local-Storage аналогичен разделу Working-Storage. Единственное отличие состоит в том, что переменные будут выделяться и инициализироваться каждый раз, когда программа начинает выполнение.

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

Программа КОБОЛ

JCL для выполнения вышеуказанной программы COBOL выглядит следующим образом:

Когда вы компилируете и запускаете вышеуказанную программу, она дает следующий результат —

Процедурный отдел

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

В разделении процедуры должен быть хотя бы один оператор. Последним оператором, завершающим выполнение в этом разделе, является либо STOP RUN, который используется в вызывающих программах, либо EXIT PROGRAM, который используется в вызываемых программах.

JCL для выполнения вышеуказанной программы COBOL —

Когда вы компилируете и запускаете вышеуказанную программу, она дает следующий результат —

Набор символов

Читайте также: