Язык программирования COBOL. Ходячие мертвецы. COBOL

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

Когда говорят об умерших языках программирования, в первую очередь, вспоминают два из них: Алгол, который стал прародителем множества современных языков, и Кобол, на котором, как говорят, было написано больше кода, чем на любом другом языке программирования. И если насчёт Алгола ни у кого уже нет сомнений в том, что этот язык программирования мёртв, то с Коболом возникают вопросы. Если уж он такой мёртвый, почему продолжают выпускаться новые версии компиляторов, сред разработки и других инструментов, нужных для программирования на нём? Действительно, определённая логика в такой постановке вопроса присутствует. И рассказ моего знакомого о том, что одна минская аутсорсинговая фирма недавно искала специалиста по Коболу, чтобы получить выгодный контракт, только подогревает интерес к этому якобы мёртвому языку.


Немного истории

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

Кобол создавался для программирования всего, что связано с бизнесом, экономикой и финансами. Даже само название, которое пишется в английском варианте как COBOL, расшифровывается как Common Business Oriented Language (язык, ориентированный на общие бизнес-задачи). Разрабатывался Кобол, по меркам компьютерного мира, не просто давно, а очень давно, и даже, пожалуй, можно сказать, очень-очень давно - первая версия этого языка программирования вышла в свет в 1959 году. И, хоть перед авторами стояла задача создать простой язык программирования, вряд ли современные программисты назовут Кобол простым и привычным. Впрочем, дело не в том, что авторы языка плохо справились со своей задачей - дело в том, что за полвека несколько изменились представления о том, что является простым языком программирования.

Тогда, в конце пятидесятых, людей, которые умели бы программировать на высокоуровневом языке, было сравнительно немного. А потому Кобол был разработан таким образом, чтобы текст программы на нём был максимально похож на текст на обычном английском. Программы на Коболе могут читать и понимать неспециалисты - по крайней мере, это сделать гораздо легче, чем с программами, написанными на многих современных языках. Если вы покажете текст программы на том же Perl"е знакомой студентке филологического факультета БГУ, она гарантированно пошлёт вас в Новинки. Если вы покажете ей программу на Коболе, то она с высокой степенью вероятности даже сможет вам рассказать, что эта самая программа делает. Сейчас, конечно, кажется несколько странным, мягко говоря, ориентировать язык для создания бизнес-приложений на непрофессионалов, но во многом, думаю, именно эта ориентация способствовала тому, что на Коболе было написано столько кода.

Что интересно, руководителем проекта по созданию Кобола была женщина - Грейс Хоппер; её часто называют бабушкой Кобола. Практически с самого своего рождения Кобол является ANSI-стандартизованным языком программирования. Всего было выпущено пять стандартов языка: COBOL-60, COBOL-68, COBOL-74, COBOL-85, COBOL 2002 (обратите внимание, что, так как название языка - это акроним, то по-английски правильно его писать большими буквами). Кстати, год принятия последнего стандарта - это ещё один довольно-таки существенный повод говорить о том, что Кобол всё-таки, скорее, жив, чем мёртв. Вряд ли бы кто-то стал выпускать обновлённый стандарт для языка программирования, который никем и нигде не используется.


Блеск и нищета Кобола

Почему же Кобол был столь популярен раньше, а теперь во всём большом городе Минске днём с огнём не сыщешь специалиста на вакансию программиста на этом языке? Этому есть несколько причин, и, как водится, одна объективней другой. Давайте посмотрим на особенности Кобола, чтобы понять, почему он был вытеснен более новыми языками.

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

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

$ SET SOURCEFORMAT "FREE" IDENTIFICATION DIVISION. PROGRAM-ID. Multiplier. AUTHOR. Michael Coughlan. * Example program using ACCEPT, DISPLAY and MULTIPLY to * get two single digit numbers from the user and multiply * them together DATA DIVISION. WORKING-STORAGE SECTION. 01 Num1 PIC 9 VALUE ZEROS. 01 Num2 PIC 9 VALUE ZEROS. 01 Result PIC 99 VALUE ZEROS. PROCEDURE DIVISION. DISPLAY "Enter first number (1 digit) : " WITH NO ADVANCING. ACCEPT Num1. DISPLAY "Enter second number (1 digit) : " WITH NO ADVANCING. ACCEPT Num2. MULTIPLY Num1 BY Num2 GIVING Result. DISPLAY "Result is = ", Result. STOP RUN.

Сравните размеры кода этой программы с теми программами на C, Java или даже сравнительно многословном Pascal/Delphi, которые занимались бы тем же самым. В общем-то, действительно похоже, что у Кобола было мало шансов сохранить свою популярность рядом с этими языками. То, что на Коболе написана огромная масса кода, который сейчас нужно поддерживать, не вызывает удивления - если уж программа, перемножающая два числа, занимает минимум 20 (!) строк кода, то просто страшно представить объём кода какого-нибудь серьёзного приложения.

Среди языковых особенностей Кобола, которые могли бы показаться странными современным программистам, стоит отметить, в первую очередь, огромное количество зарезервированных слов - порядка четырёх сотен. Ни в одном современном языке программирования, даже в Аде, нет такого количества зарезервированных слов. Первая версия Кобола не включала поддержку многих приёмов программирования, без которых сейчас крайне сложно обойтись даже при разработке простых программ. В этот список входят рекурсия, локальные переменные, динамическое распределение памяти и даже конструкции структурного программирования. Зато в первой версии стандарта Кобол была поддержка самомодифицирующегося кода (благодаря так и не прижившейся конструкции ALTER X TO PROCEED TO Y).

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


Резюме

Конечно, то, что Кобол не умер, ещё не делает его хорошим в современных условиях языком программирования. То, что для него есть собственная надстройка для Eclipse, ещё не значит, что он столь же перспективен, как и Java, а то, что IBM выпускает для него новые версии компиляторов, не означает, что на нём будут писаться новые программы. Кобол, безусловно, скорее, жив, чем мёртв, но хорошей эту жизнь не назовёшь. Так что если вы решили изучить Кобол, то, конечно, не моё дело вас отговаривать, но, на мой взгляд, есть языки программирования (и их немало), изучать которые было бы, скажем так, разумнее.

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

Вадим СТАНКЕВИЧ

Практически все банковские автоматы работают на старом языке программирования COBOL (Common Business-Oriented Language), которому почти 60 лет. Он был разработан в 1959 году как стандартный язык для бизнеса и до сих пор используется в банках по всему миру. В 2014 году 92 из 100 ведущих банков и 71% компаний из списка Fortune 500 пользовались языком COBOL на своих центральных компьютерах.

Вот несколько интересных фактов и цифр об этом языке программирования.

COBOL в цифрах

История происхождения

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

Изображение: Giphy

- (COBOL сокр. от англ. Common Business Oriented Language), название языка программирования, применяемого при описании программ для решения учетно экономических и управленческих задач с помощью ЭВМ. Кобол обеспечивает наглядную и достаточно… … Большой Энциклопедический словарь

- [англ. COBOL, сокр. Словарь иностранных слов русского языка

Современная энциклопедия

- (от английского Common Buisness Oriented Language), язык ПРОГРАММИРОВАНИЯ, разработанный в 1959 г. для обработки деловых данных. Впоследствии этот язык пересматривался и совершенствовался, и в настоящее время широко применяется … Научно-технический энциклопедический словарь

Сущ., кол во синонимов: 1 язык (247) Словарь синонимов ASIS. В.Н. Тришин. 2013 … Словарь синонимов

- (COBOL) Сокращение от общепринятого делового языка. Этот язык обычно используется для написания компьютерных программ, предназначенных для обслуживания предпринимателей, например программ учета накладных и составления платежных ведомостей. Это… … Словарь бизнес-терминов

КОБОЛ - Язык программирования для экономических задач. [Е.С.Алексеев, А.А.Мячев. Англо русский толковый словарь по системотехнике ЭВМ. Москва 1993] Тематики информационные технологии в целом EN Common Business Oriented LanguageCOBOL … Справочник технического переводчика

КОБОЛ - язык программирования управленческих задач англ.: COBOL, Common Business Oriented Language англ. Словарь: С. Фадеев. Словарь сокращений современного русского языка. С. Пб.: Политехника, 1997. 527 с … Словарь сокращений и аббревиатур

Кобол - [от английского Co(mmon) общепринятый, B(usiness) деловой, O(riented) ориентированный, L(anguage) язык], язык программирования, ориентированный на решение преимущественно экономических задач. Разработан в 1958 60 (США). Обеспечивает компактную и… … Иллюстрированный энциклопедический словарь

- (COBOL, сокр. от англ. Common Business Oriented Language), название языка программирования, применяемого при описании программ для решения учётно экономических и управленческих задач с помощью ЭВМ. Кобол обеспечивает наглядную и достаточно… … Энциклопедический словарь

Книги

  • Языки программирования: разработка и реализация , Т. Пратт. Книга посвящена систематическому изложению языков программирования. В первой ее части вводится система понятии и критериев, позволяющих исследовать самые различные языки с единой точки…
  • Немецко-русский словарь по вычислительной технике , В. А. Шаров, Л. М. Новичкова. Словарь включает более 20000 терминов, относящихся к вычислительной технике, и содержит основную терминологию по элементам и характеристикам вычислительных машин исистем, по программному…

Имя языка составлено из первых букв названия COBOL - COmmon Business - Oriented Language, что дословно означает "общий язык деловой ориентации". Язык этот ориентирован на обработку экономической информации. Он разработан рабочей группой, созданной под эгидой исполнительного комитета по языкам систем обработки данных Кодасил (CODASYL - Conference on Data System Languages).

Работы над первой версией языка завершены в декабре г., а в феврале г. опубликован предварительный отчет. На разработку КОБОЛ-60 потребовалось около 4 человеко-лет. Корни КОБОЛа уходят к ранним, мало известным языкам программирования ФЛОУМАТИК, КОМТРАН и ФАКТ, а АЛГОЛ повлиял на выбор символов для КОБОЛа. Первые компиляторы КОБОЛа созданы в декабре г. одновременно двумя фирмами RCA и Remington - Rand - Univas.

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

КОБОЛ был первым языком, в котором средства описания данных соответствуют процедурным возможностям, и первым языком, в котором введен тип данных "запись", являющийся основной структурой данных. К одной из примечательных особенностей КОБОЛа относится рекурсивное описание данных. Другая его особенность в том, что программы на КОБОЛе разбиваются на части, называемые разделами, причем каждая программа состоит из четырех разделов: идентификации, оборудования (среды), данных и процедур.

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

Еще одна отличительная черта КОБОЛа - это его постоянное изменение и совершенствование. Вслед за появлением КОБОЛа-60 в следующем году была опубликована вторая версия под названием "КОБОЛ-61", которая получила широкое распространение, однако имела некоторую несовместимость с КОБОЛом-60. В г. была опубликована расширенная версия языка, названная "Расширенный КОБОЛ-60". Два года спустя появилась новая версия с несколько необычным именем: "КОБОЛ, редакция 1965". Эта версия в качестве американского национального стандарта утверждена в г. Однако работы по усовершенствованию языка и выработке новых версий продолжаются.

Измененный американский стандарт КОБОЛа принят в г. с соответствующим названием - КОБОЛ-74. В настоящие время в Американском национальном институте стандартов (ANSI) заканчивается разработка другого стандарта КОБОЛа, который предусматривает введение ряда новых конструкций в язык и отказ от некоторых редко используемых или неудобных операторов и т.д. Новый стандарт предусматривает также значительное сокращение различных подмножеств языка.

В СССР первые компиляторы с подмножества языка КОБОЛ реализованы в г. на ЭВМ "Днепр-21" и "Минск-32", а в г. был принят отечественный стандарт на язык программирования КОБОЛ (ГОСТ 22558-77).

Оценивая вклад этого языка в теорию и практику программирования, нельзя не указать на противоречивый характер отношений к нему пользователей, с одной стороны, и специалистов по информатике, с другой. Если среди программистов он получил распространение благодаря своей удобочитаемости, а может быть, и ранней стандартизации, то многие ученые его появление восприняли как ошибку, а его использование как "болезнь", с которой необходимо бороться. Причем некоторые из ученых, в частности известный голландский специалист по программированию Э. Дейкстра, выражали свое негативное отношение к КОБОЛу в довольно резкой форме (ACM SIGPLAN NOTICE, 1982, v. 17, pp. 13-15). Они возражали против использования английского языка как основы КОБОЛа из-за его несовершенной стилистики. Хорошая читаемость программ, утверждали они, не говорит в пользу КОБОЛа, так как программы с введением многочисленных "шумовых" слов становятся слишком многословными. Из-за большой длины программы компиляторы работают медленно, а кроме того, возникают трудности автоматического обнаружения ошибок во время компиляции.

В заключении отметим: несмотря на то что опыт разработки и применения КОБОЛа, очевидно, мало повлиял на создание языков, появившихся после него (за исключением языка PL/1), все же надо признать, что он оставил заметный след в истории развития языков программирования.

//Вычислительная техника и ее применение N10"88.

Язык программирования COBOL - название акроним от общего бизнес-ориентированного языка (COmmon Business Oriented Language). Программирование для начинающих.
Язык программирования КОБОЛ был первоначально создан в 1959 на Комитете "The Short Range Committee". Это один из трех комитетов, предложенных ждя создания на совещании, состоявшемся в Пентагоне в мае 1959 года, организованного Чарльзом Филлипомс из министерсва обороны США. "The Short Range Committee".был сформирован для разработки рекомендаций относительно нового языка программирования для бизнеса. Он состоял из членов, представляющих шесть производителей компьютеров и трех правительственных учреждений. В частности, шесть компаний-производителей компьютерных Burroughs Corporation , IBM , Minneapolis-Honeywell, RCA , Sperry Rand , и Sylvania Electric Products. Программирование для чайников. Три государственных учреждения были: ВВС США, David Taylor Model Basin, и Национальное бюро стандартов. Этот комитет был под председательством члена Национального бюро стандартов. После создания Комитет разработал спецификации языка прогаммирования КОБОЛ. Этот Комитет состоял из шести человек:
Уильям Селден и Гертруда Тирни из IBM.
Говард Бромберг и Говард Скидка из RCA.
Вернон Ривз и Джин Е. Сэммет из Sylvania Electric Products.

Эта группа завершила спецификацию для COBOL, и в в 1959 года подошла к выпустила в свет. Спецификации были в значительной степени вдохновлены FLOW-MATIC, языком, который был изобретен Грейс Хоппер, и языком от IBM, котороый назывался COMTRAN, а изобрел его Боб Бемер.
Спецификации были утверждены полным составом Комитета. После чего они были утверждены Исполнительным комитетом в январе 1960 , и отправлены в типографию правительства, которое отредактировало и напечатало эту спецификацию как язык программирования Cobol 60. COBOL был разработан в течение шести месяцев, и еще до сих пор используется более чем 40 лет спустя, даже для обучения основам программирования.
COBOL, как это определено в первоначальной спецификации, обладал отличным самодокументируемыми возможности, эффективными методами работы с файлами, и исключительно хорошими наборами типов данных на тот момент, из-за его использования картинок для детальной спецификации поля. Однако по современным меркам для программирования на языке определения, у него имеются серьезные недостатки, в частности, многословный синтаксис и отсутствие поддержки локальных переменных, рекурсии, динамического распределения памяти, и структурного программирования. Отсутствие поддержки объектно-ориентированного программирования и так понятно, учитывая к тому же, что такое понятие не было известно в то время.
COBOL имеет много зарезервированных слов, и трудно избежать непреднамеренного использования одного из них, без использования некоторых соглашений, например, таких как добавление вначале префикса для всех имен переменных. Оригинальная спецификация COBOL даже поддерживала самомодифицирующийся код через знаменитый "ALTER X TO PROCEED TO Y". В силу этих обстоятельств, очень мало нового кода пишется на COBOL. Однако, спецификации COBOL пересматривались на протяжении многих лет, чтобы решить некоторые из этих критических замечаний, а затем в COBOL устранили многие из этих недостатков, добавив: улучшения структуры управления, объектно-ориентированное программирование и удалилие возможность использовать самомодифицирующийся код.
Многие программы COBOL до сих пор используются в крупных коммерческих предприятий, в частности, в финансовых учреждениях. Некоторые люди думают, что использование десятичной арифметики в его инструкциях могло привести к тому, что программы являются уязвимыми перед проблемой связанной с датой 2000 года. Однако, трудно понять, почему они должны были сформировать это мнение, можно лишь предположить, что это происки конкурентов. Следует отметить, что COBOL своей десятичной арифметикой позволяет избежать многих других проблем, которые могут произойти при использовании вычислений с плавающей точкой для финансовых расчетов в COBOL.