1 프로그램을 개발하는 행위
진정으로 재능 있는 프로그래머에게 있어, 코드를 짜는 것은 사고의 부산물에 지나지 않는다.For a truly gifted programmer, writing code is a side effect of thought.[1]
Programming. 프로그램을 만드는 것을 뜻한다. 그리고 여기에서의 프로그램은 대체로 컴퓨터에서 동작하는 프로그램을 말한다. 따라서 프로그래밍이라고 하면 대개 컴퓨터 프로그래밍을 뜻한다. 기술을 다루는 기술이라고 하기도 한다.
프로그래밍을 하는 도구를 개발자 도구 또는 개발환경이나 IDE라고 부르고 프로그래밍 언어는 프로그래밍을 하는 방식 또는 절차를 말하며 프로그래밍을 하는 사람이 프로그래머다. 개발자라고 해도 되지만 이건 범위가 너무 넓다.
대부분의 프로그래밍은 사람이 한다. 기계가 프로그래밍하는 경우는 아주 극소수에 불과하다. 프로그래머들이 컴퓨터 다루는 사람들인데, 컴퓨터가 할 줄 알면 벌써 컴퓨터에게 시켰을 것이다. 컴퓨터가 못하니까 직접 하는 것. 그리고 컴퓨터가 할 줄 알게 되면 그것은 더 이상 프로그래밍이 아니다. 대표적인 예로 컴파일러. 예전에는 사람이 수동으로 프로그래밍하던 어셈블리어를 이제는 컴파일러가 자동으로 만들어 준다. 물론, 아직도 수동으로 어셈블리어 프로그래밍을 하는 경우도 있지만, 그건 해당 어셈블리어 프로그래밍을 컴퓨터가 잘 못하기 때문이다. 프로그램을 만드는 프로그램을 메타프로그램기술을 다루는 기술을 만드는 기술?이라고 하는데 이게 프로그램을 만드는 프로그램의 일종.
대부분, 아니 자주 사용되는 모든 프로그래밍은 라틴 문자를 그 기반에 둔다. 쉽게 말해 유럽의 알파벳(주로 영어 알파벳)이 프로그램에 쓰인다. 한글이나 한자 등으로 프로그래밍할 수 있는 도구는 극소수에 불과하다. 이 말은 한글 데이터를 뜻하는 게 아니고 한글 코드를 뜻한다. 코드와 데이터는 서로 개념이 다르니 주의.
실제로 종류로는 아시아어가 가장 많다고 한다
아폴로 계획 당시의 소프트웨어 제작 영상.#. 예나 지금이나 노가다다.예나 지금이나? 노가다의 범주를 아득이 벗어난 것같은데
여담으로 한국에서 갈려나갈 코더를 양산 중이라고 한다.[1]
1.1 관련 문서
- 프로그래머
- 프로그래밍 언어
- 게임코디
- 상속
- 개발자
- 소프트웨어 개발
- 한국정보올림피아드
- 라이브러리
- 클로저
- 객체 지향 프로그래밍
- 코딩 스타일
- 익스트림 프로그래밍
- 하드코딩
- 날코딩
- 라이브코딩
- 윤성우
- 디버그
2 고등학교 과목 중 하나
1을 익히는 과목이라고 보면 된다. 주로 전문계 고등학교에서 배우나, 일부 전문계 고등학교에선 교재 내용의 난이도를 이유로 일부로 빼기도 한다. 일부 과학고나 영재고에서도 한다고 한다.
2000년대 초반까지는 '정보산업'이라는 과목으로 BASIC언어가 커리큘럼의 주를 이뤘고, 다른 언어들은 차차 맛뵈기 수준으로 추가되는 수순을 밟았다. 당시에도 사실상 거의 의미가 없어져서 유명무실화된 단원. 제6차 교육과정까지는 프로그래밍 과목 교과서에서 코볼(!) 단원이 남아있었다. 물론 나중에 가면 어느 학교에서도 전혀 가르치지 않았다. '그냥 이런 언어가 있다'는 정도로만 알려줄 뿐.
내용은 C언어가 나오고, 마지막에 C++가 잠깐 나온다. 여기서 만드는 프로그램(예제)들은 그렇게 어렵지 않은 간단한 프로그램이지만, 시중에 나오는 C언어 관련한 책에서 나오는 것과 다르게 내용이 다른 교과서처럼 난해하게 쓰여져 있어, 선생님의 도움을 받지 않는 이상은 극소수를 제외한 대부분은 절대로 읽지 못한다. 아니 교과서를 한 번 읽어봐도 어떤 내용인지 감이 잡히지 않는 경우가 대부분이다. 어떤곳은 비주얼 베이직을 배우기도 한다.
여기서 주로 사용하는 프로그램은 Turbo C 털보 씨. 그렇다, 도스시절에 쓰던 구닥다리 16비트 C 컴파일러이다. 워낙 프로그램이 오래된 구식이다보니, 윈도 XP에서 구동하는 방법까지 친절하게 책에 언급되어있다. 심지어 xp도 지원이 끝났는데! 사실 우리가 쓰는 컴퓨터들이 CPU의 발전에 따라 32비트 환경으로 바뀌었고 이제 64비트로 차차차 바뀌어 가고 있는데사실 이제 주 개발환경은 64비트와 멀티 코어 및 멀티 스레드이다., 교과서에선 아직도 16비트 컴파일러를 고집하는 것은 컴파일러와 CPU의 종류에 구애받지 않는 프로그래머를 육성하려는 교육과학기술부(교육과정 수립 당시에는 교육인적자원부)의 의지가 있기 때문인 듯하다. 그냥 자바 배워 자바
2015 개정 교육과정부터 SW교육 강화라는 명목으로 코딩이 필수로 배워야 하는 정보과목에 포함된다고 하는데 인프라의 부족으로 인해 제대로 자리잡을지는 미지수다.
3 대학수학능력시험 직업탐구 영역의 과목 중 하나
2의 과목으로 출제하는 수능 시험이다.
응시생이 별로 없고, 기본적인 문제들은 프로그래밍을 실전으로 해본 학생들이라면 코웃음을 치면서 풀 수 있다. 그러나, 프로그래밍을 처음 접하는 학생들에게는 높은 난이도로 유명하다.
앞부분의 문제는 기본적인 상식을 요구하거나 간단한 논리 연산을 요구하는 경우가 많지만 뒤로 가면 프로그램 코드를 내면서 출력 결과를 묻게 된다. 어떤 알고리즘이 나올지 예측할 수 없기 때문에 외운다고 되는게 아니고 수리영역과 같은 방식으로 공부해야 한다. 응시 인원도 참담하기 때문에 프로그래밍 경험이 없는 학생은 이 과목에 매달리면 위험하다.
정보올림피아드 대회를 어느정도(비록 예선 탈락 할 수준일지라도) 준비했다면 그다지 어려움을 느끼지 못한다. 실제로 직업탐구 영역 프로그래밍 과목은 1~2문제만 틀려도 2등급이 나올 정도로 쉬운 사람에게는 한없이 쉬운 영역이다.
4 문제를 푸는 방법
컴퓨터 프로그램이 생겨나기 전에, 프로그램이라는 단어는 알고리즘과 비슷하게 문제를 푸는 방법이라는 의미였다. 대표적인 예가 경제학의 무차별곡선 등에서 사용되는 리니어 프로그래밍 (선형 계획법).- ↑ Paul Ford, 블룸버그 비즈니스위크에 기고한 특집 기사에서