최근에 회사에서 몇몇 직원에게 프로그래밍에 대해서 교육을 하고 있습니다.
문득, 자료를 웹에 올려서 필요한 분들에게 도움을 주고자 합니다.
사실 무척 기초적이고 개념적인 내용이므로 완전히 초보로 처음 시작하는 사람들의 길을 열어주는 것에 목적이 있습니다. 따라서, 조금더 고급 테크닉은 전문 웹사이트를 참고해야합니다.


프로그래밍이 어려울까?

프로그래밍이란 너무나 단순한(?) 기술입니다. 단지, 처음 시도하는 분들에게는 생소하고 익숙하지 않을 뿐입니다.  실제로 저 같이 약간(?) 머리가 나쁜 사람들에게 오히려 적합할수도 있습니다.


프로그래밍은 어떻게 해야할까?

간단하게 생각하면 머리속에서 이루어지는 일정한 일련의 작업을 하나씩 하도록 지시하면 됩니다.
흔하게 사용하는 배치 명령어 또는 매크로와 같다고 보면 됩니다.
일반 프로그래밍은 아주 단순한 작업이 모여서 복잡한 일을 이루는 것일뿐이며, 크게 보면 대략적인 그림이 보이고, 작게 보면 매우 단순한 조작이 보일 뿐입니다.
따라서, 어떠한 작업(task)를 실행하고자 할때, 그 작업의 세세한 단계와 실행에 대한 일련의 자세한 리스트가 프로그램이 되는 샘입니다. 실제로 우리는 평소에 많은 프로그래밍을 하고 있습니다.

예를 들어서 하루에 일과를 프로그래밍 한다고 한다면

   (1) 아침에 일어나서 
   (2) 운동을 하구
   (3) 식사를 하고
   (4) 회사에 와서
   (5) 일을 하고
   (6) 점심 먹구
   (7) 일을 하구
   (8) 퇴근해서
   (9) 저녁을 열심히 준비해서 먹구
   (10) 잠시 영화나 TV를 즐기다가
   (11) 잠이든다

이처럼 큰 대략적인 그림이 있고, 이것을 순서적으로 일정한 룰에 따라서 나열을 하게 되면, 바로 하루의 일이 지나는 샘이 됩니다. 
사실 알고리즘이네 뭐네 하면서 복잡한 용어들이 참 많습니다. 이것은 부산에서 서울을 가는데 어떻게 가야할가의 문제입니다. 차를 타구 가던, 비행기를 타구 가던 또는 자전거를 타고 가든, 여러가지의 방법들이 있습니다. 결국, 알고리즘이라는 것이 목적지에 가기 위해서 어떤 방법을 사용할것인가의 문제일 뿐입니다.


프로그래밍을 한다는데, 어떻게 해야할까?

컴퓨터에 이런 일련의 작업을 시키기 위해서는 컴퓨터가 이해할 수 있는 언어로 작업을 순차적으로 지시하기만 하면 됩니다. 굳이 컴퓨터가 원초적으로 이해한다는 기계어로 프로그래밍을 할 이유는 없습니다. 왜냐하면, 각종 컴파일러들이 개발되어 머리속의 개념을 보다 쉽게 컴퓨터 언어로 바꿔주기 때문입니다. 


프로그래밍 언어

BASIC, C, C++ 등과 같은 전형적인 프로그래밍 언어와 Java, ASP, PHP, CGI 등과 같은 웹을 위해서 고안된 프로그래밍 언어와 같이 여러 가지의 언어들이 있습니다. 사실, 프로그래밍을 하는 사람은 이중에 한 가지 정도는 자유자재로 사용할 수 있고, 추가로 한가지 정도는 이해할 수 있는 수준이면 됩니다. 

      전형적인 프로그래밍 언어
      
       (1) BASIC
             무엇보다도 제한이나 제약이 적고, 하드웨어와 연관된 지식이 거의 필요하지 않기 때문에 배우기 쉽고, 응용하기 쉬운 장점이 있습니다. 또한 코드의 생산성도 높고 신뢰도도 높습니다. 
       (2) C, C++
             프로그램에 보다 엄격한 룰이 적용되고, 컴퓨터의 하드웨어 제어를 보다 세세하게 할 수 있다는 장점이 있으며, 무엇보다도 수많은 예제 들이 있기 때문에, 실제 적응능력과 응용성이 높습니다. 단지, 코드의 신뢰도는 어느 정도로 익숙해지느냐 문제로 남아 있습니다. 
       (3) C# 
             Microsoft 사에서 BASIC과 C/C++의 정점을 모아서 만들어 놓은 약간은 새로운 언어이며, 웹에서 주로 사용하는 Java와 비슷한 장점도 가지고 있습니다. 사실, 모든 언어를 통합하려는 그런 목적도 있지 않나 생각해 보게 됩니다. 

        웹용 프로그래밍 언어
      
        (1) Java 
             아마 이글을 읽는 분들중에 자바라는 말을 들어보지 못한 유저는 없을 거라 생각합니다. Java는 Sun System에서 웹프로그래밍 언어로 도입을 했으며, 굳이 정의를 한다면 C 와 매우 유사한 형태를 가지고 있습니다. 무엇 보다도 장점은 모든 운영체계(OS, Operating System)을 지원한다는 장점이 있으며, 순수한 소스 코드 형태의 Java Script와 특정 컴퓨터에서 동작하도록 컴파일된 Java Applet 이 있습니다.
        (2) ASP
             Java는 C와 비슷하지만, ASP 는 Visual Basic 과 매우 유사합니다. Microsft 사에서 윈도우즈 기반의 O/S에서 쉽게 웹 프로그래밍을 할 수 있도록 개발된 언어입니다. 따라서, 다른 프로그래밍 언어와 윈도우즈 기반의 서버에서만 사용할 수 있습니다. 
        (3) PHP, CGI
             Linux/Unix 등과 같은 시스템은 윈도우즈에서 지원하는 BAT/CMD 프로그램에서 지원하는 것과 달리, 보다 복잡하고 어려운 작업을 수행할 수 있도록 매우 강화된 셀을 가지고 있습니다. 거의 C 수준의 프로그램이 가능합니다. 이들 PHP,CGI 등은 이들 shell script 를 강화해 높은 형태입니다. 


사실 이외에도 많은 프로그래밍 언어 들이 있지만, 모두 생략하기로 하겠습니다. 이중에 어떤 언어를 배우고 이를 이용하여 프로그램잉을 배울것 인가는 역시 본인의 선택이겠죠. 

사실 위 리스트에서 보면, 언어 설명에 C 언어에 대한 말이 많이 등장합니다. 그 만큼 C 라는 언어가 매우 범용적으로 사용되고 있다는 이야기와 같고, C 언어를 배우면 다른 유사한 언어 (C#, Java, PHP, CGI)  를 쉽게 배울 수 있다는 의미 이기도 합니다.