IT Life

지금 이 순간에도 새롭게 진화하는 프로그래밍 언어

2015. 8. 5. 09:47

안녕하세요? LG CNS 대학생 기자단 이승균입니다. 


여러분은 'C', 'Python', 'Java'와 같은 언어에 대해 알고 계신가요? 이들은 모두 프로그래밍 언어로 요즘 코딩되는 대부분의 프로그램은 이 언어들로 이루어져 있다고 해도 과언이 아닙니다. 또한 이 외에도 'PHP', 'Javascript', 'PERL' 등 현재까지 수백 개의 프로그램 언어가 존재하고 있죠. 



이와 같은 프로그래밍 언어들의 역사는 쉽게 정리할 수 없을 만큼 다양하고 깁니다. 지금까지 수많은 언어가 출현했고, 이제는 사용되지 않는 것도 있으며, 주기적으로 개선되어 현재까지 건재하고 있는 언어도 있는데요. 오늘은 이러한 프로그래밍 언어를 소개해 드리도록 하겠습니다. 


본격적인 이야기에 앞서 우선 프로그래밍에 대해 알아보겠습니다. 프로그래밍은 컴퓨터에 명령을 만드는 작업으로, 컴퓨터에 알맞게 수식이나 작업의 순서를 정하고 컴퓨터 특유의 명령 코드로 고쳐 쓰는 작업을 총칭합니다.


컴퓨터가 처음 등장한 1950년대 초기의 프로그래밍은 숫자를 나열한 명령 코드를 쓰는 것이었는데요. 이러한 명령 코드를 '기계어'라고 불렀습니다. 그러나 이 기계어로 코딩을 하면 틀리기 쉽고, 틀린 곳을 발견하기도 어려워 작업 효율이 많이 떨어진다는 단점이 있습니다. 그 결과 인간이 외우기 쉬운 기호나 언어, 수식을 사용해서 프로그램을 쓰는 방식이 고안되었는데요. 이것이 바로 '프로그래밍 언어'입니다.       


<프로그램 언어 분류>


<High-level에서 machine code 언어로 변환되는 과정>


프로그래밍 언어는 간단히 말해 프로그램을 위한 표기법으로, 컴퓨터와 커뮤니케이션 하기 위한 일종의 방법입니다. 기계 중심적인지 인간 중심적인지에 따라 크게 '저급 언어(Low-level)'와 '고급 언어(High-level)'로 나뉘죠. 기계 중심적인 저급 언어는 0과 1로 구성되며, 컴퓨터가 직접 이해할 수 있는 '기계어'와 기계어를 간략하게 기호화시킨 '어셈블리(Assembly)'로 구성됩니다. 


고급 언어는 우리가 아는 대부분의 프로그래밍 언어로, 'C', 'C++', 'JAVA', 'COBOL' 등이 여기에 속합니다. 일반적으로 사람은 기계어 대신 고급 언어를 이용해 프로그램을 작성하고 컴파일러나 인터프리터를 통해 기계어로 번역하는 방식을 사용하는데요. 고급 언어는 기계어로 번역해야 하는 번거로움은 있지만 저급 언어에 비해 작성 및 수정이 편리하고, 호환성이 우수하다는 장점을 지니고 있습니다.  


<프로그래밍 언어 순위 (출처: Tiobe software 웹사이트)>


위 자료는 소프트웨어 개발 전문 업체인 티오베(Tiobe)가 2015년 5월 웹사이트에 게시한 프로그래밍 언어 순위입니다. 1년 전과는 달리 'JAVA'가 다시 1위를 탈환하였고, 'C'가 2위를 차지하고 있는데요. 그 뒤로 5위까지는 'C'에서 파생된 언어들이, 6위는 'Pytyon'이 위치하고 있는 것을 알 수 있습니다. 그럼 지금부터는 많은 언어들 중에서 상위권에 랭크된 'C', 'JAVA', 'Python', 이 세 가지 언어의 역사적 배경, 특징, 사용되는 곳에 대해 정리해 보겠습니다. 


<자바(Java)의 아버지, '제임스 고슬링(James Gosling)' (출처: 위키피디아)>


자바(Java)는 1991년 제임스 고슬링(James Gosling)을 비롯한 썬(Sun)社의 엔지니어들이 고안한 '오크(Oak)'라는 언어에서 시작되었습니다. 오크는 처음 가전제품이나 PDA 같은 소형 기기에 사용될 목적으로 만들어졌는데요. 여러 종류의 운영 체제를 사용하는 컴퓨터들이 통신을 위해 사용하는 인터넷의 등장과 함께 그것에 적합하게 개발 방향을 바꾸게 됩니다. 그리고 이름 또한  '자바'로 변경하였죠. 


이후 자바로 개발한 웹브라우저인 '핫자바(Hot Java)'를 완성하였고, 그 다음 해인 1996년 1월에는 자바의 정식 버전을 발표하였습니다.     


자바의 가장 큰 특징은 플랫폼에 독립적이라는 것입니다. 'Write once, Run everywhere'이라는 슬로건을 내세운 자바는 컴퓨터 자체에서 실행되지 않고 'JVM(Java Virtual Machine)' 즉 자바 가상 머신에서 실행되는데요. 따라서 운영 체제가 무엇이든 간에 한 번 쓴 코드를 재사용할 수 있습니다. 


또한 객체 지향 프로그래밍 언어(object-oriented programming language) 중의 하나로 객체 지향 개념의 특징인 상속•캡슐화•다형성이 잘 나타나 있고, TCP/IP 네트워크 기능을 내장하고 있는데요.     그 결과 프로세스 간 그리고 애플릿과 프로세스 간의 네트워크 모델 형성이 가능합니다.


그리고 HTTP(Hyper-Text Transfer Protocol)와 FTP(File Transfer Protocol) 같은 프로토콜에 대한 라이브러리 루틴(Library Routine)을 내장하고 있어서 자바 언어의 분산 처리를 쉽게 할 수 있다는 특징이 있습니다. 


처음에는 가전제품용 언어로 시작을 했지만 지금은 웹 프로그래밍과 게임•모바일 분야, 데이터 베이스 관리 프로그램 등에 사용되고 있으며, 최근에는 안드로이드까지 그 영역을 넓혀 나가고 있습니다.


<C언어의 창시자, '데니스 리치(Dennis Ritchie)'(출처: 위키피디아)>


C언어는 1972년 벨 연구소의 데니스 리치(Dennis Ritchie)에 의해 만들어졌습니다. 당시 데니스 리치는 Unix 운영 체제의 개발을 맡고 있었는데요. 이 때 운영 체제는 그 특성상 하드웨어를 직접 제어할 수 있어야 했습니다. 또한 당시의 컴퓨터는 CPU의 속도나 메모리의 용량이 충분하지 않았기 때문에 프로그램의 크기는 작고 속도는 빨라야 했죠. 


이런 모든 요구를 만족시킬 수 있는 유일한 언어는 '어셈블리(Assembly)'밖에 없었습니다. 그러나 어셈블리는 특정 기계에 종속적이기 때문에 여러 플랫폼에서 수정 없이 사용하는 것이 목적인 Unix와는 잘 어울리지 않았습니다. 그래서 어셈블리의 강력한 기능과 고급 언어의 이식성을 동시에 갖춘 새로운 언어를 직접 만들게 되었는데요. 이것이 바로 C언어의 시초입니다.


C언어는 하나 이상의 함수로 구성된 언어입니다. 함수를 활용하여 논리적이고 구조적이며 함축적인 프로그래밍 작성이 가능하죠. 또한 복잡한 소스 코드를 기능에 따라 함수 단위로 나누어 세분화시킴으로써 소스 코드에 대한 중복 사용을 최소화하고 재사용 가능성을 개선시켰습니다. 함수로 구조화된 소스 코드는 프로그램의 크기도 작고, 프로그램의 실행 속도도 빠를 뿐만 아니라, 소스에 대한 이해가 쉽기 때문에 유지•관리를 편하게 할 수 있습니다. 


또한 C언어는 운영 체제와 같은 시스템 프로그래밍을 작성하기 위한 언어로 탄생했기 때문에 프로그램의 이식성이 높고 하드웨어에 대한 제어가 가능합니다. 효율성 측면으로 봤을 때, C언어는 고급 언어이자 동시에 저급 언어의 특성을 가지는 언어인 것이죠. 그래서 프로그램이 상대적으로 가볍고 실행 속도가 빠르며 메모리도 효과적으로 사용할 수 있습니다. 


C언어는 많은 언어들에 영향을 끼친 만큼 안 쓰이는 곳이 거의 없습니다. 제일 크게는 운영 체제(OS) 등의 시스템 프로그래밍을 하는데 사용되고 있는데요. Unix 계열 OS들(Sun Solaris등)과 Linux, MS Windows 등에 모두 사용되었고, 운영 체제에 들어가는 소프트웨어 Network Programming, DB Programming(Oracle, MS SQL, MySQL)에 사용되기도 합니다. 


이 외에도 여러 응용 소프트웨어들과 프로그래밍 언어의 컴파일러나 실행 도구도 C로 만들어지는데요. GNU Compiler, PHP, JVM(자바 가상 기계) 모두 C가 사용되었습니다. 


<파이썬(Python)의 창시자, '귀도 반 로섬(Guido van Rossum)' (출처: 위키피디아)>


파이썬(Python)이란 언어의 등장 배경은 '개발 생산성'에 있습니다. 쉽고 빠른 개발이 가능하고 라이브러리 활용성, 확장성 및 재사용을 극대화하면서도 시스템의 독립성 확보로 어떤 시스템에서나 제한 없이 사용될 수 있는 언어를 만들자는 의도였는데요. 이것은1980년대 말  귀도 반 로섬(Guido van Rossum)에 의해 시작되었습니다. 


파이썬은 고급 프로그래밍 언어입니다. 플랫폼 독립적이며 인터프리터(Interpreter)식, 객체 지향적, 동적 타이핑 대화형 언어인데요. 우수한 자료형과 다양한 모듈 등을 제공해 개발 기간이 매우 단축되는 것이 특징입니다. 'C언어로 2년 동안 완성하지 못한 프로젝트를 파이썬으로 한 달 만에 해냈다'는 극적인 경험담이 있을 정도이니까요. 


그 중에서도 파이썬의 가장 큰 장점 중 하나는 바로 배우기 쉽다는 점입니다. ‘인터프리터’ 라는 언어적 특성이 강하기 때문인 것 같다는 생각이 드는데요. 파이썬은 객체 지향 기능을 강력히 지원하는 대화형 인터프리터 언어로, 컴파일•실행•에러를 고치는 기존의 절차에서 벗어나 작성한 다음 바로 테스트할 수 있는 간단한 언어입니다. 따라서 마치 컴퓨터와 대화하듯이 프로그램을 배우고 만들 수 있습니다. 


다음으로 파이썬은 동적으로 데이터 타입을 결정하므로 데이터 타입에 관계없는 일반화된 코드를 작성할 수 있습니다. 정수, 문자열, 리스트 등의 자료가 입력되었을 때, 그 자료에 알맞은 데이터 타입이 자동으로 호출되기 때문에 코딩 시 데이터 타입을 특별히 지정하지 않아도 되는 것이죠. 


이외에도 높은 객체 자료형을 제공한다거나 많은 수의 라이브러리를 제공한다는 점 모두 파이썬을 배우기 쉽게 만드는데 한몫 한다고 볼 수 있습니다. 


현재 파이썬은 자동화나 테스트 같은 개발 지원에도 사용되고 게임 개발이나 3D 그래픽에도 응용되고 있습니다. 또한 구글의 검색 엔진과 다양한 기능 구현, NASA, Yahoo Groups, 유튜브, DropBox를 비롯한 다양한 서비스에 적용되고 있습니다. 


지금까지 몇 가지 프로그래밍 언어의 역사, 특징 등을 함께 살펴보았습니다. 그렇다면 현재 수백 개의 프로그래밍 언어가 존재하는데, 왜 계속해서 새로운 언어들이 출시되고 있는 것일까요?  


<새로운 프로그래밍 언어인 구글의 '다트(Dart)', 페이스북의 '핵(Hack)', 애플의 '스위프트(Swift)'>


새로운 분야의 개발에 따른 새로운 언어의 필요성과 효율성 측면 등의 많은 이유가 있을 텐데요. 그 중에서도 거대 IT기업들은 개발자 생태계 장악을 위해 새로운 언어를 계속해서 출시하는 것 같습니다. 


최근 개인 혹은 연구자들에 의해 새로운 언어가 탄생하는 것보다 IT 공룡 기업들에 의해 새로운 언어가 개발되고 보급되는 흐름이 강한 것을 볼 수 있는데요. 이러한 변화는 언어의 보편성을 획득하기 위한 효율적 수단의 확보를 위해 기업에서 집중하고 있다는 것으로 해석할 수 있습니다. 

    

예를 들어 애플용 애플리케이션을 개발하려면 ‘objective-C’나 '스위프트(Swift)'를, 윈도우폰 앱을 위해선 ‘C#’을, 안드로이드 앱 개발을 위해선 ‘JAVA’를 배워야 하는 것과 같은 이치인데요. 따라서 특정 플랫폼을 장악한 IT 대기업들이 신규 언어를 보급하는 것은 그 이점이 클 수밖에 없습니다. 그리고 그러한 이유들로 인해 언어 개발을 주도하기 위해 노력하는 것이죠. 


지금 이 순간, 또 어떤 프로그래밍 언어들이 개발되고 있을까요? 조금 더 쉽고, 간단한 언어의 탄생으로 기계와 원활하게 의사 소통하는 날이 오기를 기대해 봅니다.  





Posted by IT로 만드는 새로운 미래를 열어갑니다 LG CNS

댓글을 달아 주세요

위로