Как назывался первый язык программирования?
Высокоуровневый язык программирования
Первым языком программирования высокого уровня считается компьютерный язык Plankalkül, разработанный немецким инженером Конрадом Цузе ещё в период 1942—1946 годах. Однако транслятора для него не существовало до 2000 года. Первым в мире транслятором языка высокого уровня является ПП (Программирующая Программа), он же ПП-1, успешно испытанный в 1954 году. Транслятор ПП-2 (1955 год, 4-й в мире транслятор) уже был оптимизирующим и содержал собственный загрузчик и отладчик, библиотеку стандартных процедур, а транслятор ПП для ЭВМ Стрела-4 уже содержал и компоновщик (linker) из модулей. Однако, широкое применение высокоуровневых языков началось с возникновением Фортрана и созданием компилятора для этого языка (1957).
История языков программирования
Спецификация языка была создана в 1959 году. Создатели языка ставили своей целью сделать его машинонезависимым и максимально приближенным к естественному английскому языку. Обе цели были успешно достигнуты; программы на COBOL считаются понятными даже неспециалистам, поскольку тексты на этом языке программирования не нуждаются в каких-либо специальных комментариях (самодокументирующиеся программы).
Программное обеспечение
В начале 1950-х годов понятие программного обеспечения ещё не сложилось. Так не говорилось о нём ничего в вышедшей в январе 1952 года в журнале Fortune статье «Office Robots», описывавшем компьютеры Univac. Хотя в статье уже рассказывается о компьютере как об универсальном устройстве, процесс программирования в этой статье был анахронически описан как «переключение тумблеров». Однако к середине 50-х годов уже вполне сложилась разработка программного обеспечения на заказ, хотя сам термин «программное обеспечение» ещё не использовался, тогда говорили просто о «"программировании на заказ"» или «"программистском обслуживании"». Первой программной фирмой стала компания System Development Corporation, созданная в 1956 году на базе принадлежащей правительству США фирме RAND Corporation. На этом этапе заказчиками программного обеспечения (уникального и не тиражируемого) были крупные корпорации и государственные структуры, и стоимость в один миллион долларов за программу не была чем-то необычным.
Си (язык программирования)
Существует несколько легенд, касающихся причин разработки Си и его отношения к операционной системе UNIX, включая следующие:К 1973 году язык Си стал достаточно силён, и большая часть ядра UNIX, первоначально написанная на ассемблере PDP-11/20, была переписана на Си. Это было одно из самых первых ядер операционных систем, написанное на языке, отличном от ассемблера; более ранними были лишь системы Multics (написана на ПЛ/1) и TRIPOS (написана на BCPL).
Язык программирования
С ростом размера и сложности программ уже при использовании языков второго поколения начала формироваться парадигма процедурного программирования, требующая производить декомпозицию крупных процедур в цепочку иерархически связанных более мелких. Примерно в то же время появились первые языки и сформировалось сперва структурное программирование как прямое развитие процедурного, а затем и модульное. Со временем появилось огромное количество разнообразных путей решения проблемы комплексирования растущих программных систем с сохранением исходно императивного подхода в основе. В некоторых случаях достигнуто существенное влияние на показатели скорости разработки и качества, но в общем и целом, как выше отмечено, языки третьего поколения абстрагируются от машинной логики лишь до определённого уровня и незначительно подвержены . К настоящему времени третье поколение языков представлено наиболее обширным спектром разнообразных парадигм.
Unix
Широко используемый в системном программировании язык Си, созданный изначально для разработки Unix, превзошёл Unix по популярности. Язык Си был первым «веротерпимым» языком, который не пытался навязать программисту тот или иной стиль программирования. Си был первым высокоуровневым языком, предоставляющим доступ ко всем возможностям процессора, таким как ссылки, таблицы, битовые сдвиги, инкременты и т. п. С другой стороны, свобода языка Си приводила к ошибкам переполнения буфера в таких функциях стандартной библиотеки Си, как gets и scanf. Результатом стали многие печально известные уязвимости, например, та, что эксплуатировалась в знаменитом черве Морриса.
История информационных технологий
В 1941 году Конрад Цузе разработал первый в мире функциональный программно-управляемый Тьюринг-полный компьютер, Z3. Цузе отметил, что вычислительная машина Z2 считается первым компьютером с контролируемым процессом. В 1941 году он основал одно из первых компьютерных предприятий по производству Z4, который стал первым коммерческим компьютером в мире. В 1946 году он разработал первый язык программирования высокого уровня, Планкалкюль. В 1969 году Цузе предложил концепцию цифровой физики в своей книге "Rechnender Raum"("Calculating Space")
История языков программирования
Поскольку Фортран оказался столь успешным языком, в Европе возникли опасения, что IBM будет доминировать в компьютерной отрасли. Немецкое Общество прикладной математики и механики (GAMM) создало комитет по разработке универсального языка. В то же время Ассоциация вычислительной техники (ACM) организовала похожий комитет в США. Несмотря на то, что у европейцев было некоторое беспокойство по поводу господства американцев, оба этих комитета слились в один.
Форт (язык программирования)
С 1971 года Мур работал в , участвуя в разработке программ сбора и обработки получаемых радиотелескопом данных. Именно тогда появилась первая реализация языка Форт. В этой работе также участвовала сотрудница Мура , которую можно считать вторым в мире форт-программистом.
Объектно-ориентированное программирование
Взгляд на программирование «под новым углом» (отличным от процедурного) предложили Алан Кэй и Дэн Ингаллс в языке Smalltalk. Здесь понятие класса стало основообразующей идеей для всех остальных конструкций языка (то есть класс в Смолтоке является примитивом, посредством которого описаны более сложные конструкции). Именно он стал первым широко распространённым объектно-ориентированным языком программирования.
Программирование
По выражению одного из основателя языков программирования Никлауса Вирта «Программы = алгоритмы + структуры данных».
Язык программирования
В период 1960-х — 1970-х годов были разработаны основные парадигмы языков программирования, используемые в настоящее время, хотя во многих аспектах этот процесс представлял собой лишь улучшение идей и концепций, заложенных ещё в первых языках третьего поколения.
Каждый из этих языков породил по семейству потомков, и большинство современных языков программирования в конечном счёте основано на одном из них.
История PHP
Абсолютно новый язык программирования получил новое имя. Разработчики отказались от дополнения о персональном использовании, которое имелось в аббревиатуре PHP/FI и язык был переименован в PHP.
История языков программирования
Алгол был разработан в 1958 году на недельной конференции в ETH (Цюрих, Швейцария) как универсальный язык программирования для широкого круга применений, а затем доработан комитетом, созданным Международной федерацией по обработке информации. В комитет вошёл ряд ведущих европейских и американских учёных и инженеров-разработчиков языков, среди которых были Джон Бэкус, Джон Маккарти, Петер Наур, Эдсгер Дейкстра и Джозеф Уэгстен, впоследствии возглавивший комитет по разработке языка Кобол.
История языков программирования
Новая версия появилась в 1960 г., и ALGOL 60 (с небольшими изменениями, сделанными в 1962 г.) с 60-х и до начала 70-х гг. прошлого века был стандартом академического языка программирования.
Си (язык программирования)
Также Си иногда используется как промежуточный язык при компиляции более высокоуровневых языков. Например, по такому принципу работали первые реализации языков С++, Objective-C и Go, — код, написанный на этих языках, транслировался в промежуточное представление на языке Си. Из современных языков, работающих по такому же принципу, стоит отметить язык Vala.
Программирование
Программирование основывается на использовании языков программирования, на которых записываются исходные тексты программ.
Объектно-ориентированное программирование
Первым языком программирования, в котором были предложены основные понятия, впоследствии сложившиеся в парадигму, была Симула, но термин «объектная ориентированность» не использовался в контексте использования этого языка. В момент его появления в 1967 году в нём были предложены революционные идеи: объекты, классы, виртуальные методы и др., однако это всё не было воспринято современниками как нечто грандиозное. Фактически, Симула была «Алголом с классами», упрощающим выражение в процедурном программировании многих сложных концепций. Понятие класса в Симуле может быть полностью определено через композицию конструкций Алгола (то есть класс в Симуле — это нечто сложное, описываемое посредством примитивов).
Delphi (язык программирования)
Так, сложность объектного C++, по сравнению с C, выросла весьма существенно и затруднила его изучение в качестве первого языка программирования, чего нельзя сказать об Object Pascal относительно Pascal.
Oxygene (язык программирования)
Oxygene («Кислород») (ранее известный как "Chrome" "(«Хром»)") — язык программирования, разработанный компанией RemObjects Software для стандарта Common Language Infrastructure. Язык Oxygene был создан на основе языка Object Pascal.
Язык программирования
Со времени создания человечество придумало более восьми тысяч языков программирования (включая эзотерические, визуальные и игрушечные)
. Каждый год их число увеличивается. Некоторыми языками умеет пользоваться только небольшое число их собственных разработчиков, другие становятся известны миллионам людей. Профессиональные программисты могут владеть десятком и более разных языков программирования.
Паскаль (язык программирования)
Паска́ль () — один из наиболее известных языков программирования, используется для обучения программированию в старших классах и на первых курсах вузов, является основой для ряда других языков.
INTERCAL
INTERCAL — один из старейших эзотерических языков программирования. Был создан в 1972 году студентами Доном Вудсом и Джеймсом Лайоном как пародия на существующие языки программирования и как «гимнастика для ума»; как утверждают создатели, его название означает «язык программирования с непроизносимой аббревиатурой» ().
Компьютер
Первые компьютеры создавались исключительно для вычислений (что отражено в названиях «компьютер» и «ЭВМ»). Даже самые примитивные компьютеры в этой области во много раз превосходят людей (если не считать некоторых уникальных людей-счётчиков). Не случайно первым высокоуровневым языком программирования был Фортран, предназначенный исключительно для выполнения математических расчётов.
Форт (язык программирования)
Язык Форт был создан Чарльзом X. Муром в конце 1960-х — начале 1970-х годов. Мур назвал свой язык "Fourth", считая, что это будет язык для ЭВМ четвёртого () поколения. Но так как он работал на машине , которая допускала имена, составленные не более чем из пяти прописных букв, название было преобразовано в "FORTH" ( — вперёд). Впрочем, первые эксперименты Мура по созданию простого интерпретатора, облегчающего написание программ управления астрономическим оборудованием, относятся ещё к концу 1950-х годов.
Ада (язык программирования)
После завершения формирования требований был проведён анализ, который показал, что ни один из имеющихся языков программирования не удовлетворяет требованиям в достаточной мере, так что было принято решение разработать новый язык. Конкурс на его создание был объявлен в 1977 году, разработчикам было предложено базироваться на одном из трёх языков: Паскаль, Алгол-68 или ПЛ/1.
APL (язык программирования)
Язык APL был разработан Кеном Айверсоном, преподававшим тогда в Гарвардском университете, в качестве системы обозначений для описания вычислений. В 1957 вышла его книга "«A Program Language»", в которой эта нотация была описана. В 1960 году Айверсон продолжал работу над APL в IBM. Здесь этот язык использовался для описания машинной архитектуры.
История языков программирования
Теперь, когда была нужна эффективная программа, вместо машинных языков использовались
близкие к ним машиноориентированные языки ассемблера. К таковым относились, например, Autocode, с 1954-го г. — IPL (предшественник языка LISP), с 1955-го г. — FLOW-MATIC . Теперь люди стали использовать мнемонические команды взамен машинных команд.
Altair BASIC
Altair BASIC представлял собой новую веху в истории программ — первый язык программирования для первого персонального компьютера и первый программный продукт компании Microsoft.
E (язык программирования)
E — объектно-ориентированный язык программирования для надежных распределенных вычислений, разработанный Марком С. Миллером, Дэном Борнстейном и другими участниками сообщества (среди них был и Дуглас Кроуфорд) в 1997.
Short Code
Как язык программирования Short Code был предложен Джоном Мокли в 1949 году. Оригинальное название языка, данное автором — Brief Code.
Обобщённое программирование
Обобщённое программирование () — парадигма программирования, заключающаяся в таком описании данных и алгоритмов, которое можно применять к различным типам данных, не меняя само это описание. В том или ином виде поддерживается разными языками программирования. Возможности обобщённого программирования впервые появились в виде дженериков (обобщённых функций) в 1970-х годах в языках Клу и Ада, затем в виде параметрического полиморфизма в ML и его потомках, а затем во многих объектно-ориентированных языках, таких как C++, Java, Object Pascal, D, Eiffel, языках для платформы .NET и других.
APL (язык программирования)
APL был микропрограммно реализован для портативного компьютера IBM 5100, выпускавшегося в 1973—1982 годах, который иногда называют «первым персональным компьютером». На работу с APL был ориентирован и один из первых ноутбуков — выпущенный в 1985 году Ampere WS-1.
История языков программирования
Вначале предлагавшееся название ALGOL (ALGOrithmic Language) было отвергнуто. Но поскольку оно стало общеупотребительным, официальное имя IAL пришлось впоследствии изменить на ALGOL 58.
Программное обеспечение
В 1950-е годы появились первые высокоуровневые языки программирования, Джон Бэкус разработал FORTRAN, а Грейс Хоппер — COBOL. Подобные разработки значительно упростили написание прикладного программного обеспечения, которое писала тогда каждая фирма, приобретающая вычислительную машину.
Алгол 68
Работа комитета длилась в течение шести лет — с 1962 по 1968 годы. Довольно быстро комитету удалось выполнить первую задачу — согласовать сокращённое подмножество Алгола, содержащее только широко используемые его элементы. Вопрос же о языке-преемнике решался в течение нескольких лет, в постоянных дискуссиях. Двое членов комитета: Чарльз Хоар из Оксфордского университета и Никлаус Вирт из Швейцарии (в то время он преподавал в США, в Станфордском университете) в 1965 году предложили комитету свой вариант нового языка, названного ими Algol-W. Он представлял собой умеренную переработку Алгола, очищенную от известных недостатков и дополненную минимумом необходимых возможностей. Будучи опубликован, проект был положительно оценён многими учёными, но комитет отклонил его. Предложений, различной степени проработанности, было много, часть из них отвергалась, часть была использована в проектировании языка. В декабре 1968 года в Мюнхене, на заседании комитета был официально представлен новый язык программирования, получивший название Алгол 68. Язык оказался чрезвычайно развитым, но при этом весьма объёмным и сложным. Даже опытные программисты испытывали затруднения в понимании «сообщения о языке», выпущенного комитетом.
ПЛ/1
ПЛ/1 (PL/I, "Programming Language I" — «Язык программирования номер один», в русском языке произносится «пиэ́ль оди́н») — разработанный в 1964 году язык программирования, созданный для научных, инженерных и бизнес-ориентированных вычислений. Он содержит такой широкий набор синтаксических конструкций и встроенных функций, что, вероятно, не существует ни одного компилятора, поддерживающего все возможности языка ПЛ/1. ПЛ/1 поддерживает рекурсию и структурное программирование, широко применялся в обработке данных. Настоящее международное название языка PL/I (из латинских литер, как и PL/M, PL/S) в СССР не прижилось.Первоначальный алфавит ПЛ/1 включал 60 символов: codice_1 и пробел.
Clarion (язык программирования)
Язык программирования Clarion был разработан Брюсом Баррингтоном в 1984 г. В своей статье он так описывает историю его создания: «Как это часто бывает, я просто пытался доставить себе удовольствие. Я купил свой первый персональный компьютер, смотрел на него и хотел писать программы для него. Это моя работа. Моим стимулом в работе было убеждение, что программирование должно быть проще, что языки программирования должны облегчать чтение и написание программ и что низкая производительность, связанная с процессом разработки программ, коренится в неадекватных и слабо спроектированных инструментальных средствах программирования». Первоначально проект создавался в рамках компании "HBO & Company", но затем был выкуплен McKesson Corporation
Учебный язык программирования
Хотя Пролог — язык, с которого началось логическое программирование, — редко рассматривают как язык начального обучения, он легко осваивается теми, кто только начинает изучать программирование. Этому способствует его ориентированность на человеческое мышление, простой, единообразный синтаксис и отсутствие таких конструкций, как ветвления или циклы. Простота изучения была одной из целей дизайна языка, хотя этот язык остаётся недопонятым. Одна из причин малой распространённости Пролога в начальном обучении — отсутствие в нём удобных средств работы с интерактивной графикой, которая не слишком гладко вписывается в чистое декларативное программирование.
История языков программирования
Следующий шаг был сделан в 1954 году, когда была начата разработка языка высокого уровня — Фортран (), компилятор для которого впервые появился в апреле 1957 года. К разработке такого языка подтолкнули новые возможности внедрённого в 1954 году компьютера IBM 704, в котором на аппаратном уровне были реализованы индексная адресация и операции с плавающей точкой. Вслед за ним появились и некоторые другие языки, например: LISP, ALGOL 58, FACT. Языки высокого уровня имитируют естественные языки, используя некоторые слова разговорного языка и общепринятые математические символы. Эти языки более удобны для человека, с помощью них можно писать программы до нескольких тысяч строк длиной. Условными словами можно было, как привычно человеку, гораздо более просто выразить сложную программную операцию из битов. Однако ранние варианты Фортрана значительно уступают поздним концепциям и языкам, использовался он для создания относительно простых по современным меркам программ.
Алгол 68
Несмотря на неудачу, Алгол 68 повлиял на разработчиков более поздних объектно-ориентированных языков, в частности C++, хотя многие возможности были отброшены, а часть — реализована другими способами. В 1977 году, когда комитет по языку программирования Министерства обороны США пришёл к выводу о необходимости разработки нового языка программирования встроенных систем, по решению комитета, предложения по будущему языку должны были базироваться на одном из языков PL/1, Pascal и Алгол 68. Таким образом, у Алгола-68 был шанс стать прародителем нового универсального языка, но этот шанс не осуществился: из 15 представленных на конкурс проектов все 4, отобранные на второй этап для доработки, были основаны на языке Pascal. После ещё одного этапа доработки лучший из этих проектов стал языком Ада.
Программист
Аду Августу, графиню Лавлейс, принято считать почётным первым программистом (хотя, конечно, написание одной программы по современным меркам не может считаться родом занятий или профессиональной деятельностью). История сохранила её имя в названии универсального языка программирования «Ада».
Язык программирования
В это же время, в 1940-е годы, появились электрические цифровые компьютеры и был разработан язык, который можно считать первым высокоуровневым языком программирования для ЭВМ — «Plankalkül», созданный немецким инженером К. Цузе в период с 1943 по 1945 годы.
Функциональное программирование
Язык обработки информации (, IPL) иногда определяется как самый первый машинный функциональный язык. Это язык ассемблерного типа для работы со списком символов. В нём было понятие «генератора», который использовал функцию в качестве аргумента, а также, поскольку это язык ассемблерного уровня, он может позиционироваться как язык, имеющий функции высшего порядка. Однако, в целом IPL акцентирован на использование императивных понятий.
Язык программирования
Конкретный язык программирования в подавляющем большинстве случаев имеет более одного языка-предка. Многие языки создаются как сочетание элементов различных языков. В одних случаях такое сочетание проходит математический анализ на предмет непротиворечивости (см., например, Определение), в других — язык формируется исходя из практических потребностей, для решения актуальных проблем с целью получения коммерческого успеха, но при этом без соблюдения математической строгости и с включением в язык взаимоисключающих идей (как в случае C++).
Программист
Первым программируемым устройством принято считать жаккардовый ткацкий станок, построенный в 1804 году Жозефом Мари Жаккаром, который произвёл революцию в ткацкой промышленности, предоставив возможность программировать узоры на тканях при помощи перфокарт.
Blue (язык программирования)
Blue — система обучения объектно-ориентированному программированию, создана в Сиднейском университете (Австралия). Это одновременно IDE и язык программирования. Blue был разработан и и использовался для обучения с 1997 года. Разработка закончена 1999 году, когда один из принципиальных разработчиков системы Майкл Кёллинг начал применять к IDE вид Java, в результате чего вышел BlueJ.
Язык программирования
Языки первого порядка позволяют воплощать в виде кода алгоритмы, но не архитектуру программ. По мнению , это ограничение унаследовано языком Алгол (а от него другими языками) из классической математики, где используются только константные операции и функции, однозначно распознаваемые вне контекста, и отсутствует систематичная нотация для произвольной работы с функциями (в качестве такой нотации в 1930-х годах было построено лямбда-исчисление, которое позже легло в основу языков высшего порядка). "Схемы взаимодействия" компонентов (процедур, функций, объектов, процессов и др.) для программ на языках первого порядка могут существовать лишь на условном уровне, вне самих программ. Со временем были обнаружены многократно повторяющиеся "однотипные" схемы такого рода, в результате чего вокруг них выстроилась самостоятельная методология — шаблоны проектирования. Языки высшего порядка позволяют воплощать такие схемы в виде исполнимого кода, пригодного для многократного использования (функций, предназначенных для преобразования и композиции других функций — см., например, конверторы и сканеры в SML). В результате, решения, которые на языках первого порядка могут быть представлены фрагментами программ (порой довольно сложными и громоздкими), на языках высшего порядка могут сокращаться до одной команды или вообще использования элемента семантики самого языка, не имеющего синтаксического выражения. Например, шаблон «Команда», часто применяемый в языках первого порядка, эквивалентен непосредственно самому понятию функции первого класса. То же распространяется и на более высокие слои языков — типизацию (см. полиморфизм в высших рода́х) и типизацию типизации (см. полиморфизм родо́в).
Теория языков программирования
В некотором смысле история теории языка программирования предшествует даже развитию самих языков программирования. В частности, λ-исчисление, разработанное Алонзо Чёрчем и Стивеном Клини в 1930-х годах, фактически является первым языком программирования, даже при том, что оно было предназначено больше для теоретических вопросов вычислимости, нежели является средством для программистов; многие современные функциональные языки программирования являются вариантами λ-исчисления. Дальнейшая история теории тесно переплетена с историей языков программирования, при этом в рамках теоретических исследований создавались новые парадигмы, конструкции и методы, а результаты внедрения их в практические языки программирования обеспечивали обратную связь для развития теории.
X10 (язык программирования)
X10 — язык программирования, разработанный корпорацией IBM в исследовательском центре имени Томаса Уотсона как часть проекта PERCS, спонсируемого в рамках программы Высокопродуктивные компьютерные системы (High Productivity Computing Systems или сокр. HPCS) Агентства по перспективным оборонным научно-исследовательским разработкам США. Первыми авторами стали Кемаль Эбсиоглу, Вияй Сарасват и Вивек Саркар.
История языков программирования
Также создавались "функциональные" (аппликативные) языки (Пример: Lisp — , 1958) и "логические" языки (пример: Prolog — , 1972).
История языков программирования
Физические принципы работы электронных устройств ЭВМ таковы, что компьютер может воспринимать команды, состоящие только из единиц и нулей — последовательность перепада напряжения, то есть машинный код. На начальной стадии развития ЭВМ человеку было необходимо составлять программы на языке, понятном компьютеру, в машинных кодах. Каждая команда состояла из кода операций и адресов операндов, выраженных в виде различных сочетаний единиц и нулей. Итак, любая программа для процессора выглядела на то время как последовательность единиц и нулей.
Компилируемый язык программирования
Компилируемый язык программирования — язык программирования, исходный код которого преобразуется компилятором в машинный код и записывается в файл с особым заголовком и/или расширением для последующей идентификации этого файла, как исполняемого операционной системой (в отличие от интерпретируемых языков программирования, чьи программы выполняются программой-интерпретатором).
Язык программирования
Некоторые языки (например, Basic или классический Pascal Вирта) ориентированы исключительно на разработку мелких, структурно простых программ. Они не обеспечивают ни развитой системы модулей, ни гибкости конкретных фрагментов. Язык Си создавался как «высокоуровневый ассемблер», что само по себе не предполагает разработку систем выше некоторого порога сложности, поэтому поддержка крупномасштабного программирования в него заложена также не была. Некоторые языки высокого и сверх-высокого уровня (Erlang, Smalltalk, Prolog) предоставляют в качестве базовых примитивных элементов концепции, которые в других языках представляются конструктивно и алгоритмически сложными (процессы, классы, базы знаний) — аналогично разнообразным математическим исчислениям ("см. также" концептуальная целостность языков). Поэтому такие языки нередко рассматриваются в роли предметно-специфичных — на них выглядят простыми некоторые (но далеко не все) задачи, которые на других языках выглядят сложными. Однако, расширение функциональности в других аспектах на этих языках может оборачиваться затруднениями. и его родственники расслаиваются на два языка, из которых один — «"язык-ядро"» () — ориентирован на разработку простых программ, а другой — «язык модулей» (),— соответственно, на нелинейную компоновку их в сложные программные системы. Со временем были построены варианты слияния их воедино (1ML). Многие другие языки также включают системы модулей, но большинство из них являются "языками модулей первого порядка". Язык модулей ML является единственным в своём роде "языком модулей высшего порядка". Языки Lisp и Forth позволяют наращивать системы произвольно и безгранично, в том числе позволяя создавать встраиваемые предметно-специфичные языки внутри себя (как своё синтаксическое и семантическое подмножество) — поэтому их нередко называют метаязыками.
Цикл (программирование)
Хотя цикл Дейкстры был изобретён ещё в 1970-х годах, специальных конструкций для его создания в языках программирования не содержится. Единственным исключением стал недавно созданный Оберон-07 — первый реальный язык программирования, явно поддерживающий цикл с несколькими охраняемыми ветвями. Впрочем, цикл Дейкстры может быть без больших затруднений смоделирован с помощью традиционных конструкций структурных языков программирования. Вот пример его реализации одним из возможных способов на языке Ада:
loop
end loop;
Здесь P1—Pn — охраняющие условия, а S1—Sn — соответствующие охраняемые команды.
Язык программирования
Более условно языки делятся на поколения. Первые два поколения являются низкоуровневыми, то есть ориентированными на специфику конкретного аппаратного обеспечения, и в принципе не соотносятся с какой-либо парадигмой (хотя конкретный разработчик на них, разумеется, может идеологически следовать определённым тенденциям). Вместе с третьим поколением они формируют императивную парадигму программирования, а последующие поколения — декларативную ("более подробно см. раздел" Языки низкого и высокого уровня). Многие декларативные языки включают в себя определённые императивные возможности, иногда — наоборот.
Perl
Perl — высокоуровневый интерпретируемый динамический язык программирования общего назначения, созданный Ларри Уоллом, лингвистом по образованию. Название языка официально расшифровывается как («практический язык для извлечения данных и составления отчётов»), а в шутку — как («патологически эклектичный перечислитель мусора»); разработчики языка не считают его название акронимом. Первоначально название состояло из пяти символов и в таком виде в точности совпадало с английским словом («жемчужина»). Но затем стало известно, что такой язык существует (см. ), и букву «a» убрали. Символом языка Perl является верблюд — не слишком красивое, но очень выносливое животное, способное выполнять тяжёлую работу.
FALSE
FALSE стал одним из первых эзотерических языков программирования, в частности он послужил источником вдохновения для автора знаменитого языка Brainfuck. Не будет большим преувеличением сказать, что именно с FALSE началась мода на эзотерические языки программирования.
Python
Разработка языка Python была начата в конце 1980-х годов сотрудником голландского института CWI Гвидо ван Россумом. Для распределённой ОС Amoeba требовался расширяемый скриптовый язык, и Гвидо начал писать Python на досуге, позаимствовав некоторые наработки для языка ABC (Гвидо участвовал в разработке этого языка, ориентированного на обучение программированию). В феврале 1991 года Гвидо опубликовал исходный текст в группе новостей alt.sources. С самого начала Python проектировался как объектно-ориентированный язык.
Название языка произошло вовсе не от вида пресмыкающихся. Автор назвал язык в честь популярного британского комедийного телешоу 1970-х «Летающий цирк Монти Пайтона». Впрочем, всё равно название языка чаще связывают именно со змеёй, нежели с передачей — пиктограммы файлов в KDE или в Microsoft Windows и даже эмблема на сайте python.org (до выхода версии 2.5) изображают змеиные головы. Важная цель разработчиков Python — создавать его забавным для использования. Это отражено в его названии, которое пришло из Монти Пайтона. Также это отражено в иногда игривом подходе к обучающим программам и справочным материалам, таким как примеры использования, которые используют понятия ветчины (spam) и яиц вместо стандартных foo и bar.
Интерпретатор
Первым интерпретированным языком программирования высокого уровня был Lisp. Его интерпретатор был создан в 1958 году на компьютере IBM 704. Рассел вдохновился работой Джона Маккарти и выяснил, что функция codice_1 в Lisp может быть встроена в машинный код.
Orwell (язык программирования)
Orwell — это небольшой функциональный язык программирования с ленивыми вычислениями, реализованный главным образом Мартином Расковским и впервые выпущенный Филиппом Уодлером в 1984 году, когда он работал научным сотрудником в группе по программированию, входящей в состав вычислительной лаборатории Оксфордского университета. Разработанный как бесплатная альтернатива Miranda, он был предшественником Haskell и был одним из первых языков программирования, который поддерживал понимание списков и сопоставление с образцом.
Паскаль (язык программирования)
Особенностями языка являются строгая типизация и наличие средств структурного (процедурного) программирования. Паскаль был одним из первых таких языков. По мнению Вирта, язык должен способствовать дисциплинированному программированию, поэтому, наряду со строгой типизацией, в Паскале сведены к минимуму возможные синтаксические неоднозначности, а сам синтаксис автор постарался сделать интуитивно понятным даже при первом знакомстве с языком.
Программируемый калькулятор
Первые калькуляторы, программируемые на языке высокого уровня, реализовывали ограниченное подмножество языка Бейсик, специально адаптированного под использование в калькуляторе. До настоящего времени калькуляторы, программируемые на ЯВУ, используют либо Basic, либо собственный язык, построенный по его образцу. Среди немногочисленных исключений из этого правила — язык Reverse Polish Lisp (RPL), применяемый в калькуляторах Hewlett-Packard, и Lua, используемый в последних моделях калькуляторов Texas Instruments. Наиболее мощные и сложные из выпускаемых сейчас калькуляторов имеют системы кросс-компиляции с языка Си и загрузки исполняемого кода.
Java
Java — сильно типизированный объектно-ориентированный язык программирования, разработанный компанией Sun Microsystems (в последующем приобретённой компанией Oracle). Приложения Java обычно транслируются в специальный байт-код, поэтому они могут работать на любой компьютерной архитектуре с помощью виртуальной Java-машины. Дата официального выпуска — 23 мая 1995 года. На 2018 год Java — один из самых популярных языков программирования.
TeX
Он планировал завершить систему во время своего творческого отпуска 1978 года, но финальная версия языка появилась на свет лишь в 1979 году. Летом 1978 года, когда Кнут писал первую версию TeX’а, в Стэнфорде находился . Осенью того же года он вернулся в MIT и переписал систему ввода-вывода TeX под операционную систему . Первая версия TeX’а была написана на языке программирования и работала на PDP-10 под операционной системой . Для следующих версий Кнут изобрёл концепцию «грамотного программирования» (), способ получения совместимого исходного кода и документации к нему (конечно, в виде текста на TeX’е) из одного и того же оригинального файла. Этот язык был назван и производил программы на Паскале.
Функциональное программирование
Кеннет Е. Айверсон разработал язык APL в начале шестидесятых, документировав его в своей книге A Programming Language (ISBN 978-0-471-43014-8). APL оказал значительное влияние на язык , созданный Джоном Бэкусом. В начале девяностых Айверсон и создали преемника APL — язык программирования J. В середине девяностых , ранее работавший с Айверсоном, создал язык K, который впоследствии использовался в финансовой индустрии на коммерческой основе.
J (язык программирования)
Язык программирования J был разработан в начале 1990-х Кеннетом Айверсоном и как синтез APL (также разработанного Айверсоном) и языков комбинаторного программирования и , разработанных Бэкусом.
Основные его черты — это ориентированность на MIMD инструкции, функциональный подход (переменные исключены вообще, вместо них действует механизм переименований и комбинаторы).
ПЛ/1
Язык изначально был назван NPL (New Programming Language — «новый язык программирования»), но эта аббревиатура уже использовалось британской Национальной физической лабораторией (National Physics Laboratory). Поэтому название изменили на ПЛ/1.
Функциональное программирование
В семидесятых в университете Эдинбурга Робин Милнер создал язык ML, а Дэвид Тернер начинал разработку языка SASL в университете Сент-Эндрюса и, впоследствии, язык Miranda в университете города Кент. В конечном итоге на основе ML были созданы несколько языков, среди которых наиболее известные Objective Caml и Standard ML. Также в семидесятых осуществлялась разработка языка программирования, построенного по принципу Scheme (реализация не только функциональной парадигмы), получившего описание в известной работе «Lambda Papers», а также в книге восемьдесят пятого года «Structure and Interpretation of Computer Programs».
История языков программирования
С середины 50-х гг. XX в. начали создавать первые языки программирования высокого уровня (high-level programming languages). Эти языки не были привязаны к определенному типу ЭВМ (машинонезависимы). Для каждого из них были разработаны собственные компиляторы. Компиляция — трансляция программы, составленной на исходном языке высокого уровня, в эквивалентную программу на низкоуровневом языке, близком машинному коду (абсолютный код, объектный модуль, иногда язык ассемблера).
Миранда (язык программирования)
Название языка происходит от имени героини пьесы «Буря» Уильяма Шекспира, Миранды. В ней она произносит фразу «О дивный новый мир!», что, по словам создателей, должно принести «дивный новый мир в функциональное программирование». Также героиня изображена на логотипе языка.
ML
ML (Meta Language) — семейство строгих языков функционального программирования с развитой параметрически полиморфной системой типов и параметризуемыми модулями. Подобная система типов была раньше предложена Роджером Хиндли в 1969 году и сейчас часто называется системой Хиндли-Милнера. Языки данного семейства в большинстве своём не являются чистыми функциональными языками, так как включают и императивные инструкции (но есть исключения — например, Manticore). ML преподаётся во многих западных университетах (в некоторых даже как первый язык программирования).
Поколения языков программирования
К первому поколению (, 1GL) относят машинные языки — языки программирования на уровне команд процессора конкретной машины. Для программирования не использовался транслятор, команды программы вводились непосредственно в машинном коде переключателями на передней панели машины. Такие языки были хороши для детального понимания функционирования конкретной машины, но сложны для изучения и решения прикладных задач.
История языка программирования Python
История языка программирования Python началась в конце 1980-х. Гвидо ван Россум задумал Python в 1980-х годах, а приступил к его созданию в декабре 1989 года в центре математики и информатики в Нидерландах. Язык Python был задуман как потомок языка программирования ABC, способный к обработке исключений и взаимодействию с операционной системой Амёба. Ван Россум является основным автором Python и продолжал выполнять центральную роль в принятии решений относительно развития языка вплоть до 12 июля 2018 года.
История языков программирования
Во второй половине 50-х интернациональная команда разработчиков попыталась создать универсальный язык программирования. В результате появился ALGOL 58 (), по многим параметрам являвшийся наследником Фортрана. В него были добавлены новые концепции и обобщения, формализована концепция типов данных, разрешено использование идентификаторов любой длины, когда в Фортране было ограничение в 6 символов. Этот вариант языка был скорее черновым, поэтому в январе 1960 года в Париже состоялось второе собрание комитета по его разработке, где было решено внести значительные изменения. Новый вариант получил название ALGOL 60, основными новшествами в нём были: концепция блочной структуры, возможность создания рекурсивных процедур, автоматические массивы. Несмотря на свои многочисленные достоинства, ALGOL так и не получил большого распространения, в первую очередь из-за сложности в его реализации и отсутствии поддержки от корпорации IBM.
Учебный язык программирования
Язык Logo, появившийся на свет между Бейсиком и Паскалем, стал первым языком программирования, изначально предназначенным для обучения "детей". Этот язык можно рассматривать как диалект Лиспа — языка, с которого началось функциональное программирование. Хотя этот язык более известен своей черепашьей графикой и рассматривается как первый из графических исполнителей, но такие черты Лиспа, как управление последовательностью действий через рекурсию и списки в качестве основной структуры данных, также остаются свойствами этого (мультипарадигмального по своей сути) языка.
Функциональное программирование
Первым функциональным языком был Лисп, созданный Джоном Маккарти в период его работы в Массачусетском технологическом институте в конце пятидесятых и реализованный, первоначально, для . В Лиспе впервые введено множество понятий функционального языка, хотя при этом в языке применяется не только парадигма функционального программирования. Дальнейшим развитием Лиспа стали такие языки как Scheme и Dylan.
Пролог (язык программирования)
Пролог ("англ." Prolog) — язык и система логического программирования, основанные на языке предикатов математической логики дизъюнктов Хорна, представляющей собой подмножество логики предикатов первого порядка.
История языков программирования
Ассемблер — язык программирования низкого уровня. Язык программирования низкого уровня — язык программирования, который ориентирован на конкретный тип процессора и учитывает его особенности. В данном случае «низкий уровень» не значит «плохой». Имеется в виду, что операторы языка близки к машинному коду и ориентированы на конкретные команды процессора. Появление языка ассемблера значительно облегчило жизнь программистов, так как теперь вместо рябящих в глазах нулей и единиц, они могли писать программу командами, состоящими из символов приближенных к обычному языку. Для того времени этот язык был новшеством и пользовался популярностью так как позволял писать программы небольшого размера, что при тех машинах критерий значительный.
Java
Изначально язык назывался Oak («Дуб»), разрабатывался Джеймсом Гослингом для программирования бытовых электронных устройств. Из-за того, что язык с таким названием уже существовал, вскоре Oak был переименован в Java. Назван в честь марки кофе Java, которая, в свою очередь, получила наименование одноимённого острова (Ява), поэтому на официальной эмблеме языка изображена чашка с горячим кофе. Существует и другая версия происхождения названия языка, связанная с аллюзией на кофе-машину как пример бытового устройства, для программирования которого изначально язык создавался. В соответствии с этимологией в русскоязычной литературе с конца двадцатого и до первых лет двадцать первого века название языка нередко переводилось как Ява, а не транскрибировалось, как это стало общепринятым позднее.
Лого (язык программирования)
Ло́го () — язык программирования высокого уровня, разработанный в 1967 году , Сеймуром Пейпертом и в образовательных целях для обучения детей дошкольного и младшего школьного возраста основным концепциям программирования (рекурсии, расширяемости и пр.).
Short Code
Short Code ("Короткий код") — один из первых языков программирования высокого уровня из когда-либо разрабатываемых для вычислительных машин. Short Code представляет собой уже не набор машинных кодов, как это было раньше, а полноценные математические выражения, которые затем интерпретируются в машинный код.
История языков программирования
В то время сообщество относилось скептически к новому способу программирования и не верили в то, что Fortran позволит программировать быстрее и эффективнее. По словам самого Джона Бэкуса, большая часть его работы была направлена на то, чтобы «быть ленивым». Ему жутко не нравилось писать программы под IBM 701 на ассемблере.
Язык программирования
С середины 1950-х начали появляться языки третьего поколения, такие как Фортран, Лисп и Кобол. Языки программирования этого типа более абстрактны (их ещё называют «языками высокого уровня») и универсальны, не имеют жёсткой зависимости от конкретной аппаратной платформы и используемых на ней машинных команд. Программа на языке высокого уровня может исполняться (по крайней мере, в теории, на практике обычно имеются ряд специфических версий или диалектов реализации языка) на любой ЭВМ, на которой для этого языка имеется транслятор (инструмент, переводящий программу на язык машины, после чего она может быть выполнена процессором).
Наследование (программирование)
В ряде языков программирования, все классы, — явно или неявно, — наследуются от некого базового класса. «Smalltalk» был одним из первых языков, в которых использовалась эта концепция. К таким языкам также относятся: «Objective-C» (класс codice_1), «Perl» (codice_2), «Eiffel» (codice_3), «Java» (codice_4), «C#» (codice_5), «Delphi» (codice_6), «Scala» (codice_7).
Параметрическое программирование (ЧПУ)
Исторически первый язык программирования станков с ЧПУ — G-код по своей сути является языком описания циклограмм движения обрабатывающего инструмента, включения/выключения шпинделя, подачи смазочно-охлаждающих жидкостей (СОЖ) и других действий и не имеет средств текущей проверки состояния процесса обработки. Например, при поломке обрабатывающего инструмента или отсутствии СОЖ, циклограмма, описанная G-кодом, будет бесполезно продолжаться или исполняться опасно для оборудования до вмешательства оператора или окончания G-кода. Для устранения этого существенного недостатка G-кода и были разработаны языки параметрического программирования.
Фортран
Фортра́н () — первый язык программирования высокого уровня, получивший практическое применение, имеющий транслятор и испытавший дальнейшее развитие. Создан в период с 1954 по 1957 год группой программистов под руководством Джона Бэкуса в корпорации IBM. Название Fortran является сокращением от FORmula TRANslator (переводчик формул). Фортран широко используется в первую очередь для научных и инженерных вычислений. Одно из преимуществ современного Фортрана — большое количество написанных на нём программ и библиотек подпрограмм.
Ада (язык программирования)
В языках программирования Е и Clarity, затем во множестве других: например в языках Erlang, Fortress, Chapel, X10, D и Go получили дальнейшее развитие идеи распределённых, многозадачных, многопоточных вычислений, которые реализованы самим языком а не внешними библиотеками, впервые широко применённые на практике именно в языке Ада.
Бейсик
Несмотря на то, что язык уже использовался на нескольких мини-компьютерах, его настоящее распространение началось с его появления на микрокомпьютере Альтаир 8800. Многие языки программирования были слишком большими, чтобы поместиться в небольшую память, которую пользователи таких машин могли себе позволить. Для машин с таким медленным носителем, как бумажная лента (позднее — аудиокассета), и без подходящего текстового редактора такой небольшой язык, как Бейсик, был отличной находкой.
Логическое программирование
Первым языком логического программирования был язык Planner, в котором была заложена возможность автоматического вывода результата из данных и заданных правил перебора вариантов (совокупность которых называлась планом). Planner использовался для того, чтобы понизить требования к вычислительным ресурсам (с помощью бэктрекинга — поиска с возвратом) и обеспечить возможность вывода фактов, без активного использования стека. Затем был разработан язык Prolog, который не требовал плана перебора вариантов и был, в этом смысле, упрощением языка Planner.
Логлан
С развитием компьютерных технологий и информатики появилась идея сделать логлан первым человеческим языком, понятным искусственному интеллекту. К этому моменту его грамматика уже была сильно развита, однако в нём всё же прослеживалось несколько «неоднозначностей». В 1975 году трое американских учёных: Альфред Ахо, Дэвид Стифлер Джонсон и Джеффри Ульман создали алгоритм, позволяющий отыскивать конфликты в языках программирования и удалять их, через два года началась работа над так называемым «проектом машинной грамматики логлана» (). В 1982 году проект был успешно завершён, и логлан, претерпев незначительные изменения, стал первым в мире языком с грамматикой без логических конфликтов. Изменения коснулись в основном системы пунктуации, именно во время проекта появилась произносимая пунктуация (смотрите ниже).
Scala (язык программирования)
Первые версии языка созданы в 2003 году коллективом лаборатории методов программирования Федеральной политехнической школы Лозанны под руководством Мартина Одерски, язык реализован для платформ Java и JavaScript. По мнению , создателя языка программирования Groovy, Scala может стать преемником языка Java.
ПЛ/1
ПЛ/1 был, вероятно, первым "коммерческим" языком, компилятор для которого писался на компилируемом языке. (Подобные "экспериментальные" языки были и раньше: например, NELIAC был разработан как минимум за 5 лет до ПЛ/1).
История языков программирования
Первым объектно-ориентированным языком программирования является Симула-67, в котором впервые появились классы. Концепции ООП получили дальнейшее развитие в языке Smalltalk, в котором также были заложены основы систем с оконным управлением. Более поздними примерами объектно-ориентированных языков являются Object Pascal, C++, Java, C# и др.
R (язык программирования)
R — язык программирования для статистической обработки данных и работы с графикой, а также свободная программная среда вычислений с открытым исходным кодом в рамках проекта GNU. Язык создавался как аналогичный языку S, разработанному в Bell Labs, и является его альтернативной реализацией, хотя между языками есть существенные отличия, но в большинстве своём код на языке S работает в среде R. Изначально R был разработан сотрудниками статистического факультета Оклендского университета Россом Айхэкой () и Робертом Джентлменом () (первая буква их имён — R); язык и среда поддерживаются и развиваются организацией "R Foundation".
Пролог (язык программирования)
Начало истории языка относится к 1970-м годам. Будучи декларативным языком программирования, Пролог воспринимает в качестве программы некоторое описание задачи или баз знаний и сам производит логический вывод, а также поиск решения задач, пользуясь механизмом поиска с возвратом и унификацией.
Программная инженерия
Первые языки программирования стали появляться в 1950-х годах, и это был ещё один важный шаг в абстракции. Основные языки, такие как Фортран, Алгол и Кобол, были выпущены в конце 1950-х для решения научных, алгоритмических и бизнес-задач соответственно. Дейкстра написал свою известную статью «Go To Statement Considered Harmful» в 1968 году, а Дэвид Парнас ввёл ключевое понятие модульности и скрытия информации в 1972 году, чтобы помочь программистам справляться со всё более и более сложными программными системами. Системное программное обеспечение для управления аппаратным, названное «операционная система», было представлено компанией Unix в 1969 году. В 1967 году язык Симула ввёл понятие объектно-ориентированной парадигмы программирования.
Оберон (язык программирования)
По утверждению Вирта, разработчики языка Java за несколько лет до её создания «изучили исходные коды Оберона и, в частности, исходные коды обероновских сборщиков мусора. Потом они испортили Оберон синтаксисом Си и назвали получившееся словом Java». Хотя от устного выступления нельзя требовать абсолютной точности формулировок, но во всяком случае несомненное сходство идеологий Оберона и Java (стремление к минимализму и строгой типизации, ограничение множественного наследования, автоматическое управление памятью) говорит о том, что здесь имеет место определённый консенсус относительно того, какие средства должны составлять ядро современного языка программирования общего назначения. Однако если в Обероне и его прямых наследниках минимализм остаётся во главе угла, разработчики Java пошли по пути экстенсивного наращивания возможностей языка.
Си (язык программирования)
В 1983 году Американский национальный институт стандартов (ANSI) сформировал комитет для разработки стандартной спецификации Си. По окончании этого долгого и сложного процесса в 1989 году он был наконец утверждён как «Язык программирования Си» "ANSI X3.159-1989". Эту версию языка принято называть "ANSI C" или C89. В 1990 году стандарт ANSI C был принят с небольшими изменениями Международной организацией по стандартизации (ISO) как "ISO/IEC 9899:1990".
Short Code
История языков программирования
Microsoft Visual Programming Language
Microsoft Visual Programming Language или MVPL — язык визуального и поточного программирования, разработанный корпорацией Microsoft для своей Microsoft Robotics Developer Studio. Microsoft Visual Programming Language выделяется среди прочих языков программирования Microsoft, таких как например, Visual Basic и C#, тем, что он единственный является настоящим языком визуального программирования. Microsoft использует термин «Visual» («визуальный») в своих предыдущих программных продуктах чтобы подчеркнуть, что большая часть разработки на таких языках может быть выполнена путём переноса объектов мышкой по принципу «drag-and-drop».