sonyps4.ru

Язык cobol. COBOL — язык программирования, на котором работают почти все банкоматы

В начале 60-х гг. язык COBOL (Common Business Oriented Language) широко использовался для обработки деловой информации на компьютерах (теперь это называют бизнес-приложениями).

Архитектура языка COBOL неоднократно пересматривалась - его первая версия вышла в 1960 г., а более поздние версии - в 1974 и 1984гг. Разработка языка COBOL под руководством Грейс Хоппер была организована Министерством обороны США. Разработчики языка COBOL позаимствовали некоторые идеи из языка FLOWMATIC, созданного в компании Univac, включая использование существительных и глаголов для описания действий и отделение описаний данных от команд. При разработке языка COBOL была поставлена уникальная цель - создать язык программирования, использующий "естественный английский" для описания алгоритмов. Хотя получившийся язык достаточно удобен для чтения, но у него все же есть формальный синтаксис и программирование на нем требует определенных практических навыков.

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

Программы COBOL организованы в виде четырех разделов. Такая организация отвечает двум основным целям разработки языка: отделение машинно-зависимых элементов программы от машинно-независимых, а также отделение описания данных от описания алгоритма. В результате появились три раздела программы:

Процедурный раздел (PROCEDURE division) содержит алгоритмы

Раздел данных (DATA division) содержит описания данных

Раздел окружения (ENVIRONMENT division) содержит машинно-зависимые программные спецификации, такие как связи между программой и внешними файлами данных.

Четвертый раздел идентификации (IDENTIFICATION division) содержит название программы и имя ее автора, а также дополнительную информацию и документацию.

COBOL (CommonBusiness-OrientedLanguage) был разработан в 1959 году и предназначался прежде всего для написания программ для разработки бизнес приложений, а так же для работы в экономической сферы. Спецификация языка была создана в 1959 году. Создатели языка ставили своей целью сделать его машинно-независимым и максимально приближенным к естественному английскому языку. Обе цели были успешно достигнуты; программы на COBOL считаются понятными даже неспециалистам, поскольку тексты на этом языке программирования не нуждаются в каких-либо специальных комментариях (самодокументирующиеся программы).

Достоинства и недостатки

COBOL - язык очень старый и в свое время использовался крайне активно, поэтому существует множество реализаций и диалектов. Для языка был утвержден ряд стандартов: в 1968, 1974, 1985 и 2002 годах. Последний стандарт добавил в язык поддержку объектно-ориентированной парадигмы. Язык позволяет эффективно работать с большим количеством данных, он насыщен разнообразными возможностями поиска, сортировки и распределения. К числу других плюсов 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 выпускает для него новые версии компиляторов, не означает, что на нём будут писаться новые программы. Кобол, безусловно, скорее, жив, чем мёртв, но хорошей эту жизнь не назовёшь. Так что если вы решили изучить Кобол, то, конечно, не моё дело вас отговаривать, но, на мой взгляд, есть языки программирования (и их немало), изучать которые было бы, скажем так, разумнее.

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

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



Загрузка...