Языки программирования. 2

 

      ОГЛАВЛЕНИЕ 

       

 

      

ВВЕДЕНИЕ

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

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

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

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

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

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

      Задачи курсовой работы:

      1. Проанализировать особенности языков программирования.

      2. Рассмотреть историю языков программирования по поколениям.

      3. Создать Web-сайт «Языки программирования».

      Различные аспекты языков программирования рассматриваются в работах Т. Пратта «Языки программирования: разработка и реализация», в которой рассматриваются общие концепции разработки и реализации языков программирования, О.Л.Голицына «Языки программирования», в ней рассмотрены эволюция и классификация языков, дается их конкретное описание.

      При разработке сайта использовалисьHTML (от англ. HyperText Markup Language — «язык разметки гипертекста») и Microsoft Office FrontPage 2003.

      Материал  адаптирован для применения в  школьном курсе информатики.

      1. ОБЩИЕ ХАРАКТЕРИСТИКИ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ

      1.1. Роль и характеристики языков программирования

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

      Как и естественные языки, языки программирования развиваются и в конце концов выходят из употребления, умирают. Например, язык ALGOL, затем Pascal, затем  C, C++, Java.

      На  принципы конструирования новых  языков влияют следующие факторы:

      1. Возможности компьютеров.

      2. Области применения

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

      4. Методы реализации. Усовершенствование  методов реализации отражается  в выборе тех новых свойств  , которые добавляются во вновь  разрабатываемые языки.

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

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

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

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

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

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

  • Экономия предполагает достижения максимальной мощности языка с помощью минимального числа понятий.
  • Ортогональность означает то, что между понятиями не должно быть взаимного влияния. Так, если одно понятие используется в различных контекстах, то правила использования должны быть одни и те же. К сожалению, даже такие языки, как Pascal, допускают неортогональные конструкции. Например, пользователь может определить процедуры только с фиксированным числом параметров, однако некоторые стандартные процедуры (например, writeln()) могут быть вызваны с переменным числом параметров.
  • Единообразие требует согласованного, единого подхода к описанию и использованию всех понятий.

      Существует  большое количество других характеристик.

  • Надежность - язык должен обеспечивать минимум ошибок при написании программ. Более того, язык должен быть таким, чтобы неправильные программы было трудно писать.
  • Удобочитаемость - легкость восприятия программ человеком. Это характеристика важна при коллективной работе, когда несколько человек работают с одними и теми же текстами программ.
  • Полнота - характеризует способность описать класс задач в некоторой предметной области.
  • Гибкость - характеризует легкость выражения необходимых действий.

      Следует заметить, что многие из перечисленных характеристик конфликтуют друг с другом. Например, надежность и эффективность. Это подчеркивает сложности, с которыми приходится сталкиваться создателям новых языков.

      1.2. Поколения языков программирования

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

      Таблица 2.1.- Поколения языков программирования                           

      
Поколения Языки программирования Характеристика
Первое Машинные Ориентированы на использование в конкретной ЭВМ, сложны в освоении, требуют хорошего знания архитектуры ЭВМ
Второе Ассемблеры, макроассемблеры Более удобны для  использования, но по-прежнему машинно-зависимы
Третье Языки высокого уровня Мобильные, человеко-ориенти-рованные, проще в освоении
Четвёртое Непроцедурные, объектно-

ориентированные, языки запросов, параллельные

Ориентированы на непрофес-сионального пользователя и на ЭВМ с параллельной архи-тектурой
Пятое Языки искусственного интеллекта, экспертных систем и баз  знаний, естественные языки Ориентированы на повышение интеллектуального уровня ЭВМ и интерфейса с языками
       

      В первое поколение входят языки, созданные  в начале 50-х годов, когда первые компьютеры только появились на свет. В то время программы писались в машинных кодах, то есть каждая компьютерная команда вместе с ее операндами вводилась в ЭВМ в двоичном виде. Это требовало огромных усилий по вводу цифровых текстов и приводило к множеству трудноуловимых ошибок. Конечно, ни о каких  больших проектах речи идти не могло. Ситуация качественно изменилась в середине 50-х годов, когда был написан первый ассемблер. Это само по себе можно считать подвигом, учитывая довольно сложную логику программы. Хотя этот ассемблер был в сегодняшнем понимании неполноценным, он позволял задавать названия команд в символическом виде и указывать числа не только в двоичном, но и в десятичном или шестнадцатеричном формате, что существенно облегчило работу программистов. Это был первый язык ассемблера, созданный по принципу « одна инструкция – одна строка».

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

      Расцвет второго поколения языков программирования пришелся на конец 50-х – начало 60-х годов. Тогда был разработан символический ассемблер, в котором появилось понятие переменной. Он стал первым полноценным языком программирования. Благодаря его возникновению заметно возросли скорость разработки и надежность программ. Ассемблеры активно применяются и в настоящее время, как правило, для создания программ, максимально использующих возможности аппаратуры: различных драйверов, модулей стыковки с нестандартным оборудованием и других. В некоторых областях, например, в машинной графике, на ассемблере пишут библиотеки, эффективно реализующие стандартные алгоритмы обработки изображений. Кроме того, среди программистов просто есть немало людей, предпочитающих использовать ассемблер в своей работе. Как правило, это специалисты, хорошо разбирающиеся в электронике и схемотехнике.

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

      С начала 70-х годов по настоящее  время продолжается период языков четвертого поколения. Эти языки предназначены  для реализации крупных проектов, снижения числа ошибок, повышения их надежности и скорости создания. Все средства разработки четвертого поколения имеют мощные интегрированные оболочки и обладают простым и удобным пользовательским интерфейсом. Они чаще всего используются для проектирования баз данных и работы с ними (встроенные языки СУБД), что объясняется возможностью формализации всех понятий, используемых при построении реляционных баз данных. Они обычно ориентированы на специализированные области применения, где хороших результатов можно добиться, используя не универсальные, а проблемно-ориентированные языки, оперирующие конкретными понятиями узкой предметной области. Как правило, в эти языки встраиваются мощные операторы, позволяющие одной строкой описать такую функциональность, для реализации которой в языках младших поколений потребовались бы тысячи строк исходного кода.

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

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

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

      Рисунок 3.1.- Классификация языков программирования

        
      
 
 
 
 
 
 
 

      Процедурное программирование

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

      Среди процедурных языков можно выделить в свою очередь структурные и  операционные языки. В структурных языках одним оператором записываются целые алгоритмические структуры: ветвления, циклы. В операционных языках для этого используются несколько операций. Широко распространены структурные языки: Паскаль, Си, Ада, PL-1, Алгол и др. Операционные: Фортран, Бейсик и др.

  • Язык Фортран создан в начале 50-х годов 20-го века для программирования научно-технических задач;
  • Кобол – создан в конце 60-х годов 20-го века для решения задач обработки больших объемов данных, хранящихся на различных носителях данных;
  • В середине 60-х годов 20-го века был создан специализированный язык программирования для начинающих – BASIC. Характеризуется простотой освоения и наличием универсальных средств для решения научных, технических и экономических задач, а также задач, например, игровых;
  • Алгол (1960 год) – это многоцелевой расширенный язык программирования. В нем впервые введены понятия «блочная структура программы» и «динамическое распределение памяти»;
  • В 1963-1966гг был создан многоцелевой универсальный язык PL-1. Этот язык хорошо приспособлен для исследования и планирования вычислительных процессов, моделирования, решения логических задач, разработки систем математического обеспечения;
  • Язык Паскаль (PASCAL) (1968-1971гг)- язык процедурного программирования наиболее популярный для ПК, который и в настоящее время успешно применяется. В основу языка Pascal положен подход от общей задачи к частным (более простым и меньшим по объему). К основным принципам, которыми обладает Паскаль, можно отнести: а) Структурное программирование, которое основано на использовании подпрограмм и независимых структур данных; б) Программирование «сверху-вниз», когда задача делится на простые, самостоятельно решаемые задачи. Затем выстраивается решение исходной задачи полностью сверху вниз;
  • К языкам процедурного программирования можно отнести язык АДА (1979 г) Язык назван в честь первой программистки Ады Лавлейс - дочери Байрона. Его отличает модульность конструкций;
  • Язык СИ (начало 70-х годов) также относится к языкам процедурного программирования. Первоначальный его вариант планировался как язык для реализации операционной системы Unix вместо языка Ассемблера. Одной из особенностей языка СИ является то, что различия между выражениями и операторами сглаживаются, что приближает его к функциональным языкам программирования. Кроме того, в языке СИ отсутствует понятие процедуры, а использование подпрограмм основано на понятии функции, которая может сочетать в себе возможности процедуры. С одной стороны, по набору управляющих конструкций и структур данных его можно отнести к языкам высокого уровня, а с другой – он имеет набор средств прямого обращения к функциональным узлам компьютера, а это означает, что его можно использовать как операционный язык.

      Объектно-ориентированное  программирование (ООП)

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

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

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

      Следующими  важнейшими принципами ООП являются наследование и полиморфизм.

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

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

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

      Наиболее  современными языками программирования являются С++ и Java. С середины 90-х годов многие объектно–ориентированные языки реализуются как системы визуального проектирования, в которых интерфейсная часть программного продукта создается в диалоговом режиме, практически без написания программных операторов. К объектно – ориентированным системам визуального проектирования относятся Visual Basic, Delphi, C++ Builder, Visual C++.

      Язык VBA (Visual Basic for Application) – язык приложений Microsoft Office (Excel, Word, Power Point и др). VBA соблюдает основной синтаксис языка и правила программирования языков Basic – диалектов, позволяет создавать макросы для автоматизации выполнения некоторых операций и графический интерфейс пользователя, интеграцию между различными программными продуктами.

Декларативные языки программирования

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

      К ним относятся функциональные и  логические языки программирования.

      Функциональное  программирование - это способ составления программ, в которых высший приоритет отдается понятию функция и предполагает жесткое структурирование данных (последовательность последовательностей). В функциональном программировании не используется память, как место для хранения данных, а, следовательно, не используются промежуточные переменные, операторы присваивания и циклы. Ключевым понятием в функциональных языках является выражение. Программа, написанная на функциональном языке, представляет собой последовательность описания функций и выражений. Выражение вычисляется сведением сложного к простому. Все выражения записываются в виде списков. Первым языком стал язык Лисп (LISP, LIST Processing- обработка списков) создан в 1959г. Этот язык позволяет обрабатывать большие объемы текстовой информации.

      Логическое  программирование - это программирование в терминах логики. Машина перебирает известные (заданные в программе) данные и находит ответ на вопрос. Порядок перебора не описывается в программе, а неявно задается самим языком.

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

      1.4. Перспективы языков программирования

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

      Будущие программные языки в той или  иной степени должны учитывать разработанную  П.С.Сапатым технологию интеграции распределенных и динамических систем, основанную на языке WAVE(ВОЛНА) [6]. П.С.Сапатым разработана новая идеология, методология и технология интеграции и координации больших открытых распределенных и динамических систем, которые могут объединять компьютеры,  компьютерные сети.

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

      С учетом этого можно прогнозировать следующие перспективы языков программирования:

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

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

 

      

      ЗАКЛЮЧЕНИЕ

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

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

      Анализ  обработанных источников позволил создать  Веб-сайт, состоящий из 4 страниц, включающий «Роль и характеристики программирования», «Поколения языков программирования», «Классификация языков программирования», «Перспективы языков программирования».

      Материал  курсовой работы может быть применен в школе на уроке информатике. 
 
 
 
 
 
 
 
 
 
 
 

 

      СПИСОК  ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

  1. Алексеев, Е.Г., Информатика: учебник [Электронный ресурс]/ Е.Г.Алексеев, С.Д. Богатырев. – Саранск: Морд. гос. ун-т, 2009. – Режим доступа: http://inf.e-alekseev.ru/text/Languages.html. – Дата доступа: 20.02.2011.
  2. Голицына, О.Л. Языки программирования / О.Л. Голицына, Т.Л. Партыка, И.И. Попов. – Москва: Форум: Инфра-М, 2008. –368 с.
  3. Кауфман, В.Ш. Языки программирования. Концепции и принципы/ В.Ш.Кауфман. – Москва: ДМК Пресс, 2010.–464 с.
  4. Пратт ,Т. Язык программирования: разработка и реализация. 4-е изд. / Т.Пратт, М.Зелковиц;  под ред. А.Матросова. – Санкт-Петербург: Питер, 2002.–688 с.
  5. Симонович, С.В. Информатика. Базовый курс. 2-е издание; под ред. С.В.Симоновича. – Москва, 2005. –640 с.
  6. Sapaty P.S. Mobil Processing in Distributed and Open Environments/ P.S. Sapaty. –New York, 1999. –436 p.