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. 그것을 어셈블러 라고 하는데 그 후의 언어에는 일반적으로 컴파일러 로 퉁친다 - 더 자세한건 위키참조

Related Posts:

  • 2FA와 OTP의 원리목차 2FA (Two-Factor Authentication) OTP OTP 원리 2FA (Two-Factor Authentication) 2FA는 이중인증이라고 불린다. 곧 소개할 OTP 처럼 코인계에선 무조건 필수이다. 정작 스팀 사이트에선 지원하지 않는게 엄청난 에러긴한데 그 대체로써 마스터 패스워드를 컴퓨터와 완전 분리해두는 방법이 있긴하니 숙지해두자. 여튼 … Read More
  • 비트코인(블록체인) 초보 입문 - 비트코인의 개념목차 돈이란 무엇인가 가상화폐 비트코인의 등장 돈이란 무엇인가 돈이 가치를 지니는 것은 뒤에 누군가가 중재해주기 때문이다. 카지노의 칩을 생각해보라 이런 장난감이 가치를 지닐 수 있는건 해당 카지노가 보증을 서주기 때문이다. 마찬가지로 현실의 돈은 각각의 국가가 보증을 서줌으로써 가치를 지닌다. 만약 전쟁이라도 일어나면 해당 국가의 지폐가치가 확 떨어지는 것은… Read More
  • Git 시작하기 4 - reset목차 git reset 명령어 다시 원상태로 reflog git reset 명령어 저번에는 git commit으로 백업을 진행시켰다 (무려 1년도 넘은 저번편이지만..) 백업을 하는 이유 중 하나는 바로 되돌리기를 위해서이다 그 되돌리기를 하는 명령어가 바로 reset 이다 명령어부터 대놓고 쉽다 이걸로 끝이면 좋겠지만 불행해도 쪼끔 더 복잡하다 reset은 3가지 영… Read More
  • 컴퓨터와 프로그래밍의 개념원리목차 반도체 아날로그와 디지털 프로그래밍은.. 컴퓨터와 프로그래밍은 긴밀하게 묶여있지만 그것이 어떻게 묶여있는지는 잘모르는 사람이 많다. 원래부터 흥미가 있었던 사람이나 전공에서 일정부분 진행하지 않는 이상 그 실체가 드러나지않기 때문이기도 하지만 근본적으론 한국교육 방식이 글러먹었기 때문이다 왜 그런가로 흥미 유발을 하고 그것을 해결해나가게 한후 그 이후에 더 쉽게 해결… Read More
  • 코딩교육에 대한 기대감목차 코딩교육 2박 3일 54만원짜리.. 코딩교육 내년부터 코딩 교육이 의무교육이 됩니다. 코딩은 다른 공부에 비해 결과를 직접 바로바로 볼 수 있으므로 굉장히 재밌고 그러한 재미를 통해서 논리적 사고를 쌓는데 최고의 도구라고 할 수 있죠 ��내 아이 ‘코포자’ 안돼 - 네이버기사 그렇지만 이좋은 교육도 한국패치를 당하고 나면 이렇게 되어버립니다. 그… Read More

0 개의 댓글 :

댓글 쓰기