티스토리 뷰


먼저 어떤 언어들이 있고 어떻게 발전해 왔는지 이야기할께요.

하드웨어는 전자기학을 기반으로 해요. 기본적으로 전원이 들어오면 1, 나가면 0으로 인식해요. 그래서 가장 하위 단에는 2진수로 명령을 내리게 됩니다. "0111 0110 1011 0101" 처럼 2진수로 명령어가 씌여있는 것을 기계어라고 해요. (https://ko.wikipedia.org/wiki/기계어) 예시야 짧게 들었지만 몇백만 몇천만 라인이 될 수도 있으니 저걸로는 도대체 무슨 프로그램인지 무슨 동작을 하는지 말기 어렵겠죠? 그래서 간단하게 영문으로 명령어를 치환해서 어셈블러라는 언어가 나옵니다. (https://ko.wikipedia.org/wiki/어셈블리어) 프로그램을 작성하고 변환하면 1:1로 기계어로 바뀌게 되는 언어죠. 이 두가지를 Low Level Language라고 합니다. 컴퓨터가 어떻게 동작해야 하는지 정확하게 알려주기 때문에 실제 동작 속도는 빠르지만 이걸로는 도저히 큰 프로그램을 짜기가 어려워요. 생산성이 낮다는 말이죠.

처음 이 두 가지 언어만 있었을 때는 프로그래밍은 천재들의 작업이었던거 같아요. 그러다가 포트란을 필두로 High Level Language들이 등장하기 시작합니다. C언어, 베이직, JAVA, 파이썬, ...

보다 사람들이 쓰는 언어에 가깝고, 하드웨어와 관련된 지식이 없어도 프로그래밍을 할 수 있지만, 대신 직접 하드웨어를 제어하기 어렵고 실행 속도가 느려요. (더 알고 싶으시면 여길 방문해보세요. http://tosan17.tistory.com/5)

2015년 9월에 나온 자료(http://infobeautiful4.s3.amazonaws.com/2013/10/2552_Lines_of_code_Sep2015_FB.png)를 보면 페이스북은 6백만 라인, 윈도우 10은 5천만 라인이라고 하는데요. 이걸 기계어로 변환하면 대체 얼마나 될지 짐작도 가지 않아요. High Level Language가 나오면서 규모가 큰 프로그램이 만들어지고 유지보수가 가능해진거죠 :)


컴퓨터 개념은 19세기에 찰스 배비지가 처음 정립했지만 1943년 에니악이 나와서야 사용되기 시작했죠. 에니악은 2차 세계대전 당시 미사일의 탄도 계산을 위해 만들어졌다고 해요. 당시 프로그래밍에 관한 재미있는 일화가 있지요. 현대 컴퓨터의 아버지라 불리며 천재 수학자이기도 했던 폰 노이만이 어셈블러와 최초의 High Level Language라 불리는 포트란이 만들어지는 것을 반대했다고 하는데요. 그 이유가 기계어로 충분한데 쓸데없이 컴퓨터 성능을 낭비하는 것 아니냐고요. 그분은 기계어를 읽고 쓰는게 어렵지 않았던 거죠... (재미로 보는 폰 노이만 이야기. 이분이 얼마나 천재였는지... https://m.facebook.com/story.php?story_fbid=579547758898750&id=484288288424698)

High Level Language가 나오면서 프로그래밍은 일부 천재들만 사용할 수 있던 기술에서 공부하면 할 수 있는 기술로 대중화되었다고 생각해요. :)



댓글
댓글쓰기 폼