알고리즘은 추상적이고 이상적인 절차를 기술한 것으로 구현에 필요한 세부사항과 현실적인 고려 사항을 무시한다.
프로그램은 하나 이상의 알고리즘이 컴퓨터가 직접 처리할 수 있는 형태로 표현된 것이라고도 생각해 볼 수 있다.
프로그램은 알고리즘과 달리 실질적인 문제도 신경 써야 한다. 불충분한 메모리, 제한된 프로세서 속도, 유효하지 않거나 악의적으로 잘못된 입력 데이터 등등 이 포함된다.
1950년대 초 프로그래밍할 떄 수반되는 단순한 반복 작업을 처리하기 위한 프로그램이 몇 가지 만들어졌는데 이 덕분에 프로그래머들은 명령어에 의미 있는 단어를 붙이고 특정 메모리 위치를 나타내는 이름을 사용 할 수 있었다.
이처럼 특정한 처리를 수행하는 프로그램을 어셈블러 라고 한다. 원래는 다른 프로그래머가 사전에 작성했던 프로그램에서 필요한 부분을 모으는 역할을 하기도 했기에 붙은 이름이다. 이 프로그램 작성에 사용되는 언어는 어셈블리 언어 라고 하고 이 수준의 프로그래밍은 어셈블리 언어 프로그래밍 이라고 한다. 모형컴퓨터에 사용됐던 언어가 어셈블리언어다.