Will be Prosumer's Revolution and Technical Revolution in the Future!
Linux User/Developer is also Windows User/Developer... Cross Platform Engineer...
"21C 공학인을 대통령, 국회의원으로 만들자!" "더욱 더 많은 동지분들이 공학제국 건설에 동참할 수 있도록 널리 알려주세요~" [ F = m * a ]
과학기술/공학인이 대한민국 국회 의석의 50% 이상을 확보하는 그날을 위하여~ ^___^
* 2007년 *
1. CentOS 리눅스 구축관리실무 집필
2007년 12월 출판 - 출판사 : (주)수퍼유저코리아 * 2009년 *
2. 김태용의 C++ 기초 입문 :: gcc로 공부하는 C++와 wxWidgets GUI 집필
2009년 03월 출판 - 출판사: (주)수퍼유저코리아
3. 김태용의 리눅스 쉘 스크립트 프로그래밍 입문 집필
2009년 9월 출판 - 출판사: 제이펍 * 2011년 *
4. 김태용의 JSP 웹 프로그래밍 입문
2011년 1월 출판 - 출판사: 제이펍
인생목표 프로젝트
- 공학/기술인의 위상을 높이고, 공학과 기술중심의 TechNation Korea 건설을 위한 공학정치 실현 - 공학/기술인을 대한민국의 수장으로 만들기 - 1000만 달러 벌기 -> 우수 공학인재 서포팅하기
오늘부터 컴퓨터 프로그래밍이라는 즐거움(Fun)의 세계로 들어오신 여러분을 진심으로 환영합니다. 프로그래밍을 잘하려면 어떻게 해야 하나요? 정답은 간단합니다. 프로그래밍을 즐기면 됩니다. 혹시 독자 분들중 “Fun 경영”이라는 말을 들어보신 분들도 있을지 모르겠습니다.
어떤 일을 하던지 즐거운 마음으로 행(行)하시면, 순조롭게 뜻하는 바를 얻으실(得) 수 있을 것입니다.
프로그래밍을 좋아하려면 프로그래밍에 대해 제대로 알아야 하며, 또한 이것을 즐기려면 열정적으로 좋아해야 합니다. 자 그럼 지금부터 프로그래밍을 즐기기 위한 공부를 시작하도록 하겠습니다.
[참고사항]
딱딱한 경어로 글을 쓴다는 것은 왠지 모르게 친근감이 없는 것처럼 보일 수도 있어서 본 도서에서는 앞으로 경어를 사용하지 않고, 독자 분들의 친구가 옆에서 가르쳐 주듯이 집필할 것이므로 이점 양해 바랍니다.
Chapter 1 :: 프로그래밍의 이해
1.1. 컴퓨터의 내부구조
본 도서를 읽고 있는 대부분의 독자 분들은 C 언어에 대해서 이미 한권의 책은 읽어 본 분들이라 생각된다. 그렇지만 컴퓨터의 기본은 알고 있어야 한다는 것이 필자의 생각이므로, 컴퓨터의 기본 구조에 대해 간략하게 먼저 이야기 하도록 하겠다.
오늘날 우리들은 어디서나 인터넷이라는 커다란 네트워크를 통하여 각자의 컴퓨터를 가지고 많은 일들을 처리하고 있다. 이러한 모든 일들은 인간의 욕망인 자동화(automation)에 초점을 맞추고 있는 것이라 볼 수 있다. 사람은 단지 명령만 내리고, 나머지 일들은 컴퓨터가 자동으로 일을 처리하는 것이다. 필자는 가끔씩 옛날 만화에 나오는 로봇 태권브이와 마징가 제트를 생각해 보기도 한다. 이러한 모든 자동화 작업은 컴퓨터라는 훌륭한 계산기가 있었기 때문이며, 이로 인하여 인간은 조금 더 편리한 생활을 보장받을 수 있게 된 것이다.
그럼 컴퓨터는 어떻게 구성되어 있기에, 인간의 욕망을 채울 수 있었을까? 라는 의문을 가지게 될 것이다.
컴퓨터는 CPU(Centeral Processing Unit:중앙처리장치), Memory(메모리), ALU(Arithmetic/Logic Unit:산술/논리장치), 제어장치(Control Unit), 외부 저장장치등으로 구성되어 있다.
[그림]
출력장치(모니터)
외부 저장장치
입력장치(키보드)
제어장치
산술/논리 장치
메모리(Memory)
CPU
그림 컴퓨터의 내부구조
제어장치는 컴퓨터의 동작을 제어하는 장치로써 메모리(RAM)에서 명령어를 가져온 다음, 그 명령어를 해독하고, 외부 저장장치로부터 필요한 데이터를 가져와서, 명령어를 실행하는 단계를 반복하도록 구성되어 있다. 이러한 작업을 위해 제어장치에는 명령어 레지스터(Instruction Register)와 프로그램 카운터(Program Counter)라는 것이 있는데, 명령어 레지스터는 수행할 명령어를 저장하고 해석하는 작업을 수행하는데, 만약 명령어가 산술/논리연산을 수행하는 것이라면 산술/논리장치를 이용하여 명령어를 수행하고, 메모리나 입력과 출력 장치간에 데이터를 이동하는 것이라면, 해당 기능을 수행하는 회로를 구동하여 명령어를 실행한다. 프로그램 카운터는 다음차례에 실행할 명령어가 저장된 메모리 주소를 저장하고 있어서 프로그램이 순차적으로 실행하도록 해준다.
1.2. C++ 언어란
C++언어는 2차 세계 대전중 탄도 계산을 위해서 처음으로 개발되었다. 초창기 프로그래머들은 기계어를 가지고 프로그래밍 작업을 하였다. 그 후 어셈블리어로 교체되었으며, C언어가 개발되었고, C 언어에 객체지향개념등을 추가하여 C++ 언어가 완성되었다.
오늘날에는 객체지향 개념으로 개발된 수많은 프로그래밍 언어가 존재한다. 이러한 프로그래밍 언어들은 기본적으로 사람이 이해할 수 있는 문장으로 코드화 되는데, 이러한 코드들은 기계가 이해할 수 있는 문장으로 번역해 주어야 하는 작업이 필요하다. 이 이렇게 컴퓨터가 이해할 수 있도록 번역해 주는 도구를 우리는 “컴파일러” 또는 “인터프리터”라 부른다.
인터프리터는 프로그램을 읽어가면서 즉시 기계어로 번역하는 도구를 말하고, 컴파일러는 원시코드를 중간단계의 오브젝트 파일을 만드는 도구다. 컴파일러는 컴파일을 하고 난 다음 링크라는 과정을 거쳐 오브젝트 파일을 실행파일로 만들게 된다.
인터프리터는 원시코드를 읽는 즉시 번역이 되므로 프로그래머가 작업함에 있어서 번거로운 과정이 없으므로 굉장히 편하게 작업할 수 있다. 이러한 인터프리터로 번역되는 프로그램들을 일반적으로 스크립트 언어라고 부르고, 이때 사용하는 번역기를 스크립트 엔진이라고 부른다. 대표적인 인터프리터는 PHP, PYTHON등이 있다.
C++언어 같은 경우에는 사람이 읽을 수 있는 소스파일을 기계가 읽을 수 있는 오브젝트 파일로 컴파일 하는 추가적인 작업이 필요하므로, 개발자는 조금 불편하다고 생각할 수 있다. 하지만 한번 컴파일된 프로그램은 시간이 걸리는 컴파일 작업을 인터프리터처럼 매번 수행하지 않으므로 일단 한번 컴파일된 프로그램의 실행속도는 매우 빠르다는 장점을 가지고 있다.
컴파일러로 실행파일이 만들어지면 컴파일러가 없는 시스템에도 배포가 가능하지만, 인터프리터로 실행되는 프로그램들은 항상 인터프리터가 있어야 실행이 가능하다.
오랫동안 컴퓨터 프로그래머의 목적은 빠르게 수행할 수 있는 짧은 소스코드를 작성하는 것이었다. 초창기에는 메모리의 가격이 매우 비쌌기 때문에 소스코드가 짧아야 했으며, 수행시키는 자원들도 비쌌기 때문에 되도록이면 짧은 시간에 작업을 마칠 수 있어야 했었다. 하지만 최근에는 대부분의 하드웨어 가격이 저렴해지고, 처리 속도도 빨라짐으로써 현재에는 컴퓨터 자원을 아끼기 보다는 프로그래머의 생산성을 높이려는데 더 큰 비중을 두고 있다.
요즘에는 생산성이 높은 코드로 프로그램을 작성하고, 유지보수가 편리한 코드가 최고의 프로그램으로 인정받기도 한다. 즉, 코드의 질과 양 보다는 시간에 비례한 생산의 효율성에 큰 점수를 부여하고 있는 것이다.
한국LUG 사이트는 1024 x 768 해상도(운영자 노트북:14")에 최적화 되어 있습니다. : LINUX FANSITE
WWW.LUG.OR.KR Server is made by CentOS Linux, P4 1.8G, Memory 512MB, Main HDD 160GB, Backup HDD 40GB and LAMP, qmail MTA.
CentOS Linux & Mozilla Firefox UTF-8 Base Created.
1998-2024 www.lug.or.kr Directed By Great Dragon, Kim.
Top
LUG 포인트 정책 : [회원가입 : +100점] [로그인(하루한번) : +100점] [글쓰기 : +20점] [코멘트 : +10점] [다운로드 : -200점] [질문 포인트 : 최소 200점]
데스크탑 프로그래밍(gcc, g++, wxGTK[wxWidgets] 등)은 "Fedora"를 사용하고, 서버 운영(WEB, FTP 등)은 "CentOS"를 사용하시길 권장합니다.
도전하는자, 자신을 투자하는자만이 뜻하는바를 이룰 수 있다.
Information should be Exchanged with Interactive, not One Way Direction.
준회원,
정회원,
우수회원,
VIP회원,
기업회원,
관리자 Be Maker!
인생에서, 100% 순이익을 보장하는건 없다. 1%의 지식을 나눔으로써, 가끔씩 손해볼 필요도 있다.
그대가 가진 1%의 지식만이라도 공공을 위해 포스팅하라. 손해본다는 생각이 앞선다면 그대의 인생은 힘들어질것이다.
자신이 가진 지식의 1%도 투자하지 않고, 오로지 자신의 이익만 탐하는자와는 동지가 되지마라.
만나서 대화하면 모두 좋은 사람들이지만, 유독 인터넷에서만 자신을 밝히지 않고, 좀비로 서식하는 사람들이 많다.
부지불식간[不知不識間], 좀비(하류) 인생이 될지도 모르니, 항상 자신을 경계하도록 하라.
[도서 안내]
1. CentOS Linux
2. gcc로 공부하는 C++
베스트셀러 입성^^