1.1 프로그래머
프로그램 - 문제를 풀기 위한 명령들의 조직접인 집합.
(어떤 목적을 달성하거나 해결하기 위해 만들어 진 것.)
프로그래머 - 프로그램을 만드는 사람. 사용자와 컴퓨터 사이를 중계하는 통역자의 역할.
(어떤 목적을 달성하거나 해결하기 위해 컴퓨터와 의사소통을 하는 사람.)
프로그래머에게는 두 가지 능력이 요구된다. 문법과 작문으로 문법은 규칙에 맞게 명령을 정확하게 작성하는 지식이며 작문은 작성한 명령을 논리적으로 배치하는 기술을 말한다.
프로그래밍 언어 - 컴퓨터와 사람간의 의사소통 도구.
컴퓨터는 사람이 사용하는 자연어를 이해하지 못한다. 단순한 기계에게는 모호하기도 해서 해석 할 수가 없다. 초창기에는 1, 0 으로만 구성되어 있는 이진수로 된 기계어 코드를 작성했지만 인간의 생리와는 맞지 않아 좀 더 쓰기 쉬운 프로그래밍 언어를 만들게 되었다.
프로그래밍 언어는 저급(Low Level) 언어와 고급 언어(High Level) 언어 이 두가지로 나뉘는데 기계어에 가까우면 저급, 인간의 언어에 가까우면 고급으로 나뉜다. (언어의 수준으로 저급, 고급을 나누는게 아니다. 인간의 입장에서 배우기 쉽고 쓰기 쉬운가를 기준으로 한다.)
1.2 C/C++언어 소개
C언어는 1972년 벨 연구소의 데니스 리치(Dennus Ritchie)에 의해 만들어졌다. 어셈블리의 강력한 기능과 고급언어의 이식성을 동시에 갖춘 새로운 언어의 필요성을 느껴 직접 만들었다. 과거 언어들의 장점을 취합 정리해서 만들었으며 ALGOL에 뿌리를 두고 있으며 B언어를 개량하여 C언어를 만들었다. B보다 발전했다는 의미로 알파벳 C를 사용하였다.
C언어 이전에 언어들은 특정 분야에서 독점적인 지위를 가지는 고유의 영역을 확보하고 있었지만 모든 분야에 강점을 보이는 C언어가 등장함으로써 80년대 이후 여러분야에 걸쳐 C언어가 광범위하게 사용되기 시작했으며 가장 인기있는 언어가 되었다.
처음 C언어를 디자인할 때에 비해 컴퓨터 환경이 많이 변하면서 비효육적인 면들이 나타나거나 애매한 문법들이 존재했고 컴파일러 개발사들에 따라 확장되면서 많은 변종이 생겨나게 되면서 컴파일러에 따라 호환성이 없어지는 문제점이 있으며 이는 사회적으로 큰 낭비를 초래하게 되자 표준의 제정이 필요해졌다. 미 표준 위원회인 ANSI는 83년부터 표준 제정 작업에 들어가 89년에 표준안을 완성해 90년에 ISO에 승인되었다. 이 때 제정된 C 표준을 ANSI C(또는 C90)라고 하며 그 이전의 C를 클래식 C(K&R C)라고 한다. ANSI C는 클래식 C에 비해 안전성을 높이고 애매한 기능을 정리하였으며 다음과 같은 기능을 추가했다.
- 표준 라이브러리 함수를 규격화했으며 헤더 파일도 통일했다.
- 함수의 원형 선언 기능이 추가되어 컴파일러가 함수 호출부에서 타입 체크를 할 수 있다.
- 정수, 실수 상수의 타입을 지정할 수 있는 L, U, F 등의 접미어가 추가되었다.
- enum, void 형과 const, volatile 제한자가 추가되었다.
- 인접 문자열 상수를 합쳐 주고 확장열의 기능도 추가되었다.
- 함수 내부에서 선언하는 지역 배열이나 구조체를 초기화할 수 있다.
- 구조체끼리 대입할 경우 구조체 크기만큼 메모리 복사를 한다.
이후 95년에 유럽과 동양의 언어를 지원하기 위한 멀티 바이트 문자 지원이 추가 되었다. 이때 제정된 C 표준을 C95라고 하는데 ANSI C에 비해 언어의 기능상 큰 변화는 없다. 그리고 99년 다양한 기능을 추가하고 c++의 장점을 흡수하여 다시 한번 개정되었다.
C++언어는 1980년대 초에 벨 연구소의 비얀 스트로스트룹(Bjarne Stroustrup)이 C언어를 기초로 하여 만들었다. C++은 C의 문법을 그대로 유지하면서 OPP(객체 지향 프로그래밍)기능을 추가하였다. C언어보다 한 단계 발전했다는 뜻으로 ++(증가 연산자)를 붙였다. C++의 OOP 문법은 Simula67이라는 언어의 문법을 참조하여 만들어졌다. 80년대 후반 소프트웨어가 하드웨어의 발전을 따라잡지 못하는 소프트웨어 위기 문제가 대두되었으며 그 해결책으로 OOP가 제시되었다. 당시 C++은 소프트웨어 위기의 해결사로 인식되었으며 90년부터 본격적으로 사용되기 시작하여 지금은 대부분의 대형 프로젝트에 활용되고 있다. C언어에 비해 클래스, 상속, 다형성, 템플릿 등이 추가되었다. 이 외에 기존 C언어로부터 물려받은 문법도 확장되었는데 다음이 대표적인 예이다.
- 한줄 주석은 //로 표기할 수 있다.
- 새로운 진위형인 bool 타입을 추가했다.
- 구조체나 열거형의 태그 이름을 하나의 타입으로 인정한다.
- 함수 중간에서 변수를 선언할 수 있다.
C++은 다음과 같은 장점이 있다.
- 문법이 간결하다. 예약어가 적고 제공하는 연산자가 다양하기 때문에 짧은 명령으로 많은 일을 할 수 있다.
- 효율성이 좋아 대규모의 고기능 프로그램을 만들 수 있다. 제작된 프로그램의 크기가 작고 속도도 빠르다.
- 운영체제 개발을 목적으로 만든 언어이므로 저수준 프로그래밍이 가능하며 어셈블리 수준의 하드웨어 제어를 할 수 있다.
- 성능을 위해 불필요한 에러 처리를 하지 않는다. 타입의 불일치나 배열 경계 점검 등은 프로그래머가 직접 해야하므로 개발자는 항상 이 점을 주의해야 한다.
- 이식성이 좋다. 대부분의 플랫폼에서 C/C++ 언어를 사용할 수 있으므로 재컴파일만 하면 타 운영체제에서 실행되는 프로그램을 쉽제 만들 수 있다.
1.3 개발툴
원시 파일(Source File) - 언어의 문법에 맞게 명령들을 기술한 파일. 소스라고 부른다.
컴파일(Compile) - 소스에 작성된 명령들을 기계어로 번역하는 작업.
컴파일러(Compiler) - 컴파일을 하는 프로그램을 말한다.
목적 파일(Object File) - 소스 파일에 작성된 고급 언어를 기계어 코드로 변환한 결과.
링크(Link) - 목적 파일을 실행 파일로 만드는 동작. 운영체제의 요건에 맞도록 스타트업(Start Up)이라는 추가
코드 처리를 한다.
링커(Linker) - 링크를 해주는 프로그램.
빌드(Build) - 컴파일과 링크를 통해 실행 파일을 만드는 과정.
컴파일러가 생성해 내는 기계어는 특정 CPU와 운영체제에서만 동작하기 떄문에 컴파일러는 본질적으로 플랫폼에 종속적이다.
1.4 실습 준비
비주얼 C++(Visual C++)은 마이크로소프트사에서 만든 C/C++ 컴파일러이다. 1992년 4월에 첫 버전인 1.0이 발표되었으며 꾸준한 버전업을 거치고 있다. 비주얼 C++은 C/C++ 이외에도 여러가지 다양한 프로젝트를 만들 수 있는 종합 개발툴이다. 특히 MFC(Microsoft Foundation Class)라는 라이브러리는 우니도우즈용 응용 프로그램을 만드는 표준 기술로 각광받고 있다.
터보C는 볼랜드사에서 개발하여 가장 많이 사용되어 왔던 컴파일러이며 최초로 통합 개발 환경을 제공한 역사적인 개발툴이다. 도스용의 터보 C 2.0은 비록 C언어만 지원하지만 크기가 작고 사용 방법이 간단해서 초보자에게 아주 적합하다. BGI라는 그래픽 인터페이스를 통해 도스에서 그래픽을 출력할 수 있는 것이 큰 장점이며 프로젝트를 구성하지 않고서도 실습을 해 볼 수 있어 간편하다. 터보 C 2.0 이후에도 여러 번 업그레이드 되어 볼랜드 C++ 5.0까지 발표되었지만 지금은 마이크로소프트의 비주얼 C++에 밀려 사용하는 사람이 거의 없는 형편이다.
gcc는 유닉스용 공개 컴파일러이며 C/C++ 뿐만 아니라 Ada, Pascal, Java 등의 언어도 컴파일할 수 있다. C/C++ 표준을 가장 잘 준수하는 컴파일러로 알려져 있으며 최적화 성능도 훌륭해서 전문 개발자들이 즐겨 사용한다. 그러나 gcc는 통합 개발 환경을 제공하지 않으며 명령행 방식만 제공하기 때문에 초보자들이 쓸 수 있는 만만한 컴파일러는 아니다. 일일이 명령행을 통해 컴파일할 소스를 일러주거나 아니면 make 파일을 작성해야 하므로 쓰기에 무척 번거로운 단점이 있다.
- 출처 : 혼자 연구하는 C/C++
'Program Languege > 혼자 연구하는 C/C++' 카테고리의 다른 글
가변 인수 (0) | 2014.04.08 |
---|---|
4.제어문 (0) | 2014.02.10 |
3.변수 (0) | 2014.02.07 |
2. 첫번째 예제 (0) | 2014.02.04 |