스무디코딩의 C언어 과정에 오신 것을 환영합니다!
이 문서는 C언어를 처음 시작하는 사람들을 위해 작성하였습니다. C언어가 무엇인지 알아보고 C언어 설치 과정을 진행해보겠습니다.
C언어를 마주하고 막연함을 느끼는 학생들 혹은 동적타이핑에는 익숙하지만 정적타이핑에 어려움을 느끼는 분들 등 필요한 모든 분들에게 참고가 되기를 바랍니다.
먼저 C언어는 다른 프로그래밍 언어를 배우는 것과 비교해서 약간의 인내심이 필요합니다.
IT의 태동기에 C언어를 배우기 시작한 분들은 현재의 컴퓨팅 환경보다 열악한 환경에서 프로그래밍을 배우셨습니다.
새로운 시대가 왔지만 그 분들이 고생이 있었기에 지금의 IT의 황금기가 도래한 것도 사실입니다.
standing on the shoulders of giants
거인의 어깨에 올라서 넓은 세상을 바라보라
— 아이작 뉴턴
C언어를 잘 배우면 IT세계 선인들(major thinkers)의 눈으로 세상을 바라볼 수 있습니다.
시작하기 전에 알아두어야 할 것은 C언어를 배우는 것은 여러가지 면에서 쉽지 않습니다.
밑도 끝도 없는 개념들을 하루종일 붙잡고 있어야 하는데 예민한 사람은 학습과정에서 수많은 의문에 좌절하기 쉽습니다. 곳곳에 많은 함정이 도사리고 있습니다.
한편 C언어를 배우면서 특정한 관념에 사로잡힐 수도 있습니다. 잘못하면 C언어만이 최고라는 아집에 사로잡힐 수도 있을 정도로 C언어는 지적인 유혹과 강한 도전으로 다가옵니다.
반면 배우면 배울수록 아무것도 못느낄 수도 있습니다. 그런 경우 많은 사람들이 C언어의 기초 과정의 반도 못가서 중도 하차합니다.
필자 개인적으로도 20대 초반에 C언어를 중도하차한 일이 있어서 서론에 좀 강하게 이야기 했습니다. 너무 기분 나쁘게 받아들이지 않기를 바랍니다.
한번 포기하면 다시 C언어를 따라잡기까지 한참이 걸릴 수 있기 때문입니다.
이번 포스팅에서는 C언어에 대하여 간략하게 알아보고 설치하는 것으로 시작해 보겠습니다.
1. C언어란 무엇입니까? / C언어 역사
목차
C언어에 대하여 간략하게 알아보고 가겠습니다.
C언어는 컴퓨터 프로그래밍 언어입니다. 최초에 C언어를 개발한 사람은 벨 연구소의 데니스 리치입니다. 그는 유닉스 운영체제를 개발하기 위한 언어로 1972년에 C언어를 개발했습니다.
C언어 이전에도 컴퓨터 언어들이 있었지만 C가 나온 후 현재까지 다른 언어들의 기초를 제공한 언어입니다. 자바, 파이썬, 자바스크립트 등의 현대적 언어도 C로 개발되거나 C를 계승한 부분이 많습니다. 단순히 문법적으로만 봐도 유사성을 찾을 수 있습니다.
빌게이츠를 비롯한 대부분의 유명한 컴퓨터 천재들이 C언어를 마스터했고 C언어로 만든 소프트웨어들은 이제 우리 생활에 공기처럼 존재한다고 봐야합니다. 사실 스마트폰처럼 그게 C언어 기반의 기계인지 모르고 쓰는 경우가 많습니다.
온라인의 활동을 통해서 전세계의 프로그래밍 지수를 측정하는 tiobe index의 2021년 1월달 순위도 C언어가 17%로 1위를 유지하고 있습니다. 전세계적으로 C언어의 수요가 많다는 것을 입증하고 있습니다. 사실 기업이나 공기관에서 레가시 장치(옛날 컴퓨터 시스템)를 유지하는 곳이 많기 때문인 이유도 있습니다.
최근엔 웹프로그래밍이 각광을 받고 있는데 웹 이전에 수많은 컴퓨팅 장치들(소매점의 POS, 임베디드 가전제품 등)에 C언어를 사용해왔습니다.
또 가장 많이 쓰는 분야는 OS(운영체제)는 대부분 C언어로 만든 커널을 사용합니다. 리눅스, 유닉스, 윈도우 심지어 스티브잡스의 역작이라는 맥OS 코드의 대부분도 C언어에 의존한다고 합니다.
C언어 창시자인 데니스 리치와 스티브잡스는 공교롭게도 2011년 초 비슷한 시기에 세상을 떠났습니다. 그때 미국 언론에서 스티브 잡스와 데니스 리치의 업적에 대한 재평가를 한 이야기입니다. ‘애플MacOS의 상당수 기술은 데니스 리치의 C언어를 기반으로 돌아가고 있다.’
약간 오버스럽게 느껴지지만 세계적인 언론의 화려한 스포트라이팅을 받았던 잡스와 달리 연구소의 공학자였던 리치는 대중은 잘 몰랐습니다. 한국에서는 최근에 IT책에서 데니스 리치의 이름이 종종 등장하고 있습니다.
데니스 리치에 대한 배경지식이 C언어를 이해하는 것에 도움이 될 수 있습니다.
C언어는 그냥 프로그래머가 편하게 코딩하라고 만들지 않았습니다. 물론 후에 ANSI 표준이 좀 더 현실에 맞게 추가되기는 했습니다.
그러나 원초적인 C언어의 개발목적은 기계어와 어셈블리어(니모닉)으로 프로그래밍을 하던 시절에 유닉스(Unix – IBM의 메인프레임 컴퓨터 OS)의 운영체제를 개발하기 위한 것이었습니다.
리치의 동료 켄 톰슨과 벨연구소에서 개발한 B언어를 유닉스를 위해 개량한 것이 C언어 입니다.
지금은 클라우드 컴퓨팅을 하는 시대인데 메인프레임이라니 놀랍죠? C언어가 처음 세상에 나온 것이 1972년 입니다. 무려 50년이나 과거의 이야기죠. 오늘날의 기준으로 비교하는 것은 어렵습니다.
클라우드 컴퓨팅의 역사에 대해 공부하다 보면 초창기가 메인프레임 시대인데 그 때의 필요에 의해서 만들어 진 것 입니다. 참고로 스티브 잡스가 가정집에 애플컴퓨터를 보급한게 70년대 후반입니다. 가정집에서 사용할 수 있는 인터넷 서비스 같은 것은 없었습니다.
C Programming Language 이 책은 데니스리치와 동료인 브라이언 커니핸이 1978년 집필한 C언어 교재입니다. 여기서 지금까지 프로그래머들을 가르칠 때 처음에 사용하는 “Hello World” 의 전통이 시작되었습니다.
#include <stdio.h> int main() { printf("Hello World"); }
Hello World
지금도 새로운 언어를 만들면 꼭 Hello World 를 콘솔에 출력시키는 과정으로 시작합니다. 일종의 전통이자 테스트 같은 코드인데요. 표준출력(Standard Output 즉 모니터 스크린)이 작동하는 것을 확인하기 위한 과정이기도 합니다.
Hello World 메시지를 확인하면 개발환경이 성공적으로 설치되었다는 뜻입니다.
C언어 특징
C언어는 운영체제를 제작하기 위해 개발된 언어인만큼 저수준과 고수준을 넘나드는 강력한 제어구조와 빠르고 효율적인 코드, 이식성이 뛰어나다는 특징이 있습니다.
이런 C언어의 특징을 다 이해하지 않아도 괜찮습니다. 다만 한가지는 알아야 하는데 C언어는 프로그래머에게 많은 자유와 함께 책임을 부여하는 언어입니다.
예를 들어 C언어의 코드는 컴퓨터 메모리를 비트 단위로 조작할 수 있습니다. 이는 다른 언어에서는 부여하지 않는 권한입니다.
컴퓨터의 정책은 엄격해서 프로그램 실행중에 메모리 한개의 비트라도 잘못 건드리면 정상적인 프로그램에 치명적 오류(메모리 크래시)를 만들 수 있습니다. 그래서 프로그래머는 C언어를 매우 세밀하게 다루어야 합니다.
C언어는 프로그래머에게 자유와 책임을 부여합니다
2. C언어 설치 (IDE)
C언어 프로그램을 개발하기 위해서는 C개발환경 프로그램이 필요합니다.
C언어의 역사가 오래된 만큼 다양한 개발환경(IDE) 프로그램이 있습니다.
대부분의 C 프로그램은 오픈소스이고 무료로 사용가능합니다.
C언어는 크로스 플랫폼을 지원하기 때문에 윈도우, 리눅스, 맥OS 등 어떤 운영체제를 사용해도 C언어 프로그램을 개발할 수 있습니다.
이 포스팅에서는 윈도우10에서 선택할 수 있는 몇가지 옵션을 알아보겠습니다.
우선 C언어 개발을 위해서 통합개발환경을 설치합니다.
C언어 설치를 위한 IDE에는 다양한 옵션이 있습니다. 웬만한 IDE는 대부분 C언어를 지원합니다. 사실 C언어를 컴파일하고 실행하는 것은 콘솔(명령프롬프트) 환경에서 가능하기 때문에 어떤 텍스트 에디터를 사용하건 큰 문제가 없으나 본격적으로 C언어를 학습하려면 IDE를 사용하는게 좋습니다.
C언어에서는 MS 비주얼 스튜디오와 비주얼 스튜디오 코드가 훌륭한 선택입니다.
명칭이 헷갈리는데 비주얼 스튜디오는 닷넷프레임워크와 윈도우즈 환경의 C계열에 특화된 마이크로소프트 전통의 개발환경이고,
비주얼 스튜디오 코드는 마이크로 소프트에서 개발한 오픈소스 텍스트 에디터 개발환경입니다. 비주얼 스튜디오 코드는 C뿐만 아니라 자바스크립트, 파이썬 등 더 다양한 언어를 지원합니다.
처음 시작하시는 분들에겐 어떤 개발환경을 선택하는가에 따라 학습 경험이 달라질 수 있습니다만, 윈도우에서는 C언어는 비주얼 스튜디오를 추천합니다. C++이 아니라 C언어 독학에는 조금 애매하지만 향후 C++과 닷넷을 배워서 윈도우 응용프로그래머가 되려면 비주얼 스튜디오가 좋습니다. 그리고 강력한 디버깅 기능을 가지고 있기 때문에 C언어의 포인터를 배울 때 매우 큰 도움이 됩니다.
다만 비주얼 스튜디오는 ANSI 표준이 달라서 좀 옛날 교재에 나와있는 예제를 실행하려고 할 때 실행이 안되거나 결과가 달라지는 경우가 좀 있습니다. 이런 경우 MINGW 컴파일러 (GCC 컴파일러)를 비주얼 스튜디오 코드에서 사용하는게 좋지만 초보자에게는 설치와 환경설정 과정이 힘들 수 있습니다.
우선 비주얼스튜디오를 사용하다가 조금 익숙해지면 시도해보는 것을 추천합니다.
떠 C계열 뿐만 아니라 자바나 웹개발등에 관심이 있다면 비주얼 스튜디오 코드를 사용하는 것을 추천합니다. 여러개의 컴파일러와 함께 사용할 수 있어서 좋고 리눅스 환경에서 개발하기 좋습니다. 비주얼 스튜디오는 윈도우 최적화라 전문가가 아니면 다른 운영체제에서 사용할 일이 없을 거라 봅니다.
워낙 선택 옵션이 많다 보니 설치에 대한 이야기가 좀 길었습니다. 설치 잘못하면 재설치하고 설정하느라 2-3시간 그대로 날아가기도 합니다.
그래서 입문자들 기준으로 비주얼 스튜디오를 추천하겠습니다.
비주얼 스튜디오 / C언어 설치
비주얼 스튜디오 설치를 해보겠습니다.
아래 링크에서 비주얼 스튜디오 커뮤니티 버전을 다운로드 받습니다.
MS에서 누구나 무료 IDE로 다운받을 수 있도록 공개하고 있습니다.
용량이 1기가가 넘기 때문에 느긋한 마음으로 다운로드 합니다.
설치할 때 구성요소를 선택해야 합니다. 워낙 제품이 많아서 복잡합니다만,
C언어 설치를 위해 비주얼 스튜디오의 모든 구성요소를 선택할 필요는 없습니다. 필수 설치요소는 자동으로 설치되며 C++ 도구들을 설치하면 됩니다. C++ 도구를 설치하면 C언어도 사용할 수 있습니다.
구성 요소가 많아서 헷갈리지만 C++을 사용한 데스크톱 개발을 설치합니다.
설치가 자동화되어 있는데도 설정 고르기가 어려운게 비주얼 스튜디오의 단점입니다만, 일단 설치하고 적응한다면 훌륭한 환경입니다.
설치가 다 끝나면 새프로젝트에서 C++ 콘솔앱을 선택합니다.
템플릿 기능으로 자동적으로 Hello World 코드를 생성합니다.
C언어 설치가 제대로 되었다면 아래와 같은 C++ 코드가 나옵니다.
// ConsoleApplication4.cpp : 이 파일에는 'main' 함수가 포함됩니다. 거기서 프로그램 실행이 시작되고 종료됩니다. // #include <iostream> int main() { std::cout << "Hello World!\n"; } // 프로그램 실행: <Ctrl+F5> 또는 [디버그] > [디버깅하지 않고 시작] 메뉴 // 프로그램 디버그: <F5> 키 또는 [디버그] > [디버깅 시작] 메뉴 // 시작을 위한 팁: // 1. [솔루션 탐색기] 창을 사용하여 파일을 추가/관리합니다. // 2. [팀 탐색기] 창을 사용하여 소스 제어에 연결합니다. // 3. [출력] 창을 사용하여 빌드 출력 및 기타 메시지를 확인합니다. // 4. [오류 목록] 창을 사용하여 오류를 봅니다. // 5. [프로젝트] > [새 항목 추가]로 이동하여 새 코드 파일을 만들거나, [프로젝트] > [기존 항목 추가]로 이동하여 기존 코드 파일을 프로젝트에 추가합니다. // 6. 나중에 이 프로젝트를 다시 열려면 [파일] > [열기] > [프로젝트]로 이동하고 .sln 파일을 선택합니다.
자 이 코드를 C의 코드로 바꿉니다.
아래의 코드는 C언어에서 화면에 출력을 하는 코드입니다.
#include <stdio.h> int main() { printf("Hello World!\n"); return 0; } Hello World!
실행하여 콘솔에 Hello World! 를 출력하면 성공한 것 입니다.
요약
C언어 독학의 첫걸음으로 비주얼 스튜디오를 설치하고 테스트해봤습니다.
비주얼 스튜디오의 설치가 좀 오래걸리고 까다롭지만 길게 보면 큰 도움이 됩니다.
시간이 걸리더라도 비주얼 스튜디오를 잘 설치하는 것을 추천합니다.
정 답답하면 온라인 컴파일러도 사용할 수 있는데 아무래도 웹에서 코딩을 하면 계속성이 떨어지기 때문에 자신의 시스템에 꼭 IDE 를 설치하는 것이 좋습니다.
온라인 C 컴파일러 Online C Compiler – online editor (onlinegdb.com)
프로그래밍을 오래 할수록 무수히 많은 소프트웨어를 설치하고 지우고를 반복합니다. 설치도 프로그래밍의 한 과정입니다. 시간도 많이 걸리죠. 나만의 설치 노하우를 발견하는 것도 프로그래머가 되기 위해 처음에 배워야 할 일입니다.
외부참조
smoothie_coding/hello.c at main · neokayken/smoothie_coding (github.com)
index | TIOBE – The Software Quality Company
>> 티오비 인덱스는 소프트웨어의 순위와 품질을 측정하는 사이트입니다.
wow
to the end
Thank you
이번에는 끝까지