Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

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

Содержание:

ВВЕДЕНИЕ

Языки программирования делятся на языки низкого и высокого уровня.

Если язык близок к языку программирования - он называется языком высокого уровня, если ближе к машинным командам, то языком низкого уровня.

К языкам низкого уровня относят машинные языки и языки символического кодирования — Ассемблер, Автокод. Операторы этого языка являются теми же машинными командами, но записанными мнемоническими кодами. В качестве операндов используются символические имена, а не конкретные адреса. Языки низкого уровня являются машинно–зависимыми.

Машинно–ориентированные языки – это языки, которые существенно зависят от особенностей ЭВМ (структуры памяти, внутренней архитекруры и т.д.).

К языкам программирования высокого уровня относят: Фортран (переводчик формул – был разработан в середине 50–х годов программистами фирмы IBM и в основном использовался для программ, выполняющих естественно – научные и математические расчеты); Алгол, Кобол (коммерческий язык – используется, в первую очередь, для программирования экономических задач), Паскаль, Бейсик (был разработан профессорами Дармутского колледжа Джоном Кемени и Томасом Курцом.), Си (Деннис Ритч – 1972 году), Пролог (в основе языка лежит аппарат математической логики) и т. д.

Глава 1: Эволюция языков программирования.

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

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

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

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

Уже в 1951 г. его последователь Грейс Мюррей Хоппер создала первый в мире компилятор и ею же был введён сам этот термин. Компилятор Хоппер осуществлял функцию объединения команд и в ходе трансляции производил организацию подпрограмм, выделение памяти компьютера, преобразование команд высокого уровня (в то время псевдокодов) в машинные команды. «Подпрограммы находятся в библиотеке (компьютера), а когда вы подбираете материал из библиотеки – это называется компиляцией» – так она объясняла происхождение введённого ею термина.

Середина 50-х годов характеризуется стремительным прогрессом в области программирования. Роль программирования в машинных командах стала уменьшаться. Начали появляться языки программирования нового типа, выступающие в роли посредника между машиной и программистами. Первым и одним из наиболее распространенных был Фортран (FORTRAN, отFORmulaTRANslator– переводчик формул), разработанный группой программистов фирмыIBMв 1954 г. (первая версия).

В середине 60-х годов сотрудники математического факультета Дартмутского коллежа Томас Курц и Джон Кемени создали специализированный язык программирования, который состоял из простых слов английского языка. Новый язык назвали «универсальным символическим кодом для начинающих» (BeginnersAllPurposeSymbolicInstructionCode, или сокращенноBASIC). Годом рождения нового языка можно считать 1964 г. Сегодня универсальный язык Бейсик (имеющий множество версий) приобрел большую популярность и получил широкое распространение среди пользователей ЭВМ во всем мире. В значительной мере этому способствовало то, что Бейсик начали использовать как встроенный язык персональных компьютеров, широкое распространение которых началось в конце 70-х годов.

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

Языки программирования служат разным целям, и их выбор определяет удобность пользователя, пригодностью для данного компьютера и данной задачи. А задачи для компьютера бывают самые разнообразные: вычислительные, экономические, графические, экспертные и т.д. Такая разнотипность решаемых компьютером задач и определяет многообразие языков программирования. По всей видимости, в программировании наилучший результат достигается при индивидуальном подходе, исходящем из класса задачи, уровня и интересов программиста. Например, Бейсик широко употребляется при написании простых программ; Фортран является классическим языком программирования при решении на ЭВМ математических задач; язык Кобол (создан в 1960 г.) был задуман как основной язык для массовой обработки данных в сферах управления и бизнеса. Отметим и еще один достаточно популярный язык – Пролог, разработанный как язык программирования для создания систем искусственного интеллекта.

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

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

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

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

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

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

Принципиально иное направление в программировании связанно с методологиями непроцедурного программирования. К ним можно отнести объектно-ориентированное и декларативное программирование. Объектно-ориентированный язык создают окружение в виде множества независимых объектов. Каждый объект ведет себя подобно отдельному компьютеру, их можно использовать для решения задач как «черные ящики», не вникая во внутренние механизмы их функционирования. Из языков объектного программирования, популярны среди профессионалов, следует назвать, прежде всего, Си++, для более широкого круга программистов предпочтительны среди типа Delphi и VisualBasic.

Глава 2: Процедурно-ориентированные языки

1. Язык Фортран

Возникновение программирования берет истоки с 1954 г., когда сотрудник фирмы IBM (никому не известной) Джон Бэкус опубликовал статью о спецификации математической системы формульной трансляции IBM. Сокращение выражения FORmula TRANslation стало названием языка программирования высокого уровня (в то время Ассемблер существовал).

Как и все языки программирования, Fortran имел значимые недостатки в деталях, и в нем не было поддержки нужных концепций структурирования данных и модулей. Тогда Бекус говорил: «Просто по мере осмысления придумывали язык. Мы проектирование языка не расценивали как задачу трудную, а как к реальной проблеме прелюдию: проектированию компилятора, что без труда генерировал бы эффективные и качественные программы». И так, преимущества абстракции сразу обратили на себя внимание большинства программистов, и разработка программ теперь была более быстрой и надежной. Машинная зависимость почти совсем уменьшилась благодаря абстрагированию от машинных команд и регистров. Так как научные задачи рассчитывались на компьютерах самыми первыми, Fortran и стал стандартным языком в технике и науки. Только сейчас ему на смену приходят другие языки. Fortran неоднократно модернизирован (1966,1977,1990) за тем, чтобы адаптировать его к современным требованиям.

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

Задуман Фортран для использования в сфере инженерно-технических и научных вычислений, но не смотря на то, на таком языке легко описываются задачи с разветвленной логикой, особенно задачи редактирования (составление таблиц, сводок, ведомостей и т. д.) и некоторые экономические задачи. Появившиеся в 1958 году модификация языка Фортран получила название Фортран II и содержала подпрограммы для обеспечения между сегментами связей и понятие общих переменных. И так, к 1962 году относится появление языка с названием Фортран IV, ставший наиболее популярным в наше время. В то время берет начало деятельность комиссии при Американской Ассоциации Стандартов (ASA), к 1966 г. она проработала два стандарта – базисный (основной) Фортран (Basic FORTRAN) и языки Фортран - эти языки приблизительно соответствуют предыдущим модификациям IV и II, только базисный Фортран является подмножеством Фортрана, в то время, как Фортран II таким для Фортрана IV не будет.

И сейчас Фортран продолжает совершенствоваться, развиваться и оказывает влияние на развитие и создание инных языков. В качестве примера можно взять основу Basic — в неё заложен Фортран. Basic является популярным для решения не очень больших задач, отличный язык для овладения навыками использования алгоритмических языков. Вычислительным центром Дартмутского колледжа в практике программирования, разработан язык – Beginner’s All –purpose Symbolic Instruction Code.

2. Бейсик

В Дартмутском колледже (США) в середине 60-х годов (1963 г.) был

изобретен язык Бейсик (BASIC от Beginner’s Allpurpose Instruction Code). Когда стали появляться иные диалекты, «первичный» диалект начали называть Dartmouth BASIC. Был основан на Фортран II и на Алгол-60, с делающими его удобным добавлениями для работы в режиме разделения времени, а так же обработки матричной арифметики и текста. Изначально был реализован Бейсик на мейнфрейме GE-265 и имел поддержку множества терминалов. Не смотря на распространённые убеждения, изначально являлся компилируемым языком. Был спроектирован Бейсик для того, чтобы писать программы студенты могли, используя терминалы с разделением времени. Создавался Бейсик как решение для проблем со сложностью более старых языков. Предназначение его было для «простых» пользователей, не очень заинтересованных в быстродействии программ, а просто для того, чтобы решать свои задачи с помощью компьютера.

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

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

3. СИ

Язык С появился в начале 1970-х благодаря Деннису Ричи, сотруднику Bell Laboratories и являлся языком реализации системы UNIX. Операционные системы по традиции всегда писали на ассемблере потому, что языки высокого уровня эффективными не считались. Язык C располагает структурами данных и структурированными управляющими операторами (записи, массивы), при этом, сохраняет всю гибкость низкоуровневого ассемблерного программирования (операции и указатели на уровне битов).

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

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

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

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

4. Паскаль

Язык Паскаль присутствует в составе языков, широко применяющихся в промышленном программировании, является базой для большого числа других языков, так же хорошо используется в обучении программированию в высшей школе. Язык Паскаль написан Никлаусом Виртом в 1968-1969 годах, опубликовался в 1970-м году после того, как Никлаус Вирт принял участие в разработке стандарта языка Алгол-68. Паскаль являлся языком, обучающим процедурному программированию. Название язык получил в честь выдающегося французского литератора, математика, философа и физика XVII века, а так же изобретателя первой в мире арифметической машины Блеза Паскаля.

Компилятор для языка Паскаль написан на самом языке, используя «метод раскрутки», так создается ядро языка и на него поочередно накручиваются всё новые возможности.

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

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

Одна из более известных реализаций Паскаля, имела объемное распространение языка и являлась Turbo Pascal фирмы Borland, далее выросшей в объектный Паскаль для DOS (начало с версии 5.5) и Windows, затем в Delphi, в которой использовались значительные расширения языка.

Глава 3: Проблемно-ориентированные языки

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

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

1. Lisp

Создатель языка LISP есть выдающийся ученый в области искусственного интеллекта, а так же профессор математики и философии - Джон Мак-Карти,. Им был предложен проект языка LISP, дискуссии о котором не утихают и до сегодняшнего дня. Концепция символьной обработки информации, сформулированная Джоном Мак-Каpти (в 1958г.) берет начало от времен Чёрча и других выдающихся математиков конца 20-ых годов прошлого века. В свое время он вынес вопрос о рассмотрении функций в качестве общего понятия.

Так же интересно вот что: в системах программирования имеются методы реализации рекурсивных функций. Функции содержат концепцию времени: сначала в порядке перечисления вычисляются аргументы, следом строится значение функции с данным алгоритмом - ее результат. Рекурсия имеет не короткий путь к красивому решению задачи. А. П. Ершов в предисловии к русскому переводу книги П. Хендерсона привел поучительный пример задачи о рекурсивной формуле, сводящей вычитание единицы из натурального числа к прибавлению единицы:

{1 –1 = 0 ; ( n +1 ) -1 = n } ,

не поддавшейся А.Чёрчу и решенной С.Клини лишь в 1932 году:

{ F (x, y, z) = если (x = 1) то 0

иначе

если ((y +1) = x) то z

иначе F (x, y +1, z +1) ;

n –1 = F (n, 0, 0) }

алг F ( цел x, y, z) арг x, y, z

нач

если (x = 1)

то знач := 0

инес (y +1) /= x

то знач := F (x, y +1, z +1)

кон

алг N-1 (цел N) арг N нач знач := F (N, 0, 0) кон

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

Связанный список — вот основная структура данных в языке LISP. Изначально язык LISP был разрабатывался для исследований в теории вычислений и на нем были выполнены многие работы. Компьютеры разрабатывались и создавались для языка LISP, чтобы оптимизировать выполнение LISP -программ, т. е язык играл такую большую роль. Одна из его проблем заключалась в множестве различных «диалектов», возникавших в следствие реализации языка на разных машинах. Позднее появился стандартный язык LISP для того, чтобы программы можно было переносить между компьютерами и это не вело за собой недопонимания между машинами. Сейчас популярен «диалект» языка LISP — CLOS, который поддерживает объектно-ориентированное программирование. У языка LISP есть три основные команды — это car(L) и cdr(L), которые извлекают начало и конец списка L, и cons(E, L), которая создает новый список из элемента Е и списка L. При использовании таких команд можно определить функции обработки списков, содержащих нечисловые данные; такие функции запрограммировать на языке Fortran было бы очень проблематично.

Обширность области возможных приложений Лиспа вызвала появление множества диалектов Лиспа, что привело к созданию вначале 80-х гг. Common LISP Комитета. Он выбирал более подходящий диалект Лиспа, который использовался потом в качестве основного. Common LISP - такое название в 1985г. получил выбранный Комитетом диалект LISP. В дальнейшем он был принят в университетах США, а также широко использовался большинством разработчиков систем искусственного интеллекта.

Изначально LISP задумывался как средство для рекурсивных построений, но сегодня он обеспечивает программистов серьезной поддержкой, позволяя им создавать большие и мощные системы. Профессор Массачусетского технологического института Дж. Самман заметил, что LISP позволяет сформулировать и запомнить «идиомы», столь характерные для проектов по искусственному интеллекту, что математическая ясность и предельная четкость LISP – это еще не все.

2. Пролог

Исследование самой идеи и разработка языка Пролог принадлежит Ален Колмероэ, Роберту Ковальскии и Маартен ван Эмден. Благодаря эффективной реализации языка Пролог Дэвидом Д. Г. Уорреном, язык приобрел хорошую популярность. Средства программирования, основанные на логике ограничений CLP — Constraint Logic Programming присутствуют в составе программы Пролога и имеют непосредственное отношение к числу достижений в CLP области. Для планирования материально-технического снабжения и нахождения решения задач по составлению расписаний — средства CLP являются хорошим гибким инструментом. Официальный стандарт Пролога опубликовался в 1996г.

Весьма интересное развитие имеет язык Пролог. Как инструмент практического программирования Пролог достаточно быстро завоевал популярность в Европе, а в Японии разработки компьютеров V поколения происходили только на этом языке. Но принятие языка в США было с небольшой задержкой, связанной с историческими причинами: одна из которых — США уже были знакомы с языком Мicroplanner, таким же близким к логическому программированию, только он в свое время не был достаточно эффективно реализован и не приобрел должную популярность. На популярность языка Пролог повлияло мнение существовавшей на то время «Ортодоксальной школы», которая принимала использование только чистой логики и отвергала использование всех практических средств, не имеющих отношения к чистой логике, поэтому в прошлом язык Пролог не приобрел должную популярность, а лишь неверные взгляды и иные понимания этого языка. К примеру, сложилось мнение, что на языке, можно писать программы только с рассуждением с выводом от целей к фактам, но на самом деле язык Пролог является универсальным языком и способен воспринять любой алгоритм. Но в свое время практики языка Пролог преодолели позицию «ортодоксальной школы», приняв наиболее прагматический подход.

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

Prolog происходит от “PROgramming in LOGic” — является декларативным языком программирования, имеет общее назначение. Пролог создавался в 1972г., для того, чтобы соединить представление знаний и использование логики, после воплощения такого проекта, язык приобрел диалекты, которые расширили его способности различными диалектами. Язык Пролог стандартизирован в виде ISO/IEC 13211-1 в 1995 году.

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

На создание Пролога повлиял написанный еще ранее язык Planner, из которого для основы были взяты вот такие идеи:

  • использование разных имен;
  • использование принципа «отрицание как неудача»;
  • структура управляющей логики строится с помощью вычислений с откатами;
  • отталкиваясь от целей используется вызов процедур по шаблону (обратный логический вывод)

Главная парадигма в языке Пролог — это логическое программирование. Версии языка Пролог, написанные позднее, вносят свои новшества, к примеру, версия языка Visual прикрепляет к нему новые парадигмы: управляемое событиями или объектно-ориентированное программирование, в котором даже может присутствовать императивный стиль.

Использованные в Прологе типы данных бывают такого вида:

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

Написанные на чистом Прологе программы, отношения между обрабатываемыми сущностями описывают, прибегая к помощи клауз Хорна. Клауза — является формулой такого вида:  Голова :- Тело. Такая формула читается как « для того, чтобы решить/доказать Голову, сначала надо решить/доказать Тело». Само тело клаузы является несколькими предикатами (целями клаузы) и комбинируется при участии дизъюнкции и конъюнкции, а если клаузы не имеют тела, то называются фактами, которые эквивалентны виду Голова :- true. Предикат True является встроенным, а не атомом.

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

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

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

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

Язык может основываться на любой ОП и платформах: Unix, Windows, ОС мобильных платформ и мейнфрефмов. За счет ООП-архитектуры, сегодняшние реализации и версии языка обзавелись внутренней расширением. У Пролога недостаточно развита гибкость и если сравнить другие языки типа Java или С++ в сочетании с базами данных, то решение конкретной задачи на них будет намного технологичнее. Вот причины недостаточной гибкости языка: почти не контролируются промежуточные результаты; технология программирования развита намного меньше, чем в других языках; требуется хорошая квалификация программиста и достаточно затруднена отладка программы.

Глава 4. Объектно-ориентированные языки

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

Simula — первый объектно-ориентированный язык программирования, созданый К. Нигаардом и О.-Дж. Далом в 1960-х годах для моделирования систем. Проходило моделирование таким образом: подсистема, принимающая участие в моделировании, программировалась как самостоятельный объект. Одна подсистема могла существовать в нескольких таких же экземплярах, в таком случае программировался класс для описания каждой подсистемы и выделялась память для объектов класса. Xerox Palo Alto Research Center — Исследовательский центр, который с помощью языка Smalltalk популяризировал ООП. Такие же исследования вели к системам окон, но у Smalltalk было хорошее преимущество, заключалось оно в том, что язык являлся целой средой программирования, а не простым языком. Но распространению ООП помешал технический аспект этих первых объектно-ориентированных языков. Контроль соответствия типов и диспетчеризация операций осуществлялись во время выполнения (динамически), а не во время компиляции (статически). Поэтому программы на таких языках имеют большие расходы по памяти и времени. Теперь при разработке хорошего программного обеспечения необходим статический контроль соответствия типов. В связи с такими проблемами на языке Ada 83 имеется лишь частичная поддержка ООП.

Можно реализовать полный механизм ООП способом.

C++ показал, что язык, который совместим с контролем соответствия типов и статическим распределением памяти и с фиксированными затратами на диспетчеризацию: только при необходимости динамические механизмы ООП будут использованы.

На таких же идеях основывается Поддержка ООП в Ada 95, так же, как и в C++. Чтобы получить такие же преимущества в других языках, необходимости прививать им поддержку ООП – совсем нет.

Языки Eiffel и Smalltalk имеют между собой схожесть: у них один метод структурирования данных — это классы и объекты.

Языки C++ и Ada 95 похожи тем, что реализация объектов у них может быть как динамической, так и статической, а проверка типов статическая.

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

1 Visual Basic (Basic)

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

Самый первый персональный компьютер IMB имел Бейсик 16-ти разрядный (BASICA), который потом, в свою очередь, сменил QUICK-BASIC и GW-BASIC компании Майкрософт. В первом был внедрен компилятор, который превратил Бейсик-программу в exe-файл, а так же был добавлен компилятор и убрана нумерация строк. В итоге фирмой Майкрософт выпустился VB 1.0 в 1992 г., который являлся несложным в использовании Windows 3.1., после выпускались VB 3.0, VB 4.0, VB 5.0, VB 6,0. Предпоследние две почти одинаковы, а в последней – добавлены некоторые функции и улучшено ядро. Так же существуют макросы для Microsoft Office (Excel, Word, и т.п), такой язык называется (Visual Basic for Application).

При использовании приложений Visual Basic во время запуска и в самой работе нельзя обойтись без библиотеки msvbvmX0.dll (стандартно присутствующая в каталоге Windows\System), тем самым они отличаются от всех обычных приложений.

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

По сути возможности VB не имеют ограничений, более того их можно самостоятельно расширять благодаря использованию доп. функций, так же есть возможность использовать библиотеки динамической компановки (DLL), такие библиотеки изначально могут писаться на любом языке программирования. То есть, программы могут быть как сложными информационными системами, так и являться небольшой средой для ввода данных. Но VB, конечно, есть и ограничения в виде: полноценную DLL библиотеку создать не удастся, а так же использовать ассемблер и драйвер VXD.

Интерфейсы GUIs перевернули индустрию компьютеров, теперь, вместо командной строки C:>, которая была стандартом для DOS пользователей – стало можно лицезреть «рабочий стол», который был напичкан значками запуска приложений и программ. В дополнение к этому, пользователи могли с легкость тыкать на них мышкой, а не прописывать вручную весь путь к нужному приложению командной строки.    В Windows, как правило, программы имеют стандартный интерфейс пользователя. Это означает, что пользователи потратят больше времени на работу с приложением и меньше на изучение меню, диалоговых панелей и комбинации клавиш (Конечно, приложения различных версий Windows выглядят немного по-разному, так как стандарты сохраняются внутри версий Windows, а не между ними.
    В то время как программисты испытывают смешанные чувства к GUIs, он нравится начинающим пользователям, поэтому от любых программ Windows ожидается соответствие модели GUI. Поэтому, если необходимо разработать программу для любой из версий Windows, программисту понадобится эффективное средство для разработки приложений с графическим интерфейсом пользователя.

За все это долгое время существовало лишь несколько таких средств разработки. До появления Visual Basic в 1991 году разработка приложений Windows была намного тяжелее процесса создания приложений для DOS. Программисты должны были позаботиться буквально обо всем, например, о работе с мышью, обработке событий меню, и даже отслеживать, щелкнул пользователь один либо два раза в конкретном месте экрана. Разработка приложений Windows требовала экспертных знаний по программированию на языке С и сотен строк кода для выполнения простейшие задач. Проблемы были даже у профессионалов. (Комплект Microsoft Windows Software Development Kit, необходимый в то время в дополнение к компилятору С, весил тогда около пяти килограммов).

С Visual Basic программирование в Windows не становится более эффективным, но оно становится более простым (в большинстве случаев).

В частности. Visual Basic позволяет добавлять к окнам поля ввода (text boxes), меню, командные кнопки (command buttons), переключатели (option buttons), флажки (check boxes), списки (list boxes), линейки прокрутки (scroll bars), a также диалоговые окна для выбора файла или каталога. Программист может использовать сетку (grid) для обработки табличных данных, организовать взаимодействие с другими приложениями Windows и доступ к базам данных. (Кстати, в Visual Basic такие компоненты обычно называют элементами управления.)

На экране одновременно может находиться несколько окон. Они должны иметь полный доступ к буферу обмена (clipboard) и к информации большинства приложений Windows, работающих в то же время. Можно использовать Visual Basic для взаимодействия с другими приложениями, работающими под управлением Windows, используя наиболее современную версию технологии OLE фирмы Microsoft.

Однако все более ранние версии Visual Basic могли в той или иной степени выполнять вышеописанные задачи. Что же особенного добавлено к последней версии Visual Basic? В двух словах ответ состоит в том, что Visual Basic теперь поддерживает элементы ActiveX.

2 Delphi (Pascal)

Концепция Delphi 1 была реализована в конце 1994 года, когда вышла первая версия среды разработки. В основу этого программного продукта легли концепции объектно-ориентированного программирования (ООП) на базе языка Object Pascal и визуального подхода к построению приложений.

После выхода Delphi 1 все компьютерные издания писали об этой среде, как об «убийце Visual Basic». Появление Delphi 2 (32-разрядной) ознаменовало новую эпоху, – появился доступ к возможностям программных интерфейсов Windows NT и Windows 95. Delphi 2 стала средством разработки полноценных приложений клиент/сервер. Вскоре Delphi 3 предоставила разработчикам средства создания распределенных многоуровневых приложений и полноценный инструментарий проектирования приложений для Internet и Intranet. Появилась полноценная поддержка com – модели объектов, ставшей краеугольным камнем современного программирования. Четвертая версия Delphi позволяет полностью интегрировать ваши разработки с объектами com. Поддержка архитектуры corba (common object request broker architecture) открывает перед приложениями, созданными в delphi для платформы wintel (windows + intel), мир других операционных систем (unix, os/2, wms).

Delphi представляет следующие новые свойства и усовершенствования:

– Новые расширения языка. В Delphi в язык Object Pascal включены динамические массивы, методы обработки переполнения, установка значения параметров по умолчанию, и многое другое;

–Менеджер Проекта. Новый менеджер проекта позволяет Вам объединять проекты, которые работают вместе в одну проектную группу. Это позволяет организовать как работу взаимозависимых проектов, таких как однозадачные и многозадачные приложения или dll, так и совместную работу исполняемых программ;

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

– Закрепляемые окна инструментов. IDE (Интегрированная Среда разработки) содержит более перенастраиваемую конфигурацию окон инструментов, которые можно закреплять с редактором кода;

–Улучшенная отладка. Интегрированный отладчик имеет много новых свойств, включая удаленную и многопроцессорную отладку, просмотр кода центрального процессора, инспекторов, усовершенствованные точки прерывания, отладчик специфических подменю и закрепленных окон;

– Усовершенствования Activex;

–Усовершенствования VCL. Иерархия объектов Delphi была расширена, чтобы включить новый компонент для Nt Service приложений. Кроме того, новый компонент выполняемого списка (на Стандартной странице палитры), позволяет централизовать управление меню и команд от кнопок. Управление VCL расширено, чтобы поддерживать drag-and-drop перетаскивания, обеспечивать дополнительный контроль над размещением окна, и многое другое.

Delphi – это комбинация нескольких важнейших технологий:

– высокопроизводительный компилятор в машинный код;

– объектно-ориентированная модель компонент;

– визуальное (а, следовательно, и скоростное) построение приложений из программных прототипов;

– масштабируемые средства для построения баз данных.

Компилятор, встроенный в Delphi, обеспечивает высокую производительность, необходимую для построения приложений в архитектуре «клиент-сервер». Он предлагает легкость разработки и быстрое время проверки готового программного блока, характерного для языков четвертого поколения. Кроме того, Delphi обеспечивает быструю разработку без необходимости писать вставки на Си или ручного написания кода (хотя это возможно).

В процессе построения приложения разработчик выбирает из палитры компонент готовые компоненты как художник, делающий крупные мазки кистью. Еще до компиляции он видит результаты своей работы – после подключения к источнику данных их можно видеть отображенными на форме, можно перемещаться по данным, представлять их в том или ином виде. В этом смысле проектирование в Delphi мало чем отличается от проектирования в интерпретирующей среде, однако после выполнения компиляции мы получаем код, который исполняется в 10-20 раз быстрее, чем то же самое, сделанное при помощи интерпретатора. Кроме того, компилятор компилятору рознь, в Delphi компиляция производится непосредственно в родной машинный код, в то время как существуют компиляторы, превращающие программу в так называемый p-код, который затем интерпретируется виртуальной p-машиной. Это не может не сказаться на фактическом быстродействии готового приложения.

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

Объекты БД в Delphi основаны на SQL и включают в себя полную мощь Borland Database Engine. В состав Delphi также включен Borland SQL LINK, поэтому доступ к СУБД Oracle, Sybase, Informix и Interbase происходит с высокой эффективностью. Кроме того, Delphi включает в себя локальный сервер Interbase для того, чтобы можно было разработать расширяемые на любые внешние sql-сервера приложения в офлайновом режиме. Разработчик в среде Delphi, проектирующий информационную систему для локальной машины (к примеру, небольшую систему учета медицинских карточек для одного компьютера), может использовать для хранения информации файлы формата .dbf (как в dbase или clipper) или .db (paradox). Если же он будет использовать локальный interbase for windows (это локальный SQL-сервер, входящий в поставку), то его приложение безо всяких изменений будет работать и в составе большой системы с архитектурой клиент-сервер.

3 Visual Fortran (Fortran)

В конце 1953 Джон Бэкус предложил начать разработку эффективной альтернативы ассемблеру для программирования на ПК IBM 704. Уже к середине 1954 была закончена черновая спецификация языка Fortran. Первое руководство для Fortran появилось в октябре 1956 вместе с первым компилятором, поставленным в апреле 1957. Компилятор был оптимизирующим, потому что клиенты отказывались использовать язык программирования высокого уровня, который был не в состоянии генерировать код с производительностью ниже, чем у ассемблера.

В то время сообщество относилось скептически к новому способу программирования и не верили в то, что Fortran позволит программировать быстрее и эффективнее. По словам самого Джона Бэкуса большая часть его работы была направлена на то чтобы «быть ленивым». Ему жутко не нравилось писать программы под IBM 701 на ассемблере.

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

К 1960 году существовали версии Fortran для компьютеров IBM 709, 650, 1620, 7090. Его большая популярность побуждала конкурирующих изготовителей компьютеров создавать компиляторы Fortran для своих компьютеров. Таким образом, уже к 1963 существовало более 40 компиляторов для разных платформ. Именно по этому Fortran считают первым широко используемым языком программирования.

Поскольку FORTRAN оказался столь успешным языком, в Европе возникли опасения, что IBM будет доминировать в компьютерной отрасли. Немецкое общество прикладной математики (German society of applied mathematics — GAMM) создало комитет по разработке универсального языка. В то же время Association for Computing Machinery (ACM) организовала похожий комитет в США. Несмотря на то, что у европейцев было некоторое беспокойство по поводу господства американцев, оба этих комитета слились в один. Под руководством Питера Наура (Peter Naur) этот комитет разработал IAL (International Algorithmic Language). Предлагавшееся название ALGOL (ALGOrithmic Language) было вначале отвергнуто. Но поскольку оно стало общеупотребительным, официальное имя IAL пришлось впоследствии изменить на ALGOL 58. Новая версия появилась в 1960 г., и ALGOL 60 (с небольшими изменениями, сделанными в 1962 г.) с 60-х и до начала 70-х гг. прошлого века был стандартом академического языка программирования.

4 C++ (С)

Название C++ в 1983-м. придумал Рик Масситти. Добавление "++" - соответствует операции приращения в языке C. Если записать это имя сокращенно в виде C+ - то это будет синтаксической ошибкой и такое имя однажды уже использовалось для другого языка.

Язык C++ имеет эффективные и гибкие средства определения новых типов. Подобный метод построения программ именуют абстракцией данных. Пользователь сам может определить, в каких объектах типов будет находиться информация о типах. В использовании эти объекты надежны и очень просты, к примеру, в тех ситуациях, где такой тип на стадии компиляции установить не удается. Для C++ выбран язык C как базовый, так как он имеет ряд преимуществ при сравнении со всеми остальными языками программирования: лаконичный и относительно низкого уровня, многоцелевой, пригоден в среде программирования UNIX и отвечает большинству задач системного программирования, идет на всем и везде.

Понятно, что язык C++ берет истоки у C. C является подмножеством и для того, чтобы легко справляться с настоящими задачами в сфере программирования, акцента сделанного на средствах низкого уровня в C, более чем достаточно. С другой стороны язык C достаточно обязан своему предшественнику BCPL — ведь комментарий « // » взят в C++ из BCPL. В языке C++ по-прежнему нет VALOF блока, это должно быть известно знающим BCPL. Язык Simula67 тоже является еще одним истоком C++. Из языка Simula67 была скопирована концепция класса, вместе с функциями членами и производными классами. С помощью этого можно было способствовать модульности через использование виртуальных функций. Свобода в расположении описаний везде, где только встречаться оператор и возможности C++ по перегрузке операций имеют схожесть с языком Алгол68. 

C++ появился не так давно — в 1983 году. Начиная с 1980-ого года, язык C++ имел версии, которые имели название «С с классами». Задумка у автора языка возникла по такой причине: имела место некая необходимость создать модель, похожую на язык Simula67, но более эффективную, с более высокой производительностью. Для больших проектов моделирования, где использовались и тестировались возможности написания программ, которые требовали минимум затрат времени и памяти при выполнении — использовался "C с Классами". В этом языке не хватало ссылок, виртуальных функций и многих деталей, перегрузки операций. C++ был введен в 1983-м году, вне самой исследовательской группы автора. Язык в то время был без многих особенностей и дополнений, которые вносились в С++ со временем его использования.

C++ хуже, чем ++C — так считают знатоки семантики С. С++ не получил названия D, так как в нем сохранены все особенности языка С и он является расширением С.

C++ разрабатывался для удобства автора и его знакомых, чтобы им не нужно было программировать на языках высокого уровня, ассемблере и С. Назначение С++ - удобное, простое и приятное написание программ как отдельному программисту, так и компаниям разработчиков. С++ никогда не разрабатывался по плану, документация, проект и реализация происходили в одно время. Не существовало "Комитета по разработке C++" и "Проекта C++", поэтому C++ всегда развивается во всех направлениях, чтобы справляться со сложностями.

Работа с C позволила "C с Классами" быть нужным и необходимым (но не очень неудобным) инструментом в ходе первых работ с языком и привела к размышлению о добавлении к C Simula-образных классов.  По мере использования C++, возможности языка становились всё более существенными и отличными от C, в связи с этим неоднократно поднимался вопрос, действительно ли является необходимым сохранять совместимость этих двух языков. Понятно, что если отказаться от части наследия C, то ряд проблем возможно решатся сами собой. Вот причины, по которым этого не было сделано:

1) тысячи строк, используемых на С приносят несравненную пользу при написании программ на C++, так как их не нужно переписывать полностью;

2) есть тысячи сервисных программ, библиотечных функций, которые изначально написаны на C, которые возможно было бы использовать, только при условии совместимости двух языков и синтаксической схожести;

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

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

Позднее, чтобы быть уверенными в том, что абсолютно любая конструкция, созданная на одном из этих двух языков, была идентична конструкции, созданной на другом, была проведена проверка определения C++.
Сам язык С за последние годы эволюционировал благодаря движению С++. Грубый ANSI стандарт C, до этого, содержал заимствованный из языка «С с классами». К примеру, указатель void* изобретался для ANSI C и в первый раз использован в C++. Вероятно настанет время, когда ANSI будет расти дальше, тогда необходимо будет пересмотреть C++, чтобы удалить несовместимость, которая на то время, уже будет совершенно необоснованной. Например, нужно будет, судя по всему, отрегулировать правила существования плавающей арифметики потому, что был модернизирован препроцессор. ANSI и C очень близки к тому, чтобы стать подмножествами C++ .

Во время выполнения в программе или подпрограмме, отдельные операторы и выражения не нуждаются в скрытой поддержке, исключением является лишь память new и delete. В C++ и C равны последовательности возврата функций и ее вызовы. Если даже этот вполне эффективный механизм находится слишком дорогим при использовании, то в C++ есть такая функция как inline, объясняющая своим присутствием, что функции записываются без дополнительных расходов по времени на выполнение. Изначально Cпроектировался как язык приятный и удобный в использовании и тем самым вытесняющий собой ассемблер. Превосходит степень выделенного внимания структурам и типам, если сравнивать C++ и C. Язык C++ еще более снисходительный и выразительный чем C, только чтобы достичь такой выразительности, особое внимание должно быть уделено типам объектов. Если такое внимание типам объектов не уделено, компилятор не сможет оценивать и обрабатывать правильно выражения и программист должен прописывать все-все подробности. Так же, если компилятор знает типы объектов, те ошибки, которые остаются до тестирования, при таком условии будут им непременно замечены. Так же следует отметить, что использование системы типов, чтобы защитить все данные от искажения задать новые операции и т. д., ни в коем случае не увеличивает расходов ни по времени, ни по памяти.

На возрастании масштаба программ, которые были написаны с начала времени разработки C, отразилось особое внимание, уделенное при разработке С++. Даже если не соблюдать все правила хорошего стиля, небольшую программу в размере до 1000 строк не сложно заставить работать, применив силу. Если программа большего размера, то это не так. Например, если программа в 10 000 с плохой структурой, то новые ошибки будут появляться с такой же скоростью, как будут удаляться старые.

С++ разрабатывался так, чтобы понять и разобраться в больших программах, имеющих более 25 000 строк не составляло большого труда как для компаний программистов, так и для одного человека. Так же существуют программы намного объемнее, но состоят они из нескольких частей друг от друга почти независящих. Еще нужно учитывать, что вся сложность написания и в дальнейшем безошибочного использования программы зависит от уровня и сложности самой разработки и число строк текста в программе играет не первую, как казалось бы, роль.

Но, далеко не каждая часть программы имеет отличную структуру, легко читаема, независима от аппаратного обеспечения и т. д. C++ имеет возможности, благодаря которым работа с аппаратными средствами становится более спокойной, приятной и эффективной, а так же безопасной и простой в понимании. Язык C++ умеет прятать за элегантными интерфейсами эти программы, в итоге – все выглядит красиво оформленным и более интуитивно понятным.

ЗАКЛЮЧЕНИЕ

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

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

Языки высокого уровня обладают важным свойством переносимости программного кода. Это означает, что программа, написанная на языке высокого уровня для одного МК, затем может быть скомпилирована другим компилятором для МК с другим процессорным ядром. И эта программа тоже окажется работоспособной. Для того, чтобы программа обладала свойством переносимости, синтаксис языка высокого уровня для разных компиляторов должен быть абсолютно одинаков. В частности, таким свойством обладает язык Си стандарта ANSI (American National Standards Institute). Разработчики называют его просто «ANSI C». Основная цель стандартизации состоит в том, чтобы обеспечить разработчику возможность написания типовых функций управления один раз с последующим их многократным использованием в разных проектах и для разных микроконтроллеров.

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

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

TIMP= (216?n) + (Stop_count Start_count)

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

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

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

  • Могилёв А.В., Пак Н.И., Хеннер Е.К. Информатика: Учеб. пособие для студ. пед. ву-зов / Под ред. Е.К. Хеннера. - М., Academia, 2004.
  • Семакин И.Г., Шестаков А.П. Основы программирования: Учебник. - М.: Мастерство, НМЦ СПО; Высшая школа, 2004. - 432 с.
  • Абрамов С.А. и др. Задачи по программированию. - М.: Наука, 1988.
  • Алексеев В.Е. и др. Вычислительная техника и программирование. Практикум по программированию. - М.: ВШ, 1991.
  • Бондарев В. - М., Рублинецкий В.И., Качко Е.Г. Основы программирования. - Харьков: Фолио, Ростов н/Д: Феникс, 1997. - 368 с.
  • Вирт Н. Алгоритмы и структуры данных. - М.: Мир, 1989.
  • Вирт Н. Алгоритмы + структура данных = программы. - М.: Мир, 1985.
  • Гладков В.П. Конспект лекций по программированию для начинающих: Учеб. пособие / Перм. гос. техн. ун-т. - Пермь, 1998. - 217 с.
  • Гладков В.П. Курс лабораторных работ по программированию: Учебное пособие для специальностей электротехнического факультета ПГТУ / Перм. гос. техн. ун-т. - Пермь, 1998. - 153 с.
  • В.П. Гладков, А.П. Шестаков. Вопросы, задания и контрольные работы для начинающих программистов (материалы к уроку). // Информатика, 2001, № 20(309). - с. 10-13; №№ 33-35, 37-38, 40.
  • В.П. Гладков, А.П. Шестаков. Вопросы, задания и контрольные работы для начинающих программистов (избранные темы). // Информатика, 2003, №№ 27-28 (412-413) - 64 с.
  • Грызлов В.И., Грызлова Т.П. Турбо Паскаль 7.0. - М.: ДМК, 1998. - 400 с.
  • Дайтибегов Д. - М., Черноусов Е.А. Основы алгоритмизации и алгоритмические языки. - М.: ФиС, 1992.
  • Джонс Ж., Харроу К. Решение задач в системе Turbo Pascal. - М.: ФиС, 1991.
  • Дмитриева М.В., Кубенский А.А. Элементы современного программирования. - СПб: изд-во С. - П. университета, 1991.
  • Зуев Е.А. Практическое программирование на языке Turbo Pascal 6.0, 7.0. - М.: Радио и связь, 1994.
  • Зубов В.С. Программирование на языке Turbo Pascal (версии 6.0 и 7.0). - М.: Информационно-издательский дом "Филинъ", 1997. - 320 с.
  • Есаян А.Р. и др. Информатика. - М.: Просвещение, 1991.
  • Информатика. Задачник-практикум в 2 т. / Под ред. И. Семакина, Е. Хеннера. - М.: Лаборатория Базовых Знаний, 1999.
  • Культин Н.Б. Программирование в Turbo Pascal и Delphi. - СПб.: BHV - Санкт-Петербург, 1998. - 240 с.
  • Ляхович В.Ф. Руководство к решению задач по основам информатики и вычислительной техники. - М.: ВШ, 1994.
  • Марченко А.И., Марченко Л.А. Программирование в среде Turbo Pascal 7.0. / Под ред. Тарасенко В.П. - К,: ВЕК+, М.: Бином Универсал, 1998. - 496 с.
  • Могилёв А.В., Пак Н.И., Хеннер Е.К. Информатика: Учеб. пособие для студ. пед. вузов / Под ред. Е.К. Хеннера. - М., Academia, 1999.
  • Окулов С.М. Основы программирования. - М.: ЮНИМЕДИАСТАЙЛ, 2002. - 424 с.
  • Пильщиков В.Н. Сборник упражнений по языку Pascal. - М.: Наука, 1989.
  • Попов В.Б. Турбо-Паскаль для школьников. - М.: ФиС, 1999. - 528 с.
  • Сборник задач по программированию. / Авт. - сост. А.П. Шестаков; Перм. ун т. - Пермь, 1999. (Ч. I - 76 с.; Ч. II (Олимпиадные задачи) - 112 с.).
  • Семакин И.Г., Шестаков А.П. Лекции по программированию. - Пермь, изд-во ПГУ, 1998.
  • Семакин И.Г., Шестаков А.П. Основы алгоритмизации и программирования: Учебник для сред. проф. образования / И.Г. Семакин, А.П. Шестаков. - М.: Издательский центр "Академия", 2008. - 400 с. (Допущено Министерством образования и науки Российской Федерации).
  • Сергиевский М.В., Шалашов А.В. Turbo Pascal 7.0. - М.: Машиностроение, 1994.
  • Фаронов В.В. Турбо Паскаль 7.0. Начальный курс. Учебное пособие. - М.: "Нолидж", 1997. - 616 с.
  • Фаронов В.В. Турбо Паскаль 7.0. Практика программирования. Учебное пособие. - М.: "Нолидж", 1997. - 432 с.
  • Фролов Г.Д., Кузнецов Э.И. Элементы информатики. - М.: ВШ, 1989.
  • Шень А. Программирование: теоремы и задачи. - М.: МЦНМО, 1995.