[[분류:프로그래밍 언어]] [include(틀:프로그래밍 언어)] COBOL. COmmon Business-Oriented Language의 약자이다. [목차] {{{IDENTIFICATION DIVISION. PROGRAM-ID. HELLO-WORLD. PROCEDURE DIVISION. DISPLAY 'Hello, World' STOP RUN. }}} == 개요 == 3세대 [[프로그래밍 언어]]로, [[1959년]]에 처음으로 나왔다. 이후 여러 번 규격이 개정되어 현재는 [[OOP|객체 지향]]도 지원한다. 개념이 상당히 오래묵기는 했지만 처음부터 일반인도 쓸 수 있도록 만들었기에 배우기 어렵지 않은 편이다. == 목적 == [[미 해군]]이 개발에 참여하는 등 일반 업무에서 사용할 목적으로 만들어졌다. 실제로 미국 정부에서 사용하였다. 비슷한 시기에 나온 [[포트란]]과는 상반된 목적이다. 따라서 보고서 작성이나 회계 계산 등을 잘 지원한다. 예를 들어 센트(1/100달러) 계산에 오차가 없다. 문법도 일반 [[영어]] 문장과 매우 흡사하다. 그 이유 중 하나는 '관리자들도 프로그램을 읽고, [[슈퍼마켓]] 점원들도 [[프로그램]]을 수정할 수 있는' 쉬운 프로그래밍을 위한 것이었다. 물론 될 리가 없었지만... 사실 [[코더]] 입장에서는 그리 좋지는 않다. [[키보드]]를 더 많이 쳐야 하기 때문이다. (농담이 아니다! 그나마 키보드면 차라리 낫다. 천공카드를 썼을 때는 대략...) 예를 들어, 사칙연산을 수행할 때도 보통 프로그래밍 언어는 그냥 z=x+y;([[BASIC]]에서는 세미콜론을 안 붙임[* BASIC에서는 COMPUTE에 해당하는 명령문으로 LET가 있다. 그런데 LET Z=X+Y라고 쓰나 그냥 Z=X+Y라고 쓰나 똑같다.]) 이런 식으로 쓰지만 코볼에서는 아래와 같이 써야 한다. {{{#!syntax markdown MOVE X TO Z. ADD Y TO Z. }}} ~~3세대 언어라면서 어셈블리랑 비슷하다~~ 연산 하나 하나 마다 ADD, SUBTRACT, MULTIPLY, DIVIDE 로 일일이 지정해 주어야 한다. ~~아놔...~~ 이것은 마치 [[슈퍼마켓]]에서 그냥 '[[새우깡]] 하나요' 하면 될 걸 '새우깡 1개체를 자판에서 카운터로 이동시킨다, 천 원이 나의 지갑에서 빠져나간다, 거래는 성립된다.'라고 늘여 말하는 꼴이다. 사실 이러한 구조는 프로그램 [[소스 코드]]가 업무절차 등을 설명하는 서류로도 사용될 수 있도록 하기 위함이었다. 그런데, 간단하게 10개의 평균을 구하는 식이라고 해도, ADD를 10줄에 걸쳐 차례대로 쓰고, 나눗셈을 별도로 하는 것은 정말 불편하기 짝이 없는 방식이다. 결국은 도저히 이것은 용납할 수 없었는지, COMPUTE 라는 명령이 추가되어, 수식 연산은 간단히 표현히 가능해졌다. {{{#!syntax markdown COMPUTE Z=X+Y. }}} == 유지보수 문제 == 역사가 오래되어서 매우매우 많은 양의 프로그램이 코볼로 만들어졌고, 아직도 상당히 많은 양의 코볼 프로그램이 돌아간다. 금융 관련 분야는 전산화가 가장 먼저 이루어진 분야인지라, 금융 관련 프로그램 중 상당수가 코볼로 작성되었으며 이 중 많은 코드가 현재도 현역으로 뛰고 있다. 1999년 조사 결과 [[맨해튼]]에서는 10억 줄 분량의 코볼 프로그램이 돌아간다고 한다. 특히 미국과 유럽의 경우 ATM 및 신용카드 관련 코드 중 상당부분이 코볼이다([[https://www.reuters.com/article/us-usa-banks-cobol/banks-scramble-to-fix-old-systems-as-it-cowboys-ride-into-sunset-idUSKBN17C0D8|관련기사]]). 현장에서는 시스템이 문제없이 잘 돌아가고 있으면 굳이 다 갈아치우려는 모험을 잘 하지 않으므로 기존 프로그램을 필요한 부분만 고치거나 해서 그대로 쓰기도 한다. 코드가 오래된 것 자체는 문제가 아니지만 이제는 이를 이해하고 관리할 프로그래머가 별로 없다는 것은 문제가 될 수 있다. 물론 신규 프로젝트에서는 다른 언어들에 밀려서 안 쓰인다. 현재 코볼의 사무처리 능력은 거의 [[데이터베이스]] 프로그램들이 대체했다. 그러다보니 대학이나 학원 같은 데서 코볼을 배워서 나오는 개발자가 있을 턱이 없다 보니 그런 쪽 업계는 [[북두신권|일자전승으로 내려오는 암살권]]마냥 [[도제(교육)|도제]]식으로 개발자를 키운다는 [[도시전설]] 같은 얘기도 개발자들 사이에서 돌아다닌다. 실제로 '''2000년대'''에 [[SM(개발)|시스템 유지보수]] 1개월차가 코볼을 손대봤다는 [[http://www.okjsp.net/seq/126083|사례]]가 존재한다. === [[2000년 문제]] === 해당 문제가 한창 화제가 됐을 때 기존 코볼 프로그램을 검증하고 수정하느라 잠시 코볼 [[프로그래머]]의 인기가 오르기도 한 적이 있다. 이 시기에는 워낙 해야 할 작업이 방대하다보니 인력이 부족해 이미 퇴직한 노인 프로그래머들을 비싼 돈을 부르고 다시 불러다 작업을 한 경우도 많았다. 이후에도 '''현역 코볼 프로그래머들이 있다'''. [[메인프레임]] 같이 한 번 들여놓으면 수십 년씩 굴려대는 컴퓨터는 소스코드도 그 시절에 짜 놓은 걸 그대로 쓴다. 이 녀석을 유지보수 업무를 하려면 어쨌든 코볼 개발자가 필요한 것. === [[코로나 19]] 사태 === 2020년 미국에서 코로나19 사태로 [[메인프레임]]에서 돌아가던 실업 수당등의 관련 프로그램등을 수정해야되는 상황인데 코볼 프로그래머가 없어서 문제가 되었다. [[https://youtu.be/LJ9TXkh9Xhk|#]] == 기타 == 1980~90년대 초반에는 컴퓨터 학원에서도 [[BASIC]] 다음에 많이 가르치기도 했다. 지금 생각해 보면 뻘짓이었지만[* 1990년대를 기점으로 프로그래밍 언어의 대세는 C로 넘어가서 베이직과 코볼은 신규 프로그래밍에는 거의 쓰이지 않았다. 그나마 베이직은 [[마이크로소프트]]가 꽤나 밀어줘서 [[Visual Basic]], [[VBA]] 등으로 쓰임새가 있지만 코볼은 오래된 프로그램 유지보수 이외에는 거의 쓰이지 않는다. 대한민국에서 코볼 프로그램을 유지보수할 일 자체도 희박하고.]. 2000년대 초반 [[고등학교]]에서 [[제6차 교육과정]]의 [[프로그래밍]]Ⅱ 단원 중에 코볼도 있었다. 물론 그 단원은 전혀 배우지 않고 쪽수만 차지하는 [[잉여]]단원으로 취급되었다. 그 당시의 교사들 중에서도 코볼에 대해 잘 아는 사람은 거의 없었을 것이다. 사실 고등학교 과정에서 배우던(그리고 2020년대에 더 확대된) 코딩 교육은 그걸 실제로 써먹으라는 것이 아니라 수학적 사고력 증진 차원이이라고 봐야 한다. 여담으로 코볼의 창시자인 [[그레이스 호퍼]](Grace Hopper)는 프로그램 역사에서 두 번째로 유명한 여성 프로그래머이자 최고령 여성 제독이기도 했다. [[1983년]]에 해군 [[준장]]으로 진급해서 [[1986년]]에 퇴역했다. 그녀의 107년째 생일을 기리는 [[구글 두들]]이 12월 9일 구글 메인을 장식했다. 참고로 첫 번째로 유명한 여성 프로그래머는 세계 최초의 프로그래머인 [[에이다 러브레이스 백작부인]]이다. SAP라는 ERP 패키지의 주 언어가 ABAP(Advanced Business Application Programming)인데, COBOL 기반으로 만들어졌다. 비즈니스 언어인지라 익히기 쉬운 언어다. 다만, 실제 업무랑 바로 직결되는지라 업무파악하고 코딩이 들어가야 한다. [[K-9 자주곡사포]]의 사통체계도 코볼로 작성되어 있다고 한다.