본문 바로가기

IT 고찰/좋은 글

프로그래밍 언어의 간단한 역사 [좋은 글][좋은 기사][ITWorld 기사]

https://www.itworld.co.kr/news/213089

 

프로그래밍 언어의 간단한 역사

프로그래밍 언어 개발은 컴퓨터의 기계어와 밀접하게 연관된다. 기계어는 이름에서 알 수 있듯이 기계가 실행할 수 있는 명령으로 된 언어다. 여기서 기계는 컴퓨터에 내장된 마이크로프로세서

www.itworld.co.kr


나의 구글 디스커버에서 추천된 글이다.

 

지하철에서 읽었는데 상당히 내용이 좋아서 공유해보고자 한다.

 

역사

 

역사를 아는 것은 "이해"의 관점에서 상당히 중요하다.

 

어딘가 삐걱대는 순간을 분석해보면 과거의 잔재가 문제의 원인인 경우가 많은데 이 과정에서 다양한 이해를 습득할 수 있기 때문이다..

 

더이상 문제의 순간을 참을 수 없고, 비효율적으로 느껴져 생산성이 낮아진다고 판단될 때는 해당 문제를 개선한 새로운 솔루션이 탄생한다.

 

프로그래밍 언어의 역사도 이러한 순환구조를 거치면서 성장하고 있다.

 

계속 등장하는 언어들은 기존의 언어들이 가진 불합리함을 개선한 새로운 기능을 선보인다.

 

레거시는 계속 남아있고, 신흥주자들은 계속 왕의 자리를 호시탐탐 노릴 것이다.

 

https://www.youtube.com/watch?v=Sxavf9HN0OE 

 

위의 영상을 봐도 그렇다.

 

지금은 굵직굵직한 언어들의 초창기에는 아주 적은 혁신가들의 관심을 받으며 성장했고, 다른이들이 해당 효율성은 인정하면서 많은 이들이 참여하게 된다.

 

그 과정에 어떤 프로그래밍 언어는 인기를 읽었고, 어떤 프로그래밍 언어는 점유율이 높아질 수 있었을까

 

그 배경은 무엇일까

 

등등을 역사의 상황적인 변화를 통해 해석해보는 것은 재미있다.

 


내가 뽑은 기사의 핵심

 

1948~ 어셈블리(Assembly)

 

기종간의 호환성을 가지지는 않지만 컴퓨터가 이해하기 쉬운 명령어(바이너리 코드인 이진 코드)에 해당하는 어셈블리어를 개발한다.

 

기계어에 직접적으로 매핑되기에 실행 속도가 상당히 빠르다. [ 해당 CPU 아키텍처 회사에서 제공하는 가장 효율적인 명령어 처리 기법이 적용된다. ]

 

어셈블리는 어셈블러(Assembler)라는 보조 프로그램이 필요하다. 어셈블러는 사용자 친화적인 소스 코드를 기계 프로그램으로 변환시켜준다. [ .asm 파일을 생성해준다. ]

 

컴퓨터 구조를 공부하게 되면 자연스럽게 어셈블러를 접하게 된다. 왜냐하면 기계어를 통해 프로세서와 레지스터 메모리를 직접 조작해볼 수 있기 때문이다. 이 과정에서 해당 하드웨어의 아키텍처를 상당히 깊게 공부해볼 수 있다.

[ 어셈블러 고수는 자연스럽게 컴퓨터 구조의 고수가 되는 것! ]

 

어셈블리는 프로그래머가 처음으로 기계어보다 친근한 언어를 선택한 순간이기에 뽑아보았다.

 

하지만 기기간의 호환성이 없다는 점, 너무도 방대한 코드, 유지보수의 편의성 저하, 낮은 개발자 생산성 등등이 문제가 되어 곧바로 2세대 언어를 탐색하게된다.

 

1954 ~ 고수준 언어. [ 포트란, 코볼의 등장 ]

- 생산성을 향상시키기 위해 사용자 친화적인 문법이 도입 + 컴파일러 도입 

 

fortran : Fomula Translation으로 과학의 수학적 공식을 강력하게 변환하는 기능을 가진 프로그래밍 언어이다.

포트란은 등장했을 때 꽤나 논란이 되었다. 어셈블러로 개발한 것보다 성능이 저조할 것이라는 부분이 주 공격 대상이었다. [ 놀랍게도 포트란 언어 컴파일러의 최적화는 수준 높은 어셈블러 개발자의 최적화를 자동으로 앞서게 되면서 이 논란은 종식도니다. ]

 

COBOL은 Common Business Oriented Language의 줄임말로 비즈니스 프로그램 개발을 목적으로 만들어졌다.

 

컴파일러를 통해 고수준 소스 코드를 기계코드로 변환할 수 있게 된다.

명령어들을 분석하고, 사용하는 변수에 대한 최적화를 진행해서 최소한의 메모리 요건을 갖추도록 프로그램을 최적화하는 기능도 가지게 된다.

 

자동적으로 효율적인 기계 프로그램을 생성할 수 있게 된 것이다. [ 최적화의 가능성을 계속 가지게 된다. ]

 

1960~ 시스템의 복잡성이 증가하다. [ 그 유명한 "소프트웨어 공학"이라는 표현이 사용된 시기이다. ]

 

1960년대는 "소프트웨어 공학"이라는 표현이 사용된 유명한 역사를 가진 시기이다.

 

전문적이지 않은 인력이 투입되고, 프로그램 개발에 대한 체계가 부족하며 무엇보다 프로그래밍 역사가 부족해서 많은 부분에서 문제점이 생기게 된 것이다. 문제는 소프트웨어에 대한 수요가 급증하고 있다는 것이었다.

[ 해당 표현은 나토 소프트웨어 공학 학회에서 처음 사용하고 이후 유명한 네덜란드의 컴퓨터 공학자인 데잌스트라의 ACM 튜링 연설 "겸손한 프로그래머"에 다시 등장한다. ] wiki참고