Языки высокого уровня
Билет 1.
История возникновения и развития языков и систем программирования
Программирование — процесс создания компьютерных программ.
Язык программирования – это формальная знаковая система, которая предназначена для написания программ, понятных для исполнителя (в нашем рассмотрении – это компьютер).
С момента появления первых программируемых машин было создано около двух с половиной тысяч языков программирования.
Первые программы заключались в установке ключевых переключателей на передней панели вычислительного устройства. Очевидно, таким способом можно было составить только небольшие программы.
Первое программируемое вычислительное устройство, Аналитическую машину, разработал Чарльз Бэббидж (но не смог её построит). Его современница Ада Лавлейс написала для его машины программу для решения уравнения Бернулли. Её считают первым в мире программистом. Она теоретически разработала некоторые приемы управления последовательностью вычислений, которые используются в программировании и по сей день, описала одну из важнейших конструкций практически любого современного языка программирования - цикл.
В 1930—1940 годах, Алонзо Чёрч, Алан Тьюринг, Андрей Андреевич Марков разработали математические абстракции (лямбда-исчисление, машину Тьюринга, нормальные алгоритмы) соответственно — для формализации алгоритмов.
В 1940-е появились электрические цифровые компьютеры.
Первая попытка создать полноценный язык программирования – попытка немецкого ученого Конрада Цузе, который в период с 1943 по 1945 год разработал язык Plankalkül. Это был очень перспективный язык, фактически являвшийся языком высокого уровня, однако из-за военных действий он не получил практической реализации, а его описание было опубликовано только в 1972 году.
Машинный язык
Программисты ЭВМ начала 1950-х годов, в особенности таких, как UNIVAC и IBM 701, при создании программ пользовались непосредственно машинным кодом, запись программы на котором состояла из единиц и нулей. Его принято считать языком программирования первого поколения (при этом разные машины разных производителей использовали различные коды, что требовало переписывать программу при переходе на другую ЭВМ). Суть машинного языка – набор кодов, обязательно понятных процессору, к кому обращаются.
Части («слова») этого языка называются инструкциями, каждая из которых представляет собой одно элементарное действие для центрального процессора. Лишь при понимании устройства компьютерного оборудования и знания этих целочисленных кодов можно было непосредственно управлять процессором. Тогда ещё компьютеры были простыми вычислительными машинами, применяемыми для различных математических расчётов. Но они развивались, а использование большинства компьютеров на уровне машинного языка затруднительно, особенно сложным было чтение и модификация подобных программ. Поэтому со временем от использования машинных кодов пришлось отказаться.
Язык Ассемблера
Языком второго поколения стал язык ассемблера. Поскольку структура программ усложнялась из-за развития технологий, то стали использовать специальные программы – сборщики программ из маленьких кусочков кодов – ассемблеры. Это и помогло стать данному языку более простым для использования.
Сохранялись проблемы с переносимостью программы с ЭВМ одной архитектуры на другую, и необходимость для программиста при решении задачи мыслить терминами «низкого уровня» — ячейка, адрес, команда
Языки ассемблера: Autocode, FLOW-MATIC, IPL.
Теперь, когда была нужна эффективная программа, вместо машинных языков использовались близкие к ним машинно-ориентированные языки ассемблера. К таковым относились, например, Autocode, с 1954-го г. — IPL (предшественник языка LISP) , с 1955-го г. — FLOW-MATIC . Теперь люди стали использовать мнемонические команды взамен машинных команд.
Мнемоника - символьное обозначений машинных команд.
Языки высокого уровня.
С середины 1950-х начали появляться языки третьего поколения, такие как Fortran и Lisp. Языки программирования этого типа более абстрактны (их ещё называют «языками высокого уровня») и универсальны, не имеют жесткой зависимости от конкретной аппаратной платформы и используемых на ней машинных команд. Программа на языке высокого уровня может исполняться (по крайней мере, в теории, на практике обычно имеются ряд специфических версий или диалектов реализации языка) на любой ЭВМ, на которой для этого языка имеется транслятор (инструмент, переводящий программу на язык машины, после чего она может быть выполнена процессором).
Языки высокого уровня имитируют естественные языки, используя некоторые слова разговорного языка и общепринятые математические символы. Эти языки более удобны для человека, с помощью них можно писать программы до нескольких тысяч строк длиной.
Во второй половине 50-х интернациональная команда разработчиков попыталась создать универсальный язык программирования. В результате появился ALGOL, по многим параметрам являвшийся наследником Фортрана. В него были добавлены новые концепции и обобщения, формализована концепция типов данных, разрешено использование идентификаторов любой длины, когда в Фортране было ограничение в 6 символов. Несмотря на свои многочисленные достоинства, ALGOL так и не получил большого распространения, в первую очередь из-за сложности в его реализации и отсутствии поддержки от корпорации IBM.
В дальнейшем появились COBOL (1959), Pascal (1970), C (1972).