Управление образования Администрации Каменского района Алтайского края Муниципальное бюджетное общеобразовательное учреждение «Гимназия № 5 имени Е. Е. Парфенова» (МБОУ «Гимназия № 5») 658701, Российская Федерация, Алтайский Край, Каменский район, г. Камень-на-Оби, ул. Некрасова, 2 Телефон. 2-24-56, 2-22-86, 2-10-87 E-mail: oo1068@mail.ru Проектная работа «Мертвые языки программирования» Выполнила ученица 10Б класса: Анохина Зоя Андреевна Руководитель: Зайцева Наталья Васильевна Камень-на-Оби 2023 год ОГЛАВЛЕНИЕ Введение ................................................................................................................... 3 План работы над проектом ..................................................................................... 5 1. Программирование. Язык программирования. ................................................ 6 2. История возникновения языков программирования ....................................... 8 2.1 Первопроходцы в программировании ......................................................... 8 2.2 Первые языки программирования. Особенности первых языков программирования ............................................................................................. 10 3.Эволюция языков программирования. Классификация языков программирования. ............................................................................................... 19 4. Причины исчезновения языков программирования ...................................... 29 Заключение. ........................................................................................................... 30 Список использованной литературы ................................................................... 31 3 Введение Вы когда-нибудь использовали приложение на мобильном телефоне или программу на компьютере? А задумывались ли вы при этом, на каком языке программирования написаны сайты, интернет страницы, скрипты? В наше время знание языков программирования не просто показатель образованности человека, а и необходимость. Если вы хотите идти в ногу со временем, для вас просто обязательно знание хотя бы одного языка. Языки программирования дают возможность создавать средства для работы, общения и творчества. В мире существуют тысячи языков, позволяющие вести полноценный диалог с компьютером, однако, несмотря на такое разнообразие, число языков, на которых пишет большинство около десятка. Языки программирования вынуждены преодолевать те же трудности, что и многие фирмы, и новые идеи. Зачастую успех языка программирования зависит не только от его характеристик и применяемых технологий, но и от появления в нужном месте, в нужное время. Успех языка может быть столь же непостоянным, сколь непредсказуемыми могут быть причины его провала. Актуальность проекта: Информационные технологии являются одной наиболее быстро развивающихся областей современной жизни. Они появляются едва не каждый день. И в погоне за прогрессом, подчас полезно остановиться, вспомнить историю и задуматься о будущем. С тем, чтобы со свежими силами вновь окунуться в работу, осваивать новые технологии. К выбору данной теме меня побудило незнакомое понятие «Мертвые языки программирования». Данный проект позволит приблизиться к истокам программирования. И дать ответ на основной вопрос: почему одни языки программирования остались на стадии зарождения и про них все забыли, а 4 другие легли в основу новых, которые живут и позволяют человечеству развивать информационные технологии? Цель проекта: Познакомиться с началом развития программирования, с первыми языками. Определить понятие «Мертвые языки программирования». Исследовать причины исчезновения языков программирования. Задачи проекта: Изучить историю развития языков программировании; Исследовать причины краха языков программирования; Определить какие языки программирования в данное время являются мёртвыми Практическая значимость проекта заключается в том, что возможно использовать продукты данного проекта (электронное учебное пособие и буклет) на уроках «Информатика и ИКТ» при изучении раздела «Алгоритмизация и программирование». 5 План работы над проектом Постановка целей и задач проекта. Составление первичного плана. Поиск информации, её сортировка и анализ. Создание проекта Защита проекта"Мёртвые языки программирования". 6 1. Программирование. Язык программирования. Знакомиться с этими понятиями будем по принципу от простого к сложному. Возникал ли у вас когда-нибудь вопрос: « Что такое язык?» Чтобы ответить на этот вопрос обратимся к толковому словарю. Язык Язык программирования Искусственный Естественный язык язык Информационный Формализованный язык язык Язык в лингвистическом плане представляет собой важнейшее средство общения. Более того, язык – средство хранения и передачи информации, средство управления поведением человека. Язык неразрывно связан с обществом. Искусственный язык — специальный язык, который, в отличие от естественного, сконструирован целенаправленно. Таких языков существует уже более тысячи, и постоянно создаются всё новые и новые. Программирование - процесс создания компьютерных программ. Программирование основывается на использовании языков программирования, на которых записываются инструкции для компьютера. Современное приложение содержит множество таких инструкций, связанных между собой. Язык программирования - формальная знаковая система, предназначенная для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и 7 семантических правил, задающих внешний вид программы и действия, которые выполнит исполнитель (компьютер) под её управлением. 8 2. История возникновения языков программирования 2.1 Первопроходцы в программировании Английский математик Чарлз Бэббидж (1791—1871 гг.). В 20-х годах XIX века ему пришла идея создать механическую машину для вычислений, что порядок ее действий можно было предварительно записывать и впоследствии выполнять эти действия на машине автоматически. Это была идея, положившая начало программированию. Ч. Бэббидж посвятил реализации этой идеи всю жизнь. Он не добился успеха и признания современников при жизни, но оказал огромное влияние на современное развитие информатики. Ада Лавлейс, дочь английского поэта Чарлза Гордона Байрона. Она оказалась одним из немногих современников Чарлза Бэббиджа, кто сумел по достоинству оценить идею "аналитической машины". Она стала ближайшей помощницей и сподвижницей Бэббиджа, разработала некоторые приемы управления последовательностью вычислений, которые используются в программировании, по сей день. Описала одну из важнейших конструкций практически любого современного языка программирования — цикл. Аду Лавлейс по праву считают первым в мире программистом. В честь неё был назван язык программирования – язык АДА Первым шагом в развитии современных языков программирования стало создание в конце 1940-х годов Джоном Моучли американским физиком Пенсильванского университета США системы кодирования машинных команд с помощью специальных символов. Грейс Мюррей Хоппер (Grace Murray Hopper) — один из пионеров программирования, математик. Контр-адмирал ВМФ США. По праву считается «бабушкой COBOL» и удостоена многочисленных наград за неоценимый вклад, внесенный в развитие этого языка программирования. Грейс Мюррей Хоппер стала третьим в мире программистом. 9 В 1951 г. Хоппер создала первый в мире компилятор. Именно она ввела сам этот термин. При работе на компьютере "Maрк-I" Г. Хоппер и ее группе пришлось стать первопроходцами программирования. Они первыми придумали подпрограммы. 10 2.2 Первые языки программирования. Особенности первых языков программирования Ну что ж, приблизимся к самым истокам программирования и постараемся ответить на главный вопрос: почему одни языки программирования остались в стадии зарождения и про них все забыли, другие легли в основу новых, которые живут и позволяют человечеству развивать информационные технологии. Вспомним первые компьютеры и программы для них. Это была эра программирования непосредственно в машинных кодах, а основным носителем информации были перфокарты и перфоленты. Программисты обязаны были знать архитектуру машины досконально. Программы были достаточно простыми, что обуславливалось, во-первых, весьма ограниченными возможностями этих машин, и, во-вторых, большой сложностью разработки и, главное, отладки программ непосредственно на машинном языке. Основоположником программирования можно считать английского математика Чарлза Бэббиджа (1791—1871 гг.). В 20-х годах XIX века ему пришла идея создать такую механическую машину для вычислений, что порядок ее действий можно было предварительно записывать и впоследствии выполнять эти действия на машине автоматически. Это была идея, положившая начало программированию. Ч. Бэббидж посвятил реализации этой идеи всю жизнь. Он не добился успеха и признания современников при жизни, но оказал огромное влияние на современное развитие информатики. Хотя использованный Бэббиджем способ записи программы на перфокартах, придуманный для управления ткацкими станками французским изобретателем Жозефом Мари Жаккаром, не имеет ничего общего с современными технологиями хранения и выполнения программ компьютерами, принцип остался тем же. Рядом с Ч. Бэббиджем у истоков программирования стояла Ада Лавлейс, дочь английского поэта Чарлза Гордона Байрона. Она разработала 11 некоторые приемы управления последовательностью вычислений, которые используются в программировании и посей день, описала одну из важнейших конструкций практически любого современного языка программирования — цикл. Аду Лавлейс по праву считают первым в мире программистом. На практике базовые принципы программирования реализовала другая женщина - Грэйс Хоппер. Дальнейшего прогресса в программировании пришлось ждать почти 100 лет, и связан он был с появлением в середине 1940-х годов электромеханических и электронных вычислительных машин — родителей современных компьютеров. Для программирования этих машин использовались машинные коды — цифровые комбинации, "понятные" только данной машине. Такое программирование было чрезвычайно трудоемким и сложным делом, доступным лишь небольшому кругу специалистов. Первым шагом в развитии современных языков программирования стало создание в конце 1940-х годов Джоном Моучли, сотрудником Пенсильванского университета (США), системы кодирования машинных команд этих компьютеров с помощью специальных символов. Достижением создателей языков программирования было то, что они сумели заставить сам компьютер работать переводчиком с этих языков на машинный код. Описываемая система, которую назвали "Short Code", была по существу одним из первых примитивных интерпретаторов. Она использовала примитивный язык программирования высокого уровня. На нем программист записывал решаемую задачу в виде математических формул, а затем сам, используя специальную таблицу, переводил символ за символом, преобразовывая эти формулы в двухлитерные коды. В дальнейшем специальная программа компьютера превращала эти коды в двоичный машинный код. Система кодирования, предложенная Моучли, увлекла одну из сотрудниц его группы — Грейс Мюррей Хоппер, которая стала третьим в мире программистом. 12 В 1951 г. Хоппер создала первый в мире компилятор. Именно она ввела сам этот термин. Компилятоp (от англ. Compile - собирать вместе, составлять) системная программа, выполняющая преобразование программы, написанной на одном алгоритмическом языке, в программу на языке, близком к машинному, и в определенном смысле эквивалентную первой. В 1954 г. группа под руководством Г. Хоппер разработала систему, включающую язык программирования и компилятор, которая в дальнейшем получила название MATH-MATIC. После удачного завершения работ по созданию MATH-MATIC Г. Хоппер и ее группа принялись за разработку нового языка и компилятора, который позволил бы пользователям программировать на языке, близком к обычному английскому. В 1958 г. появился компилятор FLOW-MATIC. FLOW-MATIC был первым языком для задач обработки коммерческих данных. Работы в этом направлении привели к созданию языка КОБОЛ (COBOL — Common Business Oriented Language). Одним из основных консультантов при его создании была Грейс Мюррей Хоппер. Середина 50-х годов XX века характеризуется стремительным прогрессом в области программирования. Стало понятно, что процесс формирования машинного кода можно автоматизировать. Для записи программ начали применять мнемонический язык – язык assembly. Язык ассемблера позволил представить машинный код в более удобной для человека форме: для обозначения команд и объектов, над которыми эти команды выполняются, вместо двоичных кодов использовались буквы или сокращенные слова, которые отражали суть команды. Например, на языке ассемблера команда сложения двух чисел обозначается словом add, тогда как ее машинный код может быть таким: 000010. Запись программы на языке ассемблера фактически является тем же машинным кодом, только представленным с помощью специальных обозначений. 13 Ассемблер можно отнести к языкам второго поколения, если за первый принять машинный код. Появление этого языка на свет, очень облегчало жизнь программистов. Теперь вместо рябящих в глазах нулей и единиц, они могли писать программу командами, состоящими из символов приближенных к обычному языку. Для того времени этот язык был новшеством и пользовался популярностью т.к. позволял писать программы небольшого размера, что при тех машинах критерий значительный. Но сложность разработки в нём больших программных комплексов привела к появлению языков третьего поколения – языков высокого уровня. Но на этом жизнь ассемблера не закончилась, он жив и посей день и не только жив, но и пользуется популярностью в узких кругах. Сейчас его используют в написании отдельных фрагментов программ или иногда в написании самих программ. Примеров может быть много, но самые яркие это использование ассемблера в написании драйверов, игр и загрузчиков ОС. Не стоит забывать, что у хакеров этот язык так же пользуется популярностью, да ещё какой! Но что же им так нравиться в нём? Конечно же, то, что скорость работы полученной программы значительно выше скорости программы написанной на языке программирования высокого уровня. Это объясняется тем, что получившийся размер программы очень мал. А как же разработчики антивирусных программ? Они тоже не лыком шиты и так же используют ассемблер в некоторых модулях своих программ, что так же обеспечивает их быстродействие. А если бы не ассемблер некоторые программы загружались бы около часа! Так что ассемблер воистину вечный язык и ещё много, много лет он будет служить человечеству! Программирование в машинных командах стало вытесняться программированием на языках, выступавших в роли посредника между машинами и программистами. Первым и одним из наиболее распространенных стал Фортран (FORTRAN, от FORmula TRANslator — переводчик формул), разработанный группой программистов фирмы IBM в 1954 г. Этот язык получил большое распространение, стал основным языком 14 для научных и технических расчетов, несколько раз усовершенствовался и широко используется до сих пор. В конце 50-х годов плодом международного сотрудничества в области программирования явился Алгол60 (ALGOL, от ALGOrithmic Language — алгоритмический язык, версия 1960 г.). Алгол предназначен для записи алгоритмов, которые строятся в виде последовательности процедур, применяемых для решения поставленных задач. Специалисты-практики восприняли этот язык далеко не однозначно, но, тем не менее, его влияние на развитие других языков и теорию программирования оказалось весьма значительным. Развитие идеи Алгола о структуризации разработки алгоритмов нашло наивысшее отражение при создании в начале 1970-х годов языка Паскаль швейцарским ученым Никлаусом Виртом. Язык Паскаль первоначально разрабатывался как учебный, и, действительно, сейчас он является одним из основных языков обучения программированию в школах и вузах. Однако качества его в совокупности оказались столь высоки, что им охотно пользуются и профессиональные программисты. В середине 1960-х годов сотрудники математического факультета Дартмутского колледжа Томас Курц и Джон Кемени создали специализированный язык программирования, который состоял из простых слов английского языка. Новый язык назвали "универсальным символическим кодом для начинающих" (Beginners All Purpose Symbolic Instruction Code, или, сокращенно, BASIC, а по-русски — Бейсик). Годом рождения нового языка можно считать 1964 г.Долгое время универсальный язык Бейсик (имеющий множество версий) имел большую популярность и широкое распространение среди пользователей ЭВМ различных категорий во всем мире. В значительной мере этому способствовало то, что Бейсик начали использовать как встроенный язык персональных компьютеров, широкое распространение которых началось в конце 1970-х годов. Большой отпечаток на современное программирование наложил язык Си (первая версия — 1972 г.), являющийся очень популярным в среде 15 разработчиков систем программного обеспечения (включая операционные системы). Си сочетает в себе черты, как языка высокого уровня, так и машинно-ориентированного языка, допуская программиста ко всем машинным ресурсам, чего не позволяют такие языки, как Бейсик и Паскаль. Более специализированным языком является язык ЛОГО (от греч. logos — слово), созданный для обучения программированию школьников, профессором математики и педагогики Сеймуром Пейпертом из Массачусетского технологического института. Обучаясь программированию на ЛОГО, дети задают простые команды и составляют из них программы, которые управляют условной "черепашкой" — объектом, оставляющем при перемещении след на экране монитора. Отметим язык LISP (LISt Processing — обработка списков), появившийся в США в конце 1950-х годов, и еще один специализированный язык — Пролог (Prolog — PROgramming in LOGic), разработанный в 1970-е годы, как языки программирования для создания систем искусственного интеллекта. В начале 1960-х годов все существующие языки программирования высокого уровня можно было пересчитать по пальцам, впоследствии их число достигло трех тысяч. Однако в практической деятельности используется не более двух десятков из них. Разработчики ориентировали языки на разные классы задач, в той или иной мере привязывали их к конкретным архитектурам компьютеров, воплощали в них личные вкусы и идеи. В конце 1960-х годов были сделаны попытки преодолеть эту "разноголосицу" путем создания универсального языка программирования. Первым детищем этого направления стал PL/1 (Programm Language One), 1967 г. Затем на эту роль претендовал Алгол-68 (1968 г.). Предполагалось, что подобные языки будут развиваться и усовершенствоваться и вытеснят все остальные. Однако ни одна из этих попыток на сегодняшний день не увенчалась успехом (хотя PL/1 в усеченных версиях использовали многие 16 программисты). Стремление к универсальности языка приводило к неоправданной сложности конструкций программы, неэффективности получаемых исполняемых кодов. Бурный рост числа различных языков программирования в период с конца 1960-х и до начала 1980-х годов сопровождался, как это ни странно, кризисом программного обеспечения. Остро не хватало программ для решения самых разных задач и программистов для их разработки, а написанные программы часто содержали ошибки и работали неустойчиво. Этот кризис особо остро переживало военное ведомство США. В январе 1975 г. Пентагон решил на вести порядок в хаосе трансляторов и учредил комитет, которому было предписано разработать один универсальный язык. На конкурсной основе комитет проработал сотни проектов, и когда стало ясно, что ни один из существующих языков не может их удовлетворить, принял два проекта для окончательного рассмотрения. В мае 1979 г. был объявлен победитель —группа ученых во главе с Жаном Ихбиа. Победивший язык окрестили АДА, в честь Ады Лавлейс. Язык АДА — прямой наследник языка Паскаль. Этот язык предназначен для создания и длительного сопровождения больших программных систем, допускает возможность параллельной обработки, управления процессами в реальном времени и многое другое, чего трудно или невозможно достичь средствами более простых языков. Следует отметить, что многие языки, первоначально разработанные для больших и малых вычислительных машин, в дальнейшем были приспособлены к персональным компьютерам. Языки программирования сохраняют свое предназначение для решения задач определенных типов. Выбор языка определяется удобствами для программистов, их предпочтениями в силу опыта и образования, а также пригодностью для данного компьютера и данной задачи. А задачи, решаемые с помощью компьютера, бывают самые разнообразные: вычислительные, экономические, графические, экспертные, создание системного программного обеспечения и т.д. 17 Такая разнотипность решаемых компьютером задач и приводит к многообразию языков программирования. Задача Примеры языков Задачи искусственного Lisp, Prolog, Multilisp, Commonlisp, интеллекта Рефал, Planner, QA4, FRL, KRL, QLisp Fun, Apl, Alfl, PARAlfl, ML, SML, PPL/1, Hope, Miranda, Occam, PFOR, Glypnir, Параллельные вычисления Actus, параллельный Cobol, ОВС-ЛЯПИС, ОВС-Мнемокод, ОВС-Алгол, ОВС-Фортран, PA(1), PA(G) Occam, PFOR, Glypnir, Задачи вычислительной математики и физики Actus,параллельный Cobol, ОВС-ЛЯПИС, ОВС-Мнемокод, ОВС-Алгол, ОВС-Фортран, PA(1), PA(G) Forth, c, C++, Ассемблер, Разработка интерфейса Макроассемблер, Simula-67, OAK, Smalltalk, Java, РПГ Разработка программоболочек, разработка систем Задачи вычислительного характера Forth, c, C++, Ассемблер, Макроассемблер, Simula-67, OAK, Smalltalk, Java, РПГ Algol, Fortran, Cobol, Ada, PL/1,Фокал, Basic,Pascal Оформление документов, обработка больших текстовых Perl, Tcl/Tk, VRML, SQL, PL/SCL, файлов, организация виртуальных Informix 4GL, Natural, DDL, DSDL, трехмерных интерфейсов в Интернете, разработка баз данных SEQUEL, QBE, ISBL 18 Чтобы более четко представить картину развития языков программирования обратимся к хронологической таблице. (См. приложение) Но это отнюдь не весь список созданных человечеством языков программирования, так как многие языки по определённым причинам не могли существовать самостоятельно, они легли в основу новых, более усовершенствованных. О них мы поговорим в разделе « Диалекты». 19 3.Эволюция языков программирования. Классификация языков программирования. Развитие вычислительной техники сопровождается созданием новых и совершенствованием существующих средств общения программистов с ЭВМ - языков программирования (ЯП). Проанализируем таблицу и установим зависимость развития ЯП от развития ЭВМ. ЯП первого поколения представляли собой набор машинных команд в двоичном (бинарном) или восьмеричном формате, который определялся архитектурой конкретной ЭВМ. Каждый тип ЭВМ имел свой ЯП, программы на котором были пригодны только для данного типа ЭВМ. От программиста при этом требовалось хорошее знание не только машинного языка, но и архитектуры ЭВМ. Второе поколение ЯП характеризуется созданием языков ассемблерного типа (ассемблеров, макроассемблеров), позволяющих вместо двоичных и других форматов машинных команд использовать их мнемонические символьные обозначения (имена). Являясь существенным шагом вперед, ассемблерные языки все еще оставались машиннозависимыми, а программист все также должен был быть хорошо знаком с организацией и функционированием аппаратной среды конкретного типа ЭВМ. При этом ассемблерные программы все так же затруднительны для чтения, трудоемки при отладке и требуют больших усилий для переноса на другие типы ЭВМ. Однако и сейчас ассемблерные языки используются при необходимости разработки высокоэффективного программного обеспечения. Третье поколение ЯП начинается с появления в 1956 г. первого языка высокого уровня - Fortran, разработанного под руководством Дж. Бэкуса в фирме IBM. За короткое время Fortran становится основным ЯП при решении инженерно-технических и научных задач. Первоначально Fortran обладал весьма ограниченными средствами обеспечения работы с символьной 20 информацией и с системой ввода-вывода. Однако постоянное развитие языка сделало его одним из самых распространенных ЯВУ на ЭВМ всех классов от микро- до супер-ЭВМ, а его версии используются и для вычислительных средств нетрадиционной параллельной архитектуры. Вскоре после языка Fortran появились такие ныне широко известные языки, как Algol, Cobol,Basic, PL/1,Pascal, APL, ADA, C, Forth, Lisp, Modula и др. В настоящее время насчитывается свыше 2000 раз личных языков высокого уровня. Языки четвертого поколения носят ярко выраженный непроцедурный характер, определяемый тем, что программы на таких языках описывают только что, а не как надо сделать. В программах формируются скорее соотношения, а не последовательности шагов выполнения алгоритмов. Типичными примерами непроцедурных языков являются языки, используемые для задач искусственного интеллекта(например, Prolog, Langin). Так как непроцедурные языки имеют минимальное число синтаксических правил, они значительно более пригодны для применения непрофессионалами в области программирования. Языки программирования от поколения к поколению улучшали свои характеристики, становясь все более доступными в освоении непрофессионалам. Все языки программирования делятся на два уровня: Языки программирования низкого уровня или Ассемблеры, которые состоят из мнемонических команд приближенных к машинному (двоичному) коду с которым непосредственно работает процессор компьютера. У каждого типа процессора свой язык ассемблера. Достоинством языков низкого уровня является то, что с их помощью создают самые краткие и быстро исполняемые программы. Недостаток таких языков в том, что их трудно изучать, так как необходимо знать и хорошо понимать работу и устройство конкретного процессора. Тексты программ на таких языках получаются очень большими по объёму. Программы, написанные на таких языках, не могут использоваться на процессорах других типов. 21 Языки программирования высокого уровня (например, Бейсик, Паскаль, СИ) состоят из более понятных команд для человека, так как для их написания используются фразы из обычных языков (в большинстве случаев Английского), поэтому они значительно проще для изучения и применения. Программы, написанные с их помощью, можно использовать на любом компьютере. Языки программирования высокого уровня классифицируют по четырём основным группам: процедурные, объектно-ориентированные, функциональные и логические. Процедурное программирование - есть отражение фон Неймановской архитектуры компьютера. Программа, написанная на процедурном языке, представляет собой последовательность команд, определяющих алгоритм решения задачи. Основная идея процедурного программирования - использование памяти для хранения данных. Основная команда - присвоение, с помощью которой определяется и меняется память компьютера. Программа производит преобразование содержимого памяти, изменяя его от исходного состояния к результирующему. Различают такие языки процедурного программирования: Язык Фортран создан в начале 50-х годов 20-го века для программирования научно-технических задач; Кобол – создан в конце 60-х годов 20-го века для решения задач обработки больших объемов данных, хранящихся на различных носителях данных; Алгол (1960 год) – это многоцелевой расширенный язык программирования. В нем впервые введены понятия “блочная структура программы” и “динамическое распределение памяти”; В середине 60-х годов 20-го века был создан специализированный язык программирования для начинающих – BASIC. Характеризуется простотой освоения и наличием универсальных средств для решения научных, технических и экономических задач, а также задач, например, игровых. 22 Все перечисленные выше языки были ориентированы на различные классы задач, но они в той или иной мере были привязаны к конкретной архитектуре ЭВМ. В 1963-1966гг был создан многоцелевой универсальный язык PL-1. Этот язык хорошо приспособлен для исследования и планирования вычислительных процессов, моделирования, решения логических задач, разработки систем математического обеспечения. Язык Паскаль (PASCAL) (1968-1971гг)- язык процедурного программирования наиболее популярный для ПК, который и в настоящее время успешно применяется. В основу языка Pascal положен подход от общей задачи к частным (более простым и меньшим по объему). К основным принципам, которыми обладает Паскаль, можно отнести: а) Структурное программирование, которое основано на использовании подпрограмм и независимых структур данных; б) Программирование “сверху-вниз”, когда задача делится на простые, самостоятельно решаемые задачи. Затем выстраивается решение исходной задачи полностью сверху вниз. К языкам процедурного программирования можно отнести язык АДА (1979 г) Язык СИ (начало 70-х годов) также относится к языкам процедурного программирования. Первоначальный его вариант планировался как язык для реализации операционной системы Unix вместо языка Ассемблера. Одной из особенностей языка СИ является то, что различия между выражениями и операторами сглаживаются, что приближает его к функциональным языкам программирования. Кроме того, в языке СИ отсутствует понятие процедуры, а использование подпрограмм основано на понятии функции, которая может сочетать в себе возможности процедуры. С одной стороны, по набору управляющих конструкций и структур данных его можно отнести к языкам высокого уровня, а с другой – он имеет набор средств прямого обращения к функциональным узлам компьютера, а это означает, что его можно использовать как операционный язык. 23 Непроцедурные языки составляют группу языков, описывающих организацию данных, обрабатываемых по фиксированным алгоритмам (табличные языки и генераторы отчетов), и языков связи с операционными системами. Позволяя четко описывать как задачу, так и необходимые для её решения действия, таблицы решений дают возможность в наглядной форме определить, какие условия должны быть выполнены, прежде чем переходить к какому-либо действию. Одна таблица решений, описывающая некоторую ситуацию, содержит все возможные блок-схемы реализаций алгоритмов решения. Табличные методы легко осваиваются специалистами любых профессий. Программы, составленные на табличном языке, удобно описывают сложные ситуации, возникающие при системном анализе. Объектно-ориентированное программирование (ООП) — это метод программирования, при использовании которого главными элементами программ являются объекты. В языках программирования понятие объекта реализовано как совокупность свойств (структур данных, характерных для данного объекта), методов их обработки (подпрограмм изменения их свойств) и событий, на которые данный объект может реагировать и, которые приводят, как правило, к изменению свойств объекта. С расширением областей применения вычислительной техники возникла необходимость формализовать представление постановки и решение новых классов задач. Необходимо было создать такие языки программирования, которые, используя в данной области обозначения и терминологию, позволили бы описывать требуемые алгоритмы решения для поставленных задач, ими стали проблемно - ориентированные языки. Эти языки, ориентированные на решение определенных проблем, должны 24 обеспечить программиста средствами, позволяющими коротко и четко формулировать задачу и получать результаты в требуемой форме. Проблемных языков очень много, например: Фортран, Алгол - языки, созданные для решения математических задач; Simula, Слэнг - для моделирования; Лисп, Снобол - для работы со списочными структурами. К ним относятся функциональные и логические языки программирования. Функциональное программирование - это способ составления программ, в которых единственным действием является вызов функции. В функциональном программировании не используется память, как место для хранения данных, а, следовательно, не используются промежуточные переменные, операторы присваивания и циклы. Ключевым понятием в функциональных языках является выражение. Программа, написанная на функциональном языке, представляет собой последовательность описания функций и выражений. Выражение вычисляется сведением сложного к простому. Все выражения записываются в виде списков. Первым языком стал язык Лисп (LISP, LIST Processing обработка списков) создан в 1959г. Этот язык позволяет обрабатывать большие объемы текстовой информации. Логическое программирование- это программирование в терминах логики. В 1973 году был создан язык искусственного интеллекта Пролог (PROLOG) (Programming in Logic). Программа на языке Пролог строится из последовательности фактов и правил, затем формулируется утверждение, которое Пролог пытается доказать с помощью правил. Язык сам ищет решение с помощью методов поиска и сопоставления, которые в нем заложены. Логические программы не отличаются высоким быстродействием, так как процесс их выполнения сводится к построению прямых и обратных цепочек рассуждений разнообразными методами поиска. Машинно-ориентированные языки - это языки, наборы операторов и изобразительные средства которых существенно зависят от особенностей 25 ЭВМ (внутреннего языка, структуры памяти и т.д.). Машинноориентированные языки позволяют использовать все возможности и особенности Машинно-зависимых языков: высокое качество создаваемых программ (компактность и скорость выполнения); возможность использования конкретных аппаратных ресурсов; предсказуемость объектного кода и заказов памяти; для составления эффективных программ необходимо знать систему команд и особенности функционирования данной ЭВМ; трудоемкость процесса составления программ ( особенно на машинных языках и ЯСК), плохо защищенного от появления ошибок; низкая скорость программирования; невозможность непосредственного использования программ, составленных на этих языках, на ЭВМ других типов. Машинно-независимые языки - это средство описания алгоритмов решения задач и информации, подлежащей обработке. Они удобны в использовании для широкого круга пользователей и не требуют от них знания особенностей организации функционирования ЭВМ и ВС. Подобные языки получили название высокоуровневых языков программирования. Программы, составляемые на таких языках, представляют собой последовательности операторов, структурированные согласно правилам рассматривания языка(задачи, сегменты, блоки и т.д.). Операторы языка описывают действия, которые должна выполнять система после трансляции программы на машинном языке. Т.о., командные последовательности (процедуры, подпрограммы), часто используемые в машинных программах, представлены в высокоуровневых языках отдельными операторами. Программист получил возможность не расписывать в деталях вычислительный процесс на уровне машинных команд, а сосредоточиться на основных особенностях алгоритма. 26 Универсальные языки были созданы для широкого круга задач: коммерческих, научных, моделирования и т.д. Первый универсальный язык был разработан фирмой IBM, ставший в последовательности языков Пл/1. Второй по мощности универсальный язык называется Алгол-68. Он позволяет работать с символами, разрядами, числами с фиксированной и плавающей запятой. Пл/1 имеет развитую систему операторов для управления форматами, для работы с полями переменной длины, с данными организованными в сложные структуры, и для эффективного использования каналов связи. Язык учитывает включенные во многие машины возможности прерывания и имеет соответствующие операторы. Предусмотрена возможность параллельного выполнение участков программ. Программы в Пл/1 компилируются с помощью автоматических процедур. Язык использует многие свойства Фортрана, Алгола, Кобола. Однако он допускает не только динамическое, но и управляемое и статистическое распределения памяти. Появление новых технических возможностей поставило задачу перед системными программистами - создать программные средства, обеспечивающие оперативное взаимодействие человека с ЭВМ их назвали диалоговыми языками. Эти работы велись в двух направлениях. Создавались специальные управляющие языки для обеспечения оперативного воздействия на прохождение задач, которые составлялись на любых раннее неразработанных (не диалоговых) языках. Разрабатывались также языки, которые кроме целей управления обеспечивали бы описание алгоритмов решения задач. Необходимость обеспечения оперативного взаимодействия с пользователем потребовала сохранения в памяти ЭВМ копии исходной программы даже после получения объектной программы в машинных кодах. При внесении изменений в программу с использованием диалогового языка система программирования с помощью специальных таблиц устанавливает взаимосвязь структур исходной и объектной программ. Это позволяет 27 осуществить требуемые редакционные изменения в объектной программе. Одним из примеров диалоговых языков является Бэйсик. Бэйсик использует обозначения подобные обычным математическим выражениям. Многие операторы являются упрощенными вариантами операторов языка Фортран. Поэтому этот язык позволяет решать достаточно широкий круг задач. Классификация языков программирования: Позволим выделить некоторую общую тенденцию в развитии языков программирования. Языки развиваются в сторону все большей и большей абстракции. И это сопровождается падением эффективности. Вопрос: а стоит ли этого абстракция? Ответ: стоит. Стоит, так как повышение уровня абстракции влечет за собой повышение уровня надежности программирования. С низкой эффективностью можно бороться путем 28 создания более быстрых компьютеров. Если требования к памяти слишком высоки, можно увеличить ее объем. Это, конечно, требует времени и средств, но это решаемо. А вот с ошибками в программах можно бороться только одним способом: их надо исправлять. А еще лучше — не совершать. А еще лучше максимально затруднить их совершение. И именно на это направлены все исследования в области языков программирования. А с потерей эффективности придется смириться. 29 4. Причины исчезновения языков программирования Проанализировав хронологию языков программирования, мы можем назвать несколько основных причин их краха, это: сложность в применении не доступность для простого пользователя ошибки менеджмента отсутствие «рекламы» в СМИ, вернее присутствие антирекламы отсутствие поддержки крупных вендоров, в отличии от конкурентов вытеснение альтернативным языком, новыми технологиями и изменяющимися условиями выживания; низкий порог вхождения отсутствие сертификационных центров 30 Заключение. Подводя итог хочется сказать что, всем нужно знать программирование. Пусть на самом начальном уровне. И неважно, что вам это не пригодится в вашей работе. Как сказал Стив Джобс, это научит вас думать. XX век стал переломным в вопросе грамотности населения. Люди научились читать, писать, считать и даже начали получать высшее образование. Благодаря этому, сегодня технический прогресс шагает семимильными шагами. У нас есть радио и телевидение, телефоны и компьютеры. Человек даже полетел в космос. В XXI же веке программирование стало новым стандартом грамотности. А для этого нужно знать языки программирования. Мы в науке программирования пока что с ЭВМ на ВЫ. И своё развитие в этой области нужно начинать с истории и эволюции языков программирования. В данном пособии я постаралась ответить на очень важный вопрос, почему языки программирования « умирают». Вы спросите, а зачем нам изучать мёртвые языки. Считается, что это просто необходимо. Если рассмотреть хронологическую таблицу, то можно понять, что не все мёртвые языки сейчас бесполезны, ведь некоторые новые создавались на их основе, например, на базе языка Паскаль созданы несколько более мощных языков - Модула, Ада, Дельфи. Некоторые, получили расширение. Говоря на последок можно подвести определение понятию «Мёртвый язык программирования» Мёртвый язык программирования - язык, который по определенным причинам вышел из употребления ( выпал из списка популярных). Точная смерть языка наступает в том случае, когда язык претерпевает эволюцию и развивается в другой язык или даже в группу языков. 31 Список использованной литературы 1. Бодров, О.А. Предметно-ориентированные экономические информационные системы: Учебник для вузов / О.А. Бодров. - М.: Гор. линия-Телеком, 2017. - 244 c. 2. Варфоломеева, А.О. Информационные системы предприятия: Учебное пособие / А.О. Варфоломеева, А.В. Коряковский, В.П. Романов. М.: НИЦ ИНФРА-М, 2017. - 283 c. 3. Васильков, А.В. Информатика: Учебное пособие / А.В. Васильков, А.А. Васильков, И.А. Васильков. - М.: Форум, 2017. - 528 c. 4. 8. Вдовин, В.М. Предметно-ориентированные экономические информационные системы: Учебное пособие / В.М. Вдовин. - М.: Дашков и К, 2013. - 388 c. 5. Велихов, А. С. Основы информатики и компьютерной техники: учебное пособие / А. С. Велихов. – Москва: СОЛОН-Пресс, 2017. – 539 с.