COBOL был одним из первых языков, которые я выучил - если вы игнорируете бесчисленные версии Basic, три или четыре языка ассемблера и вариант Forth, то это было в моих первых пяти и выучилось одновременно с Pascal. Я отвечаю по личному опыту использования языка.
РЕДАКТИРОВАТЬ Я должен сказать, древний опыт. Я никогда не использовал этот язык после конца 80-х, хотя я купил новую книгу (вместо старой, которую я с отвращением выбросил), чтобы мне было на что сослаться, чтобы мои ужасные истории не были слишком искажены. Но я понятия не имею, как развивался язык по крайней мере за последние 20 лет.
Очевидно, что для многих людей, это просто , что «старый плохо» вид , что jonsca уже описал - а также гораздо более трети рук пасс меня вниз отношения вещь. Но есть реальные проблемы, лежащие в основе этого.
Быть слишком многословным - настоящая проблема - слишком много путаницы в понимании кода. Это, безусловно, самая большая проблема. Люди , которые смотрят на MOVE
, ADD
и MULTIPLY
т.д. заявления в ужасе имеют несколько преувеличенное представление об этом, правда - COMPUTE
утверждение ближе к заданиям на других языках. Но во всех этих разделах и секциях все еще много беспорядка. Одна из первых вещей, которые я узнал в COBOL, - это всегда начинать с копирования стандартного SKELETON.COB размером с страницу A4.
COBOL делает некоторые интересные функции, но эти функции (например, PIC
вещь) , как правило, вещи, которые в настоящее время более частью СУБД , а не язык программирования, и мне кажется, как правило , быть лучше , чтобы отделить эти обязанности. Кроме того, некоторые библиотеки на других языках используют что-то сопоставимое PIC
(например, printf и scanf в стандартной библиотеке C). Возможно, лучшее было сохранено, но худшее упало.
Кроме того, для каждой приятной функции был по крайней мере один невыносимый. Например, независимо от того, насколько тривиален цикл, вы должны переместить тело в отдельную процедуру. PERFORM ... UNTIL ...
И подобные заявления являются единичные заявления - не блоковых структур. В некотором смысле, COBOL был вкус структурированного программирования от структурного программирования до того было изобретено - там былоGO TO
, но его использование не поощрялось (по крайней мере , когда я использовал COBOL), но цикл , в частности , просто не был обработан , что хорошо.
Фактически, язык, который я использовал после COBOL, который больше всего напомнил мне об этом, был ... dBase. Как и в Ashton-Tate dBase III +. В наши дни люди с большей вероятностью вспомнят все ныне умершие или умирающие клоны (Clipper, FoxPro и т. Д.), Которые привели к общему имени xBase - и в xHarbour все еще есть живой потомок. Дело в том, что это были языки баз данных, но ничего похожего на SQL.
Даже тогда, когда каждая программа на языке COBOL, работающая с конкретной базой данных, должна включать копию спецификации этой базы данных (и копии могут оказаться несовместимыми), это не совсем так в xBase, где база данных знает свою собственную структуру.
Принимая это во внимание, КОБОЛ не так страшен, если вы примете его таким, какой он есть. Но это не язык для написания структур данных. Возможно, именно поэтому COBOL сильно пострадал во времена священных войн C и Pascal - обе стороны могли согласиться с тем, что COBOL не годится для повторного изобретения бинарного дерева.
Да, и одна вещь, которую я никогда не забуду, это то, что мой первый учебник на языке COBOL не описывает SORT
команду, говоря, что она выходит за рамки книги - очевидно, либо автор не смог справиться с идеей сортировки, либо считал, что это нечто большее, чем крошечные умы студентов, изучающих язык COBOL, могут с этим справиться [см. правку в конце]. Подобные вещи мешали серьезно относиться к COBOL.
Странным аспектом этого было структурированное программирование Джексона, которое я также был вынужден изучать в то же время, особенно для использования с COBOL. Частично это рисовало структурную диаграмму для ввода, затем структурную диаграмму для вывода, а затем рисовало промежуточную структурную диаграмму для кода. Очевидно, что сортировка была уже решенной проблемой - вы не могли получить алгоритм сортировки таким образом. Так что в рекомендованном учебнике было странно сказать, что вся концепция сортировки была за пределами моего крошечного рассудка, и в то же время обучалась чему-то вроде дюжины различных алгоритмов сортировки и способов их реализации в Паскале.
Проблемы, с которыми может справиться JSP, вероятно, являются хорошим руководством для того, что COBOL может делать относительно хорошо. Но даже тогда это не обязательно означает, что JSP или COBOL являются хорошими способами решения этих проблем.
РЕДАКТИРОВАТЬ 30 июля 2014
Я только что получил репутацию, напомнив, что это здесь. Так случилось, что из-за какого-то коллекционирования древних книг, вызванного ностальгией, я теперь могу исправить точку WRT SORT
командой.
Книга, которую я изначально использовал в качестве рекомендуемого текста при изучении языка COBOL, была «Методическое программирование на языке COBOL» Рэя Уэлленда. Это не распространяется на COBOL 85 (хотя было более позднее издание «Методическое программирование на COBOL-85», которое я до сих пор никогда не видел).
Ниже все добрые комментарии: «Вы должны были отсортировать входные файлы перед их чтением или отсортировать выходной файл после его генерации, используя утилиту сортировки, поставляемую с ОС». От моего ответа на это я пропустил пункт "пришел с ОС". Киндалл предлагал что-то похожее на философию Unix AFAICT, с COBOL, используемым для битов, для которых он хорош, утилитами ОС, такими как утилита сортировки, используемыми для некоторых других вещей, и, предположительно, с использованием языка пакетной обработки / сценариев / оболочки для склеивания битов. Это имеет гораздо больше смысла в древнем мире, где интерактивное программное обеспечение было редким или вообще отсутствовало, поэтому вы все равно будете отправлять партии работ (следовательно, «пакетный язык»).
Ниже приводится цитата со страницы 165-166 "Методического программирования на языке COBOL" ...
Использование упорядоченных последовательных файлов подразумевает, что необходимо иметь средство сортировки записей в файле в некотором указанном порядке по ключу. Большинство более крупных компьютерных систем имеют утилиту сортировки, которая сортирует файл по позиции, типу и размеру каждого элемента данных, образующего ключ.
Существует также возможность сортировки записей из программы на языке COBOL, но это выходит за рамки этой книги по двум причинам:
(а) интерфейс к операционной системе часто довольно сложен и варьируется от системы к системе,
(b) модуль сортировки является необязательной частью ANS '74 COBOL и не может быть реализован в системах COBOL для небольших компьютеров.
Поэтому предполагается, что существуют средства для сортировки файлов в указанном порядке, и будет рассмотрена проблема обновления таких файлов.
Короче говоря, kindall верен - предполагалось, что обычно сортировка выполняется вне COBOL. Возможно, было даже реальное оправдание для исключения сортировки из языка программирования в 1974 году для небольших компьютеров.
То, что я сказал выше, было в основном тем, что вы получите после 20 лет неспособности проверить факты из-за выбрасывания книги.
Тем не менее, я должен отметить, что я официально изучал COBOL из этой рекомендованной книги, которая охватывала стандарт 1974 года (а не стандарт 1985 года) в 1988 и 1989 годах. Третье издание «COBOL для студентов» (Паркин, Йорк, Барнс) - первое издание, охватывающее COBOL 85 - не было опубликовано до 1990 года. Я не уверен, но я думаю, что издание COBOL 85 «Методического программирования» не было опубликовано до 1994 года.
Но это не обязательно представляет мир COBOL, тянущий его ноги - ну, не так много в любом случае. Принятие новых стандартов требует времени для любого языка, даже сейчас.