Добавлен: 04.04.2023
Просмотров: 208
Скачиваний: 1
Введение
Процесс работы компьютера заключается в выполнении программы, то есть набора вполне определённых команд во вполне определённом порядке. Машинный вид команды, состоящий из нулей и единиц, указывает, какое именно действие должен выполнить центральный процессор. Чтобы задать компьютеру последовательность действий, которые он должен выполнить, нужно задать последовательность двоичных кодов соответствующих команд. Программы в машинных кодах состоят из тысячи команд. Написание таких программ – занятие сложное и утомительное. Программист должен помнить комбинацию нулей и единиц двоичного кода каждой команды, а также двоичные коды адресов данных, используемых при её выполнении. Гораздо проще написать программу на каком-нибудь языке, более близком к естественному человеческому языку, а работу по переводу этой программы в машинные коды поручить компьютеру. Так возникли языки, предназначенные специально для написания программ.
Язык программирования – формальная знаковая система, предназначенная для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, задающих внешний вид программы и действия, которые выполнит исполнитель (компьютер) под ее управлением.
Создатели языков по–разному толкуют понятие язык программирования. К наиболее распространенным утверждениям, признаваемым большинством разработчиков, относятся следующие:
– Функция: язык программирования предназначен для написания компьютерных программ, которые применяются для передачи компьютеру инструкций по выполнению того или иного вычислительного процесса и организации управления отдельными процессами.
– Задача: язык программирования отличается от естественных языков тем, что предназначен для передачи команд и данных от человека компьютеру, в то время как естественные языки используются для общения людей между собой. В принципе, можно обобщить определение «языков программирования» – это способ передачи команд, приказов, четкого руководства к действию, тогда как человеческие языки служат только для обмена информацией.
– Исполнение: язык программирования может использовать специальные конструкции для определения и манипуляции структурами данных и управления процессом вычислений.
Язык программирования чаще всего представлен в виде набора спецификаций, определяющих его синтаксис и семантику. Для многих языков программирования созданы международные стандарты. Специальные организации проводят регулярное обновление спецификаций и формальных определений соответствующего языка, а также продолжают разработку и модернизацию языков программирования.
Со времени создания первых программируемых машин человечество придумало уже более двух с половиной тысяч языков программирования и каждый год их число пополняется новыми. Некоторыми языками умеет пользоваться только небольшое число их собственных разработчиков, другие становятся известны миллионам людей. Профессиональные программисты иногда применяют в своей работе более десятка разнообразных языков программирования.
1. История языков программирования
Первые языки программирования
В 1940-х первые узнаваемо современные электрически приведенные в действие компьютеры были созданы. Ограниченная скорость и объем памяти вынудили программистов написать, что рука настроила программы ассемблера. Было в конечном счете понято, что программирование на ассемблере потребовало большого интеллектуального усилия и было подвержено ошибкам.
Первые языки программирования, разработанные, чтобы сообщить инструкции к компьютеру, были написаны в 1950-х. Ранним языком программирования высокого уровня, который будет разработан для компьютера, был Plankalkül, развитый для немецкого Z3 Конрадом Цузе между 1943 и 1945. Однако это не было осуществлено до 1998 и 2000.
Короткий код Джона Мочли, предложенный в 1949, был одним из первых языков высокого уровня, когда-либо развитых для электронно-вычислительной машины. В отличие от машинного кода, заявления Короткого кода представляли математические выражения в понятной форме. Однако программа должна была быть переведена на машинный код каждый раз, когда это бежало, делая процесс намного медленнее, чем управление эквивалентным машинным кодом.
В Манчестерском университете Алик Гленни развил Автокодекс в начале 1950-х. Язык программирования, это использовало компилятор, чтобы автоматически преобразовать язык в машинный код. Первый кодекс и компилятор развили в 1952 для Марка 1 компьютер в Манчестерском университете и, как полагают, являются первым собранным языком программирования высокого уровня.
Второй автокодекс развил для Марка 1 Р. А. Брукер в 1954 и назвали «Марком 1 Автокодексом». Брукер также развил автокодекс для Меркурия Ferranti в 1950-х вместе с Манчестерским университетом. Версия для EDSAC 2 была создана Д. Ф. Хартли из Кембриджского университета Математическая Лаборатория в 1961. Известный как Автокодекс EDSAC 2, это было прямым развитием из Mercury Autocode, адаптированного к местным обстоятельствам, и было известно его кодовой оптимизацией объекта и диагностикой исходного языка, которые были продвинуты в течение времени. Современная, но отдельная нить развития, Автокодекс Атласа был развит для Атласа Манчестерского университета 1 машина.
Другой ранний язык программирования был создан Грэйс Хоппер в США, названных ПОТОКОМ-MATIC. Это было развито для UNIVAC I в Remington Rand во время периода с 1955 до 1959. Хоппер нашла, что коммерческая информация, обрабатывающая клиентов, чувствовала себя неловко из-за математического примечания, и в начале 1955, она и ее команда написали спецификацию для английского языка программирования и осуществили прототип. Компилятор ПОТОКА-MATIC стал общедоступным в начале 1958 и был существенно полон в 1959. Поток-Matic был главным влиянием в дизайне КОБОЛ, так как только это и его прямой происходящий AIMACO были в фактическом употреблении в то время. язык ФОРТРАН был развит в IBM в середине 1950-х и стал первым широко используемым языком программирования общего назначения высокого уровня.
Другие языки все еще в использовании сегодня, включайте LISP (1958), изобретенный Джоном Маккарти и КОБОЛ (1959). Другой этап в конце 1950-х был публикацией, комитетом американских и европейских программистов, «нового языка для алгоритмов»; АЛГОЛ 60 Отчетов/ Этот отчет объединил много идей, циркулирующих в это время, и показал три ключевых языковых инновации:
вложенная блочная конструкция: кодовые последовательности и связанные декларации могли быть сгруппированы в блоки, не имея необходимость превращаться в отдельные, явно названные процедуры;
лексический обзор: у блока могли быть свои собственные частные переменные, процедуры и функции, невидимые, чтобы закодировать вне того блока, то есть, информационного сокрытия.
Другие инновации, связанные с этим, были в том, как язык был описан:
математически точное примечание, Форма Бэкуса-Наура (BNF), использовалось, чтобы описать синтаксис языка. Почти все последующие языки программирования использовали вариант BNF, чтобы описать контекстно-свободную часть их синтаксиса.
Алгол 60 особенно влиял при дизайне более поздних языков, некоторые из которых скоро стали более популярными. Берроуз большие системы был разработан, чтобы быть запрограммированным в расширенном подмножестве Алгола.
Ключевые идеи алгола были продолжены, произведя АЛГОЛ 68:
синтаксис и семантика стали еще более ортогональными, с анонимным установленным порядком, рекурсивной системой печати с функциями высшего порядка, и т.д.;
не только контекстно-свободная часть, но и полный языковой синтаксис и семантика были определены формально, с точки зрения грамматики Ван Виджнгэардена, формализм, специально разработанный с этой целью.
Алгольный 68 много мало-используемых языковых особенностей и его сложная система синтаксических коротких путей и автоматических принуждений типа сделали его непопулярным у лиц, осуществляющих внедрение. Niklaus Wirth фактически вышел из комитета по дизайну, чтобы создать более простой язык Паскаля.
Установление фундаментальных парадигм
Период с конца 1960-х к концу 1970-х принес главный расцвет языков программирования. Большинство главных языковых парадигм теперь в использовании было изобретено в этот период:
Simula, изобретенный в конце 1960-х Нигэардом и Далем как супернабор Алгола 60, был первым языком, разработанным, чтобы поддержать объектно-ориентированное программирование.
C, ранний язык программирования систем, был развит Деннисом Ричи и Кеном Томпсоном в Bell Labs между 1969 и 1973.
Smalltalk (середина 1970-х) обеспечил полный измельченный дизайн ориентированного на объект языка.
Пролог, разработанный в 1972 Colmerauer, Русселем, и Ковальским, был первым логическим языком программирования.
ML построил полиморфную систему типа (изобретенный Робином Милнером в 1973) сверху Шепелявости, ведение статически напечатало функциональные языки программирования.
Каждый из этих языков породил всю семью потомков, и наиболее новые языки считают по крайней мере одного из них в их родословной.
1960-е и 1970-е также видели значительные дебаты по достоинствам «структурированного программирования», которое по существу означало программировать без использования Goto. Эти дебаты были тесно связаны с языковым дизайном: некоторые языки не включали GOTO, который вызвал структурированное программирование на программисте. Хотя дебаты бушевали горячо в то время, почти все программисты теперь соглашаются, что, даже на языках, которые обеспечивают GOTO, они плохо программируют стиль, чтобы использовать его кроме редких обстоятельств.
Чтобы обеспечить еще более быстрые времена компиляции, некоторые языки были структурированы для «компиляторов с одним проходом», которые ожидают, что зависимый установленный порядок будет определен сначала, как с Паскалем, где главный установленный порядок или функция водителя, является заключительной частью списка программ.
1980-е: консолидация, модули, работа
1980-е были годами относительной консолидации на обязательных языках. Вместо того, чтобы изобретать новые парадигмы, все эти движения уточнили идеи, изобретенные в предыдущее десятилетие. C ++ объединился ориентированный на объект и программирование систем. Правительство Соединенных Штатов стандартизировало Аду, язык программирования систем, предназначенный для использования подрядчиками защиты. В Японии и в другом месте, обширные суммы были потрачены, исследовав так называемые языки программирования пятого поколения, которые включили программные конструкции логики. Функциональное языковое сообщество двинулось, чтобы стандартизировать ML и Шепелявость. Исследование в Миранде, функциональном языке с ленивой оценкой, начало утверждаться в это десятилетие.
Одна важная новая тенденция в языковом дизайне была увеличенным вниманием на программирование для крупномасштабных систем с помощью модулей или крупномасштабных организационных единиц кодекса. Modula, Ада и ML все разработанные известные системы модуля в 1980-х. Системы модуля были часто связаны узами брака с---непатентованными средствами конструкций универсального программирования быть, в сущности, параметрические модули (см. также полиморфизм в объектно-ориентированном программировании).
Хотя главные новые парадигмы для обязательных языков программирования не появлялись, много исследователей подробно остановились на идеях предшествующих языков и приспособили их к новым контекстам. Например, языки систем Бдительного стража и Эмеральд приспособили объектно-ориентированное программирование к распределенным системам.
1980-е также принесли достижения во внедрении языка программирования. Движение RISC в архитектуре ЭВМ постулировало, что аппаратные средства должны быть разработаны для компиляторов, а не для человеческих программистов собрания. Помогший улучшениями скорости процессора, которые позволили все более и более агрессивные методы компиляции, движение RISC зажгло больший интерес к технологии компиляции для языков высокого уровня.
1990-е: интернет-возраст
Быстрый рост Интернета в середине 1990-х был следующим главным историческим событием на языках программирования. Открывая радикально новую платформу для компьютерных систем, Интернет создал возможность для новых языков, которые будут приняты. В частности язык программирования JavaScript повысился до популярности из-за его ранней интеграции с веб-браузером Навигатора Netscape. Различные другие языки сценариев достигли широкого использования в разработке настроенного приложения для веб-серверов, таких как PHP. 1990-е не видели фундаментальной новинки на обязательных языках, но большой перекомбинации и созревания старых идей. Эта эра начала распространение функциональных языков. Большая ведущая философия была производительностью программиста. Много «быстрых разработок приложений» (RAD), языки появились, который обычно шел с ЯЗЕМ, сборкой мусора, и были потомки более старых языков. Все такие языки были ориентированы на объект.
Они включали Обжека Паскаля, Visual Basic и Яву. Ява в особенности получила много внимания. Более радикальный и инновационный, чем языки RAD были новые языки сценариев. Они непосредственно не спустились с других языков и показали новые синтаксисы и более либеральное объединение особенностей. Многие полагают, что эти языки сценариев более производительные, чем даже языки RAD, но часто из-за выбора, который делает маленькие программы более простыми, но большими программами более трудный написать и поддержать. Тем не менее, языки сценариев стали самыми видными, используемыми в связи с Сетью.