결국 모든 컴퓨터 프로그램은 0과 1로 돌아간다. 전기가 흐르지 않으면 0, 흐르면 1. 수학자들은 이 두 가지의 상태를 표현하는 녀석을 이용하여, 더하기 빼기 곱하기 나누기 같은 연산들을 (정확하게는 논리연산) 약속하였다. 시간이 지나며 현실 세계의 문제를 표현하기 위해 그 약속은 점차 복잡해지며, 이를 사람이 이해할 수 있는 언어(영어)로 나타내기 위해 어셈블리어 라는 녀석이 등장한다.

어셈블리어는 0과 1보다는 편했지만 여전히 불편했다. 무엇보다 간단한 동작이라도 무언가를 하기 위해서는 시스템의 구성 원리, 동작 과정 등 굉장히 많은 것을 이해해야했다. 0과 1로는 어떻게 하는지 감도 안잡힌다. 프로그램을 작성하는 것도 심각히 힘들었고 (작성하다가 중간에 잘못된 경우 잘못된 부분부터 끝까지 다시 작성해야함, 안 그래도 엄청나게 긴데…) 무엇보다도 하드웨어(정확히 말하면 CPU)나 운영체제가 달라지면 어셈블리어 또한 달라졌다. 특히나 하드웨어는 기업의 기술을 상징하는 녀석이기에 비밀리에 개발되었고, 따라서 기업간의 기술 공유가 안되어 표준이 존재하질 않았기에 각기 어셈블리어는 굉장히 달랐다.

이러한 상황 가운데 많은 고난의 과정을 딛고, C언어가 등장했다 ( 그 전에 등장한 언어는 생략함 ). C언어는 일단 작성해놓으면 컴파일이라는 과정을 통해 C언어로 작성된 소스코드를 어셈블리어로 변환할 수 있었다. 따라서 컴파일러라는 프로그램이 C언어 소스코드를 컴파일 해 어셈블리어로 변환해주었고, 이로 인해 새로운 시대가 열리게 되었다. (고마워요 Ken Thompson, Dennis Ritchie!)

그 이후로 시간이 흐르며 하드웨어 성능이 굉장히 좋아지며, 개발자들은 더욱 더 효율적인 개발을 원하였다. 그래서 C언어도 너무 어렵다! 라며 이를 추상화 시킨 언어가 등장하였다. 이러한 흐름에서 발전하여 간단한 명령어를 입력하는 것 만으로 프로그램을 제어할 수 있는 새로운 언어가 등장하였다. 이러한 언어를 스크립트 언어라고 한다.

TL,DR; 어떠한 프로그램 위에서 실행되는 상위 계층의 언어 (High Level Language)