Программирование зародилось с написания программ непосредственно в виде команд компьютеру (в виде машинного кода, как говорят программисты). Позднее, для облегчения программирования был изобретен язык Ассемблер. Этот язык дает возможность написания машинного кода в виде символов. Например, программисту не нужно знать числовой код операции сложения, вместо этого программист может воспользоваться символьным обозначением ADD. Язык Ассемблер состоит из множества команд, поддерживаемых конкретным компьютером. Этот язык удобен для написания небольших программ, требующих большой скорости исполнения. Однако трудно реализовывать большие проекты на Ассемблере. Сложность заключается в том, что программа на Ассемблере зависит от строения конкретного компьютера. При усовершенствовании машины придется переписать программы, написанные на Ассемблере. (?)
Практически одновременно с появлением компьютеров появились языки высокого уровня, то есть языки, не зависящие от конкретной архитектуры. Для выполнения программы, написанной на языке высокого уровня, необходимо её перевести на язык машинных команд. Специальная программа, выполняющая этот перевод, называется транслятором (tranlator) или компилятором (compiler). Затем переведенная программа непосредственно исполняется компьютером. Также существует возможность перевода программы на промежуточный язык, который не зависит от конкретного компьютера. Далее программа, написанная на промежуточном языке, исполняется специальной программой, называемой интерпретатором. Также существует этап, когда исполняемый фрагмент программы перед исполнением переводится из промежуточного языка на язык машинных команд.
Знаменитыми компилируемыми языками являются Си, С++, Фортран, Паскаль. Интерпретируемые языки в основном это объектно-ориентированные языки типа Java, Visual Basic, С#, PHP. Все они в начале переводятся на промежуточный язык: для Java это байт-код языка Java; для Visual Basic и C# это промежуточный язык Intermediate Language или IL, который является одним из основных компонентов платформы .Net компании Microsoft. Например, программа JVM (Java Virtual Machine) – Виртуальная Машина Java переводит код, написанный на Java, и готовит его к исполнению. Исторически одним из первых языков высокого уровня является Fortran. Этот язык оказался невероятно успешным, он прост и эффективен. До сих пор большая часть научных и инженерных программ написана на этом языке. Не смотря на это, последние 20 лет программисты отдают предпочтения языку С и группе языков с ним связанных: C++, Java, C#.
Другим важным моментом в истории алгоритмических языков является появление языка ALGOL-60 (от ALGOrithmic Language). Зарождение этого языка связано с развитием структурированного подхода программирования. В структурированном программировании применяется вложение одних конструкций языка внутрь других. Основной единицей языка является оператор. Оператор может быть простым или составным. Составной оператор в свою очередь состоит из нескольких операторов, объединенных в блоки. Язык Алгол-60 сделал вклад в развитие алгоритмических языков. Его наследниками являются языки Паскаль, Modula-2, Oberon, Delphi. Однако Алгол-60 имеет свои недостатки. Возможность написания одной подпрограммы внутри другой, неразвитый механизм обмена параметрами с подпрограммой являются примерами недостатков данного языка.
Язык Паскаль появился как исправление Алгол-60, но и этот языка взаимствовал главный недостаток Алгол-60 - вложенность подпрограмм. Также в первоначальной версии языка Паскаль не было возможности разделения программы в несколько файлов. Эти недостатки позднее были исправлены его автором, знаменитым швейцарским ученым и преподавателем Никлаусом Виртом в языках Modula-2 и Oberon. В настоящее время язык Паскаль хотя и используется для обучения программированию, но на практике не применяется. Его наследник язык Delphi известен своим применением для практического программирования в среде Windows.
Самым удачным языком программирования является C. Существует ряд, связанных с ним, языков, таких как C++, Java, C#. Язык С создавался не учеными-теоретиками, а программистами из практики, имевшими к тому же высокую математическую культуру. Язык был изобретен в конце 60-х годов XX века. Фактически, именно этот язык позволил программистам отказаться от Ассемблера. Например, практически весь исходный код операционной системы Unix написан на этом языке, благодаря чему она не зависит от конкретной архитектуры компьютера.
Основная ценность языка С заключается в его простоте и упорядоченности. C избавлен от недостатка возможности включения одной подпрограммы в другую. В C вместо термина "подпрограмма" используется термин "функция". Ни одна функция не содержит в себе другую функцию. Переменные строго разделены на глобальные и локальные. Каждая используемая переменная обязательно должна быть объявлена. Программист, который создает программу на С, всегда точно знает как его программа исполняется. Понятия указателей, статических и динамических переменных в C отражают устройство современных компьютеров, поэтому написанные на C программы удобно редактировать.
В настоящее время много программ пишутся на C и C++. Интерфейсы программирования приложений API (Application Programming Interface) операционных систем написаны на C или C++ (?), то есть множество системных команд, которые придуманы для создателей прикладных программ, и в действительности являются наборами функций (подпрограмм) на этих языках. Объектно-ориентированные языки C++, Java, C# также созданы на основе языка С.