C는 그 활용성과 유용성 면에서 타의 추종을 불허하는 프로그래밍 언어 중 하나입니다. 하지만 언어 자체가 다소 어렵게 느껴질 수 있으며, 특히 입문자에게는 더욱 그렇습니다. 다행히 C는 겉으로 보이는 것만큼 배우기 어렵지 않고, 시작을 돕는 무료 학습 자료도 매우 풍부하게 마련되어 있습니다.
C 프로그래밍의 역사
C 프로그래밍은 1972년 데니스 M. 리치(Dennis M. Ritchie)에 의해 개발되었습니다. 이후 C++와 Objective-C 등 여러 언어들이 핵심 C 언어에서 분기하여 탄생했습니다. C는 다양한 응용 분야에서 사용할 수 있는 범용 언어로 만들어졌으며, 그 목표를 성공적으로 달성했습니다.
실제로 C는 현존하는 프로그래밍 언어 중 가장 널리 사용되는 언어 중 하나, 아니 가장 널리 사용되는 언어라고 해도 과언이 아닙니다. 왜 하필 C일까요? C는 이전에 존재했던 B라는 프로그래밍 언어의 후속 언어로 탄생했습니다. 현대에는 C가 소프트웨어 프로그래밍보다 시스템 프로그래밍 영역에서 더 많이 활용되고 있습니다.
C를 배워야 하는 이유
프로그래밍 세계에 처음 발을 들이는 많은 입문자들은 Java나 Python을 먼저 배웁니다. 이 두 언어는 현대에 가장 인기 있는 언어이지만, C 역시 그만큼 뛰어난 실용성을 갖추고 있습니다. 흥미롭게도 많은 아마추어 코더들은 C의 구조 덕분에 생각보다 배우기 쉽다는 사실에 놀라곤 합니다. C는 효율적이고 간결한 프로그램을 만들어낼 수 있으며, 다른 언어보다 저수준(low-level) 작업을 더 잘 처리할 수 있습니다.
아마 C의 가장 큰 강점은 다양한 플랫폼에서 컴파일될 수 있다는 점일 것입니다. 실제로 Unix 운영체제는 전부 C로 작성되었습니다.
C 프로그래밍의 기초
본격적인 튜토리얼에 앞서 한 가지 기억해야 할 것이 있습니다. 프로그래밍 언어는 배우기는 쉽지만, 정복하기는 어렵습니다. 언어의 동작 방식에 영향을 미치는 요소가 워낙 많아 한 편의 글로 가장 기본적인 내용조차 모두 다루기는 불가능합니다. 이 가이드는 필요한 학습 자료를 찾는 방법과 핵심 개념을 알려주어 스스로 공부할 수 있는 기반을 다져주는 것을 목표로 합니다.
먼저 필요한 것은 IDE(통합 개발 환경)입니다. IDE란 C 코드를 작성하고 편집할 수 있는 텍스트 편집기를 가리키는 전문 용어입니다.
C에 적합한 최고의 IDE로는 Visual Studio Code와 NetBeans가 꼽힙니다. 두 도구 모두 직관적이며 다운로드와 설치가 간편합니다. 코드 작성에 집중하려면 특정 편집 도구의 세세한 사용법을 익히느라 시간을 낭비해서는 안 되겠죠.
이러한 도구들은 필요한 컴파일러를 시스템에 손쉽게 다운로드하고 설정할 수 있도록 도와주므로, 작성한 코드를 바로 테스트해볼 수 있다는 장점도 있습니다.
첫 번째 프로그램 작성하기
C 코딩에 필요한 기본 도구를 갖추었다면, 이제 첫 번째 프로그램을 작성해볼 차례입니다. C 프로그램은 세 가지 기본 요소로 구성됩니다. 첫 번째는 라이브러리(Library)로, 헤더 파일들의 모임입니다. 라이브러리에 포함된 함수를 사용하려면 해당 라이브러리를 프로그램에 가져와야(import) 합니다.
이번 예제에서 필요한 라이브러리는 <stdio.h>입니다. 모든 C 라이브러리는 이름과 관계 없이 .h로 끝납니다. 코드에 라이브러리를 포함시키려면 #include <stdio.h>라고 입력하면 됩니다.
여전히 헷갈린다면 Java 코딩 경험이 있다면 public class와 비슷한 개념이라고 생각하면 이해하기 쉽습니다.
코드의 다음 부분은 함수(Function)입니다. C를 포함한 대부분의 언어에서 함수란 특정 작업을 수행하는 명령문들의 집합을 의미합니다. 모든 C 프로그램에 필수적으로 존재하는 함수는 바로 main()입니다. 코드는 다음과 같습니다:
int main() {
printf("Hello, world!");
return 0;
}
함수 main() 앞에 붙은 int 명령어는 함수가 종료될 때 정수(integer)를 반환한다는 의미입니다. 그 다음 등장하는 printf() 명령어는 <stdio.h> 라이브러리에 속해 있습니다. 코드 시작 부분에서 라이브러리를 호출하지 않으면 printf() 명령어는 실행되지 않습니다. printf() 안에 들어간 텍스트("Hello, world!")가 화면에 출력되는 내용입니다.
함수가 실행되면 프로그램에 0을 반환합니다. 이것이 종료 문(exit statement)으로, 프로그램이 자신의 작업을 완수했다는 것을 알려주는 역할을 합니다. main() 뒤의 여는 괄호와 닫는 괄호, 그리고 return 0;까지가 함수의 본문을 감싸고 있습니다.
return 0;은 프로그램의 마지막 부분으로, 코드에 정의된 작업이 끝났음을 나타냅니다. 함수 내의 모든 줄은 반드시 세미콜론(;)으로 끝나야 한다는 점도 기억하세요. 이것은 C 언어 문법의 일부입니다. 전체 프로그램을 조합하면 다음과 같습니다:
#include <stdio.h>
int main() {
printf("Hello, world!");
return 0;
}
처음 보면 다소 복잡해 보일 수 있지만 걱정하지 마세요. C의 개별 명령어를 익히는 과정이 조금 혼란스러울 수 있지만, 조금만 연습하면 전혀 어렵지 않게 느껴질 것입니다.
C 연습을 위한 추가 학습 자료
C를 막 시작했다면 코딩 연습을 충분히 하는 것이 중요합니다. 언어의 문법과 구동 방식을 직접 다뤄볼수록 실력은 빠르게 향상됩니다. 아래는 C 코딩을 배우기 좋은 무료 온라인 자료들입니다.
1. Learn-C.org
이 사이트는 초보자를 위한 대화형(interactive) C 튜토리얼을 여러 개 제공하며, 하나씩 순서대로 학습할 수 있습니다. 회원가입이나 다운로드가 필요 없고, 모든 처리와 컴파일이 웹사이트 내에서 이루어집니다. 가장 기본적인 명령어부터 시작해 점진적으로 난이도를 높여갑니다.
2. CProgramming.com
CProgramming.com은 C 프로그래밍의 대학 입문 과정에 버금가는 학습 사이트입니다. C 언어에 대한 매우 상세한 정보를 제공하며, 명령문 읽는 법, 재귀(recursive) 프로그램 구성법, 심지어 이진 트리(binary tree) 이해 방법까지 다룹니다.
3. W3Schools 튜토리얼
W3Schools 튜토리얼 시리즈는 거의 모든 프로그래밍 언어를 배울 수 있는 최고의 자료 중 하나입니다. C, Java는 물론 생소한 언어까지 폭넓은 정보를 찾을 수 있습니다. W3Schools의 C 강좌는 방대한 양의 내용을 다루며, 학습 내용을 확실히 익힐 수 있도록 실습형 프로그래밍 테스트도 함께 제공합니다.