회원가입을 하면 원하는 문장을
저장할 수 있어요!
다음
AWS 이용 중이라면 최대 700만 원 지원받으세요
본문은 요즘IT와 번역가 Mr.P가 함께 만든 해외 번역 콘텐츠입니다. 필자인 Tanjim Mohamed Nirjhor는 시스템 관리자로 활동하고 있으며, 웹 3.0과 핀테크에 대해 이야기합니다. 이번 글에선 11개의 초창기 프로그래밍 언어에 대해 살펴보며, 이 언어들이 오늘날 프로그래밍 언어에 어떤 영향을 주었는지 알아보겠습니다.
회원가입을 하면 원하는 문장을
저장할 수 있어요!
다음
회원가입을 하면
성장에 도움이 되는 콘텐츠를
스크랩할 수 있어요!
확인
본문은 요즘IT와 번역가 Mr.P가 함께 만든 해외 번역 콘텐츠입니다. 필자인 Tanjim Mohamed Nirjhor는 시스템 관리자로 활동하고 있으며, 웹 3.0과 핀테크에 대해 이야기합니다. 이번 글에선 11개의 초창기 프로그래밍 언어에 대해 살펴보며, 이 언어들이 오늘날 프로그래밍 언어에 어떤 영향을 주었는지 알아보겠습니다.
4년 전, 기업가이자 라이프 코치인 Flavian Mwasi는 11개의 프로그래밍 언어가 수명을 다했다는 내용의 글을 게시했습니다. 여러분은 오늘 소개할 11개의 프로그래밍 언어 중 몇 개를 알고 계시나요?
오늘날까지 이어온 프로그래밍 언어의 역사에서 우리는 사라져 버린 언어에 대한 애도보다는, 온고지신의 정신으로 미래를 향해 나아가야 합니다. 그리고 이러한 11개의 초창기 프로그래밍 언어가 현대 프로그래밍 언어 진화에 어떤 영향을 미쳤는지 확인해 볼 것입니다.
최초의 컴퓨터 프로그래머로 여겨지는 영국의 수학자 에이다 러브레이스(Ada Lovelace)의 이름을 빌려온 에이다는 1991년 미국 국방부에서 당시 사용하던 450개 이상의 프로그래밍 언어를 대체하기 위해 만들어졌습니다.
위키피디아에 따르면,
“에이다는 구조적이고 정적 타입[1]을 지녔으며, 명령형이고 광범위하며 객체 지향적[2]인 고급 컴퓨터 프로그래밍 언어입니다.”
문제는 에이다가 너무 많은 목적을 수행하도록 설계되었기 때문에, 방대하고 복잡한 컴파일러와 모놀리식 코드[3]에 관한 문제가 있습니다. 1991년 미 국방부는 모든 소프트웨어에 에이다 사용을 요구했습니다(에이다 명령, the Ada mandate). 그러나 이 규칙에 대한 예외는 종종 허용되었습니다.
그 후 1997년 미 국방부가 상업용 기술들을 수용하기 시작하면서 에이다 명령은 사실상 해제되었습니다. 그러나 에이다 명령 종료로 인해 에이다의 상업적 사용이 끝난 것은 아닙니다. 에이다는 여전히 의료 및 기타 중요 시설의 시스템 프로그래밍에 널리 사용되고 있습니다.
알골은 1950년대에 ACM(Association for Computing Machinery)에서 알고리즘 설명의 표준으로 사용하기 위해, 컴퓨터 과학 분야의 권위자들에 의해 설계되었습니다. 과거 포트란(FORTRAN)[4]의 문제를 피하고자 설계된 알골은 PL/I(PL/I), 시뮬라(Simula), BCPL, B, 파스칼(Pascal), C와 같은 명령형 언어에 큰 영향을 미쳤습니다.
그러나 알골의 개발은 1960년을 끝으로 더는 이어지지 않았습니다. 이로써 알골이 가지고 있던 영향력과 위치를 다른 언어에게 내주게 되었습니다.
1960년대에 개발된 APL은 다차원 배열에 중점을 둔 동적 타입 프로그래밍 언어[5]입니다. APL은 개념 모델링, 스프레드시트, 함수형 프로그래밍, 컴퓨터 수학 패키지 개발에 큰 영향을 미쳤으며, 여러 다른 언어 개발에 영감을 주었습니다.
다만 APL은 다차원 배열과 기호의 사용을 장려했습니다. 따라서 APL로 작성된 코드는 결국 복잡해져, 해당 언어에 능숙하지 않은 사람은 이해할 수 없는 경향이 있습니다. APL 프로그래머는 여전히 존재하며, 특히 복잡한 알고리즘이 수반되는 물리학 또는 수학 분야에서 사용합니다.
포스는 계산기, CAD, 천문학과 우주용 애플리케이션과 같은 임베디드 시스템[6]을 위해 설계되었으며, 타입이 없는 스택 지향 프로그래밍 언어입니다. 이는 빠르게 실행할 수 있는 효율적이며 안정적인 소규모의 프로그램을 작성하기에 적합합니다.
포스는 대부분 임베디드 분야에서 사용해온 언어지만, 운영체제의 부트 로더[7] 작성에 사용되기도 합니다. 그러나 이러한 분야 이외에선 자주 사용되지 않아, 점점 기억 속의 언어가 되어가고 있습니다.
1950년대에 개발된 리스프는 연결 리스트라고 불리는 고전적인 데이터 구조를 사용한 것으로 잘 알려져 있습니다. 연결 리스트는 다양한 데이터 유형을 하나의 구조에서 효과적으로 다룰 수 있는 좋은 방식입니다. 어떤 면에서 리스프는 빅데이터에서 사용되는 개념을 미리 제시했습니다. 리스프는 많은 파생 언어들이 생겼는데, 그중 가장 잘 알려진 언어는 커먼 리스프(Common LISP)와 스킴(Scheme)이 있습니다.
그 후 리스프는 수년간 꾸준히 하락세에 있었지만, AI 탑재 수요가 늘어나고 더 작은 시스템에 지능형 기능을 추가하기 위해 뒤늦게 부활했습니다. 그러나 AI 분야 외에는 그다지 성공적인 결과를 얻진 못했습니다.
로고는 1960년대에 코딩 개념을 교육하기 위한 도구로 개발되었습니다. 이는 공식적으로 리스프에서 파생된 언어 중 하나이며, 논리 지향 프로그래밍 언어입니다. 로고의 뿌리는 인공지능, 수학적 논리, 그리고 발달 심리학에 있습니다.
로고는 그래픽 작업을 설명하기 위해 거북이가 그림을 그리는 것으로 유명했는데, 시간이 흐름에 따라 사용이 많이 감소했습니다. 또한 다른 언어들이 로고를 따라하면서 만들어낸 혼란으로 거북이 그래픽 사용도 줄어들게 되었습니다. 실제로 많은 언어들이 로고와 비슷한 점을 설명하기 위해, 거북이 그래픽(Turtle graphic)을 사용하곤 했는데 이러한 언어들과 로고는 관련이 없습니다.
컴퓨터 과학자 니클라우스 비르트(Niklaus Wirth)에 의해 1970년대에 개발된 파스칼은 구조적 프로그래밍[8]개념을 설명하기 위해 설계되었습니다. 이후 파스칼은 개인용 컴퓨터에서 프로그래밍하는 데 중요한 역할을 하는 언어가 되었습니다.
또한 1980년대 중반 볼랜드 터보 파스칼은 파스칼을 사용하는 컴파일러와 통합 개발 환경을 포함한 개발 체계로, 애플 Lisa용 소프트웨어 구축에서 도널드 커누스의 TeX 시스템 작성에 이르기까지 많은 것을 개발하는 데 널리 사용했습니다.
하지만 프로그래밍의 패러다임이 구조적 프로그래밍에서 객체 지향 프로그래밍으로 넘어감에 따라, 파스칼의 인기도 사그라들었습니다. 파스칼의 열렬한 추종자는 여전히 존재하지만, 언어가 영광을 누리던 날들은 이미 지나갔습니다.
1970년대에 니클라우스 비르트가 개발한 모듈라-2는 명령형에 구조적이며, 모듈화[9]가 특징인 프로그래밍 언어입니다. 이는 파스칼의 후속 언어로서 설계되었습니다. 모듈라-2의 가장 중요하고 핵심적인 부분은 바로 모듈(프로그램의 나머지 부분에서 어느 정도 확인할 수 있는 코드 블록) 아이디어입니다.
모듈라-2와 모듈 프로그래밍은 훗날 객체 지향 프로그래밍과 같은 미래 프로그래밍 패러다임의 토대가 되었습니다. 상업용 프로그래밍에 있어서 모듈라-2는 파스칼과 비슷하거나 더 나은 기능을 가지고 있었지만, 꾸준히 업데이트하진 않았습니다. 그래서 이제 모듈라-2는 거의 잊혀진 프로그래밍 언어로 남았습니다.
PL/I은 1960년대에 IBM에서 제작된 범용, 절차적, 명령형, 구조적 프로그래밍 언어입니다. PL/I의 목표는 포트란의 숫자 관련된 기능을 개선하고, 코볼(COBOL)의 문자열, 비즈니스 프로세스 기능을 향상시키는 것이었습니다. 그 결과 제어 시스템과 회계, 과학적 분석 등 모든 분야에서 사용할 수 있는 모놀리식, 구조적 프로그래밍 언어가 되었습니다.
그러나 프로그래밍 언어로서 PL/I은 IBM의 기대치를 충족시키지 못했고, 결국 IBM이 CMS-2, SP/k, B, REXX 및 AS/400 제어 언어와 같은 다른 언어로 노선을 바꿈에 따라 인기를 잃었습니다.
RPG(Report Program Generator)는 펀치 카드와 IBM 1401에서부터 IBM Power i 메인 프레임, 그리고 AS/400과 같은 IBM의 플래그십 컴퓨터까지, IBM 컴퓨터를 위한 제1의 레거시 애플리케이션 프로그래밍 언어입니다.
RPG는 코볼, 포트란과 동일한 시장에서 경쟁했습니다. 결과적으론 실패했지만, IBM은 이를 레거시로 남겨두도록 결정했습니다. 현재 버전인 RPG IV는 IBM 컴퓨터가 많이 배치된 장소에서, RPG 프로그래머들로부터 여전히 널리 사용되고 있습니다.
한때 신문이나 잡지 등에서 화제가 됐던 RPG는 기업들이 하이엔드 Linux/Unix 및 자바 JEE와 같은 최신 개발 플랫폼과 하드웨어 아키텍처를 수용하기 시작하면서 인기가 점차 감소했습니다.
스몰토크는 프로그래밍 언어에 있어 유행의 선두주자입니다. 1970년대 말부터 1980년대 초, 팰러 앨토 연구 센터(PARC)에서 개발한 이 언어는 무수히 많은 객체 지향 프로그래밍 언어(AppleScript, Common Lisp Object System, Dart, Dylan, Erlang, Etoys, Falcon, Go, Groovy, Io, Ioke, Java, Lasso, Lisaac, Logtalk, Python, Ruby, Scala, Scratch 등)에 영향을 미쳤습니다.
메시지 전달 모델에서 작동하는 예약 키워드가 단 6개뿐인 스몰토크는 그 당시 세상의 이야깃거리였습니다.
스몰토크는 여전히 대학에서 객체 지향의 개념을 가르치는 도구로 사용되고 있습니다. 그러나 다음과 같은 몇 가지 문제점이 있어, 상업적 용도로는 많이 사용되지 않았습니다.
다른 요인들도 있지만, 위 5가지 이유가 스몰토크의 쇠퇴를 알리는 신호였습니다.
오늘날 프로그래밍 언어는 개발자의 요구를 충족시키는 것 이상으로 발전했습니다. 현대의 언어는 그들의 추상 구문 트리보다 더 넓게 확산되어가고 있습니다. 이러한 프로그래밍 언어는 더 이상 단순한 도구가 아니라, 16진수에서부터 어셈블러까지 진화하고 있습니다. 더 높은 수준의 언어를 만드는 데 도움을 준 C를 더불어, 파이썬, 자바스크립트, 펄, PHP, 루비, 자바 등은 자동화되고 쉬우며, 학습 친화적입니다.
또한 포트란과 매트랩(MATLAB)과 같은 언어는 20세기에 수학적 연구 목적으로, 더 짧은 시간에 더 높은 정확도로 계산하기 위해 많이 사용되었습니다. 포트란은 우리에게 최초의 do-while 구조를 제공하여, 훗날 재귀 알고리즘에 일조했습니다. 매트랩의 경우 시작은 전통적인 프로그래밍 언어가 아니었지만, 이후 엔지니어링 및 과학적 수요를 충족시키기 위해 자체적으로 변경되어야 했습니다.
C 언어는 시의적절하게 등장하여, 당시 수요를 맞출 수 있었기에 영향력 있는 언어가 되었습니다. 오늘날 대부분의 컴파일러와 커널은 C로 작성됩니다. 소프트웨어와 게임 산업에서 런타임, 메모리 절약, 리소스 최적화를 위해 여전히 C++에 의존하고 있습니다. C++과 자바는 알고리즘 대회에 참가하는 프로그래머가 가장 많이 선택하는 언어입니다.
루비(Ruby)는 웹 개발을 간편하게 하기 위해 도입되었으며, 인기 있는 웹 애플리케이션 프레임워크인 루비 온 레일즈(Ruby on Rails)에 대한 다양한 커뮤니티 지원을 제공하는 최고의 오픈소스 프로젝트 중 하나입니다.
현대의 프로그래머로서 우리의 삶은 더 효율적으로 변했으며, 시간이 지남에 따라 프로그래밍 언어는 점점 더 쉬워지고 있습니다. 이번 글에서 살펴본 에이다부터 스몰토크까지 모든 프로그래밍 언어에는 전성기가 있었고, 그들의 장점은 다음 세대로 전달되었습니다.
“최고의 프로그램은 컴퓨터가 빠르게 수행할 수 있고, 사람이 명확하게 이해할 수 있도록 작성됩니다. 프로그래머는 알고리즘이 작동하는 방식을 전달하고, 결과가 정확할 것임을 독자들에게 확인시키기 위해 수학적 개념뿐만 아니라 전통적인 미적, 문학적 형식으로 작업하는 작가입니다.” - 도널드 E. 커누스, Selected Papers on Computer Science
그래서 제목에 대한 제 대답은 이렇습니다. 아니요, 그 언어들은 이미 사라졌을지도 모릅니다. 그러나 그들의 노력이 있었기에 현재 수학이나 컴퓨터 과학 학위는 필수가 아니며, IBM 메인 프레임을 앞에 두고 MIT 연구소에서 일할 필요도 없습니다. 누구나 노력하면 개발할 수 있는 시대가 밝았고, 이것이 오늘날 판도를 바꾸는 독학 프로그래머들이 많은 이유입니다. 마지막으로 프로그래밍 언어가 빠른 속도로 발전하고 있는 상황에서, 과연 미래는 우리를 어디로 데려갈지에 대한 질문은 여전히 남아있습니다.
[1] 컴파일 하기 전에 자료형을 명시해주어야 하는 언어 (ex. C, C++, Java)
[2] 프로그램을 구현에 필요한 객체들의 상호작용으로 작성하는 패러다임
[3] 전체가 하나의 통합된 언어로 작성되는 응용 프로그램, 주로 확장성과 안정성, 유연성에 제약이 있음
[4] 1954년 IBM 704에서 과학적인 계산을 하기 위해 시작된 컴퓨터 프로그램 언어
[5] 컴파일시 자료형이 결정되는 언어. (ex. 파이썬, 자바스크립트) 따라서 자료형을 명시할 필요가 없음
[6] 일반적으로 말하는 컴퓨터가 아닌 특정한 목적의 기계에 탑재한 프로그램 (ex. 네비게이션, 세탁기, 냉장고 등)
[7] 운영 체제를 시동하기 위해 작동하는 프로그램
[8] 코드의 위에서 아래의 방향으로 진행되는 프로그램 ex) C언어
[9] 프로그램을 기능 단위(모듈)로 나누는 것, 유지보수에 용이함
<원문>
ARE THESE ELEVEN PROGRAMMING LANGUAGES STILL ALIVE?
위 번역글의 원 저작권은 Tanjim Mohamed Nirjhor에게 있으며, 요즘IT는 해당 글로 수익을 창출하지 않습니다.