0. 개요
C 언어는 1972년 켄 톰슨과 데니스 리치가 벨연구소에서 일할 당시 새로 개발된 유닉스 운영체제에서 사용하기 위해 개발한 프로그래밍 언어 입니다.
켄 톰슨이 BCPL언어를 개조하여 B언어를 만들었고, 데니스 리치가 이를 개조하여 C의 이름으로 지금의 C언어가 탄생하였습니다.
당시 유닉스 운영 체제에 맞게 설계 되었으나 현재는 리눅스와 대부분의 시스템 및 임베디드 프로그램으로 사용되는 대표적인 시스템 프로그래밍언어이고, 명령형, 절차식 패러다임의 언어입니다.
C++ 언어는 1985년 C++ 프로그래밍 언어 1판이 출시되면서 널리 알려진 언어 입니다. C의 대부분의 구조를 가져오면서 패러다임을 바꾸는 것을 의도로 설계 되었으며, C언어의 객체지향 버전 프로그래밍 언어 라고 볼 수 있습니다.
C with Classes는 1979년 비야네 스트롭스트룹이 언어 이름 그대로 객체지향 패러다임을 추가한 C언어를 고안 하였고,
1983년 개선된 C with Classes를 C++ 이라는 이름으로 변경하여 1985년 처음 공식 참조 문헌을 기점으로 C++언어가 탄생했다고 보고 있습니다.
이번 C/C++에서는 C와 C++의 문법을 둘 다 섞어서 표현하므로 임베디드의 C를 사용하려고 해당 내용을 보는 것은 약간의 어려움이 있을 수 있습니다.
필자는 각 패러다임 별로 절차지향은 C를 객체지향은 Java를 함수형은 Haskell을 각 패러다임의 대표 언어로
선정하고 싶고,
각 언어별 특징과 패러다임을 익히는 것이 좋을 것 같다고 생각합니다.
또한, 필자는 모든 언어에서 가장 기초가 되는 언어, 또는 단 하나의 언어를 사용할 수 있다고 할 때 선택하는 언어로
C++을 선택 할 정도로 모든 패러다임을 아우르면서도 시스템 언어에 기반을 둔 상당히 좋은 언어라고 생각합니다.
해당 블로그의 PL 파트는 대부분 C/C++을 기준으로 타 언어의 와의 차이에 대해 설명할 예정입니다.
0.1. 리눅스에서 C/C++
우분투(리눅스)에서 C/C++을 컴파일 및 실행 하려면 gcc, g++이 필요합니다.
혹시 업데이트를 안하신 분은 아래의 코드를 먼저 실행 후,
sudo apt update
아래의 코드를 실행하여 gcc, g++을 설치합니다.
sudo apt install gcc
sudo apt install g++
설치가 끝났다면,
gcc -v
g++ -v
을 입력하여 gcc와 g++의 버전을 출력해 봅니다.
만약, 에러가 뜬다면 재부팅이나 재설치 해보시기 바랍니다.
만약, 정상적으로 버전이 뜬다면, 적절한 위치에 [파일명].c 파일이나 [파일명].cpp 를 생성하고
0.3. 절에서 실습해 봅시다.
0.2. 윈도우에서 C/C++
필자는 대부분 리눅스 기반에서 개발 하기에 윈도우 개발환경은 간략하게 기입 할 예정입니다.
가급적이면 wsl 이나 (git)bash를 쓰는 것을 권장하며, Hyper-V 나 vm-ware도 알아보시는 것을 추천 드립니다.
윈도우 개발환경에서는 크게 두 가지를 주로 사용하는 것 같습니다.
첫 번째로는 Visual Studio로 작성하는 방법이고, 두 번째로는 cmd나 Powershell로 작성하는 방법입니다.
첫 번째는 Visual Studio를 설치하고, c++개발에 맞는 툴들을 모두 추가 설치 하고,
https://visualstudio.microsoft.com/ko/
프로젝트와 솔루션을 생성한 후, 적절한 위치에 [파일명].c 파일이나 [파일명].cpp 를 생성한 후,
소스파일 폴더에 하나의 실행 파일만 올려서 준비합니다.
두 번째는 cmd나 Powershell로 작성하는 방법은 gcc, g++을 직접 설치하는 방법이고
https://sourceforge.net/projects/mingw-w64/
에서 mingw-w64를 설치하여 적절한 위치에 폴더를 두고 환경변수를 설정하고
cmd 또는 powershell에서
gcc -v
g++ -v
을 입력하여 gcc와 g++의 버전을 출력해 봅니다.
만약, 에러가 뜬다면, 환경변수 세팅을 한 번 더 점검하고 재부팅 해보시길 바랍니다.
만약, 정상적으로 버전이 뜬다면, 적절한 위치에 [파일명].c 파일이나 [파일명].cpp 를 생성하고
0.3. 절에서 실습해 봅시다.
0.3. Hello World!
위의 내용을 정상적으로 수행 하셨다면, 이번에는 코드를 작성 해 봅시다.
먼저 [파일명].c 코드를 에디터를 열어 코드를 아래와 같이 작성 하고
#include<stdio.h>
int main()
{
printf("Hello World!");
return 0;
}
gcc에 컴파일을 하기 위해 아래와 같이 콘솔에 작성하여 실행 파일이 나오는 지 확인 합니다.
gcc [파일명].c -o [파일명]
위의 코드는 [파일명].c 를 컴파일 하여 [파일명] 의 실행파일로 변환하는 명령어 입니다.
다음은 [파일명].cpp 코드를 에디터를 열어 코드를 아래와 같이 작성 하고
#include<iostream>
int main()
{
std::cout("Hello World!");
return 0;
}
g++에 컴파일을 하기 위해 아래와 같이 콘솔에 작성하여 실행 파일이 나오는 지 확인 합니다.
g++ [파일명].cpp -o [파일명]
위의 코드는 [파일명].cpp 를 컴파일 하여 [파일명] 의 실행파일로 변환하는 명령어 입니다.
[파일명] 실행 파일 실행은 각 운영체제에 맞게 실행하면
./[파일명]
Hello World!
위의 문장”Hello World!”가 나오면 C/C++을 배울 준비가 된 것입니다.