История возникновения программирования. Основные принципы и подходы при создании языков программирования

Автор работы: Пользователь скрыл имя, 18 Июня 2014 в 18:11, курсовая работа

Краткое описание

Программирование — сравнительно молодая и быстро развивающаяся отрасль науки и техники. Опыт ведения реальных разработок и совершенствования, имеющихся программных и технических средств постоянно переосмысливается, в результате чего появляются новые методы, методологии и технологии, которые, в свою очередь, служат основой более современных средств разработки программного обеспечения. Исследовать процессы создания новых технологий и определять их основные тенденции целесообразно, сопоставляя эти технологии с уровнем развития программирования и особенностями имеющихся в распоряжении программистов программных и аппаратных средств.
Объектом исследования являются технологии программирования.

Содержание

Введение..................................................................................................................4
1. История возникновения и развития языков программирования...................5
1.1 Понятие и классификация языков программирования.................................5
1.2 История появления языков программирования............................................7
1.3 Языки процедурного программирования.....................................................13
1.4 Языки искусственного интеллекта................................................................19
2. Современные языки объектно-ориентированного и визуального программирования...............................................................................................................24
2.1 Объектно-ориентированный подход к программированию........................24
2.2 Компонентное программирование.................................................................25
2.3 Применение структурных и объектно-ориентированных методов программирования.......................................................................................................27
Заключение.............................................................................................................30
Список использованных источников...................................................................31

Вложенные файлы: 1 файл

курсовая.docx

— 51.29 Кб (Скачать файл)

Язык программирования С (Си) был разработан в лаборатории Bell для реализации операционной системы UNIX в начале 70-х гг. и не рассматривался как массовый. Он планировался для замены 
Ассемблера, чтобы иметь возможность создавать столь же эффективные и компактные программы, и в то же время не зависеть от конкретного типа процессора. По набору управляющих конструкций и структур данных С имеет возможности, присущие высокоуровневым языкам, и вместе с тем он располагает средствами прямого обращения к функциональным узлам компьютера. Синтаксис языка С позволяет создавать лаконичный программный код. Одна из существенных особенностей С, приближающая его к функциональным языкам, состоит в том, что различия между выражениями и операторами сглаживаются. Например, выражения, являющиеся операторами программы, могут выполнять дополнительно операции присваивания. Использование подпрограмм основано на понятии функции, которая может также сочетать в себе возможности процедуры. Понятие процедуры в языке С отсутствует. Синтаксис языка затрудняет читаемость программы. Отсутствие строгой типизации данных, возможность в одном выражении сочетать несколько действий делает этот язык привлекательным для программистов, предоставляя им дополнительные возможности, но не способствует надежности создаваемых программ. Язык С популярен и широко используется профессиональными программистами. В настоящее время он реализован для большинства 
компьютерных платформ.

 

1.4 Языки искусственного интеллекта 

Само понятие "искусственный интеллект" возникло на заре вычислительной техники. Несмотря на почтенный возраст, термин этот не имеет точного определения и всегда понимался в интуитивном смысле. Обычно говорят, что к области искусственного интеллекта относятся те задачи, которые до сих пор человек решает лучше, чем компьютер. Таким образом, круг решаемых в рамках искусственного интеллекта проблем постоянно динамически изменяется. Например, еще несколько лет назад обучение ЭВМ игре в шахматы являлось прерогативой AI (от английского Artifical Intelligence - искусственный интеллект), но сегодня все больше специалистов считает, что игра в шахматы уже не является проблемой искусственного интеллекта. Сегодня главными проблемами, решаемыми в рамках AI, являются примерно следующие: построение экспертных систем, решение задач поиска, в которых полный перебор вариантов теоретически невозможен (в том числе - программирование игр), моделирование биологических форм, распознавание образов. Фундаментальные принципы решения всех этих задач были заложены еще в начале семидесятых, но, в связи с тем, что задачи AI очень ресурсоемки, настоящее развитие они получили только в наши дни.

Для решения задач AI еще в начале семидесятых годов были созданы два специфических языка программирования - Пролог (Prolog) и Лисп (LISP). Современный разработчик искусственного интеллекта должен свободно владеть каждым из них. Далее остановимся на самых характерных их особенностях.

Исторически Лисп более старый язык. Концепция, которую он представляет, называется функциональным программированием, она является прямым продолжением обычного алгоритмического подхода. Лисп-программа представляет собой функцию, результат вычисления которой - это результат работы программы, а аргументы, чаще всего - другие вызовы функций. В связи с объективными причинами в Лиспе принята бесскобочная запись при вызове функций, вызов любой функции осуществляется при помощи списка, первым элементом которого является название функции, а все остальные элементы представляют аргументы. Например, сложение двух чисел A и B может выглядеть так: (add A B), сложение трех чисел - так: (add A (add B C)). Самой важной особенностью Лиспа является то, что запись вида (add A B) может представлять из себя не только список, как вызов функции, но и список, как элемент данных, содержащий в себе три компоненты - add, A и B. Решение о том, следует ли использовать список как данные, или его необходимо интерпретировать, в рамках Лиспа может приниматься самой программой. Таким образом, программа получает возможность модифицировать собственный код, что чрезвычайно важно для приложений AI.

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

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

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

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

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

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

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

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

  • Одна или несколько динамических структур данных, которые могут анализироваться и модифицироваться активизированным модулем.

  • Интерпретатор, который циклически управляет выбором и активизацией модулей.

Исследования в этой области в последние годы концентрируются вокруг следующих задач:

  • поиск эффективных методов реализации интерпретаторов;

  • создание на основе "чистых формализмов" программных средств, пригодных для практического применения;

  • проведение экспериментов со "смешанными" формализмами, объединяющими разные парадигмы.

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

 

2. СОВРЕМЕННЫЕ ЯЗЫКИ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО  И ВИЗУАЛЬНОГО ПРОГРАММИРОВАНИЯ

2.1 Объектно-ориентированный подход  к программированию

На смену структурному программированию в начале 1990-х гг. пришло объектно-ориентированное программирование - ООП. Его можно рассматривать как модульное программирование нового уровня, когда вместо во многом случайного, механического объединения процедур и данных главным становится их смысловая связь. Объект рассматривается как логическая единица, которая содержит данные и правила (методы) их обработки. Объектно-ориентированный язык создает «программное окружение» в виде множества независимых объектов, каждый из которых отличается своими свойствами и способами взаимодействия с другими объектами. Программист задает совокупность операций, описывая структуру обмена сообщениями между объектами. Как правило, он «не заглядывает» внутрь объектов, но при необходимости может изменять элементы внутри объектов или формировать новые.

 ООП основано на трех важнейших принципах (инкапсуляция, наследование, полиморфизм), придающих объектам новые свойства.

  • Инкапсуляция - объединение в единое целое данных и алгоритмов их обработки. Данные здесь - поля объекта, а алгоритмы - объектные методы.

  • Наследование - свойство объектов порождать своих потомков. Объект-потомок автоматически наследует все поля и методы, может дополнять объекты новыми полями, заменять и дополнять методы.

  • Полиморфизм - свойство родственных объектов решать схожие по смыслу проблемы разными способами.

Идея использования программных объектов исследовалась в течение ряда лет разными учеными. Одним из первых языков этого типа считают Simula-67.А в 1972 г. появился язык Smoltalk, разработанный Аланом Кеем, утвердивший статус ООП.

На современном этапе развиваются инструментальные среды и системы визуального программирования для создания программ на языках высокого уровня: (Turbo Pascal, Delphi, Visual Basic, C++Builder и др.).

 

2.2 Компонентное программирование

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

В КП компонент рассматривается как хранилище (в виде DLL-или ЕХЕ файлов) для одного или нескольких классов. Классы распространяются в бинарном виде, а не в виде исходного кода. Предоставление доступа к методам класса осуществляется через строго определенные интерфейсы по протоколу. Это снимает проблему несовместимости компиляторов, обеспечивая без перекомпиляции смену версий классов в разных приложениях. Интерфейсы задают содержание сервиса и являются посредником между клиентом и сервером.

Фирма Microsoft создала технологии для распределенной разработки распределенных систем, такие как COM (Component Object Model), COM+, .NET. Разработаны и другие технологии: CORBA (консорциума OMG), JAVA (компании Sun Microsystem) и др.Идея переложить на ЭВМ функции составителей алгоритмов и программистов дала новые возможности развитию сферы искусственного интеллекта, которая должна была создавать методы автоматического решения интеллектуальных задач. Формализация знаний, которые есть у профессионалов в разных областях, накопление их в базах знаний, реализованных на ЭВМ, стали основанием для создания экспертных систем. На основе баз знаний работают и ЭВМ V поколения, и интеллектуальные роботы, и экспертные системы. Эти системы могут не только найти решение той или иной задачи, но и объяснить, как оно получено.

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

Информация о работе История возникновения программирования. Основные принципы и подходы при создании языков программирования