책정리/혼자 연구하는 C,C++ 1

1장 프로그래밍 입문

GONII 2015. 2. 17. 15:37

1.1 프로그래머

1.1.1 프로그램

컴퓨터 : 사람이 지시한 명령을 수행하는 능력

Ex) 1+2를 계산하라 명령, 3이라는 결과를 만들어 출력

프로그램 : 문제를 풀기 위한 명령들의 조직적인 집합

1.1.2 프로그래머

프로그래머 : 프로그램을 만드는 사람

프로그래머의 역할 : 문제 해결에 필요한 명령을 골라 컴퓨터가 알아들을 수 있는 형태로 변환 후 이 명령들이 순서대로 동작할 수 있도록 조직적으로 배치

사용자와 컴퓨터 사이에 프로그램을 통해 통역자 역할

프로그래머의 요구 능력

  • 문법 : 프로그램을 구성하는 단위가 명령이므로 규칙에 맞게 명령을 정확하게 작성하는 지식이 필요하다. 명령을 올바르게 기술하는 규칙을 문법이라고 한다. 열심히 책보면 됨.
  • 작문 : 프로그램은 단순한 명령의 나열이 아니라 조직적인 집합이므로 작성한 명령을 논리적으로 배치하는 기술이 필요하다. 일정한 공식이 존재하지 않으며 실제 문제에 따라 적용되는 작문법은 천차만별로 달라지므로 인간의 창조력이 요구되며 외운다고 해서 쉽게 얻어지는 것이 아니다. 열심히 스스로 터득

1.1.3 언어

프로그래밍 언어 : 컴퓨터와 사람간의 의사소통 도구

  • 저급 언어(Low Level) : 기계의 언어에 가까우며 사용하기는 어렵지만 성능은 좋다. (어셈블리)
  • 고급 언어(High Level) : 인간의 언어에 가까우며 배우기 쉽지만 성능은 떨어짐. (베이직)

C/C++은 배우기 쉬워 고급언어에 속함. 그러나 섬세한 하드웨어 제어가 가능하여 중급언어라 분류하기도 함.

1.2 C/C++언어 소개

1.2.1 C/C++의 역사

C언어 : 1972년 벨 연구소의 데니스 리치에 의해 탄생, 어셈블리의 강력한 기능과 고급언어의 이식성을 동시 갖춤

여러 컴파일러 개발사들이 차별화된 C컴파일러 출시 -> 컴파일러에 따라 소스 차원의 호환성이 없어지는 문제 발생

1990년 ISO에 C표준 승인, ANSI C(또는 C90)라고 함.

ANSI C는 클래식 C에 비해 안정성을 높이고 애매한 기능을 정리하였으며, 다음과 같은 기능을 추가했다.

  • 표준 라이브러리 함수를 규격화했으며 헤더 파일도 통일했다.
  • 함수의 원형 선언 기능이 추가되어 컴파일러가 함수 호출부에서 타입 체크를 할 수 있다.
  • 정수, 실수, 상수의 타입을 지정할 수 있는 L, U, F 등의 접미어가 추가됨.
  • enum, void 형과 const, volatile 제한자 추가
  • 인접 문자열 상수를 합쳐 주고 확장열의 기능도 추가
  • 함수 내부에서 선언하는 지역 배열이나 구조체를 초기화할 수 있다.
  • 구조체끼리 대입할 경우 구조체 크기만큼 메모리 복사를 한다.

1.2.2 C++의 등장

1980년대 초 벨 연구소의 비얀 스트로스트룹이 C언어를 기초로 C++언어를 만듬.

C++은 C의 문법을 유지하면서 OOP(객체 지향 프로그래밍)기능을 추가

80년대 후반 소프트웨어가 하드웨어의 발전을 따라잡지 못하는 소프트웨어 위기 문제가 생김 -> 해결책으로 OOP 제시

C++은 C언어에 비해 클래스, 상속, 다형성, 템플릿 등이 추가됨. 이 외에 기존 C언어 문법 확장

C언어 문법 확장 예

  • 한줄 주석은 //로 표기할 수 있다.
  • 새로운 진위형인 bool 타입을 추가했다.
  • 구조체나 열거형의 태그 이름을 하나의 타입으로 인정한다.
  • 함수 중간에서 변수를 선언할 수 있다.

1.2.3 C/C++의 장점

C++의 특징 - 성능 지향의 범용 언어

  1. 문법이 간결하다. 예약어가 적고 제공하는 연산자가 다양하기 때문에 짧은 명령으로 많은 일을 할 수 있따.
  2. 효율성이 좋아 대규모의 고기능 프로그램을 만들 수 있다. 제작된 프로그램의 크기가 작고 속도도 빠르다.
  3. 운영체제 개발을 목적으로 만든 언어이므로 저수준 프로그래밍이 가능하며 어셈블리 수준의 하드웨어 제어를 할 수 있다.
  4. 모든 분야에 두루 활용할 수 있을 정도로 범용적이다. ㅏㅅ무 처리, 과학 기술, 상업용 등 거의 대부분의 응용 프로그램을 개발할 수 있다.
  5. 이식성이 졷하. 대부분의 플랫폼에서 C/C++언어를 사용할 수 있으므로 재컴파일만 하면 타 운영체제에서 실행되는 프로그램을 쉽게 만들 수 있다.

1.2.4 학습의 순서

기본 과목 학습 순서

1순위 : C

2,3순위 : C++, API

4순위 : MFC

이 후 개발 환경에 따라 학습

  • DB : SQL, ODBC, OLE DB, DAO, ADO, 오라클, SQL 서버
  • 게임제작 : DirectX, 3D그래픽 라이브러리, 전산 수학
  • 시스템 프로그래밍 : DDK, 컴파일러, 운영체제
  • 네트워크 : 소켓, 각종 프로토콜(FTP, HTTP)
  • 웹 프로그래밍 : ASP, JSP, PHP, XML, 포토샵, 플래시, DB

일반 교양 과목 : 자료구조, 알고리즘, 컴퓨터일반, 소프트웨어 공학

고급 과목 : 인공지능, 화상처리, 멀티미디어

   

모든 것을 다 알고 있는 개발자는 없다. 그러나 일이 맡겨졌을 때 할 수 있는 준비가 된 사람과 그렇지 못한 사람이 있다. 프로그래머에게 가장 중요한 능력은 당장 무엇을 할 수 있는 지식이 아니라 필요할 때 찾아서 공부할 수 있는 순발력과 기본기이다. 그 기본기 중에서도 가장 중요한 것은 바로 C언어와 C언어로 구현된 알고리즘, C++언어와 객체 지향 개념이다. 그래서 C/C++은 다른 어떤 최신 기술보다도 시간과 정성을 아낌 없이 투자할 가치가 있는 것이다.

1.3 개발툴

1.3.1 컴파일러

컴파일(Compile) : 소스를 컴퓨터가 이해할 수 있는 기계어 코드로 번역하는 동작

컴파일러(Complier) : 컴파일을 하는 프로그램

링크(Link) : 목적 파일을 실행 파일로 바꾸기 위해서는 이 실행 파일이 운영체제의 요건에 맞도록 형태를 바꾸고 스타트업(StartUp)이라는 추가 코드를 가져야 함.

링커(Linker) : 링크를 해 주는 프로그램

컴파이리과 링크를 통해 실행 파일을 만드는 과정 = 빌드(Build)

   

소스 파일을 번역하여 곧바로 실행파일을 만들지 않고 목적파일이라는 중간 과정을 거치는 이유는 여러 개의 소스를 합쳐 하나의 실행 파일을 만들어낼 수 있어야 하기 때문이다.

반응형

'책정리 > 혼자 연구하는 C,C++ 1' 카테고리의 다른 글

5장 연산자  (0) 2015.02.19
4장 제어문  (0) 2015.02.18
3장 변수  (0) 2015.02.18
2장 첫 번째 예제  (0) 2015.02.18
목차  (0) 2015.02.17