COBOL은 내가 배운 첫 번째 언어 중 하나입니다. 수많은 Basic, 3-4 개의 어셈블러 언어 및 Forth의 변형을 무시하면 처음 5 개 언어로 파스칼과 동시에 배웠습니다. IOW, 나는 언어를 사용한 개인적인 경험으로부터 대답하고 있습니다.
편집 나는 고대의 경험을 말해야한다 . 80 년대 말 이후로 나는 그 언어를 전혀 사용하지 않았지만, 나는 새로운 책을 샀다. 그러나 나는 지난 20 년 동안 언어가 어떻게 진화했는지 전혀 모른다.
물론, 많은 사람들을 위해, 그것은 이다 또한 훨씬 더 써드 손 패스 나 다운 태도 일을 - "오래된 나쁜"그냥 그 jonsca 이미 설명했다 볼 수 있습니다. 그러나 근본적인 문제가 있습니다.
너무 간결한 것은 실제 문제입니다. 코드를 이해하는 데 너무 많은 혼란이 있습니다. 이것은 지금까지 가장 큰 문제입니다. 상기 보는 사람들 MOVE
, ADD
그리고 MULTIPLY
공포 등의 진술은 사실이의 약간 과장된보기가 - COMPUTE
문은 다른 언어에서 할당에 더 가깝다. 그러나 모든 부서와 섹션에는 여전히 많은 혼란이 있습니다. COBOL에서 처음 배운 것 중 하나는 항상 A4 길이의 표준 SKELETON.COB를 복사하여 시작하는 것이 었습니다.
COBOL는 않는 몇 가지 흥미로운 기능을 가지고 있지만, 이러한 기능 (예 : PIC
일)은 DBMS가 아닌 프로그래밍 언어의 더욱 일부 일을하는 경향, 그리고 그것은 나에게 보인다 일반적으로 그 책임을 분리 할 수있는 더 좋은 방법. 또한 다른 언어로 된 일부 라이브러리 는 이에 필적하는 것을 사용합니다 PIC
(예 : C 표준 라이브러리의 printf 및 scanf). 아마도 최고는 유지되었지만 최악은 떨어졌습니다.
또한 모든 멋진 기능에는 하나 이상의 견딜 수없는 기능이있었습니다. 예를 들어 루프가 아무리 사소한 경우에도 바디를 별도의 절차로 이동해야합니다. PERFORM ... UNTIL ...
및 이와 유사한 문은 있습니다 하나의 문 - 구조를 차단하지. 어떤 의미에서, COBOL은 구조적 프로그래밍이 발명되기 전의 구조적 프로그래밍의 맛 이었습니다 . GO TO
하지만. (최소한 COBOL을 사용할 때) 사용은 권장되지 않았지만, 특히 루프는 잘 처리되지 않았습니다.
사실, COBOL 이후 가장 많이 생각 나게 한 언어 는 ... dBase입니다. Ashton-Tate dBase III +에서와 같이. 요즘 사람들은 xBase라는 일반적인 이름을 가진 현재 죽어 가거나 죽어가는 클론 (Clipper, FoxPro 등)을 기억할 가능성이 더 높으며 xHarbour에는 여전히 살아있는 자손이 있습니다. 요점은 이것들은 데이터베이스 언어이지만 SQL과는 다르다는 것입니다.
그럼에도 불구 하고 특정 데이터베이스에서 작동 하는 모든 COBOL 프로그램에 해당 데이터베이스 사양의 사본이 포함되어야하고 사본이 일치하지 않을 수있는 경우에도 데이터베이스가 자체 구조를 알고있는 xBase의 경우에는 해당되지 않습니다.
그렇다면 COBOL을 고려하면 COBOL은 그렇게 받아 들일 수 없습니다. 그러나 이것이 아닌 것은 데이터 구조를 작성하기위한 언어입니다. 이것이 CB 대 파스칼 거룩한 전쟁 시대에 COBOL이 많은 고통을 겪었던 이유 일 수 있습니다. 양측은 COBOL이 이진 트리를 다시 발명하는 데 좋지 않다는 데 동의 할 수 있습니다.
아, 그리고 내가 결코 잊지 않을 것 중 하나는 첫 번째 COBOL 교과서가 SORT
명령의 범위를 벗어났다고 명령을 설명하지 않은 방법 입니다. 분명히 저자는 정렬 아이디어에 대처할 수 없었습니다. 코볼 학생들이 생각할 수있는 작은 작은 생각 이상이라고 생각했다 . 그런 종류의 일 때문에 코볼을 진지하게 받아들이 기가 매우 어려워졌습니다.
이것의 이상한 측면은 Jackson Structured Programming이었다. 나는 또한 거의 동시에, 특히 COBOL과 함께 사용하도록 배워야했다. 이 중 일부는 입력에 대한 구조 다이어그램을 그린 다음 출력에 대한 구조 다이어그램을 그린 다음 코드의 중간 구조 다이어그램을 그리는 것이 었습니다. 정렬은 이미 해결 된 문제 일 것으로 예상되었으므로 이러한 방식으로 정렬 알고리즘을 도출 할 수 없었습니다. 따라서 권장되는 교과서에서 정렬의 전체 개념이 작은 작은 생각을 넘어서면서 동시에 수십 가지 정렬 알고리즘과 같은 것을 배우고 파스칼에서 구현하는 방법을 배우는 것이 이상했습니다.
JSP가 처리 할 수있는 문제점은 아마도 COBOL이 상대적으로 잘 수행 할 수있는 것들에 대한 좋은 안내서 일 것입니다. 그렇다고해서 반드시 JSP 나 COBOL이 이러한 문제를 처리하는 좋은 방법이라는 것을 의미하지는 않습니다.
2014 년 7 월 30 일 편집
나는 이것으로 명성을 얻었고 여기에 나에게 상기시켜줍니다. 그리운 향수를 불러 일으키는 고대 책 수집으로 인해 이제 WRT SORT
명령을 수정 할 수 있습니다 .
COBOL을 배울 때 원래 권장 텍스트로 사용했던이 책은 Ray Welland의 "COBOL의 기술 프로그래밍"이었습니다. COBOL 85는 다루지 않습니다 (여전까지 본 적이없는 "COBOL-85의 방법론 프로그래밍"이후 버전).
kindall은 아래에 "OS와 함께 제공되는 정렬 유틸리티를 사용하여 입력 파일을 읽기 전에 정렬하거나 생성 한 후 출력 파일을 정렬해야했습니다"라고 말합니다. 그 답장에서 "OS와 함께왔다"라는 점을 놓쳤다. Kindall은 유닉스 철학 AFAICT와 비슷한 것을 제안했습니다 .COBOL은 비트에 적합하고 다른 유틸리티에는 정렬 유틸리티와 같은 OS 유틸리티가 있으며 비트를 서로 붙일 수있는 배치 / 스크립팅 / 쉘 언어를 사용합니다. 이것은 대화 형 소프트웨어가 존재하지 않는 고대 세계에서 훨씬 더 의미가 있으므로 어쨌든 배치 작업 (따라서 "배치 언어")을 제출해야합니다.
다음은 "COBOL의 프로그래밍 방식"의 165-166 페이지에서 인용됩니다.
순서가 지정된 직렬 파일을 사용한다는 것은 파일 내에서 레코드를 키별로 지정된 순서로 정렬하는 수단이 필요하다는 것을 의미합니다. 대부분의 대형 컴퓨터 시스템에는 키를 구성하는 각 데이터 항목의 위치, 유형 및 크기에 따라 파일을 정렬하는 정렬 유틸리티가 있습니다.
COBOL 프로그램 내에서 레코드를 정렬하는 기능도 있지만 다음 두 가지 이유로이 책의 범위를 벗어납니다.
(a) 운영 체제에 대한 인터페이스는 종종 매우 복잡하며 시스템마다 다릅니다.
(b) 정렬 모듈은 ANS '74 COBOL의 선택적 부분이며 소규모 컴퓨터의 경우 COBOL 시스템에서 구현되지 않을 수 있습니다.
따라서 파일을 지정된 순서로 정렬 할 수있는 기능이 있다고 가정하고 해당 파일을 업데이트하는 문제가 고려됩니다.
요컨대, kindall은 정확합니다-일반적으로 정렬은 COBOL 외부에서 수행된다는 가정이었습니다. 작은 컴퓨터의 경우 1974 년경에 프로그래밍 언어에서 정렬을 배제하는 것이 실제로 정당화되었을 수도 있습니다.
위에서 말한 것은 기본적으로 책을 버려서 사실을 확인할 수없는 약 20 년 후에 얻은 것입니다.
그래도 나는 1988 년과 1989 년에 1974 년 표준 (1985 년 표준이 아닌)을 다루는이 권장 책에서 COBOL을 공식적으로 공부했다는 점을 지적해야합니다. "학생을위한 COBOL"(Parkin, Yorke, Barnes)- COBOL 85를 다루는 첫 번째 판은 1990 년까지 출판되지 않았습니다. 확실하지는 않지만 "Methodical Programming"의 COBOL 85 판이 1994 년까지 출판되지 않았다고 생각합니다.
그러나 이것이 반드시 코볼 세계가 발을 끌고있는 것은 아닙니다. 새로운 표준 채택은 지금도 모든 언어에 시간이 걸립니다.