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

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

Содержание:

ВВЕДЕНИЕ

Данная работа посвящена изучению классификации языков программирования высокого уровня.

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

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

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

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

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

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

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

1) рассмотреть классификация языков программирования

2) охарактеризовать понятие о языках программирования высокого уровня и их классификация

3) изучить классификацию языков программирования высокого уровня

4) проанализировать языки программирования высокого уровня Lisp, Prolog, C++

5) дать характеристику языку программирования Basic

6) исследовать язык программирования Pascal

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

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

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

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

1. Теоретические основы изучения языков программирования высокого уровня

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

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

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

В настоящее время можно выделить более 2000 разнообразных языков программирования, а также их модификаций, однако только некоторые из них обрели широкое признание. Все языки программирования могут быть условно классифицированы в соответствии с определенными основными признаками [12, 77]. Рассмотрим классификацию языков программирования:

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

1) языки программирования низкого уровня,

2) языки программирования высокого уровня [5, 33].

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

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

Программы для первых электронно-вычислительных машин были разработаны именно на «машинных» языках. Это был сложный процесс, поэтому вскоре появились языки символьного кодирования. Команды подавались уже символами, а не двоичным кодом. Изменение символьного кода в машинные команды происходит автоматически [6, 72].

Как правило, команды современных языков программирования пишутся английскими буквами с применением символов, которые содержатся на клавиатуре [10, 95]. Однако компьютер хранит и выполняет команды, представленные физическими сигналами (к примеру, двумя уровнями окончательной магнитной индукции, двумя значениями электрического напряжения, наличием и отсутствием светового луча). Значение физических сигналов обозначается двоичными символами, математическими значениями 0 и 1.

Программы, представленные набором 0 и 1, называются машинными или машинным кодом. Он точно определяет, какое конкретно действие должен выполнить процессор [2, 72].

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

Упрощенный двоичный или шестнадцатеричный код команды можно записать соответственно следующим образом: 11001011 10101101 11011001 А7 В5 С3

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

Первым языком высокого уровня, широко признанным мировыми программистами, был Fortran. Он был разработан в 1954 году компанией IBM (США) [2, 76]. Язык Fortran очень похож на язык алгебры и ориентирован на решение вычислительных задач. В 1960 году группа ученых из разных стран азработала язык Algol-60, который также был ориентирован на решение вычислительных задач.

По принципам программирования языки делятся на:

1) процедурные языки программирования

2) непроцедурные языки программирования

3) объектно-ориентированные языки программирования

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

Процедурные языки основаны на описании последовательного изменения состояния компьютера, то есть значений ячеек памяти, состояния процессора и других устройств. Они манипулируют данными в пошаговом режиме, применяя пошаговые инструкции. В процедурных языках выдерживают четкое структурирование программ, поэтому они также называются языками структурного программирования. К подобным языкам относятся BASIC, Algol, Pascal, Fortran [12, 77].

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

Непроцедурные языка являются эффективными для программирования поиска больших объемов данных, а также для программирования задач, процесс решения которых не может быть точно описан (перевод, распознавание образов) [16, 96]. На этих языках сам поиск решения интегрирован в интерпретатор языка. Такие языки включают функциональные и логические языки программирования.

В конце XX века был представлен новый метод программирования, названный объектно-ориентированным программированием. То есть эволюционировали языки, которые содержат конструкции, которые позволяют определять объекты, принадлежащие к классам и обладающие средствами для работы с абстрактными типами данных. К таким языкам относятся C ++, Java, C, Python и другие [16, 111]. В настоящее время языки объектно-ориентированного программирования практически вытеснили процедурные языки с рынка профессионального программирования.

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

1) универсальные языки программирования

2) специализированные языки программирования [2, 93]

Универсальные языки должны решать широкого класса задачи. К этим языкам относятся PL/1, Algol, Pascal, С. Особенный класс универсальных языков представляют собой визуальные среды программирования: VisualBasic, Delphi и другие.

Специализированные языки учитывают особенности предметной области. Сегодня существуют десятки специальных языков программирования, в том числе, языки веб-программирования, языки скриптов. Язык скриптов применяется с целью создания небольших утилит (вспомогательных программ), таких как Javascript - для создания динамических объектов на веб-страницах. Языки разметки содержат шаблоны и средства, которые описывают содержание, структуру и формат электронных документов, например язык HTML предоставляет возможности разметки гипертекстовых документов. Язык для работы с базами данных позволяет создавать и поддерживать базы данных [19, 27].

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

Развитие языков программирования, начиная с 60-х годов XX века, осуществляется посредством специализации и посредством универсализации. Одним из первых специализированных языков является COBOL, который был разработан в 1961 году в США и был ориентирован на решение экономических задач [10, 95]. Впоследствии появились десятки разнообразных специализированных языков, к примеру, Simula - язык моделирования, LISP - язык для решения информационных и логических задач, язык RPG для решения образовательных задач.

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

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

Языки программирования высокого уровня представляют собой машинно-независимые языки. Одну и ту же программу на таком языке можно выполнить на электронно-вычислительных машинах разных типов, которые оснащены соответствующим транслятором [23, 76]. По сравнению с Автокодом форма записи программ на языках программирования высокого уровня еще ближе к естественному языку - традиционной математической форме. На языке Pascal она аналогичная школьному Алгоритмическому языку. Языки программирования высокого уровня легко изучаются, достаточно хорошо поддерживают структурную методику программирования.

Первые популярные языки высокого уровня появились в 1950-х годах. Ими являлись Fortran, Algol (в Европе) и Cobol (в США) [7, 132].

Ориентированность языков Fortran и Algol была направлена на научно-технические расчеты математического характера. Язык Cobol был ориентирован на программирование экономических задач. В Fortran и Algol по сравнению с языком Cobol сильнее развиты математические средства, но в Cobol хорошо развита организация вывода данных в форме необходимого документа, средства обработки текстов. Характерной чертой для первых языков программирования высокого уровня была предметная ориентация языков.

Большая численность языков программирования появилась в 1960-1970-х годах. А за всю историю электронно-вычислительных машин их было создано более тысячи. Однако получили распространение, выдержали испытание временем лишь немногие. В 1965 году в Дартмутском университете был разработан язык Basic [22, 198]. Авторы задумывали его как простой язык, который легко изучается, предназначается для программирования расчетных задач несложного характера. Basic получил наибольшее распространение на микро электронно-вычислительных машинах и персональных компьютерах. Некоторые модели школьных компьютеров позволяют программировать исключительно на языке Basic. Однако Basic является неструктурным языком, и, следовательно, для обучения качественному программированию он подходит плохо. Необходимо заметить, что последние версии Basic для персонального компьютера стали более структурными и приближаются по своим изобразительным возможностям к таким языкам, как Pascal] [11, 184].

В эпоху электронно-вычислительных машин третьего поколения большое распространение получил язык PL/I (Program Language One), который разработала фирма IBM. Это был первый язык, который претендовал на универсальность, возможность решать любой вид задач: вычислительные, поиска и накопления данных, задачи обработки текстов. Но следует отметить, что PL/I оказался слишком сложным языком. Транслятор с языка PL/I для машин типа IBM 360/370 нельзя считать оптимальным, он содержал целый ряд невыявленных ошибок [5, 33]. На электронно-вычислительных машинах класса микро и мини он совершенно не получил распространения. Впоследствии старые языки модернизировали в универсальные варианты - Algol-68 и Fortran-77.

В 1971 году был создан язык Pascal, что стало важным событием в истории языков программирования. Его автором стал швейцарский профессор Никлаус Вирт. Он разрабатывал Pascal в качестве учебного языка структурного программирования.

Персональные компьютеры обеспечили наибольший успех в распространении данного языка. Американская фирма Borland International, Inc (США) разработала систему программирования Turbo Pascal для персонального компьютера [13, 25].

Turbo Pascal является не только языком и транслятором с него, но еще и операционной оболочкой, которая обеспечивает удобство работы пользователю. Turbo Pascal стал языком профессионального программирования с универсальными возможностями, выйдя за пределы учебного предназначения. Транслятор с Turbo Pascal по оптимальности разработанных им программ близок наиболее успешному в данном отношении транслятору - транслятору с Fortranа [20, 39]. Благодаря указанным достоинствам Pascal стал основанием для многих современных языков программирования.

Электронно-вычислительные машины будущего, пятого поколения именуют машинами «искусственного интеллекта» [6, 72]. Но намного раньше физического появления разрабатывались прототипы языков для данных машин. Этими языками являются LISP и Prolog.

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

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

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

Языки программирования высокого уровня можно разделить на несколько групп: языки объектно-ориентированные, процедурно-ориентированные и проблемно-ориентированные [8, 98].

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

а) предназначение языка Prolog, полное название которого Programming in Logic, состоит в логическом программировании, осущесталяемом в рамках систем искусственного интеллекта [21, 115];

б) язык Lisp, полное название List Information Symbol Processing, был изобретён Джоном Маккарти в 1962 году. Первоначально он применялся в качестве средства работы со строками различных символов. Областью использования языка Lisp являются системы аналитических вычислений и экспертные системы;

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

а) язык Basic, полное название которого Beginner’s All-purpose Symbolic Instruction Code, в переводе с английского обозначает «обучающий код для начинающих символический многоцелевой», был изобретен в 1964 году. С этого периода он стал использоваться в качестве языка для обучения программированию [23, 74];

б) язык Fortran, который расшифровывается как Formulae Translation, в переводе с английского обозначает «преобразование формул». Fortran как язык программирования высокого уровня представляет собой один из старейших языков. Существование языка Fortran и его употребление объяснимо простотой его структуры;

в) язык программирования С, был разработан и применяется с 70-х годов XX века в качестве языка системного программирования исключительно с целью создания UNIX, операционной системы. В 80-е годы XX века на базе языка С был разработан язык С++, включающий в себя язык С и дополненный средствами объектно-ориентированного программирования [17, 88];

г) язык Pascal своим названием обязан французскому ученому Блезу Паскалю. Его применение началось с 1968-1971 годы Никлаусом Виртом. Сразу после создания Pascal использовали с целью обучения программированию, однако впоследствии его начали применять в профессиональном программировании с целью создания программных средств;

Группа объектно-ориентированных языков получает широкое развитие и в современном мире. Большинство из них представляют собой развитые версии проблемных и процедурных языков [10, 95].

Однако программирование при помощи объектно-ориентированных языков нагляднее и проще. Среди этой группы языков следует выделить такие языки, как:

а) Visual Basic (Basic);

б) С++ (С);

в) Visual Fortran (Fortran);

г) Prolog++ (Prolog);

д) Delphi (Pascal) [12, 124].

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

Выводы по 1 главе

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

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

Классификация языков программирования высокого уровня выделяет три основные группы: языки программирования объектно-ориентированные, процедурно-ориентированные и проблемно-ориентированные языки программирования.

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

2.1. Языки программирования высокого уровня Lisp, Prolog, C++

Изначально язык программирования C был создан как инструментальный язык с целью разработки баз данных, трансляторов, операционных систем, а также других прикладных и системных программ. Язык C, как и Pascal представляют собой языки структурного программирования. Однако отличие C от Pascal состоит в том, что он содержит возможности непосредственного обращения к некоторым машинным командам, к конкретным участкам памяти персонального компьютера. Развитие языка C в дальнейшем привело к разработке C++, который является языком объектно-ориентированного программирования [17, 88].

Ещё одним языком, предложенным Н. Виртом, стал язык Modula-2. Этот язык был основан на базе языка Pascal и содержал средства с целью создания больших программ [23, 91].

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

Язык Prolog был разработан в 1972 году во Франции также с целью решения проблематики «искусственного интеллекта». Язык Prolog дает возможность в формальном виде описывать разнообразные утверждения, логику рассуждений и заставляет компьютер давать ответы на все заданные вопросы [6, 145].

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

Имеется возможность организовать перевод двумя методами:

- полноценный предварительный перевод - текст выступления лектором заранее передается переводчику, тот в свое время записывает перевод, копирует его и распространяет слушателям (после этого лектору можно и не выступать);

- синхронный перевод - лектором зачитывается доклад, одновременно с ним переводчик слово в слово переводит на незнакомый лектору язык выступление [12, 77].

Компиляция представляет собой аналог полноценного предварительного перевода; интерпретация является аналогом перевода синхронного. Транслятор, который работает методом компиляции, именуется компилятором; транслятор, который работает по принципу интерпретации, - интерпретатором [9, 21].

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

На протяжении всего времени работы программы интерпретатор находится в пределах внутренней памяти. В оперативно-запоминающем устройстве помещается и программа на языках программирования высокого уровня. В последовательности выполнения алгоритма интерпретатор «считывает» следующий оператор программы, осуществляет перевод его в команды и мгновенно выполняет указанные команды. После этого приступает к переводу и выполнению очередного оператора. Вместе с тем в памяти не сохраняются результаты предыдущих переводов. В ходе повторного выполнения одной и той же команды она будет транслироваться снова [17, 91].

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

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

Программы на Fortran, C, Pascal чаще всего реализованы посредством компилятора. Basic всегда интерпретируется [3, 91].

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

2.2. Язык программирования высокого уровня Pascal

Среди многих языков программирования, которые предназначены для обучения именно навыкам программирования, имеется один, который особо выделяется. Язык Pascal, который назван в честь великого французского ученого XVII столетия Блеза Паскаля, был создан в конце 1960-х годов швейцарским ученым Никлаусом Виртом, и не для образовательных целей, как этот язык сейчас воспринимается [6, 72].

Наоборот, в то время ученые пробовали различные языки программирования с целью практического использования. И позже этот ученый создал два языка программирования - Oberon и Modula, которые, однако, не стали популярными среди профессионалов. В частности, в 1968 году была разработана первая версия языка Pascal (на основе ALGOL), а 1970 году - первый компилятор.

Спецификой Паскаля является его структурная направленность - каждая программа может быть описана как комбинация отдельных блоков или структурных элементов в единое целое. Это так называемое структурированное программирование, которое заменило программирование - самую простую организацию написания программ, когда инструкции процессору последовательно записываются без какой-нибудь структуры [18, 92].

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

Это стало особенно очевидным после того, когда примерно в 1970 году профессор Хоар опубликовал две статьи: «Аксиоматические основы компьютерного программирования» и «О структурной организации данных», в которых пытается осмыслить правильность создания программных алгоритмов с математической точки зрения.

Язык программирования Pascal является первым из языков, который имеет все инструменты, необходимые для проверки эффективности написанных программ [15, 71].

Ещё одна особенность Pascal - это его строгая типизация данных, среди которых образовался новый ранее не применявшийся тип - перечислимый. Фактор строгой типизации сделал Pascal дисциплинирующим языком, который приучил программиста к логическому мышлению [18, 47].

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

Но с распространением данного языка программирования было обнаружено, что в нем недостает множества элементов, которые мы привыкли видеть - возведения в степень, концепции локальной переменной, динамические массивы, способность использовать машинный язык. Наиболее известное выражение этого недостатка того времени - это статья Кернигана «Почему Pascal не является моим любимым языком программирования» [14, 76].

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

Таким образом, долгое время Pascal не являлся языком, всецело удовлетворяющим запросам программистов.

2.3. Язык программирования высокого уровня Basic

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

Basic был придуман учителями Дартмутского колледжа Томасом Курцем и Джоном Кемени в 1963 году и под их руководством был внедрен командой студентов колледжа. Со временем, когда появились иные диалекты, этот «оригинальный» диалект стал называться Dartmouth Basic [23, 76].

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

При разработке языка к нему были сформулированы 8 основных требований:

- общая цель (отсутствие специализации);

- простота в применении для начинающих;

- интерактивность;

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

- высокая скорость при работе на небольших программах;

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

- создание эффективного посредничества между пользователем компьютера и операционной системой;

- отсутствие необходимости понимать, как работает аппаратное обеспечение для написания программ [19, 27].

Язык базировался частично на Fortran II и частично на Algol-60, с добавлениями, которые делают его удобным в процессе работы в режиме обработки текста, разделения времени, а также матричной арифметики. BASIC изначально был реализован на GE-265 с поддержкой большой численности терминалов. Однако, вопреки распространённому мнению, это был компилируемый язык во время своего появления.

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

В 1975 году компанией Microsoft был выпущен Altair Basic. Впоследствии был опубликован ряд операционных систем, в которых основным языком был Basic [3, 91]. Для операционной системы CP/M был разработан диалект Basic-80, который долгое время определял развитие языка.

За это время было создано много новых компиляторов и интерпретаторов Basic. Microsoft продала несколько версий Basic для MS-DOS/PC-DOS, в том числе Basic, GW-BASIC и QBasic. В 1985 году компания Borland выпустила Turbo Basic 1.0 (более поздние его версии были позже проданы другой компанией под названием PowerBasic) [11, 76].

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

Начиная с конца 80-х годов, новые персональные компьютеры стали сложнее и предоставляли возможности (такие как графический пользовательский интерфейс), которые делают Basic уже не таким подходящим для программирования. Basic начал терять свои позиции, хотя большая численность его версий ещё применялась и продавалась [2, 72].

Basic получил вторую жизнь с выпуском Visual Basic от Microsoft в 1991 году. Этот язык был похож на оригинальный исключительно синтаксисом, но был гораздо современнее. Visual Basic и его варианты стали одним из наиболее широко применяемых на платформе Windows языков. Версия под названием WordBasic была позже использована в MS Word до разработки Word 97. В 1993 году Visual Basic for Applications был интегрирован в Excel 5.0, затем в Access 95 в 1995 году. А позже и во все остальные инструменты, включенные в пакет Office - в 1997 году. Internet Explorer 3.0 и более поздние версии, а также поставки Windows содержали интерпретатор VBScript. Полная версия пакета OpenOffice также включает в себя интерпретатор Basic.

Если говорить о ранних версиях, то они не поддерживали даже структурное программирование [2, 93]. С течением времени процедурное и структурное программирование стало общепринятой парадигмой, и появились версии, которые их поддерживают. Целый спектр современных компиляторов во главе с Visual Basic и VB.NET реализуют программирование объектно-ориентированное и программирование, основанное на событиях.

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

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

Java - язык программирования, разработанный компанией Sun Microsystems. Дата официального выпуска - 23 мая 1995 года. Сегодня технология Java предоставляет средства для превращения статических Web-страниц в интерактивные динамические документы и для создания распределенных не зависящих от платформы приложений.

2.4.1. Основные особенности языка

Программы на Java транслируются в байт-код, выполняемый виртуальной машиной Java (JVM) - программой, обрабатывающей байтовый код и передающей инструкции оборудованию как интерпретатор.

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

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

 применение технологии трансляции байт-кода в машинный код непосредственно во время работы программы (JIT-технология) с возможностью сохранения версий класса в машинном коде,

 широкое использование платформенно-ориентированного кода (native-код) в стандартных библиотеках,

 аппаратные средства, обеспечивающие ускоренную обработку байт-кода (например, технология Jazelle, поддерживаемая некоторыми процессорами фирмы ARM).

По данным сайта shootout.alioth.debian.org, для семи разных задач время выполнения на Java составляет в среднем в полтора-два раза больше, чем для C/C++, в некоторых случаях Java быстрее, а в отдельных случаях в 7 раз медленнее. С другой стороны, для большинства из них потребление памяти Java-машиной было в 10-30 раз больше, чем программой на C/C++. Также примечательно исследование, проведённое компанией Google, согласно которому отмечается существенно более низкая производительность и большее потребление памяти в тестовых примерах на Java в сравнении с аналогичными программами на C++.

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

2.4.2. Основные возможности

 автоматическое управление памятью;

 расширенные возможности обработки исключительных ситуаций;

 богатый набор средств фильтрации ввода/вывода;

 набор стандартных коллекций, таких как массив , список , стек и т. п.;

 наличие простых средств создания сетевых приложений (в том числе с использованием протокола RMI);

 наличие классов, позволяющих выполнять HTTP-запросы и обрабатывать ответы;

 встроенные в язык средства создания многопоточных приложений;

 унифицированный доступ к базам данных:

 на уровне отдельных SQL-запросов - на основе JDBC, SQLJ;

 на уровне концепции объектов, обладающих способностью к хранению в базе данных - на основе Java Data Objects и Java Persistence API;

 поддержка шаблонов (начиная с версии 1.5);

 параллельное выполнение программ.

2.4.3. Основные идеи

Примитивные типы

В языке Java только 8 примитивных (скалярных, простых) типов: boolean, byte, char, short, int, long, float, double.

Длины и диапазоны значений примитивных типов определяются стандартом, а не реализацией и приведены в таблице. Тип char сделали двухбайтовым для удобства локализации (один из идеологических принципов Java): когда складывался стандарт, уже существовал Unicode-16, но не Unicode-32. Поскольку в результате не осталось однобайтового типа, добавили новый тип byte, причем в Java, в отличие от других языков, он не является беззнаковым. Типы float и double могут иметь специальные значения , и «не число» (NaN). Для типа double они обозначаются Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY, Double.NaN; для типа float - так же, но с приставкой Float вместо Double. Минимальные положительные значения, принимаемые типами float и double, тоже стандартизованы.

Таблица 1 – Типы данных Java

Тип

Длина (в байтах)

Диапазон или набор значений

boolean

не определено

true, false

byte

1

−128..127

char

2

0..216−1, или 0..65535

short

2

−215..215−1, или −32768..32767

int

4

−231..231−1, или −2147483648..2147483647

long

8

−263..263−1, или примерно −9.2·1018..9.2·1018

float

4

-(2-2−23)·2127..(2-2−23)·2127, или примерно −3.4·1038..3.4·1038, а также , , NaN

double

8

-(2-2−52)·21023..(2-2−52)·21023, или примерно −1.8·10308..1.8·10308, а также , , NaN

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

Преобразования при математических операциях

В языке Java действуют следующие правила:

1. Если один операнд имеет тип double, другой тоже преобразуется к типу double.

2. Иначе, если один операнд имеет тип float, другой тоже преобразуется к типу float.

. Иначе, если один операнд имеет тип long, другой тоже преобразуется к типу long.

. Иначе оба операнда преобразуются к типу int.

Данный способ неявного преобразования встроенных типов полностью совпадает с преобразованием типов в C++.

2.5. Язык программирования C#

Язык программирования С# - один из тех промежуточных языков, которые используют программисты для создания исполняемых программ. Он занимает промежуточное место между мощным, но сложным С++ и легким, но несколько ограниченным VB.

Языку С# присущи следующие характеристики :

  • Гибкость. Программы на С# могут выполняться как на вашей машине, так и передаваться по сети и исполняться на удаленном компьютере.
  • Мощность. Язык С# имеет фактически тот же набор команд, что и язык С++, но со сглаженными ограничениями.
  • Легкость в использовании. С# изменяет команды, ответственные за большинство ошибок в С++, так что поиск ошибок значительно облегчен.
  • Визуальная ориентация. Библиотека кода .NET, применяемая в С# для многих его возможностей, предоставляет помощь, необходимую для быстрого создания сложных визуальных форм.
  • Дружественность к Интернету. Язык С# играет основную роль в системе .NET, которая является текущим подходом Microsoft к программированию для Windows и Интернета.
  • Безопасность. Любой язык, предназначенный для использования в Интернет, должен иметь хорошую защиту.

Выводы по 2 главе

По результатам работы над второй главой исследования мы можем говорить о том, что язык C++ является языком объектно-ориентированного программирования. Язык LISP является универсальным языком. Язык Prolog решает проблему «искусственного интеллекта».

Язык программирования Pascal имеет все инструменты, необходимые для проверки эффективности написанных на нем программ.

Язык Basic был разработан для решения проблем, c которыми не справлялись старые языки, и нацелен на «обычных» пользователей. В настоящее время существует целое семейство языков Basic.

Язык Java предоставляет средства для превращения статических Web-страниц в интерактивные динамические документы и для создания распределенных не зависящих от платформы приложений.

Язык С#. Одна из последних разработок фирмы Microsoft, использующая платформу .NET. С# - один из тех промежуточных языков, которые используют программисты для создания исполняемых программ. Он занимает промежуточное место между мощным, но сложным С++ и легким, но несколько ограниченным VB. Позволяет создавать платформенно-независимые приложения.

ЗАКЛЮЧЕНИЕ

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

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

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

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

4) проанализировав языки программирования высокого уровня Lisp, Prolog, C++, мы можем сказать о том, что с помощью языка LISP на электронно-вычислительных машинах можно моделировать сложные процессы, в том числе интеллектуальную деятельность человека. Язык C++ является инструментальным языком разработки баз данных, трансляторов, операционных систем, а также других прикладных и системных программ. Язык Prolog дает возможность в формальном виде описывать разнообразные утверждения, логику рассуждений.

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

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

7) язык Java предоставляет средства для превращения статических Web-страниц в интерактивные динамические документы и для создания распределенных не зависящих от платформы приложений.

8) С# занимает промежуточное место между мощным, но сложным С++ и легким, но несколько ограниченным VB. Позволяет создавать платформенно-независимые приложения.

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

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

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

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

  1. Абрамов В.Г. Введение в язык Паскаль / В.Г. Абрамов. - М.: Наука, 2018. – 332 с.
  2. Абрамов С.А. Задачи по программированию / С.А. Абрамов - М.: Наука, 2018. – 135 с.
  3. Березин Б.И. Начальный курс С и C++ / Б.И. Березин - М.: ДИАЛОГ-МИФИ, 2016. – 135 с.
  4. Бондарев В.М. Основы программирования / В.М. Бондарев - Харьков: Фолио, 2017. – 118 с.
  5. Ван Тассел Д. Стиль, разработка, эффективность, отладка и испытание программ / Тассел Ван Д. - М.: Мир, 2013. – 231 с.
  6. Вирт Н. Алгоритмы и структуры данных / Н. Вирт - М.: Мир, 2009. – 78 с.
  7. Гладков В.П. Задачи по информатике на вступительном экзамене в вуз и их решения / В.П. Гладков - Пермь: Исток, 2014. – 423 с.
  8. Гладков В.П. Курс лабораторных работ по программированию / В.П. Гладков - Пермь: Исток, 2018. – 148 с.
  9. Грогоно П. Программирование на языке Паскаль / П. Грогоно - М.: Мир, 2012. – 119 с.
  10. Дагене В.А. 100 задач по программированию / В.А. Дагене - М.: Просвещение, 2013. – 183 с.
  11. Епашников A.M. Программирование в среде Турбо Паскаль 7.0 / A.M. Епашников - М.: МИФИ, 2014. – 109 с.
  12. Заварыкин В.М. Основы информатики и вычислительной техники / В.М. Заварыкин - М.: Просвещение, 2018. – 135 с.
  13. Зубов В.С. Программирование на языке Turbo Pascal / В.С. Зубов - М.: Филинъ, 2017. – 227 с.
  14. Зyeв Е.А. Практическое программирование на языке Turbo Pascal / Е.А. Зyeв - М.: Радио и связь, 2014. – 116 с.
  15. Йенсен К. Паскаль - руководство для пользователей и описание языка / К. Йенсен - М.: Мир, 2012. – 2014 с.
  16. Касаткин В.Н. Информация. Алгоритмы. ЭВМ / В.Н. Касаткин - М.: Просвещение, 2011. – 84 с.
  17. Керниган Б. Язык программирования Си / Б. Керниган - М.: Финансы и статистика, 2012. – 63 с.
  18. Культин Н.Б. Программирование в Turbo Pascal и Delphi / Н.Б. Культин - СПб.: BHV - Санкт-Петербург, 2018. – 156 с.
  19. Ляхович В.Ф. Руководство к решению задач по основам информатики и вычислительной техники / В.Ф. Ляхович - М.: Высшая школа, 2014. – 312 с.
  20. Марченко А.И. Программирование в среде Turbo Pascal 7.0 / А.И. Марченко - М.: Бином Универсал, 2018. – 75 с.
  21. Миков А.И. Информатика. Введение в компьютерные науки / А.И. Миков - Пермь: ПГУ, 2018. – 114 с.
  22. Могилев А.В. Информатика / А.В. Могилев - М.: Академия, 2018. – 94 с.
  23. Семакин И.Г. Информатика / И.Г. Семакин - М.: Лаборатория Базовых Знаний, 2018. – 98 с.