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

ОПИСАНИЕ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ

Содержание:

ВВЕДЕНИЕ

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

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

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

Данное исследование опирается на работы таких авторов, как Белов М.П.

( Основы алгоритмизации в информационных системах: Учеб. пособие.- СПб.: СЗТУ, 2003. ), Житкова О.А (Справочные материалы по программированию на языке Паскаль..-М.: Интеллект-Центр), Симоновича С.В. (Информатика. Базовый курс. 2-е издание. Под редакцией Симоновича. Издательство “Питер” 2004г), Орлов С. А. (Принципы построения языков программирования. Учебник. — Рига: TSI, 2012.), Керниган Б. В., Ричи Д. М. (Язык программирования С. 2-е изд. М.: Издательский дом «Вильямс», 2009.), Лоусон Б., Шарп Р. (Изучаем HTML5. Библиотека специалиста. — СПб.: Питер, 2011), Эккель Б. (Философия Java. 4-е изд. — СПб.: Питер, 2009.) и т.д. Данные работы соответствуют требованиям государственных образовательных стандартов высшего профессионального образования.

В первой главе были рассмотрены основы языков программирования и история их развития.

Во второй главе была рассмотрена классификация языков программирования.

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

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

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

Цель исследования:

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

Задачи исследования:

  1. Рассмотреть понятие язык программирования.
  2. Выявить классификацию современных языков программирования
  3. Изучить среды программирования
  4. Определить критерии выбора среды и языка программирования.

ГЛАВА 1

ОПИСАНИЕ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ

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

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

· алфавит допустимых символов и служебных (ключевых) слов;

· синтаксические правила построения из алфавита допустимых конструкций языка;

· семантику, объясняющую смысл и назначение конструкций языка [4].

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

    1. Паскаль

Паскаль назван в честь ученого Блеза Паскаля. Популярен как при изучении программирования, так и среди профессионалов. Создан в начале 70 – х годов швейцарским ученым Никлаусом Виртом. Язык изначально разрабатывался как учебный, сейчас является одним из основных языков обучения программированию в школах и вузах. Его качества оказались столь высоки, что им пользуются профессиональные программисты [5].

Не менее впечатляющей удачи, в том числе и финансовой, добился Филип Кан, разработавший систему Турбо-Паскаль. Его идея состояла в объединении последовательных этапов обработки программы – компиляция, редактирование связей, отладка и диагностика ошибок – в едином интерфейсе [20]. Турбо-Паскаль использовали практически все образовательные учреждения, программистские центры и частные фирмы. На базе языка были созданы несколько мощных языков (Модула, Ада, Дельфи) [26].

      1. Структура работы на языке Паскаль

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

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

Константы – величины, не меняющие своего значения во всем процессе написания программы [8].

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

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

Программы, написанные на Паскаль имеют структуру:

  • Объявления и соглашения
  • Тексты процедур и функций
  • Основной блок программы [26].

1.2 Си

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

1.2.1 Структура работы на языке Си

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

Тип «структура» в Си допускает рекурсию, то есть наличие в своём составе указателей, ссылающихся на объекты этой самой структуры. Таким образом, структуры в Си объединяют в себе функциональность не только кортежей и записей, но и алгебраических типов. Для лёгкого представления говорят, что структура — это класс, у которого все поля по умолчанию public [17].

1.3 Бейсик

Бейсик – Beginner’s All-purpose Sumbolic Instruction Code – универсальный символический код инструкций для начинающих. Данная програма хорошо себя зарекомендовала для обучения написания простих программ. И несмортря на большое количество плохо совместимых версиях – является популярной платформой для начинающих пользователей [7].

1.3.1 Структура работы на языке Бейсик

В языке Бейсик используются следующие символы:

  1. Буквы латинского алфавита.
  2. Буквы русского алфавита. Русские буквы используются только при записи символьных констант и в комментариях.
  3. Цифры от 0 до 9.
  4. Специальные символы: + - / ., ( ) = < > " % и другие.
  5. Ключевые слова
  6. Знаки арифметических операций
  7. Знаки отношения
  8. Знаки логических операций [18].

К первичным конструкциям языка относятся константы и идентификаторы. Константы различают арифметические и символьные. Арифметические константы бывают целыми и вещественными. Целая константа - целое десятичное число, которое может иметь знак плюс или минус и находится в диапазоне - 32768 .. + 32767 [6]. Вещественная константа - десятичное число, представленное в естественной форме (с фиксированной точкой) или в экспоненциальной форме (с плавающей точкой). В любом случае используется знак "точка". Символьная литерная константа - это цепочка допустимых символов, заключенная в верхние кавычки или апострофы. Идентификатор в Бейсике должен начинаться с латинской буквы, за которой следуют латинские буквы и цифры. Программа имеет строчную структуру. Для указания заголовка нет специальных операторов, для выделения раздела объявлений имен используется оператор комментария [4].

1.4 АДА

Данный язык прямой наследник языка Паскаль. Его предназначение заключается в создании и длительном сопровождении больших программных систем, допускающих возможность параллельной обработки, управления процесами в реальном времени и т. д, чего не возможно было бы достичь, используя более простые языки. Стоит отметить, что язык изначально разрабатывался для встраиваемых систем. Отсюда — неразвитость Ады по части GUI и СУБД [27]. В основном данный язык применяется для программной разработки в авионике, атомной энергетике и в других промышленных отраслях. Одним из главных требований к языку была надёжность его использования. Соответственно, это повлекло за собой строгие ограничения по структуре, типам, написанию и многому другому. Кроме того, почти все ошибки здесь улавливаются на этапе компиляции. Другим требованием была максимальная читаемость кода в распечатанном виде, что повлекло за собой тяжеловесность полученного языка и невысокую гибкостью [24].

1.4.1 Структура работы на языке АДА

У Ada – простой, понятный, легко читаемый синтаксис, который существенно снижает риск ситуаций, когда случайная опечатка приводит к тому, что код не становится формально неправильным, но существенно меняется его семантика.
Изначально, Ада — модульный язык программирования со строгой типизацией, унаследовавший синтаксис от Паскаль и Алгол. Язык регистронезависим [27]. Синтаксис — алголоподобный: все управляющие конструкции, начинающиеся на ключевое слово, заканчиваются ключевым словом и позволяют размещать внутри любое число операторов. Язык имеет развитую систему типов, как встроенных, так и порождаемых программистом. Есть множество способов создания новых типов, язык поддерживает два разных понятия: «подтип» и «производный тип». Переменные типа и подтипа совместимы, переменные типа и его производного типа — нет [17]. В процедурах и функциях поддерживаются входные и выходные параметры, передача параметров по имени, параметры со значениями по умолчанию Поддерживается переопределение процедур, функций и операторов — создание нескольких вариантов процедуры, функции или оператора с одним и тем же именем, но различными сигнатурами (типами и количеством параметров). программы — модульные, механизм контроля импорта-экспорта описаний между модулями включает две разные директивы: одну для подключения другого модуля, другую — для импорта его описаний [10].

1.5 С++

C++ был разработан шведским программистом по имени Бьярн Страуструп (Bjarne Stroustrup) в начале 1980-х. C++ имеет на вооружении несколько дополнительных команд и операторов, но основное отличие заключается в подходе к программированию. Основной причиной популярности С++ в настоящее время является его поддержка объектно-ориентированного программирования (ООП). ООП — это иной способ написания программ, помогающий программисту писать программы быстрее и с наименьшим числом ошибок. ООП также позволяет повысить скорость обслуживания. Данный язык является «потомком» языка Си, однако имеет ряд значительных различий [2].

1.5.1 Структура работы на языке С++

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

Структуры полезны, когда надо объединить несколько переменных с разными типами под одним именем. Это делает программу более компактной и более гибкой для внесения изменений. Также структуры незаменимы, когда необходимо сгруппировать некоторые данные, например, запись из базы данных или контакт из книги адресов [17].

1.5.2 Различия в структурах языков Си и С++

  • В C++ появились классы и объекты. Технически класс C++ – это тип структуры в C, а объект – переменная такого типа. Разница только в том, что в C++ есть еще модификаторы доступа и полями могут быть не только данные, но и функции;
  • То, что в C++ – наследование, в C – это просто структура в структуре;
  • В C++ появились две новые операции: new и delete. При вызове new автоматически вызывается конструктор, а при вызове delete – деструктор. Нововведение можно описать формулой: new = malloc + конструктор, delete = free + деструктор [3];
  • В C++ появились функции, которые вызываются автоматически после создания переменной структуры (конструкторы) и перед ее уничтожением (деструкторы). Во всех остальных отношениях это – обычные функции, на которые наложен ряд ограничений. Некоторые из этих ограничений ничем не оправданы и мешают;
  • Разработчики C++ ввели слово var. А чтобы все это выглядел оригинально, “var” они переименовали в “&” и назвали “ссылкой”. Это вызвало большую путаницу, так как в C уже были понятия “указатель” и “адрес” (обозначался тем же символом &), а понятие “ссылка” звучит тоже как что-то указующе-адресующее;
  • Желание программистов C контролировать типы параметров в define-ах породило в C++ inline-функции. Такая функция – это обычный define с параметрами, только не надо мучиться с символами “\” и проверяются типы. Желание узаконить в параметрах define имя типа породило template. Главный плюс template – то, что #define с одинаковыми параметрами породит два одинаковых куска кода. А template в компиляторе скорее всего будет соптимизирован: одинаковые куски кода будут соединены в один [18];
  • Разные стандартные расширения файлов. file.c – означает файл написан на языке С, а file.cpp – означает что файл написан на языке С++;
  • В С++ ключевое слово void является факультативным. Многие программисты на С++ включают void в качестве средства, улучшающего читаемость программы и указывающего, что у функции нет параметров;
  • В С++ все функции должны иметь прототипы. В С это требование является факультативным;
  • В С символьная константа автоматически повышается до целого числа. В С++ это не так;
  • В С объявление глобальной переменной несколько раз не является ошибкой, хотя и не служит признаком хорошего программирования. В С++ это является ошибкой;
  • В С идентификатор имеет по крайней мере 31 значащий символ. В С++ все символы рассматриваются как значащие;
  • В С можно вызвать функцию main() из программы, хотя это и нетипично. В С++ это недопустимо;
  • В С нельзя взять адрес регистровой переменной. В С++ можно это сделать [3].

1.6 Дельфи

Дельфи ( Delphi) – язык объективно – ориентированного «визуального» программирования. Данный язык создан на базе языка Паскаль, однако обладая мощностью и гибкостью языком Си и Си++, превосходит их по удобству и доступности интерфейса при разработке ряда приложений, которые обеспечивают взаимодействие с базами и пподдержку разного рода работ в рамках корпоративних сетей и сети Интернет [18].

1.6.1 Структура работы на языке Дельфи

В Delphi формальное начало любой программы четко отличается от других участков кода и должно располагаться в определённом, единственном в рамках проекта, исходном файле с расширением dpr (тогда как другие файлы исходных текстов программы имеют расширение pas). В Delphi идентификаторы типов, переменных, а равно и ключевые слова читаются независимо от регистра. В Delphi в исходных файлах .pas (которые, как правило, и содержат основное тело программы) на уровне языковых средств введено строгое разделение на интерфейсный раздел и раздел реализации. В интерфейсной части содержатся лишь объявления типов и методов, тогда как код реализации в интерфейсной части не допускается на уровне компиляции [17].

1.7 Ява

Ява (Java) – платформенно-независимый язык объектно – ориентированного программирования, очень эффективен при разработке интерактивных веб-страниц. Данный язык был разработан на основе языка Си++. Суть его заключалась в отмене всех низкоуровневых возможностей при разработке приложений на основе Си++ [15].

1.7.1 Структура работы на языке Java

Язык Java настолько объектно-ориентированный насколько возможно. Не считая импортов и указания имен пакетов, весь рабочий код находится внутри классов. При этом, за редким исключением, каждый класс должен описываться в отдельном файле, имя файла должно совпадать с именем класса. Один из классов обязательно должен содержать метод-функцию main(), которая является точкой входа в java-программу. В случае однофайловой программы, метод main() должен быть в этом единственном файле [16].

Синтаксис языка Java похож на синтаксис других си-подобных языков. Вот его некоторые особенности:

  • чувствительность к регистру — идентификаторы User и user в Java представляют собой разные сущности;
  • для именования методов используется lowerCamelCase. Если название метода состоит из одного слова, оно должно начинаться со строчной буквы. Пример: firstMethodName();
  • для именования классов используется UpperCamelCase. Если название состоит из одного слова, оно должно начинаться с прописной буквы. Пример: FirstClassName.
  • название файлов программы должно точно совпадать с названием класса с учётом чувствительности к регистру. Например, если класс называется FirstClassName, файл должен называться FirstClassName.java;
  • идентификаторы всегда начинаются с буквы (A-Z, a-z), знака $ или нижнего подчёркивания [25].

1.8 С#

Так же является объектно – ориентированным языком программирования. Он относится к С-подобным семьям языка. Наиболее он близок по синтаксису языкам С++ и Java. Его автором является Андерс Хейлсберг и группа инженеров. Разработка происходила в компании Microsoft. Его разрабатывали для платформы Microsoft.NET Framework. Однако в дальнейшем был унифицирован как ECMA-334 и ISO/IES 23270. Данный язык является популярным в среде разработчиков, работающих на платформах [2].

Microsoft.NET Framework. Популярность его вызвана понятным синтаксисом, который происходит от синтаксиса С/С++, но упрощает некоторые вещи. C# является объектно-ориентированным и поддерживает полиморфизм, наследование, перегрузку операторов, статическую типизацию. Объектно-ориентированный подход позволяет решить задачи по построению крупных, но в тоже время гибких, масштабируемых и расширяемых приложений [14].

1.8.1 Структура работы на языке С#

C# является языком с Си-подобным синтаксисом и близок в этом отношении к C++ и Java, но поддерживает также и компонентно-ориентирванное программирование. 

  • Структура программы - организационная структура C# основывается на таких понятиях, как программыпространства имен, типы, члены, и сборки;
  • Типы и переменные – получение дополнительных сведений о типах значенийссылочных типах и переменных в языке C#;
  • Выражения - создаются из операндов и операторов. Выражения возвращают значения.
  • Операторы - используются инструкции для описания действий, выполняемых программой [6].
  • Классы и объекты - классы являются самым важным типом в языке C#. Объекты представляют собой экземпляры классов. Классы создаются описанием их членов, которые также описаны в этой статье.
  • Структуры - это сущности для хранения данных. От классов они отличаются в первую очередь тем, что являются типами значений.
  • Массивы - это структура данных, содержащая несколько переменных, доступ к которым осуществляется по вычисляемым индексам.
  • Интерфейсы - определяет контракт, который может быть реализован классами и структурами. Интерфейс может содержать методы, свойства, события и индексаторы. Интерфейс не предоставляет реализацию членов, которые в нем определены. Он лишь перечисляет члены, которые должны быть определены в классах или структурах, реализующих этот интерфейс [9].
  • Делегаты - представляет ссылки на методы с конкретным списком параметров и типом возвращаемого значения. Делегаты позволяют использовать методы как сущности, сохраняя их в переменные и передавая в качестве параметров. Принцип работы делегатов близок к указателям функций из некоторых языков, но в отличие от указателей функций делегаты являются объектно-ориентированными и строго типизированными.
  • Атрибуты-  позволяют программам указывать дополнительные описательные данные о типах, членах и других сущностях [10].

1.9 Оберон (Oberon)

Является языком общего назначения. Его авторы Никлаус Вирт. Ему принадлежит авторство Pascal и Modula–2. Язык имеет долгую историю создания, является наследником Algol, Pasca, Modula. Н.Вирту удалось добиться точного синтеза старых достижений структурного и модульного программирования с новыми объектными методами. Наращивание мощи языка без его усложнения – принцип, которому неуклонно следует Н.Вирт [28].

1.9.1 Структура работы на языке Оберон

Главная особенность Оберона — это очень простой и компактный язык, развивающий возможности Паскаля (1970) и Modula-2 (1979) и реализующий основные идеи современного программирования: процедуры, модули, абстрактные типы данных, ООП, компоненты. Реализован для основных платформ (Windows, Linux, DOS, Mac OS, Mac OS X, .NET, Java) и процессоров (x86/Pentium, Power, PowerPC, StrongARM, Motorola, NS32xxx, SPARC, PA-RISC, Amiga) [14].

Основными вехами данного языка являются:

  1. процедурные типы (процедура как тип, коммутация функций);
  2. модули (единица компиляции и загрузки, основа построения компонентов);
  3. расширение комбинированного типа (расширяемые записи, альтернатива ООП и основа динамической эволюции систем) [6].

1.10 HTML (HyperText Markup Language)

Представляет собой набор символов разметки или кодов, вставленных в файл, предназначенный для написания гипертекстовых документов на странице Web-браузера. Разметка сообщает веб-браузеру, как отображать слова и изображения на веб-странице для пользователя. Каждый индивидуальный код разметки упоминается как элемент. HTML позволяет выделить в тексте отдельные логические части (заголовки, абзацы, списки и т.д.), поместить на Web-страницу подготовленную фотографию или картинку, организовать на странице ссылки для связи с другими документами. Гипертекстовый документ — это текстовый файл, имеющий специальные метки, называемые тегами, которые впоследствии опознаются браузером и используются им для отображения содержимого файла па экране компьютера [13]. Но основным преимуществом гипертекста перед обычным текстом является возможность добавления к содержимому документа гиперссылок — специальных конструкций языка HTML, которые позволяют мгновенно перейти к просмотру другого документа. HTML не является языком программирования, но web-страницы могут включать в себя встроенные программы-скрипты на языках Javascript и Visual Basic Script и программы-апплеты на языке Java [11]. Язык HTML разработан британским учёным Тимом Бернерсом -Ли приблизительно в  1986—1991 годах в стенах ЦЕРНа в Женеве в Швейцарии. HTML создавался как язык для обмена научной и технической документацией, пригодный для использования людьми, не являющимися специалистами в области вёрстки. HTML успешно справлялся с проблемой сложности SGML путём определения небольшого набора структурных и семантических элементов — дескрипторов. Дескрипторы также часто называют «тегами». С помощью HTML можно легко создать относительно простой, но красиво оформленный документ [18].

Помимо упрощения структуры документа, в HTML внесена поддержка гипертекста. Мультимедийные возможности были добавлены позже. Изначально язык HTML был задуман и создан как средство структурирования и форматирования документов без их привязки к средствам воспроизведения (отображения). В идеале, текст с разметкой HTML должен был без стилистических и структурных искажений воспроизводиться на оборудовании с различной технической оснащённостью (цветной экран современного компьютера предназначен для создания в документах таблиц, но часто используется и для оформления размещения элементов на странице. С течением времени основная идея платформо - независимости языка HTML была принесена в жертву современным потребностям в мультимедийном и графическом оформлении [13].

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

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

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

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

ГЛАВА 2

ОБЩАЯ КЛАССИФИКАЦИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ

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

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

2.1 Процедурные языки

Процедурные языки являются языками высокого уровня, в которых используется метод разбиения программ на отдельные связанные между собой модули – подпрограммы (процедуры и функции). Компоненты языка состоят из последовательности операторов, которые используют библиотечные процедуры и функции. Первым процедурным языком был Fortran, затем появился Cobol, Algol, Pascal, C, Ada [19].

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

Низкоуровневые языки предназначены для создания машинных команд для процессоров. Такие языки как: Assembler и CIL.

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

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

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

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

Список языков программирования высокоуровневых: C, C#, "Фортран", "Паскаль", Java - входит в число самых используемых высокоуровневых синтаксисов [22].

    1. Непроцедурные языки

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

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

Табличные методы легко осваиваются специалистами любых профессий [18].

2.2.1 Объектно-ориентированные языки

Объектно-ориентированные языки стали дальнейшим уровнем развития процедурных языков, основной концепцией которых есть совокупность программных объектов. Написание программы на языке представляется в виде последовательности создания экземпляров объектов и использование их методов. К ним относятся из первых языков Simula и SmallTalk, далее C++, Java [21].

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

В декларативном программировании задается спецификация решения задачи, то есть дается описание того, что представляет собой проблема и какой ожидается результат. Программы, созданные с помощью декларативного языка, не содержат переменные и операторы присваивания. К декларативным языкам можно отнести SQL и HTML. К подвидам декларативного программирования относится функциональное и логическое программирование [17].

      1. Функциональные языки программирования

Функциональные языки являются языками искусственного интеллекта. Программа, написанная на функциональном языке, состоит из последовательности функций и выражений, которые необходимо вычислить. Основной структурой данных является связный список. Функциональное программирование принципиально отличается от процедурного. Основными функциональными языками являются Lisp, Miranda, Haskel [18]. Логические языки программирования Языки, ориентированные на решение задач без описания алгоритмов, языки искусственного интеллекта. Представителем логического программирования является Prolog, которым написано большинство экспертных систем [23].

      1. Языки сценариев (скрипты)

Языки относятся к объектно-ориентированным языкам, используются для написания программ, которые исполняются в определенной программной среде. Тексты программ, написанные на языке сценариев, можно включать в тело Html-документа [20]. Первыми скриптами были Perl и Python, которые изначально были разработаны для операционной системы Unix, а уже в дальнейшем появились версии языков для операционных систем Windows и Macintosh. Для написания программ на языке сценариев необходимо знание процедур и функций системных библиотек [9].

      1. Языки, ориентированные на данные

Языки ориентированы на работу с одним определенным типом данных. Например, APL работает с матрицами и векторами, Snobol обрабатывает строки, SETL выполняет операции над множествами. Особое развитие получили языки для работы с базами данных: 3GL, PL/SQL, FoxPro [1].

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

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

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

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

ГЛАВА 3

ОПРЕДЕЛЕНИЕ КРИТЕРИЯ ВЫБОРА СРЕДЫ И ЯЗЫКА ПРОГРАММИРОВАНИЯ

3.1 Среды программирования

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

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

Наиболее востребованными средами являются Microsoft Visual C++, Visual BASIC, Delphi и Java Development Kit. Они предлагают легкий способ создания графических интерфейсов [19].

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

3.2 Компилируемые и интерпретируемые языки

Компилируемыми языками принято считать такие языки, как С, С++, Pascal и Ada. Написанные на данных языках программы транслируются в машинный код данного компьютера перед началом выполнения. Программная интерпретация при этом ограничивается только интерпретацией набора программ поддержки выполнения, которые моделируют элементарные операции исходного языка, не имеющие близкого аналога в машинном языке. Транслятор компилируемого языка является той программой, при которой основное значение имеет создание максимально эффективных исполняемых программ [1].

Реализация интерпретируемых языков происходит за счет использования программного интерпретатора. Таковыми языками являются LISP, ML, Perl, Postscript, Prolog, Smalltalk. Транслятор, в отличии от компилятора, выдает не машинный код используемого компьютера, а промежуточную форму программы. Она легча для выполнения, нежели исходная программа и отличается от машинного кода как такового. В связи с тем, что выполнение программы занимает продолжительное время, вызванное использованием программного интерпретатора, трансляторы интерпретируемых языков, как правило, представляют собой довольно простые программы [20].

Развитие Всемирной паутины WWW и появление языка Java внесли изменения в ранее построенную схему. Java имеет больше сходства с Pascal и С++, нежели с LISP, однако в большинстве случаев используется как интерпретируемый язык. Компилятор Java вырабатывает промежуточный набор байт-кодов для виртуальной машины Java. Передача байт-кодов на локальный компьютер выгоднее в отношении временных затрат, чем передача результатов выполнения программы на web-сервере. Однако web-сервер не в состоянии предугадать машинную архитектуру хост –компьютера. Поэтому браузер создает виртуальную машину Java, которая выполняет набор байт – кодов Java [29].

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

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

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

ЗАКЛЮЧЕНИЕ

На основании проведенного теоретического исследования были рассмотрены различные языки программирования. Наиболее распространенные, такие как: Паскаль, Бейсик, Ада, языки Си, С++, С#, Ява и так далее, представляются на данном этапе наиболее интересными, так как используется для научных вычислений, для обучения программированию начинающих программистов и так далее.

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

Современные языки программирования обеспечивают огромные преимущества по сравнению с предшествующими языками. Они более структурированы и предоставляют интегрированную среду разработки. В 1970-х самым популярным языком общего применения был Pascal, но в 1980-х его применение резко сократилось. Язык C, разработанный компанией Bell Laboratories, является очень эффективным, но низкоуровневым языком программирования. Язык C — это основа современных языков. Самым большим преимуществом языка C++ над его предшественником является поддержка объектно-ориентированного программирования.

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

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

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

БИБЛИОГРАФИЯ

  1. Ахо А. В., Лам М. С., Сети Р., Ульман Д. Д. Компиляторы. Принципы, технологии, инструментарий, 2-е изд. — М.: Издательский дом «Вильямс», 2008. — 1184 с.
  2. Белов М.П. Основы алгоритмизации в информационных системах: Учеб. пособие.- СПб.: СЗТУ, 2003. – 85с.
  3. Бен-Ари М. Языки программирования. Практический сравнительный анализ. —М.: Мир, 2000. — 366 с.
  4. Ефимова О., Морозов В., Угринович Н. Курс компьютерной технологии с основами информатики. Учебное пособие для старших классов. - М.: ООО "Издательство АСТ"; АВF, 2000
  5. Житкова О.А., Кудрявцева Е.К. Справочные материалы по программированию на языке Паскаль..-М.: Интеллект-Центр, 2001 г.
  6. Задачник-практикум по информатике. В 2-х томах/Под ред. И.Семакина, Е.Хеннера. - М.: Лаборатория Базовых Знаний, 2001г.
  7. Информатика под редакцией Е.К. Хеннера, М.,Академия,2004г
  8. Информатика. Базовый курс под ред. С. В. Симоновича, С.-П «Питер» 2005г.
  9. Информатика. Базовый курс. 2-е издание. Под редакцией Симоновича. Издательство “Питер” 2004г.
  10. Каймин, В. А. Информатика : учебник / В.А. Каймин. – М. :

Проспект, 2011. – 272 с.

  1. Керниган Б. В., Ричи Д. М. Язык программирования С. 2-е изд. М.: Издательский дом «Вильямс», 2009. — 304 с.
  2. Либерти Джесс. Освой самостоятельно С++ за 21 день.- М.: Издатель-ский Дом "Вильямс", 2001. - 814 с.
  3. Лоусон Б., Шарп Р. Изучаем HTML5. Библиотека специалиста. — СПб.: Питер, 2011. — 272 с.
  4. Ляхович В.Ф. Основы информатики / В.Ф. Ляхович. – Ростов н/Д. :

«Феникс», 2000. – 608с.

  1. Методы программирования. Компьютерные вычисления / А. В. Могилев, Л. В. Листрова. — СПб.: БХВ-Петербург, 2008. 320 с.: ил. — (ИиИКТ)
  2. Николаев В.И.,Чалов Д.В., Сибирев В.Н. Информатика. Теоретические основы:Учеб. Пособие. – СПб.: СЗТУ, 2002. - 73с.
  3. Орлов С. А. Принципы языков программирования: Опорный конспект лекций. 5-е изд., дополнен. — Рига: TSI, 2008. — 108 с.
  4. Орлов С. А. Принципы построения языков программирования. Учебник. — Рига: TSI, 2012. — 362 с.
  5. Основы алгоритмизации и программирования: Метод. указ. / Сост.: И.П. Рак, А.В. Терехов, А.В. Селезнев. Тамбов: Изд-во Тамб. гос. техн. ун-та, 2004. 24 с.
  6. Основы алгоритмизации и программирования: учеб. пособие /

Т.А. Жданова, Ю.С. Бузыкова. – Хабаровск : Изд-во Тихоокеан. гос.ун-та, 2011. – 56 с.

  1. Основы алгоритмизации и программирования : учебное пособие /

Г. Р. Кадырова. – Ульяновск : УлГТУ, 2014. – 95 с.

  1. Павловская Т.А. С/С++: Программирование на языке высокого уровня. Учебник. - СПб.: Питер ,2001. - 460 с.
  2. Программирование и основы алгоритмизации: Для инженерных специальностей технических университетов и вузов. /А.Г. Аузяк, Ю.А. Богомолов, А.И. Маликов, Б.А. Старостин. Казань: Изд-во Казанского национального исследовательского технического ун-та - КАИ, 2013, 153 с.
  3. Хейлсберг А., Торгерсен М., Вилтамут С., Голд П. Язык программирования C#.СПб.: Питер, 2012. — 784 с.
  4. Эккель Б. Философия Java. 4-е изд. — СПб.: Питер, 2009. — 640 с.
  5. https://1001student.ru/matematika/paskal-osnovy-programmirovaniya.html
  6. https://web.archive.org/web/20161027211855/http://www.mediascan.by/index.files/2016-09-08_Quentin_Ochem.pdf
  7. http://www.coders-library.ru/ (дата обращения 17.02.2020)
  8. http://vbbook.ru/ (дата обращения 17.02.2020)
  9. http://www.intuit.ru/ – дистанционное обучение в Национальном

Открытом Университете «ИНТУИТ» (дата обращения 17.02.2020)