COBOL은 무엇입니까? COBOL 프로그래밍 설명

일부 기술은 결코 죽지 않고 목공 작업으로 사라집니다. 

일반 소프트웨어 개발자에게 COBOL (Common Business Oriented Language)에 대해 물어 보면 마치 카본 페이퍼, 납 휘발유 또는 78RPM 기록을 언급 한 것처럼 귀하를 바라 볼 것입니다. Go 나 Python, 또는 Pascal이나 C!와 같은 현대 언어와 비교하면 COBOL은 장황하고 투박하고 무난 해 보입니다.

그러나 COBOL은 견뎌 왔습니다. 우리가 행복하게 회사를 분리 한 노후화 된 기술과는 거리가 먼 COBOL은 하나의 기관이되었습니다. 대규모 COBOL 코드베이스는 여전히 전 세계에서 사용되고 있으며, 대부분은 처음 생성되었을 때와 거의 동일하게 실행됩니다. 할리우드 용어로 COBOL 언어에는 "다리"가 있습니다.

그렇습니다. COBOL은 여전히 ​​관련성이 있고시기 적절합니다. 사실 고통스럽게도 그렇습니다. 최근 몇 달 동안 뉴저지와 같은 주에서 프로그래머가 COBOL 애플리케이션을 21 세기로 옮기도록 요청하면서 COBOL은 대중의 의식에 다시 진입했습니다.

이 글에서 우리는 COBOL의 기원, 프로그래밍 언어의 디자인이 오늘날에도 어떻게 눈에 띄는 지, 그리고 COBOL이 그토록 오래 지속되고 다루기 힘든 이유를 살펴볼 것입니다.

COBOL 역사

COBOL은 1950 년대 말과 1960 년대 초에 발생했습니다. 이 언어의 개발은 IBM, Honeywell, Sperry Rand 및 Burroughs를 포함한 컴퓨터 회사의 컨소시엄이 포함 된 미국 국방부 (DoD)가 후원 한 프로젝트였습니다. 목표는 다음 속성을 가진 프로그래밍 언어를 만드는 것이 었습니다.

  • 컴퓨터 시스템 간의 이식성을 통해 하드웨어 세대간에 그리고 하드웨어 제조업체간에 소프트웨어를 쉽게 마이그레이션 할 수 있습니다.
  • 운영 속도를 희생하더라도 더 많은 청중의 프로그래밍을 장려하는 방법으로 당시의 다른 언어 (예 : FORTRAN)보다 영어와 유사한 구문입니다.
  • 향후 언어 변경을 수용 할 수있는 능력.

최초의 공식 COBOL 사양은 1960 년에 나왔습니다. 그 후 10 년 동안, 그리고 비평가들의 놀랍게도 COBOL은 비즈니스 애플리케이션 작성을위한 기본 선택이되었습니다. 빠른 확산의 한 가지 이유는 네트워크 효과였습니다.이 언어에 대한 최초의 협력자 중 하나 인 IBM이 공격적인 얼리 어답터가되었고 컴퓨팅 세계에서 IBM의 지배적 인 존재가 COBOL 채택에 기여했습니다.

설계상의 장점과 무거운 산업의 지원으로 인해 COBOL은 원래의 시스템보다 훨씬 더 오래 살아 남았습니다. 다양한 추정에 따르면 1970 년까지 COBOL은 세계에서 가장 널리 사용되는 프로그래밍 언어였습니다. 1997 년까지 COBOL은 비즈니스 앱의 약 80 %를 실행하는 것으로 믿어졌습니다.

COBOL 언어

COBOL의 설계자들은 당시 다른 프로그래밍 언어의 간결한 구문을 깨뜨 렸습니다 (다시 말하지만 FORTRAN과 같은). 이 아이디어는 프로그래머가 아닌 사람, 특히 회계, 재무, 보험 및 기타 비즈니스 전문가가 읽고 이해할 수있는 프로그래밍 언어를 만드는 것이 었습니다.

COBOL의 초기 방언으로 작성된 "hello world"프로그램을 고려하십시오.

식별 부서.

프로그램 ID. 헬로 월드.

절차 부문.

'Hello World!'를 표시합니다.

최종 디스플레이.

실행 중지.

Python과 같은 언어의 간결함을 키운 현대 소프트웨어 개발자에게이 코드는 장황합니다. 그러나 COBOL (실행이 아니라면)의 장황함은 Python과 같은 현대 언어에 알려주는 동일한 자만에서 비롯됩니다. 코드는 작성된 것보다 더 많이 읽히므로 읽을 수 있도록 작성해야합니다.

보다 현대적인 버전의 COBOL에서 유사한 프로그램은 다음과 같습니다.

프로그램 ID. 여보세요.

절차 구분.

"Hello world!"를 표시합니다.

실행을 중지하십시오.

이 예제는 더 간결하지만 동일한 기본 원칙이 적용됩니다. 코드는 각 단계에서 무슨 일이 일어나고 있는지 명시하기 위해 노력합니다.

COBOL은 구문 및 프로그램의 내부 구성에 관한 엄격한 규칙을 가지고 있습니다. COBOL 프로그램은 한눈에 구성 요소를 쉽게 찾고 이해할 수 있도록 섹션 또는 부서 로 명시 적으로 나뉩니다 .

  • 식별 부서 : 기본적으로 프로그램, 작성자 등에 대한 세부 정보를 포함하는 메타 데이터 섹션입니다.
  • 환경 부서 : 다른 하드웨어에서 프로그램을 실행할 때 편집이 필요할 수있는 외부 장치의 별칭과 같은 런타임 환경에 대한 세부 정보가 포함되어 있습니다. 이것은 예를 들어 I / O가 완전히 다르게 처리 될 수있는 시스템 간 프로그램의 이식성을 지원했습니다.
  • 데이터 부문 : 함유  파일저장 작업 섹션에서의 데이터 분할 파일 및 프로그램에서 사용하는 변수를 (각각) 설명한다.
  • 프로 시저 분할 : 실제 프로그램 코드는 여기에 있으며 섹션, 단락, 문장명령문 이라는 논리 단위로 나뉩니다 . 이러한 구조를 모듈이나 함수로 유사하게 만드는 것은 거의 동일한 기능 (코드를 제한된 입력 및 출력을 사용하여 코드를 블록으로 나누기)을 제공하지만 훨씬 덜 유연하기 때문입니다.

또한 COBOL에는 명령 앞의 공백 수까지 ​​코드에 대해 매우 엄격한 형식화 규칙이 있습니다. (Python 사용자는이 사실을 알게 될 것입니다!) 이러한 제한 사항 중 일부는 프로그램이 천공 카드로 인코딩되고 80 열 줄의 정확한 형식이 중요했던 1960 년대 메인 프레임 시대에 COBOL의 성장에 따른 부산물입니다. . 그러나 다른 형식 제한은 가독성을 강화합니다.

COBOL 프로그램의 엄격한 연대 뒤에있는 아이디어는 가능한 한 자체 문서화를 만드는 것입니다. 결국 COBOL 프로그램은 수년 또는 수십 년 동안 그대로 유지되는 경향이 있습니다. 의도 (항상 그런 것은 아니지만)는 모든 COBOL 프로그램을 만든 프로그래머의 도움 없이도 모든 COBOL 프로그래머가 이해할 수있는 인공물로 만드는 것이 었습니다. 

COBOL 과제

COBOL의 지속적인 보급 (및 관성)의 대부분은 한 번 작성된 COBOL 응용 프로그램이 사소한 수정만으로 무기한 유지되는 경향이 있다는 사실에서 비롯됩니다. 앱이 크고 미션 크리티컬할수록 방해받을 가능성이 적습니다. IBM의 제품과 같은 메인 프레임은 중요한 역할을했습니다. 메인 프레임은 이전 버전과의 호환성이 높고 최소한의 수정으로 여러 세대의 하드웨어에서 COBOL 앱과 같은 레거시 소프트웨어를 실행하도록 구축되었습니다. 그 결과 수십억 줄의 COBOL 코드가 수십 년 동안 기본적으로 변경되지 않고 실행됩니다.

수년 동안 COBOL 천천히 진화했습니다. 이제는 객체 지향 변형 인 OO-COBOL이 있습니다. 여기에는 유니 코드, 로케일 및 문자열과 정수를 넘어선 고급 데이터 유형과 같은 최신 기능에 대한 지원이 포함됩니다. 그러나 COBOL은 이전 버전과의 호환성을 적극적으로 유지하므로 이러한 개선 및 확장도 기존 COBOL 애플리케이션을 계속 실행해야한다는 의무를 준수합니다.

COBOL의 모든 언어 디자인 선택이 COBOL 프로그래머에게 인기가있는 것은 아닙니다. 일부는 이해하거나 디버그하기 어려운 지나치게 복잡한 프로그램을 만들어 재 작성 또는 개선을 방해했습니다. COBOL의 GO TO명령은 C 의 명령과 마찬가지로 프로그래머가 프로그램을 자유롭게 이동할 수 있도록하여보다 강력한 애플리케이션을 작성할 수있게했습니다. 그러나 훈련되지 않은 사용은 GO TOCOBOL 프로그램을 추적하기 어려운 상호 참조의 둥지로 바꿀 수 있습니다.

오늘날의 COBOL 프로그래밍

COBOL은 오늘날 몇 번의 화신으로 살아남습니다. IBM은 자체 COBOL 구현을 적극적으로 유지하고 실행되는 많은 기존 COBOL 애플리케이션을 유지합니다. Micro Focus COBOL은 Microsoft Windows에서 실행되고 COBOL 애플리케이션을 Java 및 .NET으로 컴파일하며 Azure와 같은 클라우드 환경에도 배포하는 상용 COBOL 에디션입니다. 또한 무료로 사용 가능하고 네이티브 기계어 코드로 컴파일되는 GnuCOBOL과 같은 COBOL의 오픈 소스 구현을 찾을 수 있습니다. 그러나 상용 COBOL의 고급 배포 또는 디버깅 기능 중 일부가 부족할 수 있습니다.

COBOL이 널리 사용되는 동안에는 해마다 깊은 COBOL 전문 지식을 얻기가 점점 더 어려워지고 있습니다. 그 결과, 많은 전직 COBOL 프로그래머들은 오래된 애플리케이션을 21 세기로 끌어 들이기 위해 은퇴 후 동조해야합니다. 종종 가장 중요한 것은 COBOL 프로그래밍 지식이 아니지만 COBOL이 실행되는 메인 프레임 환경에 대한 친밀한 이해입니다. 많은 COBOL 애플리케이션은 IBM의 IMS 및 CICS 트랜잭션 관리 및 데이터베이스 시스템과 같은 레거시 기술과 함께 작동하며, 이들 모두는 점점 더 드문 전문성을 필요로합니다.

따라서 COBOL만큼 오래된 학교처럼 보일 수 있지만 COBOL 언어 및 개발 환경 전문 지식에 대한 필요성은 매년 증가했습니다. COBOL 및 관련 전문 지식에 대한 구인 목록이 풍부합니다. 2020 년 3 월, 뉴저지는 COVID-19 위기 이후 주 실업 수당 시스템을 업그레이드 할 수 있도록 COBOL 프로그래머를 긴급 호출했습니다.

COBOL 배우기

COBOL에 대한 학습 리소스는 언어에 대한 수요가 증가함에 따라 다시 확산되고 있습니다. 가장 오래가는이 언어에 익숙해지기를 원하는 현대 개발자에게는 몇 가지 옵션이 있습니다.

  • 아일랜드에있는 University of Limerick은 컴퓨터 과학 및 정보 시스템학과에서 온라인으로 완전한 COBOL 프로그래밍 과정을 제공합니다. 다른 리소스만큼 최신 상태는 아니지만 시간이 지남에 따라 COBOL이 변경되는 정도를 고려할 때 반드시 결함이있는 것은 아닙니다.
  • Open Mainframe Project (Linux Foundation의 일부)는 COBOL 리소스도 제공합니다. 하나는 IBM이 공동 후원하는 COBOL 프로그래밍의 전체 과정입니다. University of Limerick 과정보다 더 현대적이며 널리 배포 된 언어 버전 인 IBM의 COBOL zOS 구현에 맞게 조정되었습니다.

COBOL은 수십 년 동안 비즈니스 컴퓨팅의 필수 요소였으며 COBOL 프로그래밍 인재에 대한 수요는 계속해서 증가하고 있습니다. COBOL 프로그램을 유지하거나 현대화하는 데 관심이 있다면 그 어느 때보 다 뛰어들 시간이 무르 익은 것 같습니다.