COBOL була однією з перших мов, які я навчився - якщо ви проігноруєте незліченну кількість базових, трьох-чотирьох мов асемблера та варіант Forth, то це було в моїх перших п'яти, і я вивчив одночасно з Pascal. IOW, я відповідаю з особистого досвіду, використовуючи мову.
EDIT Я повинен сказати стародавній досвід. Я ніколи не використовував мову після кінця 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 не такий страшний, якщо ви приймаєте його таким, яким він є. Але те, що це не так , це мова для написання структур даних. Це може бути причиною того, що COBOL сильно постраждав у часи святих воєн C проти Паскаля - обидві сторони могли погодитися, що COBOL не був корисним для того, щоб ще раз винайти бінарне дерево.
О - і одне, що я ніколи не забуду - це те, як мій перший навчальний посібник COBOL не описав SORT
команду, кажучи, що це виходить за рамки книги - мабуть, або автор не впорався з ідеєю сортування, або вважав, що це більше, ніж крихітні розуми студентів COBOL могли впоратися з [див. редагування наприкінці]. Такі речі дуже ускладнили серйозну сприйняття COBOL.
Незвичайним аспектом цього було Структурне програмування Джексона, яке я також був змушений вивчити приблизно в той же час, і спеціально для використання з COBOL. Частиною цього було складання структурної діаграми для вводу, потім структурна діаграма для виводу, потім складання діаграми проміжних структур для коду. Очевидно, що сортування було вже вирішеною проблемою - таким чином не можна було вивести алгоритм сортування. Отож, дивним підручником із підручників було дивно сказати, що вся концепція сортування була поза моїм крихітним розумом, і в той же час викладали щось на зразок десятка різних алгоритмів сортування та того, як їх реалізувати в Pascal.
Проблеми, з якими може вирішуватися JSP, є, мабуть, хорошим посібником щодо тих речей, які COBOL може зробити досить добре. Але навіть тоді це не обов'язково означає, що або JSP, або COBOL є хорошими способами вирішення цих проблем.
EDIT 30 липня 2014 року
Я просто отримав від цього підвищення репутації, нагадуючи, що вона тут. Як це буває, завдяки деякому накопиченню ностальгією старовинних книг, я тепер можу виправити точку WRT SORT
команди.
Книга, яку я спочатку використовувала як рекомендований текст під час вивчення COBOL, була "Методичне програмування в COBOL" Рея Велленда. Це не стосується COBOL 85 (хоча там було пізніше видання "Методичне програмування в COBOL-85", якого я досі не бачив).
kindall зазначає нижче, що "Ви повинні були сортувати вхідні файли перед читанням або сортувати вихідний файл після його генерації, використовуючи утиліту сортування, що постачається з ОС". З моєї відповіді на це я пропустив пункт "прийшов з ОС". Kindall запропонував щось подібне до філософії Unix AFAICT: COBOL використовується для бітів, що це добре, утиліти ОС, такі як утиліта сортування, яка використовується для деяких інших речей, і, імовірно, використовуючи пакетну / сценарійну / оболонку мову, щоб склеїти біти разом. Це має набагато більше сенсу в стародавньому світі, де інтерактивне програмне забезпечення було рідкісним для неіснуючого, тому ви все одно будете надсилати партії роботи (отже, "пакетної мови").
Далі цитується на сторінці 165-166 "Методичного програмування в COBOL" ...
Використання впорядкованих послідовних файлів означає, що необхідно мати засоби сортування записів у файлі за певним порядком за ключем. Більшість великих комп'ютерних систем мають утиліту для сортування, яка буде сортувати файл за положенням, типом та розміром кожного з елементів даних, що утворюють ключ.
Існує також можливість сортування записів у рамках програми COBOL, але це виходить за межі цієї книги з двох причин:
(a) інтерфейс до операційної системи часто досить складний і змінюється від системи до системи,
(b) модуль сортування є необов'язковою частиною COBOL ANS '74 і не може бути реалізований в системах COBOL для менших комп'ютерів.
Тому буде прийнято вважати, що існують засоби для сортування файлів у визначеному порядку і буде розглянута проблема оновлення таких файлів.
Коротше кажучи, kindall правильний - припущення було, що звичайно сортування проводиться поза COBOL. Можливо, навіть було справжнє виправдання для виключення сортування з мови програмування близько 1974 року для невеликих комп'ютерів.
Те, що я говорив вище, було в основному тим, що ви отримуєте приблизно через 20 років, коли не зможете перевірити факти через викидання книги.
Я все ж повинен зазначити, що я офіційно вивчав COBOL з цієї рекомендованої книги, яка охоплювала стандарт 1974 року (а не стандарт 1985 р.) У 1988 та 1989 рр. Третє видання "COBOL для студентів" (Паркін, Йорк, Барнс) - Перше видання, що охоплює COBOL 85 - не було опубліковане до 1990 року. Я не впевнений, але я вважаю, що видання "Методичне програмування" COBOL 85 виходило не раніше 1994 року.
Але це не обов'язково представляє світ COBOL, що тягне свої ноги - ну, не так вже й багато. Прийняття нових стандартів вимагає часу для будь-якої мови, навіть зараз.