자연언어
사람들이 일상에서 쓰는 언어
논리적으로 모호하고 애매하여 논리적으로 부적합성을 가진다.
인공언어
컴퓨터에서 사용하는 언어
true와 false의 명확한 논리를 갖고 있다.
프로그래밍 언어가 속한다.
원시언어
어셈블러의 어셈블리어 컴파일러의 c언어
목적언어
어셈블리어의 어셈블러(번역된 기계어), c언어의 컴파일러 (번역된 중간 언어,기계어)
저급 언어 (보다 하드웨어에 가까운 언어)
기계어, 기호 언어
기호 언어: 명령 부호나 상대 및 절대 주소를 기호로 표시한 언어, 어셈블러를 통해 기계어로 변환된다.
어셈블리(Assembly) 언어라고도 한다. 기계어와 고급 언어의 중간에 있다.
저급 언어는 고급 언어가 자동으로 다루는 수많은 세부 사항들을 신경써야 하기 때문에 다루기 어렵다.
고급 언어(하드웨어 구조에 좌우되지 않는다)
대부분의 프로그래밍 언어가 여기에 속한다.
컴파일 혹은 인터프리터를 통해 파싱한다.
파싱(parsing)은 프로그래밍 문법에 맞게 코드가 짜여 있는지 분석하고 기계어로 변환하는 과정이다. 주된 역할은 구문 분석이다.
의미를 알 수 없는 입력받은 데이터의 구조를 분석하고 소스 코드를 토큰(token)으로 분해 한 다음 데이터의 구조를 반영해 파스 트리(parse tree)형태로 변환한다.
이러한 과정을 파서라고 한다. 이 파스 트리를 컴파일러 혹은 인터프리터를 통해 의미를 분석하고 결과를 내보낸다.
파싱을 통해 런타임에서 실행 가능한 포맷으로 기계어로 변역된 데이터가 유효한지 검증한다.
현재 대부분의 "컴파일러"는 레거시(하위 호환)를 기본으로 유지해 주며 자기들만의 다양한 확장기능을 추가적으로 제공한다.
이는 본질적으로 코드의 이식성과 유지에 어려움을 만들며, 각 컴파일러에 대한 의존성을 낮추기 위해서는 표준에 부합하는 코드를 작성해야 한다.
표준이 계속 나오면서 obsolescent, deleted로 분류되는 문법 사항들이 나온다.
deprecated , obsolescent : 아직 표준이지만, 앞으로의 표준에서 삭제될 것을 미리 알리는 것.
deleted: 과거의 표준이었지만, 현재는 지워진 표준