보통 프로그램은 프로그래밍 언어에 의해 만들어집니다. 프로그래밍 언어로 소스코드를 만들고 실행하게 처리하면 프로그램이 실행됩니다. 소스코드가 중요한 개념인데요. 프로그램의 설계도면이라고 비유할 수 있는 일련의 텍스트 파일을 의미합니다. 소스코드에는 프로그램 실행에 관여하는 코드가 기재되어 있구요. 프로그래밍 언어에 따라 컴파일을 거치거나, 인터프리터가 해석해서 실행이 됩니다. 즉 프로그래밍을 잘 하려면 소스코드를 이해하고 응용하는 능력이 전제가 되죠.
프로그래밍 언어는 한국어나 일본어와 구별되는 인공언어라고 합니다. 자연언어에 대비되는 개념인데요. 인공언어와 자연언어는 공통점도 있고 다른 점도 있습니다.
공통점은
(1) 정보를 담고 있는 기호체계
(2) 언어마다 각기 다른 규칙을 따름
(3) 규칙을 숙지해서 응용이 가능함
이구요. 다른 점은
(1) 자연언어에 비해 인공언어가 이해가 어려울 수 있음
(2) 자연언어에 비해 기술적으로 조합되는 테크니컬한 개념이 많음 (전문적 지식필요)
보통 (1)이나 (2)의 특성으로 인해 임하기전부터 압도당하기도 합니다. 이 경우 해법은 기호를 보고 압도당하지 마시고 공부에 임하시라는 것인데요. 이는 누구나 알지만, 그 요령을 비전공이시면 알기가 어려우니 이 글에서 요령을 해설해보겠습니다.
우선 기호체계인 것이 프로그래밍 언어라 아래와 같은 특성을 지니고 있습니다.
(1) 고유 문법이 존재
(2) 초기 접근이 쉬운 편인 언어가 있음
(3) 문법 요소가 합해져 구문을 이룸
(4) 유지보수와 가독성을 위한 방법론적인 것
(5) 이미 여러번 해결된 기능을 효율화하기 위한 알고리즘이 연구되어 있음
이 특성들 중에서 초심자 시절에 필요한 숙련 사항은 (1), (2), (3)을 잘 알아두는 것입니다. (4)와 (5)는 숙련이 된 단계에서 해야 합니다. 풀어쓰자면요.
여러 프로그래밍 언어에 공통된 특성을 전제로 해서 배우기 편한 언어부터 하면 진입점에서 수월한데요. 예를 들면 C++로 윈도우 앱을 만드는 것보다 파이썬으로 간단한 계산기를 만드는게 편합니다. 이는 프로그래밍 언어의 소스코드 구성요소가 간결하게 첫인상을 주는지의 차이이기도 하고 이미 개발되어 언어에 포함된 기존의 라이브러리들의 강력한 정도가 언어마다 차이가 있어서입니다. 그래서 중요한 것은 어느 언어부터 배움을 시작하느냐인데요. 요즘은 파이썬을 주로 추천하는 것 같애요. 코드가 군더더기없이 작성이 가능하고 난이도가 높은 구현들인 머신러닝과 같은 구현을 돕는 모듈들이 많이 제공되서 초심자 시절에 (4)와 (5)를 신경안써도 (1), (2), (3)을 집중하는데 보탬이 되서입니다.
우선 언어를 골랐다면, 문법부터 들여다봐야 합니다. 예를 들면 C++에서 사칙연산을 구현할때 PHP에서는 어떻게 하는지의 차이가 머리속에서 정리되면 딱 좋습니다.
사칙연산에는 여러 문법 요소와 구문이 관여하는데요. 아래식을 계산할때도
1+2=3
언어마다 다른 문법과 구문으로 해결할 수 있습니다.
C++는
|
int a = 1; int b = 2; int c; c = a + b; |
라고 쓰구요. PHP는
|
$a = 1; $b = 2; $c = $a + $b; |
라고 씁니다. 우선 형태적으로 유사한 것은 변수들을 선언해서 사칙연산 작업을 수행하라고 지시하는 구문 형태죠.
초심자 시절에는 우선 각 구문을 구성하는 문법 요소가 무엇인지 종류부터 식별 연습하면 좋습니다. int는 뭐고 a는 뭐고 =는 뭐고 ;는 무엇인지 떠올려보고 구별이 되면 됩니다. 기왕이면 말이나 글로 설명을 할 수 있으면 더 좋구요.
int는 정수를 메모리에 저장하는 변수의 타입이고
a와 b와 c는 int 형으로 선언된 변수로 메모리에 정수값을 저장하기 위해 쓰였다
+와 =는 수학적인 것을 차용한 언어들 고유의 문법이다 (차이가 있을 수 있다)
이런 이해가 가능해지면 됩니다.
우선 눈썰미가 발현되면 쉽게 알 수 있을 것입니다.
이 문법 요소는 매우 많은 가지수라, 첫대면하면 압도가 될 수 있지만, 다들 학교에서 경험해보신 것처럼 수학 문제를 풀때 그냥 확 임해서 순서대로 배우면 배워지듯이요. 프로그래밍 언어도 그냥 확 임해서 순서대로 배우면 다들 할 수 있습니다.
|
$c = 0; for ($i = 1; $i <= 100; $i++) { $c = $i + $c; } |
이 코드는 PHP 문법에 따라 1부터 100까지 더하는 반복작업을 위한 루프문입니다. 중요한 핵심은 for 루프라는 문법 요소로 1부터 100까지 더하는 구문을 작성한 것입니다. 구문은 특정 기능이 구현된 문장들이 모인 코드의 형태구요. 각 문장별로 담당하는 기능을 모아서 최종적인 기능을 수행하게 합니다. for 루프를 예로 들면 고유의 문법 형태가 있어서 이를 준수하면서 코드를 작성하게 됩니다.
for ( ) 안에 들어간 ;로 구분된 부분을 각개격파로 보세요.
$i = 1 은 $i를 1로 설정한다는 의미입니다
$i <= 100 은 1에서 100까지 $i가 도달하는 동안 for 루프를 실행하라는 의미구요
$i++는 $i <= 100일 동안 1씩 $i를 증가시킨다는 것입니다.
이 순차적인 인식이 되면 구문에 대한 이해가 된 것이구요 { } 블락에 들어간 코드가 100번 실행된다고 이어서 이해하면 됩니다.
이런 문법과 구문을 이해하고나서 일정 부분 외어서 이후에 스스로 작성할때 변형도 해보는 능력을 갖추어야 언어를 잘 운용할 수 있게 됩니다.
설명이 어렵게 느껴지신다면 구문 형태가 최대한 가독성이 큰 언어로 하셔도 좋구요. 파이썬이 추천되는 이유입니다. 워드프레스는 PHP로 작성된 프로그램이라 PHP도 들여다봐야 하니 선택해보세요.
프로그래밍 언어들은 문법 차이에도 불구하고 공통 개념을 공유하기도 합니다. 변수, 상수, 함수, 연산자, 전처리, 컴파일, 인터프리터, 자료형, 클래스, 절차형, 객체지향형, 라이브러리, API 등등 일단 잘 알아두면 좋은 개념이 체계화되어 있으니, 잘 숙지해두면 좋습니다.
위의 구문에서 변수와 사칙연산은 컴퓨터의 메모리를 제어하는 과정이구요. 오랜 옛날에 통용되던 기계어에 가까운 언어를 비교적 이해하기 쉽게 만든 것입니다. 메모리를 알면 좋은데 잘 모르더라도 순서대로 작업 구현에 필요한 지식을 소스코드 작성시나 타인의 소스코드를 보면서 떠올려봐야 합니다.
처음 시작한다면 구문 형태에 익숙해지려고 하시면 좋습니다. 너무 어렵게 생각하지 마시구요. 위에 for 루프처럼 각 부분을 보고 어떻게 결과가 나올지 예측을 해보시면서 보시면 좋습니다.
각각의 언어별 차이를 알고
각각의 언어 문법 규칙을 이해할 줄 알고
문법 요소가 모인 구문이 어떻게 작동하는지 알고
여러 요소를 합해서 응용하는 순발력
이 필수구요. 처음 시작할때는 위 네가지가 자유롭게 된다는 전제 하에 타프로그래머들이 작성한 소스코드를 보면서 실무가 어떻게 되는지 보면서 배우는게 효율적입니다. 수학도 친구들끼리 풀이집을 빌려주면서 풀듯이요. 다만 암기만 하는게 아닌 스스로 이해하는 과정은 늘 실천해야 하구요.
글쓰기도 잘하는 분들 글을 읽어두면 영감이 떠오르듯 프로그래밍 언어도 잘하는 분들의 소스코드를 보면서 배우세요.
워드프레스의 경우 워드프레스 공홈에서 소스코드를 다운로드받을 수 있구요. 깃헙 같은 곳에서도 PHP, 자바스크립트 소스코드를 볼 수 있습니다.
그런데 물론 비전공이시면 시간을 워드프레스 외적인데 쓰는게 현실적으로 시간낭비가 되니 큰 의지가 안일으켜질 수도 있는데요. 이 경우 PHP로 해설된 교재를 우선 분위기를 알고 어떤 식으로 전개되는지 정도로 가볍게 보시고 워드프레스 공부로 오셔서 번갈아가면서 교차참조하셔도 됩니다. 처음부터 끝까지 일차독 하시고 실재 작업을 하시다가 이차독 하시고, 삼차독 하시면 됩니다. 이는 초견상 안되면 여러번 읽기가 싫어지기도 하셔서 드리는 요령입니다. 전공자들도 처음 접하면 교재를 여러번 읽구요. 의지를 강하게 붙들고 깊은 집중력으로 하는 것이 전공자들이라 할 수 있는 차이가 만들어집니다. 초심자이신 분들도 할 수 있습니다.
더 나아가면 API와 알고리즘도 배우면 좋습니다. 압도당하지 마시고 순서대로 배우시면 됩니다.
요즘은 비전공자분들도 프로그래밍을 할 수 있게 책들도 잘 나와있으니 찾아서 읽어보셔도 좋구요.
해설이 잘 된지 모르지만 일단 이해는 되셨을 것입니다.