제 1강) "C언어야, 너는 누구니?" |
"야, C언어 있잖아", "당연히 C가 기본아니야?", "으,, C도 못함?"
컴퓨터 공학과 또는 소프트웨어 공학과에서 많이 듣는 말입니다.
그럼 C언어란 무엇이기에 이렇게 귀찮게 굴까요?
(사진 출처 : 위키백과)
컴퓨터 언어 중 하나라고 합니다.
그런데 여기서 중요한 것은 "유닉스 시스템의 바탕, 많은 운영 체제의 커널도 C로.." 입니다.
즉, C는 운영체제와 연관되는 언어입니다.
(그 만큼 중요하다는 것이지요.)
으.. C언어도 못함?
사실 C언어는 정말 어려운 언어 중 하나입니다.
대다수의 컴퓨터 관련 학도들이 C언어를 먼저 배우기 때문에 가장 배우기 쉽고 간단한 언어라는 착각을 하기 쉬운데요.이것은 바로 C언어에 대한 신성 모독이자 크나큰 착각입니다.
혹시나 "C언어 기초강의 시즌1"을 보신분들이라면 아시겠지만 포인터부분으로 넘어가면 급격히 어려워집니다.왜냐하면 직접 메모리에 접근을 하여 사용하기 때문이죠.(후에 배워보도록 합시다.)
My name is "C" |
C언어는 "데니스 리치"와 "켄 톰슨", "벨 연구소"가 낳은 언어입니다.
(사진 출처 : IT동아)
(좌 : 켄 톰슨, 우 : 데니스 리치)
당시의 목적은 "UNIX(유닉스)" 운영체제에서 사용하기 위해서 개발한 언어입니다.
켄 톰슨이 "BCPL"이라는 언어를 알맞게 개조하여 "B"언어라는 이름으로 명명했고, 데니스 리치가 이 B언어를 더 개선하여 만든 것이 "C"언어입니다.
많은 운영체제의 커널이 "C언어"로 만들어졌습니다.
(커널이란? : 위키백과)
그럼 왜 C언어 인가? |
지금 쓰는 문장은 "C Primer Plus (Second Edition)"에서 나온 문장입니다.
C는 설계측면에서 사용자들로 하여금 하향식(top-down) 설계와 구조화 프로그래밍 및 모듈화 설계를 쉽게 할 수 있는 환경을 제공한다. C는 프로그램의 실행 속도를 최대로 하거나 메모리를 가장 효율적으로 사용하도록 조정할 수 있다.(효율성이 좋다)C는 이식성이 매우 좋은 언어이다.C는 강력하고 매우 유연하다.C는 프로그래머의 요구에 충실하다.하지만 C에서 섯부르게 포인터를 사용하면 프로그래밍 에러의 발견을 무척 어렵게 만든다. |
C언어의 프로그래밍 단계 |
C뿐만 아니라 대다수의 프로그래밍 언어들의 공통적인 단계입니다.
(이 단계의 출처는 "C Primer Plus" 입니다.)
1단계 : 프로그램의 목표 정의 |
현재 만들 프로그램이 무엇을 목적으로 하는지에 대해서 확실히 정의해야합니다.
2단계 : 프로그램 설계 |
프로그램을 전체적으로 어떤 구성으로 프로그램이 짜여지는가에 대해서 결정해야합니다.
"인터페이스는 어떻게 처리할 것인가?""프로그램을 어떻게 체계화할 것인가?""전체적으로 완성하는 시간은 대략 어느정도인가?"
3단계 : 코드 작성 |
1단계에서 목적을 잡고, 2단계에서 설계를 했으니 그것을 토대로 코드를 작성합니다.
4단계 : 컴파일 |
3단계에서 작성한 코드를 "프로그램화" 즉, 컴파일러(Compiler)를 이용하여 컴파일(Compile)을 합니다.
컴파일 : 소스 코드를 실행 가능한 코드로 변환하는 것 컴파일러 : 컴파일을 하는 프로그램 링커 : 라이브러리 함수를 불러들여 연결하여 실행파일로 만들어주는 프로그램 |
컴파일을 하는 과정은 다음과 같습니다.
먼저 3단계에서 작성한 C언어 소스파일(.c)이 컴파일됩니다.
컴파일이 완료되면 오브젝트 코드파일(.obj)이 생성됩니다.이 오브젝트 코드파일을 링커를 이용하여 필요한 라이브러리 코드와 출발지정 코드와 연결하여 실행파일을 만듭니다.
5단계 : 프로그램 수행 |
컴파일하여 만든 프로그램을 직접 실행시킵니다.
6단계 : 프로그램 확인 및 디버깅(Debugging) |
5단계로 실행시킨 프로그램이 제대로 실행되고 있는지 확인을 해야합니다.
즉, 실행이 되었다고 해서 끝이 아닌, 컴퓨터 용어로 버그(Bug)라고 불리는 오류를 찾아서 수정하는 작업인 디버깅을 실시합니다.
모든 프로그램에는 예기치 않은 버그가 존재할 수 있으므로 이것때문에 좌절해서는 안됩니다.
디버깅 작업은 프로그래밍의 절반을 차지하고, 이 디버깅을 토대로 자신의 실력이 향상될 수 있기 때문입니다.
7단계 : 프로그램 관리 및 수정 |
쉽게 말해서 "유지 보수" 입니다.
만들어진 프로그램을 어떻게 관리를 하고, 기능을 수정하거나 추가하는 것들을 뜻합니다.
C언어를 배우기 위한 자세 |
C언어를 배우는 것 뿐만 아니라 그 어떤 것을 배우든 간에 "책"한권은 사서 보는 것을 추천합니다.그 어떤 책이든 상관이 없으나 "누군가의 추천" 혹은 "베스트 셀러"라고 고르지 마시고 대형서점에 가시면 C언어 책을 직접 보실 수 있습니다.직접 펼쳐보고 자신에게 맞는 책을 사시면 좋습니다.
저는 개인적으로 제가 처음 C언어를 배우게 된 책인 "C Primer Plus"를 추천합니다.(저는 엄청 예전거인 Second Edition 이지만 지금은 아마도 Sixth Edition이 나왔을 겁니다.)(원서말고 번역편을 팔고 있습니다.)(그런데 상당히 책이 딱딱하다는 점!)
C언어를 개발하기 위한 환경 구축 |
C언어를 이용하여 개발하는 방법은 정말로 무궁무진합니다.
대표적으로 많이 사용하는 "Visual Studio"가 있고
"Visual Studio"가 무겁고 까는데 오래걸려서 선택하는 "Dev C++"이 있으며
리눅스에서 쉽게 C개발 환경을 구축하게 해주는 "Eclipse C++"이 있으며
(윈도우에서도 사용가능합니다.)
맥에서 많이들 사용하신다고 들은 "CLion"도 있으며(IntelliJ IDEA를 만든 Jetbrains에서 만든 도구입니다.)
요새 많이 사용하고 있는 "온라인 C언어 IDE"를 사용하는 방법도 있으며(이 방법은 적은 규모의 프로그램을 만들때만 사용하시길...)
전통적인 방법인 일반 텍스트 툴(윈도우의 경우에는 notepad++, 리눅스의 경우에는 vim)을 이용하여 소스코드를 작성후에 "gcc"를 이용하여 컴파일하는 방법도 있습니다.
제가 강조드리고 싶은 부분은그 어느것을 사용해도 아무런 문제가 없습니다.
본인은 2가지를 이용하여 진행할예정입니다.1) Visual Studio 2015(어느 버전을 사용하던 상관은 없습니다만 가급적이면 최신버전!)2) 리눅스 환경에서 vim과 gcc를 이용한 방법(우분투 리눅스)
IDE 설치시 주의사항 |
IDE란 "Integrated Development Environment"의 약자로 "통합개발환경"이라는 뜻입니다.즉, 프로그램 개발을 쉽게 해주는 프로그램입니다.
그런데 이 IDE를 설치시에는 주의사항이 몇가지 있습니다.
1) 무조건 Visual Studio는 아니다. |
사실 제 주관적인 생각으로 C/C++ IDE중에서 최고는 "Visual Studio"라고 저는 생각합니다.
하지만!!
솔직히 까는데 많은 시간이 소요되고, 게다가 무겁기도 합니다.
그래서 무조건 Visual Studio를 깔 필요는 없습니다.
다른 IDE인 "이클립스 C/C++"이나 "Dev C++" 등등의 차선책을 선택해도 됩니다.
2) 자신의 컴퓨터에 남은 용량을 생각해보자. |
이것도 결국에는 "무조건 Visual Studio는 아니다"의 연장선인데요.
일반 PC는 상관이 없을것 같지만 노트북의 경우에는 "SSD 128GB"가 많이 달려서 나오는데요.
자신의 컴퓨터에 남은 여분의 용량을 생각하며 깔아야 합니다.(참고로 Visual Studio는 15GB의 여분공간을 필요로 합니다.)
3) 제대로 실행되지 않았을 경우에는 무엇을 잘못했는지 되짚어보자. |
기본 설치방법대로 되지 않았다면 자신이 무언가를 잘못했기 때문에 안되는 경우가 다반사입니다.
그래서 다시 한번 살펴보고 해봅시다.
4) 설치 후에 재부팅은 필수 |
사실 재부팅하지 않아도 되지만! 안될 경우에는 재부팅해보세요.
부가) Visual Studio 설치시 주의점 |
Visual Studio를 설치 할 때
사용자 지정 설치를 눌러서 "Visual C++"을 체크해주셔야 합니다.
안그러면 기본설치 후에 C/C++을 사용하기 위해서 부가적으로 또 설치해야합니다.
준비 끝! |
"C언어 초보자 강의 시즌2"의 첫시간이었습니다.
이전 강의들을 되짚어 보니 상당히 엉망인 부분들이 많이 보이더군요.
비표준 함수도 조금 보이고, 뭔가 애매하게 설명한것들도 많고 해서 새로 갈아엎는다는 마음으로 다시쓰려고 합니다.
(시즌2가 완성이 되면 이전에 있던 시즌1은 전부 비공개 처리할 예정입니다.)
다음시간에는 C언어를 간단하게 맛보는 시간을 가지도록 하겠습니다.
'Study > C언어' 카테고리의 다른 글
처음하시는 분들을 위한 C언어 기초강의 시즌2 - 05 [자료형1] (0) | 2018.07.08 |
---|---|
처음하시는 분들을 위한 C언어 기초강의 시즌2 - 04 [변수] (0) | 2018.07.08 |
처음하시는 분들을 위한 C언어 기초강의 시즌2 - 03 [C언어와의 첫만남] (0) | 2018.07.08 |
처음하시는 분들을 위한 C언어 기초강의 시즌2 - 00 [Visual Studio 2017 15.4.2버전에서 프로젝트 생성하기] (0) | 2018.07.08 |
처음하시는 분들을 위한 C언어 기초강의 시즌2 - 02 [C언어 맛보기] (0) | 2018.07.08 |