Файл: «Обзор и анализ характеристик языков программирования».pdf
Добавлен: 17.05.2023
Просмотров: 1078
Скачиваний: 10
СОДЕРЖАНИЕ
1.1 История развития языков программирования
1.1.1. Машинный язык (40-50 годы XX в.).
1.1.2. Ассемблер (начало 50-ых годов XX в.).
1.1.3. Первые языки программирования высокого уровня.
1.1.4. Алгоритмические языки программирования.
1.1.5. Языки объектно-ориентированного программирования
1.1.6. Языки программирования для компьютерных сетей.
1.1.7. Языки программирования на платформе .NET.
2. Обзор и анализ характеристик современных языков программирования
2.2.Объектно-ориентированное программирование (ООП)
2.3.Декларативные языки программирования
2.4.Языки программирования баз данных.
2.4.1.Языки программирования для компьютерных сетей
2.5.Языки искусственного интеллекта
2.6.Классификация языков программирования
2.3.2.Язык Пролог (PROLOG)
В 1973 году был создан язык искусственного интеллекта Пролог (PROLOG) (Programming in Logic). Программа на языке Пролог строится из последовательности фактов и правил, затем формулируется утверждение, которое Пролог пытается доказать с помощью правил. Язык сам ищет решение с помощью методов поиска и сопоставления, которые в нем заложены.
Логические программы не отличаются высоким быстродействием, так как процесс их выполнения сводится к построению прямых и обратных цепочек рассуждений разнообразными методами поиска.
2.4.Языки программирования баз данных.
Языки программирования баз данных отличаются от алгоритмических языков прежде всего своим функциональным назначением. При работе с базами данных выполняются следующие операции:
- создание, преобразование и удаление таблиц в БД;
- поиск, отбор, сортировка по запросам пользователя;
- добавление новых записей и модификация существующих, удаление записей и др.
Для обработки больших массивов информации и выборки записей по определенным признакам был создан структурированный язык запросов SQL (Structured Query Language) 1986 год.. Язык SQL – это стандартный язык работы с реляционными базами данных.
Сегодня в мире ведущие производители СУБД: Microsoft (SQL Server), IBM (DB2), Oracle, Software AG (Adabas), Informix и Sybase. Практически в каждой СУБД имеется свой встроенный язык работы с БД. Так, например, в Oracle имеется встроенный язык PL/SQL, в Informix – INFORMIX 4GL, в Adabas – Natural и т.д.
2.4.1.Языки программирования для компьютерных сетей
Языки программирования для компьютерных сетей являются интерпретируемыми. Интерпретаторы для них распространяются бесплатно, а сами программы – в исходных текстах. Такие языки называются скрипт-языками.
Язык HTML (Hyper Text Markup Language) – универсальный язык разметки гипертекста, используемый для подготовки Web документов для Internet. Язык позволяет форматировать текст, добавлять графические образы, работать с таблицами и организовывать связь одного документа с другим с помощью механизма гиперссылок.
Язык Perl (80 г) содержит многочисленные функции работы со строками, массивами, всевозможные средства преобразования данных.
Язык PHP (1995-1997гг) обладает средствами доступа к БД и используется создателями динамических сайтов во всем мире.
Язык Tcl/Tk (конец 80-х годов) состоит из мощных команд, предназначенных для работы с абстрактными нетипизированными объектами и позволяет создавать программы с графическим интерфейсом.
Язык VRML (1994г) создан для организации виртуальных трехмерных интерфейсов в Интернете.
Язык XML. С 1996г идет работа над созданием универсального языка структуры документов. Является заменой языка HTML.
2.5.Языки искусственного интеллекта
Интерес к языкам искусственного интеллекта возник в 50-е гг., когда компанией Rand Corporation был разработан язык IPL (Information Processing Language). Версия IPL-V стала довольно широко известна, но ее использование ограничивалось тем, что IPL-V не был языком высокого уровня.
Огромным шагом вперед стала разработка Джоном Мак-Карти, сотрудником Массачусетсского технологического института (MIT), языка LISP (LISt Processing) для компьютеров IBM 704. Версия LISP 1.5 стала стандартом для его реализации на многие годы. Развитие LISP продолжается до настоящего времени. LISP разрабатывался как функциональный язык обработки списков. Естественной областью приложения LISP явилась разработка стратегии ведения игры, поскольку обычная программа, написанная на языке LISP, могла создавать дерево возможных направлений движения (как связанный список) и, продвигаясь по этому дереву, искать оптимальную стратегию.
Другой естественной областью применения этого языка стал автоматический машинный перевод текста, где одна цепочка символов может заменяться на другую.
В этой области первой разработкой был язык COMIT, созданный Ингве, сотрудником MIT. Каждый оператор программы, написанной на этом языке, был очень похож на контекстно-независимое правило и представлял собой набор замен, которые можно было осуществить, если в исходных данных обнаруживалась конкретная цепочка символов. Поскольку Ингве запатентовал свой код, группа разработчиков из AT&T Bell Telephone Laboratories решила создать свой собственный язык — так появился SNOBOL.
Если LISP создавался как язык обработки списков для универсальных приложений, Prolog стал специализированным языком с основанными на понятиях математической логики структурами управления и стратегией реализации.
Одновременно с развитием универсальных языков высокого уровня стали развиваться проблемно-ориентированные языки программирования, которые решали экономические задачи (COBOL), задачи реального времени (Modula-2, Ada), символьной обработки ( Snobol), моделирования (GPSS, Simula, SmallTalk), численно-аналитические задачи (Analitic) и другие. Эти специализированные языки позволяли более адекватно описывать объекты и явления реального мира, приближая язык программирования к языку специалиста в проблемной области.
Другим направлением развития языков программирования является создание языков сверхвысокого уровня. На языке высокого уровня программист задает процедуру (алгоритм) получения результата по известным исходным данным, поэтому они называются процедурными языками программирования. На языках сверхвысокого уровня программист задает отношения между объектами в программе, например систему линейных уравнений, и определяет, что нужно найти, но не задает как получить результат. Такие языки еще называют непроцедурными, т.к. сама процедура поиска решения встроена в язык (в его интерпретатор). Такие языки используются, например, для решения задач искусственного интеллекта (Lisp, Prolog) и позволяют моделировать мыслительную деятельность человека в процессе поиска решений.
К непроцедурным языкам относят и языки запросов систем управления базами данных (QBE, SQL).
2.6.Классификация языков программирования
Исходя из вышесказанного, языки программирования можно классифицировать по следующим признакам.
1. По степени ориентации на специфические возможности ЭВМ языки программирования делятся на: · машинно-зависимые; · машинно-независимые.
К машинно-зависимым языкам программирования относятся машинные языки, ассемблеры и автокоды, которые используются в системном программировании. Программа на машинно-зависимом языке программирования может выполняться только на ЭВМ данного типа. Программа на машинно-независимом языке программирования после трансляции на машинный язык становится машинно-зависимой. Этот признак языка программирования определяет мобильность получаемых программ (возможность переноса на ЭВМ другого типа).
2. По степени детализации алгоритма получения результата языки программирования делятся на: · языки низкого уровня; · языки высокого уровня; · языки сверхвысокого уровня. 3. По степени ориентации на решение определенного класса задач: · проблемно-ориентированные; · универсальные. 4. По возможности дополнения новыми типами данных и операциями: · расширяемые; · нерасширяемые. 5. По возможности управления реальными объектами и процессами: · языки систем реального времени; · языки систем условного времени. 6. По способу получения результата: · процедурные; · непроцедурные. 7. По типу решаемых задач: · языки системного программирования; · языки прикладного программирования. 8. Непроцедурные языки по типу встроенной процедуры поиска решений делятся на: · реляционные; · функциональные; · логические.
Рассмотренная схема классификации позволяет каждому языку программирования присвоить один из признаков каждого класса.
2.7.Тенденции развития языков программирования
Рассмотренная схема классификации языков программирования позволяет сделать вывод о том, что они обладают определенной специализацией. Поэтому рассмотрим тенденции развития классов языков программирования.
Языки системного программирования, на которых создаются операционные системы, трансляторы и другие системные программы, развиваются в направлении повышения их уровня и независимости от ЭВМ. На сегодняшний день почти 90% системного программного обеспечения создается не на языке ассемблера, а на языке C. Например, операционная система Unix практически полностью написана на C. Язык C позволяет получать программы, сравнимые по своей эффективности с программами, написанными на языке ассемблера. Правда, объем программ получается больше, но зато эффективность их создания гораздо выше.
Машинная независимость достигается использованием стандарта языка, поддерживаемого всеми разработчиками трансляторов, и использованием так называемых кросс-систем для эквивалентного преобразования программ с одного языка низкого уровня на другой.
Другим направлением является повышение уровня самого машинного языка. Например, известны Lisp-машины, в которых машинным языком является язык Lisp (реализован аппаратно). Другим примером являются ЭВМ 5-го поколения с машинным языком искусственного интеллекта Prolog.
Языки высокого уровня развиваются в направлении поддержки технологий программирования, обеспечения низкоуровневых операций (уровня ассемблера), обеспечения новых информационных технологий (НИТ) и независимости от среды реализации. Следует сказать, что по своим возможностям языки высокого уровня постепенно сближаются и программисту на C все труднее становится спорить о преимуществах языка C с программистом, работающим на языке Basic.
Тотальный бум переживает технология объектно-ориентированного программирования (ООП): практически все современные ЯВУ поддерживают ООП. Да и все современные программные системы построены на принципах ООП, и сегодня каждый программирующий студент знает, что такое инкапсуляция, наследование и полиморфизм. Для обозначения факта поддержки ООП языки получают приставку Object (например, ObjectPascal) или другие (например, C++).
Windows, сети ЭВМ, серверы, базы данных и Internet, как основа НИТ, оказывают сильнейшее влияние на современные языки программирования. Разработчики языка программирования просто обязаны включать в языки средства поддержки НИТ, чтобы привлечь программистов на свою сторону. Для поддержки Windows создаются системы визуального программирования с приставкой Visual, например Visual C++, Visual Basic и др. Для работы с базами данных , сетями и Internet в язык программирования включаются специальные внутренние или внешние средства.
Стремление к созданию программ, независимых от типа ЭВМ и операционной системы, привело к созданию языка Java. Основная задача Java − обеспечить выполнение программ, распространяемых через Web-страницы Internet, на любой рабочей станции. Кроме того, Java поддерживает все средства НИТ.
Популярность языков искусственного интеллекта за последние 10 лет, к сожалению, заметно упала. Это связано прежде всего с психологическими проблемами, которые испытывают программисты при использовании этих языков. Например, в мощнейшем языке Lisp программа имеет очень сложную для понимания списочную структуру и небольшой по объему проект очень быстро выходит из под контроля. В языке Prolog программист должен точно знать логику работы встроенной машины логического вывода, а работа программы зависит от структуры и содержимого базы знаний (БЗ). Если с проектированием программы и структуры БЗ программист справляется, то для заполнения БЗ он должен быть экспертом в предметной области либо тесно контактировать с экспертом и извлекать из него знания, а то и другое является сложной задачей.
Поэтому необходимы дополнительные обеспечивающие средства для возврата популярности этих языков.