2015년 2월 21일 토요일

프로그래밍과 프로그래밍언어의 개념

목차


내가 처음 프로그래밍이란 용어를 접했을때의 이미지는
프로그래밍이란
이랬다.-ㅅ-
뭐 비슷한 점도 있지만 실제로 여기에 무슨 우주적 신비가 깃들어 있다거나 하진 않고 충분히 이해가능한 것이다
그래서 초보입장에서 네오랑 만나지 않게 한번 설명해보겠다

프로그래밍(Programming) 용어적 의미

먼저 IT계열은 항상 미쿡인이나 영어를 주식으로하는 나라들이 너무너무 부럽다
이들은 언어적 이점으로 인해 비영어권보다 몇배나 쉽게 프로그래밍을 배우기 때문이다
그에 관한 글 - 프로그래밍에서 용어와 영어의 중요성

Programming : 계획하는 것, 남이 할 일을 짜주기

프로그래밍의 경우 위와 같은 뜻을 지닌다
우린 컴터를 부려먹는다. 한데 부려먹을 컴터는 사실상 백치나 다름없다
그래서 우린 컴터가 할일을 일일이 계획을 짜서 건네줘야한다
그것을 ‘프로그래밍 한다’ 라고 한다
근데 얘는 외국인이므로 한글로 계획을 짜줘봐야 못알아듣는다
그래서 컴터의 고향언어로 짜줘야한다
그러한 언어를 프로그래밍 언어라고 하는 것이다

기계어와 컴퓨터

이제 프로그래밍에 대해서 대충 알게되었다
그럼 컴퓨터의 고향언어로 짜주면 그만이다
컴퓨터의 고향언어는 뭘로 되어 있을까
바로 기계어이다
(기계어에 관해서 더 자세히 알아보고 싶다면
[언어] 프로그래밍 언어의 역사 를 읽어보길 바란다
아주 재밌고 유익하다)

이건 또 무슨 거창한 외계언어일까 생각될 것이다
하지만 기계어는 이름과 달리 유치원생급 언어이다
아주 짧은 지시어들로 이루어져 있는데
가, 멈춰,
이런식이고 이들은 001, 1010 이렇게 0과 1로 이루어져있다
예를들면

stop - 000000
go - 000001
threeGo - 000010
Godolii - 111111

이런식이다. 왜 기계어가 이런식인지는
컴퓨터와 이진수 여기에 따로 설명해 두었다
여하튼 이런 기계의 언어로 해야할 일을 적어 놓으면
그게 바로 프로그래밍인 것이다
그럼 첫번째 프로그래밍을 해보겠다

10 - 오른발
01 - 왼발
11 - 앞으로

이걸로 ‘걸어라’ 라는 프로그래밍을 해보겠다

10 11 01 11… 반복

프로그래밍 개념
나 이짤 맨날 써먹는듯

새로운 프로그래밍 언어의 등장

엄청 쉽다. 근데 왜 어렵게 변했을까? 1
우리집 개 이름이 다롱이 인데.. 얘는 밥먹자 소리 안해도
밥의 낌새가 느껴지면 밥그릇앞에 대기해있다
견공지능의 위대함이다

하지만 컴터에겐 어림도 없다

밥먹자~ 라는 지시가 아니라 위의 걷기로 밥그릇 앞에까지
가게 해야한다. 위의 앞으로 라는 것도 어느정도 앞으로 가야되는지
정해야하고 1cm라고 치면 1m 전진에 아래와 같은 코드가 펼쳐진다

10 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 ......
... (존내반복) .... 01 11 11 11 11 11 11 11 11 11 11 11.....

노가다도 노가다지만 어느 순간이 되면 이제 뭐가뭔지 알 수 없는 단계에 이르른다
그나마 저긴 꼴랑 3개의 지시어만 썼을뿐이고 지시어에 2자리만 사용할리도 없다
0000101010011 이런게 명령어 1개인 경우가 수두룩 하단것이다
저런걸 위에처럼 쓴다면 절대 못알아보게 된다

그래서 저딴 코드를 짜던 사람들이 더 이상 못살겠다며
인간답게 살아보자며 만든 것이 어셈블리어이다
그것은 숫자로 표현되던 기계어를 다음과 같이 표현하기로
약속하는 것을 말한다. 즉 어셈블리어의 문법을 창조했다

011110 011110
mov mov

근데 당연히 mov mov 이렇게 해놓으면 컴터가 알아들을리가 없다
그래서 mov라고 해놓으면 011110 으로 번역해주는 유틸을 만들었고
이제는 기계어를 쓸 필요가 없어졌다2
한데 이 어셈블리어도 상당히 기계어에 가까운 원시적 언어라
밥먹어라 ~ 라고하면

mov mov mov mov mov mov mov mov mov mov

이짓 하기가 일쑤다 (물론 코드자체는 상당히 다르다 걍 개념적으로)
그래서 더더욱 개공지능에 가깝게 만든 언어들이 나오고
이들은 위의 코드를

moveToEat

이런식으로 더욱 발전시켰다.
또한 각자의 방식, 용도에 따라 더더욱 분류가 되었고
오늘날에 이르러 프로그래밍 언어는 그 수도 장난이 아니게되었다

다만 ‘밥먹자’ 라는 개념이 전세계 어디서나 있듯이
프로그래밍 언어도 공통적인 개념에서는 크게 벗어나지 않아
하나의 프로그래밍 언어를 익히면 다른 언어의 문법에는 쉽게 접근할 수 있게된다 (특히 C를 익히면 어떤 언어든 접근이 쉽다)

Written with StackEdit.


  1. 참고로 레지스터니 메모리관리니 이런건 일단 제외한다. 이 글을 읽을 사람이 그런거 보면 메트릭스로 다이빙하는 수가 있으니까.(사실 나도 모른다는게 더 큰 이유)
  2. 그것을 어셈블러 라고 하는데 그 후의 언어에는 일반적으로 컴파일러 로 퉁친다 - 더 자세한건 위키참조

0 개의 댓글 :

댓글 쓰기