Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Классификация и обзор языков программирования




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

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

Одним из первых процедурных языков программирования высокого уровня был Фортран (Fortran), разработанный в начале 50-х гг. фирмой IBM (широко используется в первую очередь в целях научных и инженерных вы­числений). Долгие годы был одним из самых распространенных языков в мире. Одно из преимуществ Фортрана - большое количество написанных и накопленных на нём программ и их библиотек. Ряд таких библиотек создава­лись на протяжении десятилетий и популярны (главным образом в научной среде) по сей день. Современный Фортран приобрёл черты, необходимые для эффективного программирования в среде новых вычислительных архитектур (позволяет применять современные технологии программирования). Фор­тран имеет достаточно большой набор встроенных математических функций, поддерживает работу с целыми, вещественными и комплексными числами. Выразительные средства языка изначально были весьма скудны, поскольку Фортран был одним из первых языков высокого уровня. В дальнейшем в Фортран были добавлены многие лексические конструкции, характерные для структурного, функционального и даже объектно-ориентированного про­граммирования.

В конце 50-х гг. был разработан язык Кобол (CO mmom B usiness O riented L anguage - общепринятый деловой язык) – язык программирования, ориен­тированный, в первую очередь, для разработки бизнес приложений (предна­значался для решения экономических задач, обработки данных для банков, страховых компаний и других учреждений подобного рода). Отличительной особенностью языка является возможность эффективной работы с большими массивами данных (что характерно именно для коммерческих приложений). Популярность Кобола столь высока, что даже сейчас, при всех его недостат­ках (его обычно критикуют за многословность и громоздкость) появляются новые его диалекты и реализации. Язык позволяет эффективно работать с большим количеством данных, он насыщен разнообразными возможностями поиска, сортировки и распределения (что и обеспечивает ему долгую жизнь в бизнес приложениях).

В 1960 году был разработан язык Алгол, который предназначался для записи алгоритмов, построенных в виде последовательности процедур, при­меняемых при составлении программ для решения научно-технических за­дач. Язык был достаточно интересен, так как обладал многими уникальными на тот момент характеристиками. Язык появился в результате международ­ного сотрудничества группы специалистов и сыграл большую роль как в ста­новлении основных понятий программирования, так и в обучении програм­мистов. В нем впервые были введены понятия «блочная структура» (внутри блока в Алголе можно вводить локальные обозначения, которые не зависят от остальной части программы), «динамическое распределение памяти» и др. Несмотря на свое интернациональное происхождение, Алгол получил меньшее распространение, чем, скажем, Фортран (из-за более сложной структуры). В 1968 году была создана версия Алгол-68, по своим возможно­стям и сегодня опережающая многие языки программирования, однако из-за отсутствия достаточно эффективных средств, для нее не удалось своевре­менно создать хорошие компиляторы.

В начале 60-х гг. каждый из существующих языков программирования был ориентирован на разные классы задач и предпринимались попытки пре­одолеть этот недостаток путем создания универсального языка программиро­вания. ПЛ/1 (PL/1 P rogramming L anguage One) – первый многоцелевой универсальный язык, разработан фирмой IBM в середине 60-х гг. (обладает исключительным богатством синтаксических конструкций). При разработке PL/1 широко использовались основные понятия и средства языков Фортран, Алгол, Кобол. Он хорошо приспособлен для решения задач в области вычис­лительной техники: исследования и планирования вычислительных процес­сов, моделирования, решения логических задач и исследования логических схем. PL/I содержит все основные конструкции, характерные для так назы­ваемых языков высокого уровня, а также ряд специфичных средств, удобных для практического программирования (напоминает конструктор с большим числом деталей и пользователю достаточно освоить только те части языка, которые ему практически необходимы). Его операторы довольно емки, что часто позволяет получить запись программы более компактную, чем на других языках. Вместе с тем, PL/I имеет и ряд недостатков, затруд­няющих изучение и использование этого языка. Основные из них: во-первых, имеется много дублирующих друг друга средств и их сложно запомнить, во-вторых, программы получаются не совсем машинно-независимыми.

В середине 60-х гг. был создан специализированный язык программиро­вания, который состоял из простых английских слов и его назвали универ­сальным символическим кодом для начинающих (B eginner's A ll-purpose S ymbolic I nstruction C ode) или сокращенно Basic (Бейсик). При проектирова­нии языка использовались следующие принципы:

· быть простым в использовании для начинающих;

· быть языком программирования общего назначения;

· предоставлять возможность расширения функциональности;

· быть интерактивным;

· предоставлять ясные сообщения об ошибках;

· быстро работать на небольших программах;

· не требовать понимания работы аппаратного обеспечения;

· быть посредником меду пользователем и операционной системой.

Язык получил самое широкое распространение при работе на персо­нальных компьютерах в режиме интерактивного диалога. Популярность Бей­сика объясняется как простотой его освоения, так и наличием достаточно мощных универсальных средств, пригодных для решения научных, техниче­ских, экономических задач, а также задач бытового назначения. Возникло не­сколько версий этого языка (зачастую мало совместимых друг с другом). Однако, зная одну из них, можно без особого труда освоить любую другую. Начиная с конца 80-х, компьютеры усложнились и стали предоставлять но­вые возможности (такие как графический интерфейс пользователя), делая Бейсик уже не столь удобным для программирования (он начал сдавать свои позиции). Вторую жизнь Бейсик получил с появлением Visual Basic, который стал одним из наиболее часто используемых языков на платформе Microsoft Windows. Позже появились другие варианты, например, вариант Visual Basic for Applications (VBA) и др.

В 1970 году был создан процедурный язык программирования Паскаль (Pascal), названный так в честь выдающегося французского математика и философа Б.Паскаля (он примечателен тем, что это первый широко распро­страненный язык для структурного программирования). Паскаль – один из наиболее известных языков (является базой для большого числа других язы­ков программирования). В основе концепции Паскаля лежит системный под­ход (в нем сведены к минимуму возможные синтаксические неоднозначно­сти, а сам синтаксис интуитивно понятен даже при первом знакомстве с языком). К его основным принципам можно отнести:

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

· программирование сверху вниз - задача делится на простые, самостоя­тельно решаемые подзадачи, а на основе решенных подзадач выстраива­ется решение исходной задачи полностью – сверху вниз.

В основу разработки языка Паскаль был положен Алгол-60, но в нем ужесточен ряд требований к структуре программы и имеются возможности, позволяющие успешно применять его для создания крупных проектов. Пас­каль реализован для всех типов компьютеров, в настоящее время использу­ется во многих учебных заведениях для обучению программированию, а также для создания больших реальных проектов. Достоинства языка побу­дили многие организации продолжать разрабатывать и развивать системы программирования на основе языка Паскаль, подвергая язык произвольному расширению, добавляя в него, часто совершенно механически, новые сред­ства и синтаксические конструкции. Наиболее известной такой реализацией Паскаля является система Turbo Pascal (выросшая затем в Borland Pascal и далее в Delphi), в которой язык был значительно расширен, были устранены некоторые недостатки языка, добавлены новые возможности.

Язык программирования C (Си) был разработан для реализации опера­ционной системы UNIX (и первоначально не рассматривался как массовый). Он планировался для замены Ассемблера, чтобы иметь возможность созда­вать столь же эффективные и компактные программы (Си позволяет рабо­тать с данными практически так же эффективно, как на ассемблере, пре­доставляя при этом структурированные управляющие конструкции и абст­ракции высокого уровня), и в то же время не зависеть от конкретного типа процессора (он не связан с какими либо определенными аппаратными сред­ствами или системами, и на нем легко писать программы, которые можно пропускать без изменений на любой ЭВМ, имеющей Си-компилятор). По на­бору управляющих конструкций и структур данных Си имеет возможности, присущие высокоуровневым языкам (хотя он и не является языком «очень высокого уровня», однако отсутствие ограничений делают его для многих задач более удобным и эффективным, чем более «мощные» языки), и вместе с тем он располагает средствами прямого обращения к функциональным уз­лам компьютера (Си имеет дело с объектами того же вида, что и большин­ство ЭВМ, а именно, с символами, числами и адресами, которые могут объ­единяться и пересылаться посредством обычных арифметических и логиче­ских операций, осуществляемых реальными ЭВМ). Отсутствие строгой типи­зации данных, возможность в одном выражении сочетать несколько действий делает этот язык привлекательным для программистов, предоставляя им до­полнительные возможности (но не способствует надежности создаваемых программ). В настоящее время он реализован для большинства компьютер­ных платформ. Удержание языка в скромных размерах дает ему реальные преимущества (так как Си относительно мал, он не требует много места для своего описания и может быть быстро изучен). Дальнейшее его разви­тие привело к созданию языка С++ (объектно-ориентированное расширение языка Си), а в дальнейшем и С# (ориентирован в основном на разработку многокомпонентных Интернет-приложений).

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

Первым разработанным функциональным языком (1958 г.) стал Лисп (LISP), в основу которого положен серьезный математический аппарат (слово «lisp» имеет также значение «детский лепет», что не случайно, так как тематика, которая интересовала создателя Лиспа была тесным образом связана с исследованиями человеческой речи), ориентированный на разра­ботку программ для решения задач не численного характера. Основная об­ласть применение этого языка - «обработка списков». В виде списков удобно представлять алгебраические выражения, графы, элементы конечных групп, множества, правила вывода и многие другие сложные объекты. Большим достоинством Лиспа является его функциональная направленность, т.е. про­граммирование ведется с помощью функций. Причем функция понимается как правило, соотносящее элементам некоторого класса соответствующие элементы другого класса. Сам процесс сопоставления не оказывает никакого влияния на работу программы, важен только его результат – значение функ­ции. Это позволяет относительно легко писать и отлаживать большие про­граммные комплексы. Ясность программ, четкое разграничение их функций, отсутствие каверзных побочных эффектов при их выполнении является обя­зательными требованиями к программированию таких логически сложных задач, каковыми являются задачи искусственного интеллекта (после появле­ния Лиспа различными авторами был предложен целый ряд других алгорит­мических языков ориентированных на решение задач в области искусствен­ного интеллекта, однако это не помешало ему остаться наиболее популяр­ным языком для решения таких задач). Язык Лисп послужил основой широ­кого спектра исследований и прикладных разработок, оказавших существен­ное влияние на расширение и распространение компьютерных и информаци­онных технологий, по существу являющихся ключевыми для анализа и фор­мирования многих сфер деятельности. На протяжении почти сорокалетней истории его существования появился ряд диалектов этого языка. Различия между ними не носят принципиального характера и в основном сводятся к несколько отличающемуся набору встроенных функций и некоторой разнице в форме записи программ. Поэтому программист, научившийся работать на одном из них без труда сможет освоить и любой другой.

Логическое программирование. Логическое программирование осно­вано на теории и аппарате математической логики с использованием матема­тических принципов резолюций. Концепция логического программирования основана на понятии отношение. Логическая программа – это совокупность аксиом и правил, определяющих отношения между объектом (в терминах ус­ловий или ограничений) и целью (запросом). Процесс выполнения программы представляет собой попытку доказательства логического утверждения, по­строенного из программы по правилам, определенным семантикой исполь­зуемого языка. Результатом вычислений является вывод следствий из аксиом. В реляционном программировании нужно только специфицировать факты, на которых алгоритм основывается, а не определять последовательность ша­гов, которые требуется выполнить. Это свидетельствует о декларативности языка логического программирования. Она метко выражена в формуле: «ал­горитм = логика + управление». Языки логического программирования ха­рактеризуются:

· высоким уровнем;

· строгой ориентацией на символьные вычисления;

· возможностью инверсных вычислений (т.е. переменные в процедурах не делятся на входные и выходные);

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

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

Самым известным языком логического программирования является Пролог (PROLOG) - язык универсального назначения (разработан в 1973 г.). Он используется для создания прикладных систем различных типов и отно­сится к числу важнейших языков, используемых в символьной обработке, в исследованиях по искусственному интеллекту (экспертных систем, про­грамм доказательства теорем, систем машинного перевода, баз данных, баз знаний и др.). Пролог-программа является собранием правил и фактов. Реше­ние задачи достигается интерпретаций этих правил и фактов. При этом от пользователя не требуется обеспечивать детальную последовательность ин­струкций, чтобы указать каким образом осуществляется управление ходом вычислений на пути к результату. Вместо этого он только определяет воз­можные решения задачи и обеспечивает программу фактами и правилами, которые позволяет ей отыскать требуемое решение (относится к так назы­ваемым декларативным языкам, требующим от автора умения составить формальное описание ситуации). Перечень возможных синтаксических кон­струкций Пролога невелик, и в этом смысле язык прост для изучения. Он реализован практически для всех известных операционных систем и плат­форм (в их число входят OS для мэйнфреймов, всё семейство Unix, Windows, OS для мобильных платформ).

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

· система состоит из объектов;

· объекты некоторым образом взаимодействуют между собой;

· каждый объект характеризуется своим состоянием и поведением;

· состояние объекта задается значением полей данных;

· поведение объекта задается методами.

Таким образом, программа представляет собой набор объектов, имею­щих состояние и поведение. Объекты взаимодействуют посредством сооб­щений. Устойчивость и управляемость системы обеспечивается за счёт чёт­кого разделения ответственности объектов, однозначного определения ин­терфейсов взаимодействия между объектами и полной изолированности внутренней структуры объекта от внешней среды.

Основными (ключевыми) понятиями (принципами) в ОПП являются:

· инкапсуляция – объединение данных и свойственных им процедур обра­ботки в одном объекте, детальная реализация которых остается скрытой для пользователей (принцип, согласно которому любой класс должен рас­сматриваться как «черный ящик», т.е. пользователь класса должен ви­деть и использовать только интерфейсную часть класса и не вникать в его внутреннюю реализацию).

· наследование – означает возможность порождать один класс от другого с сохранением всех свойств и методов класса-предка, добавляя при необхо­димости новые свойства и методы (набор классов, связанных отношением наследования, называют иерархией).

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

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

Наиболее распространенными современными языками программирова­ния, являются языки С++ и Java. С++ - компилируемый строго типизирован­ный язык программирования общего назначения (разработан в начале 80-х гг.). Он поддерживает разные парадигмы программирования: процедурную, обобщённую, функциональную, но наибольшее внимание уделено поддержке объектно-ориентированного программирования. За исключением второсте­пенных деталей он содержит язык Си как подмножество (имеет синтаксис, основанный на синтаксисе Си) и обладает многими новыми возможностями, позволивших резко повысить производительность труда программистов. Ес­тественная область его применение – системное программирование (кроме того, С++ успешно используется во многих областях приложения, выходя­щих за эти рамки). Реализация С++ имеется практически на всех типах ЭВМ и для всех операционных систем. Язык Java зародился как часть проекта соз­дания передового программного обеспечения для различных бытовых элек­тронных приборов. Реализация проекта была начата на языке С++ (синтак­сис языков С++ и Java практически полностью совпадает), но вскоре воз­никли проблемы, наилучшим средством борьбы с которыми было изменение самого инструмента - языка программирования. Изначально этот язык назы­вался Oak (основным достоинством которого было обеспечение сетевого взаимодействия различных по типу устройств), а новая интегрируемая в Internet версия получила название Java (1995 г.). С точки зрения возможно­стей объектно-ориентируемых средств, Java имеет ряд преимуществ перед С++, а потому является одним из самых популярных в мире.

С середины 90-х гг. многие объектно-ориентированные языки реализу­ются как системы визуального программирования. Такие системы имеют ин­терфейс, позволяющий при составлении текста программы видеть те графи­ческие объекты, для которых она пишется. Особенностью этих систем явля­ется наличие в них среды разработки программ из готовых «строительных блоков», позволяющих создавать интерфейсную часть программного про­дукта в диалоговом режиме, практически без написания программных опера­ций. Система берет на себя значительную часть работы по управлению ком­пьютером, что делает возможным в простых случаях обходиться без особых знаний о деталях ее работы. Она сама пишет большую часть текста про­граммы: описания объектов, заголовки процедур и многое другое. Програм­мисту остается только вписать необходимые строки, определяющие индиви­дуальное поведение программы, которые система не в состоянии предвидеть. Но даже в этих случаях система сама указывает место для размещения таких строк. К объектно-ориентированным системам визуального проектирования относятся: Visual Basic, Delphi, C++ Builder, Visual C++.

Языки программирования баз данных. Среди языков особое место занимают языки программирования баз данных. Они отличаются от алгорит­мических прежде всего своим функциональным назначением (специалисты говорят, что это - информационно-логические языки, а не языки программи­рования). При работе с базами данных наиболее часто выполняются следую­щие операции: создание, преобразование, удаление таблиц в базе данных, поиск, отбор, сортировка по запросам пользователей, добавление новых за­писей или модификация существующих, удаление записей и др. Для обра­ботки больших массивов информации и выборки записей по определенным признакам был создан (в начале 70-х гг.) структурированный язык запросов SQL (S tructured Q uery L anguage), который в дальнейшем (в 1986 г.) стал стандартом языка работы с реляционными базами данных. С помощью SQL программист описывает только то, какие данные нужно извлечь или моди­фицировать, а то, каким образом это сделать, решает СУБД непосредственно при обработке SQL-запроса (хотя, надо сказать, что ему при этом полезно представлять, как СУБД будет разбирать текст его запроса, особенно при работе с большими базами данных и со сложными запросами). Заметим, что целью разработки SQL было создание простого непроцедурного языка, кото­рым мог воспользоваться любой пользователь, даже не имеющий навыков программирования. Однако, в конце концов, он стал настолько сложным, что превратился в инструмент программиста. Кроме того, практически в каждой СУБД помимо поддержки языка SQL имеется также свой уникальный язык, ориентированный на особенности этой СУБД и не переносимый на другие системы.

Языки программирования для компьютерных сетей. Появление и активное развитие компьютерных сетей вообще и глобальной сети Internet, в частности, стало причиной создания многочисленных версий популярных языков программирования, адаптированных для использования в сетях. Все они отличаются характерными особенностями: языки являются интерпрети­руемыми, интерпретаторы для них распространяются бесплатно, а сами про­граммы - в исходных текстах. Такие языки называют скрипт-языками.

HTML (H yper T ext M arkup L anguage) – универсальный язык разметки гипертекста (представляет собой набор текстов, содержащих узлы пере­хода от одного текста к какому-либо другому, позволяющие избирать чи­таемые сведения или последовательность чтения), используемый для под­готовки Web-документов для сети Internet. Он очень прост, содержит элемен­тарные команды форматирования текста, добавления графических объектов, задания шрифтов и цвета, организации ссылок и таблиц. Текстовые доку­менты, содержащие код на языке HTML (такие документы традиционно имеют расширение html или htm), обрабатываются специальными приложе­ниями, которые отображают документ в его форматированном виде. Эти приложения, называемые браузерами или интернет-обозревателями, обычно предоставляют пользователю удобный интерфейс для запроса Web-страниц, их просмотра (вывода на внешние устройства) и, при необходимости, от­правки введённых пользователем данных на сервер. Наиболее популярными на сегодняшний день браузерами являются Internet Explorer, Firefox, Safari, Google Chrome, Opera.

Perl (P ractical E xtraction and R eport Language – практический язык для извлечения данных и составления отчетов). Основной особенностью языка является его богатые возможности работы с текстом (обработки больших текстовых файлов), генерации текстовых отчетов и управления задачами. В его состав входят многочисленные функции работы со строками, массивами, всевозможные средства преобразования данных, управления процессами, ра­боты с системной информацией и др.

VRML (V irtual R eality M odeling L anguage язык моделирования вирту­альной реальности) - был создан для организации виртуальных трехмерных интерфейсов в Интернете. Он ориентирован на описание разнообразных трехмерных образов, цвето-теневого освещения, позволяет создавать различ­ные сценарии миров, путешествовать по ним, «облетать» со разных сторон, вращаться в любых направлениях, масштабировать, управлять освещенно­стью и многое другое (движение, звуки, освещение и другие аспекты вирту­ального мира могут появляться как реакция на действия пользователя или же на другие внешние события).

 

 





Поделиться с друзьями:


Дата добавления: 2017-02-11; Мы поможем в написании ваших работ!; просмотров: 4059 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Два самых важных дня в твоей жизни: день, когда ты появился на свет, и день, когда понял, зачем. © Марк Твен
==> читать все изречения...

2218 - | 2051 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.013 с.