Файл: История возникновения и развития языка программирования Си (С++) и Java ( Теоретические основы языков программирования).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 31.03.2023

Просмотров: 84

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Для первой проблемы было найдено следующее решение: для каждой машинной команды были подобраны краткие мнемоники, отражающие ее суть. Например, для команды пересылки данных - MOV, для команды сложения - ADD и т.п. Такие мнемоники намного легче запомнить, чем двоичные, восьмеричные или шестнадцатеричные коды команды; кроме того, их не в пример легче читать, а это тоже немаловажно при отладке программы или ее изменении.

Вторая и третья проблемы также были решены без особых усилий: вместо использования реальных адресов в тексте программы располагались символические метки, а программа, генерирующая машинный код, вычисляла фактическое расположение ячеек в оперативной памяти и поставляла его в код.

Программы, предназначенные для преобразования подобных мнемонических инструкций в исполняемый машинный код, стали называть ассемблерами, а языки, используемые для записи таких программ,

- языками ассемблера, или, кратко, тоже ассемблерами.

Разумеется, появление ассемблеров явилось важным шагом на пути развития программирования. Во-первых, программы на ассемблере читать и понимать гораздо легче, чем разбираться с машинными кодами (однако не следует считать, что это легко - все познается в сравнении). Во-вторых, вычисление смещений для ветвлений и относительной адресации - задача хоть и не сложная, но весьма громоздкая и подверженная ошибкам. В-третьих, при добавлении дополнительных команд в середину программы не нужно заботиться о пересчете изменившихся адресов данных и команд, ассемблер их пересчитает при очередном запуске.

Однако применение ассемблера оставляет нерешенными ряд задач. Во-первых, программирование на языке ассемблера требует хорошего знания архитектуры машины, на которой программа будет выполняться. Это значительно сужает круг потенциальных разработчиков программного обеспечения. Например, для разработки программного обеспечения для решения экономических задач программист должен одинаково хорошо разбираться как в предметной области, так и в архитектуре компьютера; наладить совместную работу двух разных людей, каждый из которых является специалистом в одном из этих вопросов, значительно сложнее.

Во-вторых, как следствие, низкий уровень языка вынуждает программиста мыслить не категориями предметной области, а в терминах ячеек памяти, индексных и базовых регистров, указателя стека и т.п. В случае нетривиальной задачи довольно трудно мыслить одновременно на нескольких уровнях абстракции.


В-третьих, язык ассемблера вследствие жесткой привязки к архитектуре определенного компьютера делает программы непереносимыми: переход на другой тип компьютеров делает непригодными все ранее разработанные программы, поскольку новый компьютер имеет другие мнемоники и формат команд, другие методы адресации аргументов и т.п. Кроме того, переучивание программистов на новую систему команд также потребует определенного времени, что делает переход на другую архитектуру еще более трудным.

FORTRAN был первым успешно реализованным языком программирования высокого уровня. Разрабатывался он во времена жесточайшего дефицита оперативной памяти, который ставил под сомнение саму возможность практической реализации компилятора какого-либо из языков высокого уровня (ЯВУ).

Это обстоятельство отложило свой отпечаток на облик языка: во главу угла ставилась высочайшая эффективность и компактность результирующего машинного кода, которые позволили языку постепенно завоевать популярность, несмотря на многочисленные нападки сторонников ассемблера.

Несмотря на отсутствие опыта (откуда же ему было взяться у разработчиков первого компилятора, когда даже теория компиляции еще не была разработана), эта задача была решена разработчиками блестяще: компилятор FORTRAN I для мэйнфреймов IBM удерживал рекорд по степени оптимизации кода в течение 20 лет! Хотя этому меньше удивляешься, узнав, что во главе разработки стоял гениальный Джон Бэкус, а в его команду входили Ш. Бест, Х. Геррик, П. Шеридан, Р. Натт, Р. Нельсон, И. Зиллер, Р. Голдберг, Л. Хейбт и Д. Сейр. Немалую роль сыграла и поддержка коллектива руководством IBM, даже несмотря на то, что проект потребовал куда больше ресурсов, чем первоначально планировалось.

Выиграв кровопролитнейшую битву с ассемблером, новый язык получил заслуженное признание как в среде ученых, так и у промышленников и военных. В частности, трудно переоценить его роль в компьютерном обеспечении космической программы.

В 1958 г. увидел свет FORTRAN II, в который были добавлены средства раздельной компиляции модулей, а также возможность связи с ассемблерным кодом. В том же году появился FORTRAN III, который, впрочем, так и не был выпущен для общего пользования. В этой версии можно было включать фрагменты ассемблерного кода прямо в исходный текст программы. Эффективность кода возросла еще больше, однако это сильно ударило по переносимости, поэтому от новшества решили все же отказаться.

Наконец, в 1961 г. был выпущен FORTRAN IV, который представлял собой рафинированный вариант FORTRAN II, лишенный некоторых аномалий и машинно-зависимых особенностей. Именно эта версия получила наибольшее распространение среди ученых и инженеров и служила им верой и правдой более 30 лет, будучи реализованной практически на всех мэйнфреймах, мини-ЭВМ и персональных компьютерах, с которыми мне когда-либо доводилось иметь дело.


С мая 1962 г. началась работа по стандартизации языка, результатом которой стал FORTRAN 66 - первый в мире стандарт на ЯВУ. Язык заслуженно получил очередной титул "первый".

Основные черты языка: программа состоит из главной программы и набора подпрограмм, компилируемых независимо и компонуемых перед загрузкой. Каждая подпрограмма имеет собственную отдельную область памяти для хранения переменных и кода. Кроме того, можно выделять общие (COMMON) области памяти, которые содержат переменные, доступные из разных подпрограмм. Обмен данными осуществляется через блоки COMMON, а также через формальные параметры подпрограмм, при этом передача параметров производится только по ссылке.

Из типов данных имеются числовые (целочисленные и с плавающей точкой), а также логический. Из структур  скалярные переменные и статические массивы размерностью не более 3. Что характерно, имеется также встроенный тип для представления комплексных значений, для которого определен полный набор операций. 

Поскольку основное назначение языка - математические вычисления, имеется богатый набор арифметических операций, математических функций, а также преобразований типов.

На этом эволюция языка-долгожителя не остановилась, и в 1990 г. увидел свет очередной стандарт, FORTRAN 90. Впрочем, он слишком опоздал со своим появлением, дав приличную фору по времени своим конкурентам, главным из которых явился, безусловно, C++. Несмотря на очевидные усовершенствования языка, FORTRAN 90 не получил такого ошеломляющего успеха, как его знаменитые предшественники, и удовольствовался весьма скромной нишей. Не прибавило ему популярности и появление следующего стандарта, FORTRAN 95. Новое поколение программистов ориентировано на C++, Java и C#, и старому доброму FORTRANу, увы, нечего им противопоставить.

Третье поколение языков программирования представляет Algol 60. Algol разрабатывался комитетом, специально созданным для разработки языка высокого уровня общего назначения, пригодного для научных вычислений (хотя в промышленности в то время царила эйфория, навеянная успехом FORTRAN'а, в академической среде находились люди, способные заглянуть дальше и видящие, в какой тупик со временем неизбежно заведет FORTRAN).

Как и в большинстве других языков программирования, программа на Algolе состоит из главной программы и набора подпрограмм. При их построении используются блоки - наборы описаний и последовательности операторов, ограниченные "скобками" begin и end. Структуры данных, созданные внутри блока, локальны в его пределах и при выходе из блока уничтожаются. Таким образом можно управлять временем жизни данных и областью видимости их идентификаторов.


Четвертое поколение представлено языками поддержки сложных структур данных. Ярким примером можно назвать язык SQL.

Язык SQL был разработан в конце 70-х годов в компании IBM и был впервые реализован в реляционной СУБД IBM System R. В дальнейшем, благодаря своей элегантности, независимости от специфики компьютера и поддержке лидерами в области технологии реляционных баз данных, SQL стал и в обозримом будущем останется стандартом "де-факто" для всех реляционных систем обработки данных.

Первый международный стандарт языка SQL был принят в 1989 году ANSI. Этот стандарт называют SQL/89. Подавляющее большинство СУБД поддерживают этот стандарт полностью. В связи с развитием информационных технологий через некоторое время возникла необходимость расширения стандарта. В 1992 году был принят новый стандарт SQL/92. Затем в 1999 году был принят стандарт SQL/99 и, наконец, самый последний стандарт языка SQL был принят в 2003 году и носит название SQL/2003. Стоит, правда, сказать о том, что не все СУБД ограничиваются полной поддержкой стандарта и часто добавляют в язык SQL какие-то специфичные возможности с целью повышения конкурентоспособности СУБД.

Следующее поколение – это языки искусственного интеллекта.

Когда-то в 60-х годах очень бурно развивалась теория автоматического доказательства теорем и Робинсоном был предложен алгоритм резолюций, который позволял доказать любую верную теорему (вывести из аксиом) за конечное время (за какое не известно). Как оказалось позже, это наилучшее решение общей задачи, невозможно доказать теорему за ограниченное число операций. Простыми словами, алгоритм представляет собой обход (в общем случае бесконечного) графа в ширину, естественно, что предсказуемость работы алгоритма практически равно 0, соответственно для Языка Программирования — это абсолютно не подходит. И в этот момент Кальмэроу нашел блестящее сужение задачи, благодаря которому доказательство некоторых теорем выглядело как процедурное исполнение программы. Стоит отметить, что класс доказуемых теорем достаточно широк и очень хорошо применим для класса программируемых задач. Вот так в 1972 году появился Prolog.

В 1977 году в Эдинбурге Уоррен и Перейра создали очень эффективный компилятор языка Пролог для ЭВМ DEC–10, который послужил прототипом для многих последующих реализаций Пролога. Что интересно, компилятор был написан на самом Прологе. Эта реализация Пролога, известная как "эдинбургская версия", фактически стала первым и единственным стандартом языка. Алгоритм, использованный при его реализации, послужил прототипом для многих последующих реализаций языка. Как правило, если современная Пролог-система и не поддерживает эдинбургский Пролог, то в ее состав входит подсистема, переводящая прологовскую программу в "эдинбургский" вид. Имеется, конечно, стандарт ISO/IEC 13211– 1:1995, но его поддерживают далеко не все Прологсистемы.


В 1980 году Кларк и Маккейб в Великобритании разработали версию Пролога для персональных ЭВМ.

В 1981 году стартовал вышеупомянутый проект Института по разработке методов создания компьютеров нового поколения.

На сегодня существует довольно много реализаций Пролога. Наиболее известные из них следующие: BinProlog, AMZI-Prolog, Arity Prolog, CProlog, Micro Prolog, МПролог, Prolog-2, Quintus Prolog, SICTUS Prolog, Silogic Knowledge Workbench, Strawberry Prolog, SWI Prolog, UNSW Prolog и т. д.

В нашей стране были разработаны такие версии Пролога как Пролог-Д (Сергей Григорьев), Акторный Пролог (Алексей Морозов), а также Флэнг (А Манцивода, Вячеслав Петухин).

Следующее поколение – это языки нейронных сетей (самообучающиеся языки). Исследовательские работы в этой области

Глава 2. Обзор и сравнение языков Java и C++

2.1.История и краткая характеристика языков Java и C++

 JAVA- это название языка программирования, который активно используется с 90-х годов прошлого столетия. Несмотря на то, что этот язык является открытым, т.е. его может свободно использовать каждый, на данный момент им владеет и его поддерживает компания Oracle Corporation. Java разрабатывался как язык программирования, который будет использоваться на любых устройствах, в результате на данном языке пишутся программы для компьютеров, смартфонов и даже телевизоров с технологией СМАРТ-ТВ[12].

История Java восходит к 1991 году, когда группа инженеров из компании Sun под руководством Патрика Нотона (Patrick Naughton) и члена Совета директоров (разностороннего компьютерного волшебника) Джеймса Гослинга (James Gosling) занялась разработкой небольшого языка, который можно было бы использовать для программирования бытовых устройств, на- пример, контроллеров для переключения каналов кабельного телевидения (cable TV switchboxes).Поскольку такие устройства не потребляют много энергии и не имеют больших микро- схем памяти, я должен был быть маленьким и генерировать очень компактные программы. Кроме того, поскольку разные производители могут выбирать разные центральные процессоры (Central Processor Unit— CPU), было важно не завязнуть в какой-то одной архитектуре компьютеров. Проект получил кодовое название "Green"[13].