0과 1로 이루어진 언어로 직접 cpu,memory등을 제어하는 저급언어이다.
어셈블리어는 기계어를 묶어서 기호화한 것이다.
기계어 명령어를 ADD 등과 같이 알아보기 쉬운 심볼로 일대일 대응시킴. assembler를 통해서 기계어로 변환과정을 거쳐야 한다. 어셈블리는 기계어를 기호로 표현해놓았기 때문에 기계의 동작과정을 잘 알고 있어야 사용가능
고급 언어는 자연어에 가까운 언어이다. 고급언어로 작성한 코드는 기계어로 번역이필요하다. 번역을 하는 장치는 컴파일러와 인터프리터가 있다. 컴파일러 고급 언어에는 c,c++등이 해당하고 인터프리터 고급 언어에는 python 등이 해당한다. 컴파일러 고급 언어는 소스코드를 통째로 머신 코드로 바꾸고 인터프리터 고급 언어는 line by line으로 기계어로 바꿔서 실행한다. 컴파일러 고급 언어는 소스코드 내에 잘못된 것이 있으면 컴파일 자체가 수행되지 않고 인터프리터 고급 언어는 실행과정에서 문제가 발생할 수 있다.
build: 에디터로 작성된 소스코드를 실행가능한 파일로 바꾸는 것
빌드 툴을 통해서 build과정을 거친 소스코드는 실행파일이 된다.
빌드 툴은 preprocessor, compiler, Linker로 구성됨
preprocessor: library파일 포함 및 매크로 변환 작업 등 전처리.
compiler: 소스코드를 object code로 바꿈. object code는 기계어 혹은 어셈블리 코드이다. 여러개의 소스코드는 각각 컴파일되고 Linker에 의해서 실행파일로 연결됨.
Linker: 목적코드를 링킹해서 실행파일로 만듦. 라이브러리는 쉽게 사용하기 위해서 미리 만들어놓은 목적코드라고 할 수 있으며 Linking과정은 라이브러리와 연결하는 과정 또한 포함.
solution = 프로젝트의 묶음. 프론트와 백엔드 두개의 프로젝트가 하나의 솔루션 안에 들어감.
콘솔 프로그램 = 터미널에서 사용하는 프로그램
.sln = solution관리 파일, .proj = project관리 파일
solution을 build하면 포함된 모든 project가 build되고 project build는 개별 project만 build함
build할 때 debug mode를 사용하면 디버그 정보를 포함하기 때문에 배포시에는 release 사용
static library는 compile time에 Linking되면서 실행파일에 포함됨. .dll파일 등이 있음.
dynamic library는 프로그램 실행과정에서 가져와서 연결됨