"프로그래밍"의 두 판 사이의 차이

자유인사전 - 자유인들의 백과사전
이동: 둘러보기, 검색
(고등학교 과목)
(고등학교 과목)
 
43번째 줄: 43번째 줄:
  
 
==고등학교 과목==
 
==고등학교 과목==
프로그래밍은 상업고교 관련 과의 정규과목으로 편성되어 있는데 프로그래밍과 프로그래밍 실무로 분류되어있다.디지털미디어고등학교나 선린인터넷고 같이 특성화되거나 수준이 높은 상업고교의 경우에는 아주 심층적으로 다루는 부분이지만, 보통의 상업고교는 학생들의 수준에 맞춰 수박 겉을 농약도 안빨고 혀만 같다 대는 시늉만 하고 끝난다. 실질적으로 무언가를 배우는 느낌은 들지않는다. '''직업인을 키우는 목적과 전혀 상반된다.''' 애초에 상업고등학교에서 프로그래머를 양성한다는 자체가 어불성설이다. 같은 상업고의 [[인터넷일반]]이나 정보통신 같은 과목은 은근히 유익한데 비하면 상당히 아쉬운 편. 따라서 현재 프로그래머를 지향하고 있는 중학생 여러분들은 굳이 상업고를 들어가서 프로그래밍을 배우겠다 하는 생각은 하지 말고, 공부를 정말 열심히 해서 선린인터넷고나 디지털미디어고를 들어가거나 대학 부설 영재고를 들어가길 바란다. 프로그래밍을 배우겠다고 보통의 상고를 들어가는건 자기가 방과후 시간을 투자할 의지와 자신이 없다면 말도 안되는 짓이다. 일반계고에 들어가서 열심히 수능공부해서 좋은 대학 컴공에 들어가 좋은 교수님 만나서 제대로 배워라. 이건 대한민국이 아니라고 해도 똑같은 상황이다. 현재 IT를 [[스티브 잡스|주름잡는]] [[빌 게이츠|노땅]]들은 [[BSD|좋은 대학교]]에서 [[리누스 토르발스|좋은 성적으로 학위를]] 거둬 [[켄 톰슨|AT&T 연구소 등에 들어가]] [[유닉스|좋은 결과물]]을 내놓은 [[브라이언 커니핸|수재]]들이다. [[IT강국]]에서 SI질 할 거 아니면 공부해야한다. 코딩이 좋다고 언어만 배워서 고졸로 회사에 들어가면 최대 5년 박봉에 상위개발진 시다로 밤낮없이 코딩만 하다 쫓겨난다. 최대 5년이다. 이런 사람을 게임회사에선 뽑지도 않고 대부분 저런 인력은 보안, SI같이 따분하고 빡센곳에서 최대 5년 소모되어 다쓴 치약처럼 버려진다. 공부해야한다.
+
프로그래밍은 상업고교 관련 과의 정규과목으로 편성되어 있는데 프로그래밍과 프로그래밍 실무로 분류되어있다.디지털미디어고등학교나 선린인터넷고 같이 특성화되거나 수준이 높은 상업고교의 경우에는 아주 심층적으로 다루는 부분이지만, 보통의 상업고교는 학생들의 수준에 맞춰 수박 겉을 농약도 안빨고 혀만 같다 대는 시늉만 하고 끝난다. 실습 시 사용하는 컴파일러는 볼랜드 '''터보 C''' 이고, 실무 과목에선 [[Visual basic]]이다. 2010년 이야기이다. 일반 상고에선 도내 실업계 경진대회의 프로그래밍 종목에 쓸 수도 없는 것을 가르친다. 실질적으로 무언가를 배우는 느낌은 들지않는다. '''직업인을 키우는 목적과 전혀 상반된다.''' 애초에 상업고등학교에서 프로그래머를 양성한다는 자체가 어불성설이다. 같은 상업고의 [[인터넷일반]]이나 정보통신 같은 과목은 은근히 유익한데 비하면 상당히 아쉬운 편. 따라서 현재 프로그래머를 지향하고 있는 중학생 여러분들은 굳이 상업고를 들어가서 프로그래밍을 배우겠다 하는 생각은 하지 말고, 공부를 정말 열심히 해서 선린인터넷고나 디지털미디어고를 들어가거나 대학 부설 영재고를 들어가길 바란다. 프로그래밍을 배우겠다고 보통의 상고를 들어가는건 자기가 방과후 시간을 투자할 의지와 자신이 없다면 말도 안되는 짓이다. 일반계고에 들어가서 열심히 수능공부해서 좋은 대학 컴공에 들어가 좋은 교수님 만나서 제대로 배워라. 이건 대한민국이 아니라고 해도 똑같은 상황이다. 현재 IT를 [[스티브 잡스|주름잡는]] [[빌 게이츠|노땅]]들은 [[BSD|좋은 대학교]]에서 [[리누스 토르발스|좋은 성적으로 학위를]] 거둬 [[켄 톰슨|AT&T 연구소 등에 들어가]] [[유닉스|좋은 결과물]]을 내놓은 [[브라이언 커니핸|수재]]들이다. [[IT강국]]에서 국비지원교육 하루 8시간 아무것도 안 하고 6개월 허송세월 날리다가 SI 들어가서 은행 보안프로그램 짤 거 아니면 공부해야한다. 코딩이 좋다고 언어만 배워서 고졸로 회사에 들어가면 최대 5년 박봉에 상위개발진 시다로 밤낮없이 코딩만 하다 쫓겨난다. 최대 5년이다. 이런 사람을 게임회사에선 뽑지도 않고 대부분 저런 인력은 보안, SI같이 따분하고 빡센곳에서 최대 5년 소모되어 다쓴 치약처럼 버려진다. 공부해야한다.
  
 
위의 써진 바대로 일반 상고에선 프로그래밍을 언어만 가르치는 수준으로 가르친다. 수학능력평가시험 직업탐구영역의 프로그래밍 과목은 백분위가 극과 극으로 나뉜다. 중간이 없는 과목으로 유명하다.
 
위의 써진 바대로 일반 상고에선 프로그래밍을 언어만 가르치는 수준으로 가르친다. 수학능력평가시험 직업탐구영역의 프로그래밍 과목은 백분위가 극과 극으로 나뉜다. 중간이 없는 과목으로 유명하다.
  
 
[[분류:컴퓨터]]
 
[[분류:컴퓨터]]

현재 판 : 2020년 7월 31일 (금) 18:48

대하여[편집]

프로그램을 만드는 작업을 지칭한다. 이 작업을 하는 사람을 프로그래머라고 한다. 소프트웨어 엔지니어라고도 한다.

과정[편집]

어떠한 문제를 의식하고 그것을 목적으로 소프트웨어적으로 구현하는것 부터 시작한다. 주문 받은 문제를 해결하기 위해 많이 토론하고 어떤식으로 접근할 것인지에 대해 디자인하며, 실제로 프로그래밍 언어로 소프트웨어적으로 구현하며, 끊임없이 유지와 보수를 한다.

역사[편집]

증기기관을 동력으로 하는 자동 계산 기계 추상 - 그것의 코드를 짜냄 - 튜링 - 사람이 직접 건드려 진공관을 이용하는 전자 계산 - 프로그램 내장 방식 - 천공카드 - 소프트웨어로 소프트웨어를 만드는 지경 까지 150년 안팎으로 걸렸다. 인류는 위대하다.

최초의 프로그래머[편집]

영국의 에이다 러브레이스(서기 1815~1852)는 최초로 영국의 수학자 찰스 배비지(서기 1791~1872)가 고안한 해석기관이라는 공상의 계산기계에 쓸 수 있는 명령의 모음을 수식으로 엮어서 소프트웨어를 개발했다. 그가 개발한 최초의 소프트웨어는 해석기관으로 베르누이 수열을 계속 구할 수 있는 프로그램이였다. 이 사람은 제어문과 함수화 등 현대 고급 프로그래밍 언어의 모델을 제시했다. 하지만 그의 코드는 실물 컴퓨터를 사용하지 않고 코딩되었으며, 이것이 가능한지는 베비지 해석기관을 이해하고 실물을 설계해서 천공카드로 돌려보는 방법밖에는 없다. 아쉽게도 아직까지 해석기관을 실물로 만든 예는 없다.

위와 같이 최초의 프로그래머는 여성이였고, 애니악 때 까지도 많은 여성 수학도들이 컴퓨터 프로그램을 설계했다. 지금 한국을 제외하고 전 세계에서 가장 많은 급여를 받고 많은 부가가치를 창출해내는 직종은 소프트웨어 공학자들과 프로그래머 들이고, 유감스럽게도 여기에 여자 비율은 그렇게 많지 않다. 여자가 소프트웨어를 개발하고 프로그래밍을 하는 데에 있어서 절대 부족하지 않다. 실제로 모든 문명에서 공과대학 성비는 거의 해마다 계속 벌어지고 있고, 특히 원래 성비가 그나마 붙어있던 컴퓨터공학은 1980년대 이후 급격하게 벌어진다. 가장 큰 문제는 여성 스스로 종특론으로 수적논리를 이해하는 것에 대한 도전을 포기하고 있다는 것이다. 그 컴공과 다니는 안경잽이 남자들이 원래 종특적으로 이해가 잘 돼 갖고 계속 붙어있겠는가..당연히 시대가 필요로 하는 학문이고 학사가 되면 뭐라도 적용해서 해먹고 살만 한 학문이니까 최대한 붙어있는 것이다. 여자들도 그렇게 할 수 있다. 여성의 해방은 여성의 공학 쟁취로 부터 온다.

소프트웨어를 어떻게 다룰 것인가[편집]

영국의 수학자 앨런 튜링(서기 1912~1954) 규칙이 있는 기호로 수식이 기록된 길이가 무한한 종이 두루마리를 어떤 기계가 기호를 읽고 기호가 지시하는 규칙대로 움직이면서 다시 어떤 무한한 길이의 종이 두루마리에 기록을 하고, 그 기록을 다시 기계가 읽으면서 기계가 스스로 계산을 할 수 있다는, 꼭 컴퓨터처럼 작동하는 어떤 추상적인 기계를 구상해낸다. 하지만 이것은 결국 당시로써는 공상이였기 때문에 결국 계산기계는 계산하려는 수식에 따라 사람이 기계를 손수 조작하도록 발전한다.

전자계산기의 시작

시대가 지나서 진공관이라는 게 발명되고 그 진공관으로 전자를 편의에 맞게 조종할 수 있게 되면서 전자계산기는 전자화 되기 시작한다. 그 중 대표적인 기계가 ENIAC(1945)이다. 하지만 이런 기계도 튜링 머신의 모델을 따르기에는 무리가 있었다. 결국 한 글자 한 글자 사람이 직접 만지고 돌려줘야 하는 불편함이 있었다. 이 때 프로그램을 이루는 숫자들을 여러 개로 나열된 어떤 수를 저장할 수 있는 데에다가 시작점이 아무데나 라도 좋으니까 자릿수 순서대로 전자적인 방법으로 채워놓고 그 숫자 덩어리들을 연산할 수 있는 방법을 폰 노이만(1903~1957) 이라는 사람이 주장한다. 그리고 이를 수은 지연 회로를 메모리로 응용하면서 현실에서 실용할 수 있게 하는데, 이것은 제어장치와 연산장치, 램으로 구성된 현대 컴퓨터의 시초가 된다.(EDSAC, 1947) 그리고 이 프로그램을 저장해놓고 사용하는 방식에 진공관 하나를 이진수 한 자리라고 두는 이진수 컴퓨터가 발명되었다.(EDVAC 1949)

1950년대 중반에 들어서는 트랜지스터의 응용으로 그 동안 크고, 열 많이 나고, 터지고, 난리 부르쓰를 추던 진공관을 대체했다.

사람이 쓰는 거니까[편집]

트랜지스터는 점점 작아질 수 있었고, 그래서 더 많이 붙여 넣을 수 있었고, 그래서 더 빠르게 계산이 가능했고, 그래서 더 많은 프로그래밍의 가능성이 열렸다. 그러나 사람이 정한 규칙대로 0과 1을 조합해서 함수를 조작하고 제어하도록 하니까 그걸 만드는 사람, 그 결과를 받아보는 사람, 사람 스스로 복잡하게 되었다. 따라서 일련의 규칙으로 0과 1의 조합을 문자로 나타내고, 이 문자를 다시 0과 1로 풀어서 나타내는 것을 컴퓨터로 구현하기 시작한다. 그리고 실제로 가능했다. 가장 쉬운 방법은 숫자 카드에 구멍을 뚫어서 문자와 숫자 등을 나타내는 방법이였다. 이런 아이디어로 사람이 쓰는 문자를 이용해서 별도의 해석기에 천공카드를 읽혀 사람이 원하는 대로의 규칙을 가진 0과 1의 조합을 컴퓨터에 입력할 수 있게 되었다. 이게 프로그래밍 언어가 나올 수 있었던 이유이다. 이런 식으로 나온 수 많은 사람이 이해할 만한 규칙 중 하나가 '코볼'(1959)이다. 그러나 이 천공카드로 해석기에 읽혀서 다시 컴퓨터에 가져다가 입력을 해서 하는 것은, 사실 디버그는 편하겠지만 당시 기술로는 좀 많이 느렸다. 따라서 인류는 사람이 이해할 만큼 문서화가 가능한 너무 길지 않은 프로그래밍 언어로 프로그램의 전부를 코딩하고, 이 코드들을 한 번에 이진수로 풀어 모아놓고, 이 해석을 한 이진수 모듬을 저장해 놨다가 쓸 때마다 그 이진수 모듬만 메모리에 불러와서 써볼까 하는 생각을 했다. 이게 바로 컴파일이 되었다. 단 이 작업은 프로그램을 사용할 때는 빠르게 사용이 가능 하겠지만, 해석하는 데에는 아무래도 숫자보다 많은 문자가 쓰이고, "메모리의 자리를 이리로 옮긴다 저리로 옮긴다 그 자리 메모리를 지운다 변기 앞에 선다. 뒤로 돈다. 무릎을 굽힌다. 변기와 엉덩이의 위치가 일치하는지 확인한다. 직장에 힘을 준다." 이딴 서순을 확 쭐여서 "변기에 앉는다. 똥을 뿌린다." 라고 줄인 것이기 때문에, 이걸 다시 "변기 앞에 선다(중략)"으로 풀고 그 풀어놓은 것을 이진수로 푸는 만큼 시간이 매우 오래걸리고, 저장장치라고는 구멍뚫린 졸라 두툼한 종이 두루마리 정도라서, 전자나 자기장을 이용해 데이터를 저장 할 수 있는 저장장치가 대중화 되기 이전까진 쓸 수가 없었다. 하지만 이런 기술은 생각보다 빠르게 발전한다. 왜냐하면 존나 짱쎈 부자 나라 미국이 이 기술에 올인했기 때문이다.

프로그래밍을 위해 배워야 할 것과 소양[편집]

이하는 아마도 필수적인 소양이다.

  • 수학
  • 물리
  • 컴퓨터 공학·과학
    • 컴퓨터 자료처리·구조
    • 컴퓨터 구조
    • 알고리즘(수학과 겹친다)
  • 프로그래밍 언어
  • 구글링 실력과 영어

부수적으로는 밑의 소양이 필요하다.

경영 및 기획자들에게 개발팀이 어떤 식으로 문제를 접근했는지, 어떤 방법으로 해결하고 있고, 기획상에서 어떤 문제가 있는지, 정확히 얘기하고 소통할 줄 알아야한다. 기획자와 경영자들이 자신들과 같은 지식을 갖고 있다는 전제하에 대화를 하면 안된다. 그들은 멍청이들이다. 하지만 재밌게도 페이스북의 생활코딩 같은 곳은 이런 사람들이 모여있지만 소통 자체를 매우 공격적으로 하는 경향이 있다. (컴쟁이들이 아스퍼거 끼가 있어서 그렇다) 물론 그 많은 회원들 중 몇명이지만. 무슨 억하심정으로 저러는지는 모르지만 저런 기획진들에게 시달리고 인터넷 들어와서 다른 개발자들 무시하는 수준이 되지 않기위해선 커뮤니케이션 하는 능력은 필요하다. 어리면 이해하겠는데 다 늙은 꼰대들이 저러는게 문제다. 비단 위의 문제 뿐만 아니고 많은 사람들의 집단지성으로 이루어지는 오픈소스 프로젝트에 참여하거나, 일반 상업프로그램을 만들때 등 다른 개발자들과의 소통이 많을 수 밖에 없는 직종이기 때문에 소통능력은 필요하다.

기본적으로 컴퓨터에 대한 심층적인 수적 논리력과 이해력을 필요한다. 이것 때문에 많은 프로그래머들이 수학을 배우게 한다.

고등학교 과목[편집]

프로그래밍은 상업고교 관련 과의 정규과목으로 편성되어 있는데 프로그래밍과 프로그래밍 실무로 분류되어있다.디지털미디어고등학교나 선린인터넷고 같이 특성화되거나 수준이 높은 상업고교의 경우에는 아주 심층적으로 다루는 부분이지만, 보통의 상업고교는 학생들의 수준에 맞춰 수박 겉을 농약도 안빨고 혀만 같다 대는 시늉만 하고 끝난다. 실습 시 사용하는 컴파일러는 볼랜드 터보 C 이고, 실무 과목에선 Visual basic이다. 2010년 이야기이다. 일반 상고에선 도내 실업계 경진대회의 프로그래밍 종목에 쓸 수도 없는 것을 가르친다. 실질적으로 무언가를 배우는 느낌은 들지않는다. 직업인을 키우는 목적과 전혀 상반된다. 애초에 상업고등학교에서 프로그래머를 양성한다는 자체가 어불성설이다. 같은 상업고의 인터넷일반이나 정보통신 같은 과목은 은근히 유익한데 비하면 상당히 아쉬운 편. 따라서 현재 프로그래머를 지향하고 있는 중학생 여러분들은 굳이 상업고를 들어가서 프로그래밍을 배우겠다 하는 생각은 하지 말고, 공부를 정말 열심히 해서 선린인터넷고나 디지털미디어고를 들어가거나 대학 부설 영재고를 들어가길 바란다. 프로그래밍을 배우겠다고 보통의 상고를 들어가는건 자기가 방과후 시간을 투자할 의지와 자신이 없다면 말도 안되는 짓이다. 일반계고에 들어가서 열심히 수능공부해서 좋은 대학 컴공에 들어가 좋은 교수님 만나서 제대로 배워라. 이건 대한민국이 아니라고 해도 똑같은 상황이다. 현재 IT를 주름잡는 노땅들은 좋은 대학교에서 좋은 성적으로 학위를 거둬 AT&T 연구소 등에 들어가 좋은 결과물을 내놓은 수재들이다. IT강국에서 국비지원교육 하루 8시간 아무것도 안 하고 6개월 허송세월 날리다가 SI 들어가서 은행 보안프로그램 짤 거 아니면 공부해야한다. 코딩이 좋다고 언어만 배워서 고졸로 회사에 들어가면 최대 5년 박봉에 상위개발진 시다로 밤낮없이 코딩만 하다 쫓겨난다. 최대 5년이다. 이런 사람을 게임회사에선 뽑지도 않고 대부분 저런 인력은 보안, SI같이 따분하고 빡센곳에서 최대 5년 소모되어 다쓴 치약처럼 버려진다. 공부해야한다.

위의 써진 바대로 일반 상고에선 프로그래밍을 언어만 가르치는 수준으로 가르친다. 수학능력평가시험 직업탐구영역의 프로그래밍 과목은 백분위가 극과 극으로 나뉜다. 중간이 없는 과목으로 유명하다.