COBOL był jednym z pierwszych języków, których się nauczyłem - jeśli zignorujesz niezliczone wersje języka Basic, trzy lub cztery języki asemblera i wariant Fortha, to był on w moich pierwszych pięciu i uczył się równolegle z Pascalem. IOW, odpowiadam z własnego doświadczenia w posługiwaniu się językiem.
EDYCJA Powinienem powiedzieć starożytne doświadczenie. Nigdy nie używałem tego języka po latach 80., ale kupiłem nową książkę (aby zastąpić starą, którą odrzuciłem z niesmakiem), aby mieć coś, o czym mógłbym się odnieść, aby moje horrory nie były zbyt zniekształcone. Ale nie mam pojęcia, jak ten język ewoluował w ciągu ostatnich 20 lat.
Oczywiście, dla wielu ludzi jest to, że „stary jest zły” pogląd, który jonsca już opisała - a także, o wiele bardziej, podejście polegające na przekazywaniu mi z trzeciej ręki. Ale leżą u podstaw prawdziwe problemy.
Bycie zbyt pracowitym to prawdziwy problem - zbyt wiele bałaganu w sposobie rozumienia kodu. To zdecydowanie największy problem. Ludzie, którzy spojrzeć na MOVE
, ADD
i MULTIPLY
etc oświadczenia grozy mają nieco przesadzone widok tego, prawda - COMPUTE
stwierdzenie jest bliżej do zadań w innych językach. Ale wciąż jest mnóstwo bałaganu we wszystkich tych działach i sekcjach. Jedną z pierwszych rzeczy, których nauczyłem się w języku COBOL, było rozpoczęcie od kopiowania standardowego pliku SKELETON.COB o długości A4.
COBOL ma kilka ciekawych funkcji, ale te funkcje (np PIC
rzecz) wydają się być rzeczy, które są teraz bardziej częścią DBMS zamiast języka programowania, a wydaje mi się zwykle być lepszy sposób, aby oddzielić te obowiązki. Ponadto niektóre biblioteki w innych językach używają czegoś porównywalnego PIC
(np. Printf i scanf w standardowej bibliotece C). Prawdopodobnie najlepsze zostały zachowane, ale najgorsze spadły.
Ponadto, dla każdej fajnej funkcji, istniała co najmniej jedna niedopuszczalna. Na przykład, bez względu na to, jak banalna jest pętla, musisz przenieść ciało do osobnej procedury. PERFORM ... UNTIL ...
I podobne wypowiedzi są pojedyncze wypowiedzi - nie blokować struktur. W pewnym sensie, COBOL był smak programowania strukturalnego od programowania strukturalnego zanim wynaleziono - nie byłoGO TO
, ale to wykorzystanie zniechęcił (przynajmniej kiedy użyłem COBOL), ale zapętlenie w szczególności po prostu nie było traktowane tak dobrze.
W rzeczywistości językiem, którego użyłem po języku COBOL, który najbardziej mi to przypominał, był ... dBase. Jak w Ashton-Tate dBase III +. W dzisiejszych czasach ludzie są bardziej skłonni do zapamiętania wszystkich martwych lub umierających klonów (Clipper, FoxPro itp.), Które doprowadziły do ogólnej nazwy xBase - a xHarbour nadal ma żyjącego potomka. Chodzi o to, że były to języki baz danych, ale nic podobnego do SQL.
Nawet wtedy, gdy każdy program COBOL działający na konkretnej bazie danych musi zawierać kopię specyfikacji tej bazy danych (a kopie mogą się skończyć niespójne), tak naprawdę nie dzieje się tak w przypadku xBase, gdzie baza danych zna swoją własną strukturę.
Biorąc to pod uwagę, COBOL nie jest tak straszny, jeśli zaakceptujesz go takim, jakim jest. Ale to nie jest język do pisania struktur danych. Być może dlatego COBOL bardzo ucierpiał w czasach świętych wojen C vs. Pascal - obie strony mogły się zgodzić, że COBOL nie był dobry do ponownego opracowania drzewa binarnego.
Aha - i nigdy nie zapomnę tego, że mój pierwszy podręcznik COBOL nie opisał SORT
polecenia, mówiąc, że wykracza to poza zakres książki - najwyraźniej albo autor nie poradziłby sobie z pomysłem sortowania, albo uważał, że jest to coś więcej niż małe umysły studentów COBOL-u, z którymi można sobie poradzić [patrz edycja na końcu]. Takie rzeczy bardzo utrudniały poważne traktowanie COBOL.
Dziwnym aspektem tego było programowanie strukturalne Jacksona, którego również musiałem się uczyć mniej więcej w tym samym czasie, a konkretnie do używania z COBOL. Częścią tego było narysowanie schematu struktury dla danych wejściowych, następnie schematu struktury dla danych wyjściowych, a następnie narysowanie schematu struktury pomiędzy kodem. Wyraźnie oczekiwano, że sortowanie będzie już rozwiązanym problemem - nie można w ten sposób uzyskać algorytmu sortowania. W zalecanym podręczniku było dziwne, że cała koncepcja sortowania była poza moim małym umysłem, a jednocześnie nauczono czegoś w rodzaju kilkunastu różnych algorytmów sortowania i sposobu ich implementacji w Pascalu.
Problemy, z którymi JSP może sobie poradzić, są prawdopodobnie dobrym przewodnikiem po rzeczach, które COBOL może zrobić stosunkowo dobrze. Ale nawet wtedy niekoniecznie oznacza to, że JSP lub COBOL są dobrym sposobem na rozwiązanie tych problemów.
EDYCJA 30 lipca 2014 r
Właśnie zyskałem dzięki temu reputację, przypominając mi, że już tu jest. Tak się składa, że z powodu gromadzenia dawnych książek, napędzanych nostalgią, mogę teraz poprawić punkt WRT SORT
polecenia.
Książka, której pierwotnie użyłem jako zalecanego tekstu podczas nauki języka COBOL, brzmiała „Programowanie metodyczne w języku COBOL” autorstwa Ray Welland. Nie dotyczy to COBOL 85 (chociaż była późniejsza edycja „Programowanie metodyczne w języku COBOL-85”, której wciąż nie widziałem).
uprzejme komentarze poniżej: „Miałeś posortować pliki wejściowe przed ich odczytaniem lub posortować plik wyjściowy po jego wygenerowaniu, używając narzędzia sortującego dostarczonego z systemem operacyjnym”. Od mojej odpowiedzi na to pytanie przeoczyłem punkt „przyszedł z systemem operacyjnym”. Kindall sugerował coś podobnego do filozofii uniksowej AFAICT, z COBOL-em używanym do bitów, do których jest dobry, narzędziami systemu operacyjnego, takimi jak narzędzie sortujące używane do niektórych innych rzeczy i prawdopodobnie używając języka wsadowego / skryptowego / powłoki do sklejenia bitów. Ma to o wiele większy sens w starożytnym świecie, w którym oprogramowanie interaktywne rzadko bywało nieistniejące, dlatego i tak należy przesyłać partie pracy (stąd „język wsadowy”).
Poniższy cytat znajduje się na stronach 165-166 „Programowania metodycznego w języku COBOL” ...
Korzystanie z uporządkowanych plików szeregowych oznacza, że konieczne jest dysponowanie środkami do sortowania rekordów w pliku w określonej kolejności według klucza. Większość większych systemów komputerowych ma narzędzie sortujące, które posortuje plik, biorąc pod uwagę pozycję, typ i rozmiar każdego z elementów danych tworzących klucz.
Istnieje również możliwość sortowania rekordów z programu COBOL, ale wykracza to poza zakres tej książki z dwóch powodów:
(a) interfejs do systemu operacyjnego jest często dość złożony i różni się w zależności od systemu,
(b) moduł sortowania jest opcjonalną częścią COBOLU ANS '74 i nie może być zaimplementowany w systemach COBOL dla mniejszych komputerów.
Dlatego należy założyć, że istnieją możliwości sortowania plików w określonej kolejności i zostanie rozważony problem aktualizacji takich plików.
Krótko mówiąc, kindall jest poprawny - założono, że zwykle sortowanie odbywa się poza COBOL. Być może istniało prawdziwe uzasadnienie wyłączenia sortowania z języka programowania około 1974 r. Dla małych komputerów.
To, co powiedziałem powyżej, było w zasadzie tym, co otrzymujesz po około 20 latach niemożności sprawdzenia faktów z powodu wyrzucenia książki.
Nadal jednak muszę podkreślić, że formalnie studiowałem COBOL z tej zalecanej książki, która obejmowała standard z 1974 r. (Nie standard z 1985 r.) W 1988 i 1989 r. Trzecie wydanie „COBOL dla studentów” (Parkin, Yorke, Barnes) - pierwsze wydanie obejmujące COBOL 85 - zostało opublikowane dopiero w 1990 roku. Nie jestem pewien, ale myślę, że wydanie „Metody programowania programistycznego” COBOL 85 zostało opublikowane dopiero w 1994 roku.
Ale to niekoniecznie oznacza, że świat COBOL ciągnie się nogami - cóż, i tak nie tak bardzo. Przyjęcie nowych standardów wymaga czasu dla dowolnego języka, nawet teraz.