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

Высокоуровневые языки программирования (Языки программирования)

Содержание:

ВВЕДЕНИЕ

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

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

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

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

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

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

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

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

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

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

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

ОСНОВНАЯ ЧАСТЬ

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

В настоящее время существует несколько определений понятия «язык программирования». Например, язык программирования – это формальная знаковая система, которая предназначена для написания программ и алгоритмов.

Язык программирования – фиксированная система обозначений для описания алгоритмов и программ.

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

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

Основные требования, которые предъявляются к языкам программирования – это наглядность, единство, гибкость, модульность, однозначность.

Наглядность - использование в языке программирования символов, которые хорошо известны и понятны пользователю и программисту.

Единство – использование одних и тех же символов для обозначения одних и тех же понятий в различных частях алгоритма.

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

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

Однозначность – недвумысленность записи любого алгоритма.

1.1 История развития языков программирования

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

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

В начале 50 годов XX века возникает язык ассемблер. Он позволял программисту пользоваться текстовыми мнемоническими кодами, например, add. Язык ассемблера мог использовать различные системы счисления, например десятичную, для представления числовых констант. Программы на языке ассемблера по - прежнему остались машинно – зависимыми. Для преобразования в машинный код необходимо было пользоваться специальной программой, которая называлась компилятор (от англ. Compile). Знание программистом языка ассемблера дает ему понимание архитектуры компьютера.

С середины 50 годов XX века начали создаваться первые языки программирования высокого уровня. Они стали машинно – независимыми. Но для каждого искусственного языка создавался свой компилятор. Языки программирования высокого уровня были разработаны для того, чтобы освободить программиста от знания технических особенностей компьютерной системы и архитектуры. Преимуществом языка программирования этого вида является универсальность и независимость от электронно-вычислительной машины. Примерами языков программирования высокого уровня являются – Fortran (1954), Cobol (1959), Basic (1964), Lisp (1952), Algol (1960), Рефал (1966), ЛОГО (1960).

Язык программирования Рефал (РЕкурсивных Функций АЛгоритический) был разработан у нас в России в 1966 году. Он удобен и прост для описания манипуляций над произвольными текстовыми данными. Рефал применяется достаточно широко при разработке трансляторов с алгоритмических языков. Данный язык программирования имеет применение в теоретической физике, прикладной математике. Программирование на нем имеет специфику, связанную с тем, что язык является языком функционального типа в отличие от обычных языков типа Алгол. Эффективность программы зависит от выбора структуры обрабатываемой информации.

Язык программирования ЛОГО (от англ. LOGO) был создан в 1960 году в образовательных целях для обучения детей. Он используется и в настоящее время и является языком программирования высокого уровня. Язык достаточно прост, но, несмотря на это, имеет богатые возможности (графические средства, процедуры). Данный язык создал учеными С.Пейпером и И.Харелем. Исследователи показали, что различные качества мышления эффективно развиваются у детей, занимающихся программированием на ЛОГО. Поэтому именно он представляется наиболее подходящим с педагогической точки зрения. С помощью него можно создавать интересные и красочные проекты.

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

Язык Фортран был разработан фирмой IBM в 1954 году. Это первый язык программирования высокого уровня. Дословно название языка означает преобразование формул. В 60-70 годы Фортран приобрел большую известность и популярность. Язык обладает простой структурой, но следует сказать, что Фортран не был тем языком, на котором было удобно и легко программировать. Программа записывалась в виде последовательности предложений, операторов и оформляется по определенным правилам. Эти самые правила накладывают ограничения на запись программы, на расположение частей программы. Программа на Фортране состоит из сегментов или подпрограмм. На этом языке накоплено достаточно много программ. Он используется для инженерных расчетов, для решения задач по физике и математике.

Язык Cobol был предназначен для коммерческих приложений, являлся универсальным языком символьных конструкций для начинающих. Работа над первой версией языка закончилась в декабре 1959 года, а в 1960 зимой был опубликован предварительный отчет. На Коболе написаны тысячи прикладных коммерческих систем. Язык являлся первым языком программирования, в котором введен тип данных «запись». Отличительной особенностью языка является возможность эффективной работы с большими массивами данных. Популярность Кобола высока, даже в настоящее время используется Кобол -74, 85.

Язык программирования Лисп (Lisp) предназначался скорее для работы со строками символов, нежели для работы с числами. Поэтому числа в мире Лиспа играют далеко не главную роль. Язык был предложен Джоном Маккарти в 1960 году. Это предназначение языка открыло для специалистов новую область деятельности, которая в настоящее время известна, как «искусственный интеллект» (от англ. artifical intellect) наука и технология создания интеллектуальных машин, особенно интеллектуальных компьютерных программ). Сейчас этот язык можно встретить в экспертных системах, в системах аналитических вычислений, кроме того он нашел широкое применение в исследованиях по созданию искусственного интеллекта.

Язык программирования Бейсик (BASIC) может делать практически все, что и язык Фортран. Бейсик считается деловым языком. Этому языку было легко обучиться, поэтому и программы писались быстрее. При проектировании языка к нему предъявлялись такие требования, как простота в использовании, возможность расширения функциональных возможностей, интерактивность, высокая скорость работы и некоторое другое. Бейсик был доступен на любых персональных компьютерах. И в скором времени завоевал большую популярность. Следует обратить внимание и на то, что и сейчас он по-прежнему остается самым простым в освоении и обучении. Бейсик – это не один язык, а целое семейство языков, которые различаются между собой временем создания, синтаксисом.

С начала 80 годов XX века начали создаваться языки программирования, которые помогли перейти к структурному программированию. Структурное программирование представляет собой методологию разработки программного обеспечения, в основе которой лежит методология представление программы в виде иерархической структуры блоков. Например, языки структурного программирования Pascal (1970), Си (1971), Ada (1983).

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

Под эгидой Министерства обороны США был создан язык программирования Ада (Ada). В 1995 году принят стандарт языка Ада 95, который развивал предыдущую версию, исправил некоторые неточности в работе. Но оба этих языка не получили широкого распространения вне военных проектов. Основной причиной явилась сложность в освоении и громоздкость в синтаксисе программы. Этот язык в дополнении к классическим свойствам, обеспечивает программирование задач реального времени и моделирование параллельного решения задач. В настоящее время существуют компиляторы Ada под любую операционную систему. Язык используется в США и в Европе при создании больших и сложных проектов, которые требуют повышенной безопасности.

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

В основу языков 90 годов XX века были положены программные объекты, которые объединяют данные и методы их обработки. Для таких языков были разработаны интегрированные среды программирования, такие как Си++ (1983), Visual Basic (1991), Object Pascal (1989).

Название языка Си++ придумал Рик Масситти. «++» означает операцию приращения в Си. Если вы напишите Си+, это будет считаться синтаксической ошибкой. Данный язык является универсальным языком программирования, который бы мог сделать более приятной работу серьезного программиста. Он имеет более гибкие и эффективные средства определения новых типов. Изначально язык Си++ был разработан для того, чтобы автору не приходилось программировать на ассемблере, Си или других языках высокого уровня. В качестве базового языка Си++ был выбран Си, так как он был многоцелевым, достаточно пригодным, шел на всех персональных компьютерах и отвечал большинству задач. Си++ проектировался для работы и использования в традиционной среде компиляции и выполнения, среде программирования на Си в системе Unix.

В 90 годы XX века в связи с бурным развитием интернета были созданы языки программирования, которые обеспечивали межплатформенную совместимость. Если на компьютерах был установлен интернет, но операционная система была различна, то на них могли выполняться одни и те же программы. Появился язык java (1995), язык javaScript (1995).

Язык Java (Ява) – это язык для программирования в Интернете, который позволяет создавать переносимые, безопасные, объектно-ориентированные интерактивные программы. Язык очень тесно связан с Интернетом, потому что первой серьезной программой, написанной на этом языке, был браузер Всемирной паутины.

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

В 2001 году разработан открытый язык программирования Processing. Он был основан на языке Java. В основном этот язык программирования используют художники и дизайнеры для программирования графики.

Язык программирования Scala появился в 2003 году. Это язык является достаточно перспективным и работает на виртуальной машине Java.

В 2006 году появляется язык программирования Vala. Он активно развивается в настоящее время. Код на Vala транслируется в код на Cи. Язык представляет собой язык со строгой статистической типизацией, но при объявлении переменных не требует указания типа. Ему не нужны специализированные отладчики и профайлеры.

В 2007 году началась разработка языка программирования Go. Официально он был представлен лишь в 2009 году. Синтаксис Go схож с синтаксисом языка Си, за исключением объявления типа. Язык поддерживает сборку мусора. В настоящее время его поддержка осуществляется лишь на операционных системах Linux.

2 октября 2012 года компания Microsoft представила новый язык программирования TypeScript. Он является обратно совместимым с javaScript. После компиляции программу на этом языке можно выполнять в любом современном браузере.

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

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

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

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

Первая группа языков программирования, которую мы рассмотрим – это машинно-ориентированные языки.

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

Машинно-ориентированные языки в свою очередь подразделяются на классы.

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

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

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

Развитые автокоды получили название ассемблеры.

Четвертый класс – макросы. Язык, который является средством замены последовательности символов, которые описывают выполнение требуемых действий электронно-вычислительных машин на более сжатую форму – это макрос.

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

Макрос может одинаково работать и с программами, и с данными.

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

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

Проблемных языков достаточно много. К ним можно отнести Фортран, Algol, Лисп, Слэнг, Снобол и некоторые другие.

Универсальные языки были созданы для широкого круга задач. Первый универсальный язык был разработан компанией IBM, ставший в последовательности языком Пл/1. Второй по мощности язык программирования называется Алгол-68. Он мог работать с символами, числами с фиксированной и плавающей запятой.

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

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

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

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

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

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

Двоичный язык – сейчас программистами не применяется.

Шестнадцатеричный язык – используется в качестве дополнения к языкам высокого уровня для программирования критичных к времени выполнения алгоритмов.

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

Язык макроассемблера – расширение языка ассемблера, он позволяет определять более мощные команды.

Язык программирования С был разработан в 70 годах. Этот язык сочетает в себе достоинства современных высокоуровневых языков и возможность доступа к аппаратным средствам компьютера.

Язык Бейсик достаточно популярен. Существует множество его диалектов, которые между собой несовместимы.

Язык Фортран разработан в 1956 году.

Язык Паскаль разработан в 1970 году Норбертом Винером, назван в часть французского математика Блеза Паскаля.

Язык Modula – 2 создан в 1979 году также Норбертов Винером. Этот язык по существу является развитием языка Паскаля. Особенностью данного языка программирования является высокая модульность программ и наличие средств описания параллельных процессов.

Язык Ada разработан в 1979 году по приказу Министерства обороны США.

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

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

Языки программирования можно классифицировать по типам задач.

Задачи искусственного интеллекта – Пролог, Лисп, Рефал.

Параллельные вычисления – параллельный Кобол, Fun, Apl. Время появления таких языков отводится на 1980 год. Эти языки обладают высокой функциональностью в системах реального времени, узким спектром применения и высокой себестоимостью разработки небольших программ.

Задачи вычислительной математики – параллельный Кобол, РА, Occam.

Разработка интерфейса – Ассемблер, Макроассемблер, Ява.

Задачи вычислительного характера – Алгол, Фортран, Кобол, Ада.

Разработка программ оболочек – Ассемблер, Макроассемблер, Ява.

Оформление документов, обработка больших текстовых данных – Natural, Perl.

К языкам программирования сверхвысокого уровня можно отнести лишь Алгол-98 и APL. Повышение уровня этих языков произошло за счет введения сверхмощных операций и операторов.

Языки программирования можно разделить на поколения:

- языки первого поколения (начало 1950 годов): машинно-ориентированные языки с ручным управлением памяти на компьютерах первого поколения (сложны в управлении, требуют хорошего знания архитектуры и работы персонального компьютера). Основная отличительная особенность языков первых компьютеров – это ориентирование на конкретный компьютер. Языки программирования первого поколения представляют собой набор команд в двоичном или восьмеричном коде, который определялся конкретной архитектурой персонального компьютера. Каждый тип электронно-вычислительной машины имел свой язык программирования, а программы были пригодны только для него, для этого типа. От программиста требовалось знание не только языка программирования, но и знать архитектуры ЭВМ.

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

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

- языки четвертного поколения (начало 1970 и по сегодняшний день): усовершенствованные, разработанные для специальных прикладных программ (ориентированы на непрофессионального пользователя). Языки программирования этого поколения носят ярко выраженный непроцедурный характер. В программах теперь формируется скорее соотношение, нежели последовательность шагов выполнения алгоритма. Эти языки более пригодны для применения непрофессионалами в области программирования. Отличительная особенность данных языков – это приближение к человеческой речи. Некоторые языки имеют черты и третьего и четвертого поколения одновременно.

- языки пятого поколения: объектно-ориентированные языки, визуальные (ориентированы на повышение интеллектуального уровня электронно-вычислительных машин и интерфейса с языками).

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

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

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

Компилятор переводит исходный текст программы на машинный язык целиком, а интерпретатор выполняет исходный текст прямо во время исполнения программы.

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

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

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

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

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

Такие языки программирования, как Java и C#, находятся между компилируемыми и интерпретируемыми. То есть программа компилируется не в машинный язык, а в машинно – независимый код низкого уровня, байт - код. Для выполнения байт – кода используется интерпретация, несмотря на то, что отдельные части этого кода для ускорения работы могут быть транслированы в машинный код непосредственно во время выполнения программы.

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

2011 год – Паскаль – 104, Си++ - 120, Бейсик – 1, Java – 0.

2012 год – Паскаль – 96, Си++ - 133, Бейсик – 1, Java – 6.

2013 год – Паскаль – 59, Си++ - 165,5, Бейсик – 0, Java - 5.

На основе приведенной статистики, можно сделать вывод, что происходит сокращение использования таких языков как Паскаль, Бейсик, но увеличивается использование Си++, Java.

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

3. Высокоуровневый язык программирования

Реальный скачок в программировании был сделан при появлении языков высокого уровня: Алгола, Фортрана и, позднее, КОБОЛА. Эти языки позволяют писать программы текстом, похожим на английский язык. Компилятор получает каждую команду и преобразует ее в машинный код. Он позволяет использовать имена (переменные) для представления элементов данных так, что одна и та же программа может быть использована с любыми входными данными. Программы, написанные на языках высокого уровня, более компактны, легче для понимания, а вероятность появления в них ошибок меньше.

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

Первым языком программирования высокого уровня считается компьютерный язык Plankalkül разработанный немецким инженером Конрадом Цузе ещё в период 1942-1946г. Однако транслятора для него не существовало до 2000 г. Первым в мире транслятором языка высокого уровня является ПП (Программирующая Программа), он же ПП-1, успешно испытанный в 1954 г. Транслятор ПП-2 (1955 г., 4-й в мире транслятор) уже был оптимизирующим и содержал собственный загрузчик и отладчик, библиотеку стандартных процедур, а транслятор ПП для ЭВМ Стрела-4 уже содержал и компоновщик (linker) из модулей. Однако, широкое применение высокоуровневых языков началось с возникновением Фортрана и созданием компилятора для этого языка.

Ранние языки высокого уровня были довольно специализированными: Фортран (FORmula TRANslation) был предназначен для использования в научных целях, КОБОЛ (Common business Orientated Language) – для использования в мире бизнеса. Появление в 50-х гг. языка BASIC (Beginners All-purpose Symbolic Instruction Code) закрыло существовавший в языках высокого уровня пробел между языками для науки и для бизнеса. BASIC в равной степени годится для любых задач и в то же время достаточно прост для изучения.

Тем временем были изобретены новые методы программирования, которые привели к новой волне языков высокого уровня. Одним из этих языков, выдержавших проверку временем, является основанный на методах структурного программирования Pascal.

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

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

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

Примеры: C, C++, Visual Basic, Java, Python, PHP, Ruby, Perl, Delphi (Pascal). Языкам высокого уровня свойственно умение работать с комплексными структурами данных. В большинство из них интегрирована поддержка строковых типов, объектов, операций файлового ввода-вывода и т. п.

К языкам высокого уровня относят:

  1. проблемно-ориентированные (имеют средства для организа ции структур данных, описания алгоритмов и ориентированы на решение задач определенного класса):  Фортран, Алгол, Кобол, Ада и др.;
  2. универсальные: Алгол 68,  PL/1,  Паскаль, QBasic, C, C++, С# и дp.;
  3. языки  проектирования  программ  (системы программирова ния) – в настоящее время имеют самый высокий уровень аб стракции, они расширяются не как языки описания процесса обработки  данных,   а   как   средства описания  задач:   Visual Basic, Delphi, MS Visual C++, Borland C++  Builder и др.;
  4. языки гипертекстовой разметки, такие, как HTML – набор кодов, который вводится в документ для обозначения, напри мер, связей между его частями. Команды HTML обеспечива ют соединение сайтов и главных страниц WWW (Всемирной паутины сети Интернет) при помощи гиперссылок и указывают Web-браузеру (программе навигации) способ расположе ния массивов данных;
  5. языки описания сценариев – макросы, в которых объедине ны отдельные команды, управляющие средой в соответствии с их списком – программой: (например состоящие из имено ванных последовательностей совокупности указанных нажа тий клавиш при работе с пакетом Microsoft Office);
  6. языки   моделирования   систем:   например,   GPSS   (General Purpose Simulating System) позволяет автоматизировать при моделировании   процесс   программирования  моделей.   Язык построен в предположении, что моделью сложной дискретной системы является описание ее элементов и логических правил их взаимодействия. Для определенного класса моделируемых систем выделяют небольшой набор абстрактных элементов объектов. Набор логических правил ограничен и может быть описан небольшим числом стандартных операций. Комплекс программ, описывающих функционирование объектов и выполняющих логические операции, является основой для создания программной модели систем данного класса.

4. Понятие об алгоритме

Алгоритм - это одно из самых широких понятий математики и информатики.

Более 1000 лет назад в Багдаде, крупном научном центре Востока, жил абд Джафар Мужамед ибн Муса Аль-Хорезми. Ему принадлежит книга по математике, которая в течение нескольких столетий пользовалась широкой популярностью. В ней Аль-Хорезми сформулировал правила выполнения четырёх арифметических действий над многозначными числами.

При переводе на латынь имя автора переделали в Algorithmi (Алгоритми). В книге Аль-Хорезми приводились методы решения разных задач. Ссылаясь на них, европейцы упоминали: "Так говорил Алгоритми..." Со временем методы решения задач стали называться алгоритмами. В дальнейшем алгоритмом стали называть описание любой последовательности действий, которую следует выполнить для решения задачи. 

Алгоритм – строго упорядоченная последовательность действий, направленная на выполнение поставленной задачи.

В широком смысле алгоритмизация включает в себя выбор метода решения задачи. Результатом выполнения этапа алгоритмизации является алгоритм решения задачи.

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

  1. узнать необходимый телефонный номер;
  2. поднять трубку;
  3. набрать номер;
  4. дождаться ответа абонента.

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

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

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

4.1 Разветвляющийся алгоритм

Алгоритмы исполняют в естественном порядке: команда за командой (смотрите повторение). Однако жизнь весьма разнообразна. А цели все же хочется достичь.

Вот и ученик, собираясь в школу, продумывает следующие действия:

  1. Если чувствует себя хорошо, то собирается в школу
  2. Иначе - остается дома.

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

  1. Дикретность, т.е. все решение разбивается на простейшие шаги.
  2. Понятность, алгоритм должен быть понятен исполнителю.
  3. Точность, не должно быть неясностей и двусмысленностей.
  4. Массовость, с помощью одного и того же алгоритма можно решить множество задач.
  5. Результативность (или конечность) состоит в том, что алгоритм должен приводить к решению задачи за конечное число шагов.

Полная форма.

Полная форма - это форма записи развлетвляющегося алгоритма, в которой предусмотрены команды в ветви "да" и в ветви "нет". 

если-то-иначе

Пример

Происходит проверка условия.

  • Если а>b, то происходит присваивание к переменной "а" значение "а*2", а к переменной "b", значение "1".
  • Иначе, т.е. если а<=b, происходит присваивание переменной "b" значение "2*b".

Неполная форма

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

если-то

Пример

Происходит проверка условия.

  1. Если x>0, то переменной "y" присваивается значение "sin(x)"
  2. Иначе, т.е. если x<=0, то действия ветви "да" пропускаются.

Разветвляющийся алгоритм можно записать несколькими способами:

  1. Словесный.
  2. В виде блок-схем (графический).
  3. На языке программирования.

4.1.1. Словесный способ

Словесный способ записи разветвляющихся алгоритмов представляет собой описание последовательных этапов обработки данных. А алгоритм задается в произвольном изложении на естественном языке.

Например:

  1. Задать два числа.
  2. Если числа равны, то взять любое из них в качестве ответа и остановиться, иначе продолжить выполнение алгоритма.
  3. Определить большее из чисел.
  4. Заменить большее из чисел разностью большего и меньшего из чисел.
  5. Повторить алгоритм с числа два.

Словесный способ не имеет широкого распространения, т.к. такие описания:

  1. строго не формализуемы;
  2. страдают многословностью записей;
  3. допускают неоднозначность толкования отдельных предписаний.

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

4.1.2. Графический способ

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

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

Название символ

Обозначение и пример заполнения

Пояснение

Пуск — остановка

Начало, конец алгоритма, вход и выход в подпрограмму

Ввод — вывод

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

Процесс (действие)

Вычислительное действие или их последовательность

Решение (условие)

Проверка условий

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

4.2 Линейный алгоритм

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

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

Алгоритм (словесный способ записи):

  1. Возвести первый катет в квадрат;
  2. Возвести второй катет в квадрат;
  3. Сложить результаты действий 1 и 2;
  4. Вычислить квадратный корень из результата 3-го
    действия и принять его за значение гипотенузы.

Программный способ записи:

10 INPUT a,b
20 x=a^2
30 y=b^2
40 z=x+y
50 w=SQR(z)
60 PRINT w
70 END

4.3 Циклический алгоритм

Циклический алгоритм - это такой алгоритм, действия которого повторяются. Существует два типа циклических алгоритмов:

Цикл типа "Пока"

Цикл типа "Для"

Пример: алгоритм продавца по обслуживанию покупателей

Пример: алгоритм учителя по проверке тетрадей учеников

Циклический алгоритм типа "Для"

Циклический алгоритм типа "Для" - это такой циклический алгоритм, в котором число повторений известно.

Для организации циклов с известным числом повторений (типа "Для") используют оператор FOR - NEXT.

10 FOR A = L TO R STEP N

20 P

30 NEXT A

A - счетчик цикла (управляющая переменная) 
L - начальное значение (число)
R - конечное значение (число)
N - шаг цикла (число)
P - тело цикла (последовательность действий)

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

Например, запись: FOR A = 0 TO 12 STEP 2

означает, что управляющая переменная A (счетчик цикла) примет сначала значение 0 и при каждом повторении цикла будет увеличиваться на 2. Последним значением K будет 12. Если шаг равен 1, то часть STEP 1 в операторе можно опустить. Оператор FOR используется только в паре с оператором NEXT, который имеет вид: NEXT A, где A - имя управляющей переменной (счетчика) цикла.

Операторы, которые требуется повторить многократно, записываются между FOR и NEXT и называются телом цикла.

Чтобы организовать цикл с помощью оператора FOR, нужно:

  1. выделить тело цикла;
  2. выбрать управляющую переменную;
  3. определить границы ее изменения и шаг (параметры цикла);
  4. предусмотреть начальные присваивания (если это требуется).

Рассмотрим применение оператора FOR - NEXT на следующем примере, где L (начальное значение счетчика цикла) = 1, R (конечное значение счетчика цикла) = 10:

10 K = 6
20 FOR A = 6 TO 10
30 K = K + 1
40 PRINT K;
50 NEXT A
60 END

заголовок - 20
тело цикла - 30; 40
конец цикла - 50

Работа оператора FOR - NEXT

Счетчику присваивается первоначальное значение

Выполняется тело цикла - операторы, которые повторяются

Оператор NEXT выполняет 3 действия:

  1. Присваивает счетчику цикла новое значение
  2. Сравнивает полученное значение с конечным
  3. Если полученное значение меньше или равно конечному, то происходит возврат на начало тела цикла (на первый оператор после заголовка); если полученное значение больше конечного, то происходит выход из цикла

Циклический алгоритм типа "Пока"

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

Начав тренировки, спортсмен в первый день пробежал 10 км. Каждый следующий день он увеличивал дневную норму на 50% от нормы предыдущего дня. Через сколько дней спортсмен пробежит суммарный путь 60 км?

10 S = 10
20 N = 1
30 S = S + 0, 5*S
40 N = N + 1
50 IF S<60 THEN GOTO 30
60 PRINT N
70 END

S - счетчик км
N - счетчик дней

ЗАКЛЮЧЕНИЕ

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

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

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

В данной курсовой работе были рассмотрены наиболее популярные языки программирования, такие как Си++, Си, Бейсик, Паскаль.

Сформулируем основные перспективы развития языков программирования:

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

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

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

В заключение хотелось бы сказать такие слова Брайэна Кернигана: «Единственный способ изучать язык программирования – это писать на нем программы».

ГЛОССАРИЙ

Искусственный интеллект – (от англ. artifical intellect) наука и технология создания интеллектуальных машин, особенно интеллектуальных компьютерных программ

Компилятор – (от англ. Compile – собирать вместе, оставлять) специальная программа для преобразования в машинный код

Макропроцессор – (МП) компонент программного обеспечения, которые обеспечивает функционирование макросов

Макрос – язык, который является средством замены последовательности символов, которые описывают выполнение требуемых действий электронно-вычислительных машин на более сжатую форму

Машинно-независимые языки – средство описания алгоритмов решения задач и информации, которая подлежит обработки.

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

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

Транслятор – (от англ. translator-переводчик) программа цифровой электронно-вычислительной машины, которая предназначается для перевода программы, составленной на естественном языке

Структурное программирование – методология представление программы в виде иерархической структуры блоков

Языки программирования – искусственные языки, которые имеют строгие правила записи программы

СПИСОК ЛИТЕРАТУРЫ

  1. http://ru.wikipedia.org/block_big.html
  2. http://codeforces.ru/blog/entry/1917

3. Ваулин А.С. Языки программирования. кн.5, 1993.

4. Курносов А.П. Информатика. М.: Колосс, 2005.

5. Островский В.А. Информатика: учеб. для вузов. М.: Высшая школа, 2000.

6. Попов И.И. Основы алгоритмизации и программирования. Учебное пособие. М: Форум: Инфра-М, 2004.

7. Себест Р.В. Основные концепции языков программирования. 5 издание, Вильямс, 2001.

8. Симонович С.В. Информатика базовый курс. С.-П. «Питер», 2005.

9. Угринович Н.Д. Информатика и ИКТ 10-11 класс. Москва, 2006.

10. Шилдт Г. Си++: базовый курс. Вильямс, 2008.

11. Хеннер Е.К. Информатика. М: Академия, 2004.

12. Хьювенен Э. Мир Лиспа. 1990.