Файл: Основы алгоритмизации и программирования: классификация языков программирования. Критерии выбора среды и языка разработки программ.pdf
Добавлен: 23.04.2023
Просмотров: 255
Скачиваний: 1
СОДЕРЖАНИЕ
1. ИСТОРИЯ РАЗВИТИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ
2. ОСНОВНЫЕ СОВРЕМЕННЫЕ ЯЗЫКИ ПРОГРАММИРОВАНИЯ
2.1. Основные парадигмы современного программирования
2.2. Объектно-ориентированные языки программирования
2.3. Процедурные языки программирования
3. КРИТЕРИИ ВЫБОРА СРЕДЫ И ЯЗЫКА РАЗРАБОТКИ ПРОГРАММ
3.1. Рейтинг TIOBE для языков программирования
3.2. Критерии выбора языка программирования для разработки комплекса программных решений
ВВЕДЕНИЕ
Язык программирования - формальная знаковая система, предназначенная для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, задающих внешний вид программы и действия, которые выполнит исполнитель (компьютер) под ее управлением [1].
Со времени создания первых программируемых машин человечество придумало уже более восьми с половиной тысяч языков программирования. Ежегодно их число пополняется новыми. Некоторыми языками умеет пользоваться только небольшое число их собственных разработчиков, другие становятся известны миллионам людей. Профессиональные программисты иногда применяют в своей работе более десятка различных языков программирования.
Создатели языков по-разному толкуют понятие языка программирования. К наиболее распространенным утверждениям, признанных большинством разработчиков, относятся следующие [1]:
Функция: язык программирования предназначена для написания компьютерных программ, которые применяются для передачи компьютеру инструкций по выполнению того или иного вычислительного процесса и организации управления отдельными устройствами.
Задача: язык программирования отличается от естественных языков тем, что предназначена для передачи команд и данных от человека к компьютеру, в то время, как естественные языки используются для общения людей между собой. В принципе, можно обобщить определение "языков программирования» - это способ передачи команд, приказов, четкого руководства к действию, тогда как человеческие языки служат также для обмена информацией [1].
Исполнение: язык программирования может использовать специальные конструкции для определения и манипулирования структурами данных и управления процессом вычислений.
Все популярные языки можно разделить на универсальные и специализированные. Универсальные языки используются для решения различных задач. Специализированные языки предназначены для решения задач одного, максимум нескольких видов задач. Например, работы с базами данных, web-программирования или написания скриптов для администрирования операционных систем.
Виды специализированных языков [2]:
- языки для работы с базами данных (семейство языков SQL);
- языки для web-программирования (Perl, VBScript, JavaScript, JScript ) :
- языки для математических расчетов.
- языки для автоматизации работы определенных программных продуктов (VBA в Microsoft Office).
К универсальным языкам можно отнести языка Visual C ++, Visual C ++. Net, Visual C # .Net, Visual J # .Net, Java, Delphi, Python, Ruby.
Специализированные языки, чаще всего используются для написания не очень больших программ, поэтому они оптимизированы на быстрое написание программ и уменьшение размера исходного кода, и в меньшей степени на уменьшение ошибок, использование объектно-ориентированного программирования и разделения кода на модули. А универсальные языки, как правило, используются для создания больших и очень больших проектов, поэтому в них все сделано, чтобы уменьшить количество ошибок и облегчить проектирование программ.
В данной курсовой работе рассматриваются критерии оценки языков программирования, на которые стоит обратить внимание в ходе проектирования сложных программных систем или их частей.
1. ИСТОРИЯ РАЗВИТИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ
Обратимся к истокам развития вычислительной техники. Вспомним первые компьютеры и программы для них. Это была эра программирования непосредственно в машинных кодах, а основным носителем информации были перфокарты и перфоленты. Программисты обязаны были знать архитектуру машины досконально. Программы были достаточно простыми, что обусловлено, во-первых, весьма ограниченными возможностями этих машин, и, во-вторых, большой сложностью разработки и, главное, отладки программ непосредственно на машинном языке. Вместе с тем такой способ разработки давал программисту просто невероятную власть над системой. Становилось возможным использование таких хитроумных алгоритмов и способов организации программ, что и не снились современным разработчикам. Например, могла применяться (и применялась!). Такая возможность, как самомодифицирующихся код. Знание двоичного представления команд позволяло иногда не хранить некоторые данные отдельно, а встраивать их в код как команды [1]. И это далеко не полный список приемов, владение хотя бы одним из которых сейчас сразу же продвигает вас до уровня «гуру» экстра-класса [1].
Первым значительным шагом представляется переход к языку ассемблера [1]. здесь впервые в истории развития программирования появились два представления программы: в исходных текстах и в откомпилированном виде. Сначала, пока ассемблеры только транслировали мнемоники в машинные коды, одно легко переводилось в другое и обратно, но потом, по мере появления таких возможностей, как метки и макросы, дизассемблирование становилось все более и более трудным делом. К концу ассемблерной эры возможность автоматической трансляции в обе стороны была утеряна окончательно. В связи с этим был разработан большой количество специальных программ-дизассемблеров, осуществляют обратное преобразование, однако в большинстве случаев они с трудом могут разделить код и данные. Кроме того, вся логическая информация (имена переменных, меток и т.п.) теряется безвозвратно.
В 1954 году в недрах корпорации IBM группой разработчиков во главе с Джоном Бекусом был создан язык программирования Fortran. Значение этого события трудно переоценить. Это первый язык программирования высокого уровня. Впервые программист мог по-настоящему абстрагироваться от особенностей машинной архитектуры. Ключевой идеей, что отличает новый язык от ассемблера, была концепция подпрограмм. Напомним, что это современные компьютеры поддерживают подпрограммы на аппаратном уровне, предоставляя соответствующие команды и структуры данных (стек) прямо на уровне ассемблера, в 1954 же году это было совершенно не так. Поэтому компиляция Fortranа была процессом отнюдь не тривиальным. Кроме того, синтаксическая структура языка была достаточно сложна для машинной обработки в первую очередь потому, что пробелы как синтаксические единицы вообще не использовались. Это порождало массу возможностей для скрытых ошибок [1].
В 1960 году был создан язык программирования Cobol. Он задумывался как язык для создания коммерческих приложений, и он стал таким. На Коболе написаны тысячи прикладных коммерческих систем. Отличительной особенностью языка является возможность эффективной работы с большими массивами данных, что характерно именно коммерческих приложений. Популярность Кобола столь высока, что даже сейчас, при всех его недостатках (по структуре и замыслу Кобол во многом напоминает Фортран) появляются новые его диалекты и реализации. Так недавно появилась реализация Кобола, совместимая с Microsoft. NET [2].
В 1964 году все та же корпорация IBM создала язык PL / 1, который был призван заменить Cobol и Fortran в большинстве приложений [1]. Язык обладал исключительным богатством синтаксических конструкций. В нем впервые появилась обработка исключительных ситуаций и поддержка параллелизма. Надо заметить, что синтаксическая структура языка была крайне сложной. Пробелы уже использовались как синтаксические разделители, но ключевые слова не были зарезервированы.
В 1963 году был создан язык программирования BASIC (Beginners 'All-Purpose Symbolic Instruction Code - многоцелевой речь символических инструкций для начинающих). Язык задумывался в первую очередь как средство обучения и как первый изучаемый язык программирования. Он предполагался легко интерпретируется и компиляции. Надо сказать, что BASIC действительно стал языком, на котором учатся программировать (по крайней мере, так было еще несколько лет назад; сейчас эта роль отходит к Pascal). Было создано несколько мощных реализаций BASIC, поддерживающих самые современные концепции программирования (ярчайший пример - Microsoft Visual Basic) [2].
В 1970 году Никлаусом Виртом был создал язык программирования Pascal. Язык замечателен тем, что это первый широко распространенный язык для структурного программирования (Первым, строго говоря, был Алгол, но он не получил такого широкого распространения). Впервые оператор безусловного перехода перестал играть основную роль при управлении порядком выполнения операторов [1].
В этом языке также внедрена строгая проверка типов, что позволило выявлять многие ошибки на этапе компиляции.
Отрицательной чертой языка было отсутствие там средств для разбиения программы на модули. Вирт осознавал это и разработал язык Modula-2 (1978), в котором идея модуля стала одной из ключевых концепций языка. В 1988 году появилась Modula-3, в которую были добавлены объектно-ориентированные черты. Логическим продолжением Pascal и Modula является язык Oberon и Oberon-2. Они характеризуются движением в сторону объектно-и компонентно-ориентированности [1].
В 1972 году Керниганом и Ритчи был создан язык программирования C. Он создавался как язык для разработки операционной системы UNIX. C часто называют «переносимым ассемблером», имея в виду то, что он позволяет работать с данными практически так же эффективно, как на ассемблере, предоставляя при этом структурированные управляющие конструкции и абстракции высокого уровня (Структуры и массивы). Именно с этим связана его огромная популярность и поныне. И именно это является его ахиллесовой пятой. Компилятор C очень слабо контролирует типы, поэтому очень легко написать внешне совершенно правильную, но логически ошибочную программу [2].
В 1986 году Бьярн Страуструп создал первую версию языка C +, добавив в язык C объектно-ориентированные черты, взятые из Simula (см. Ниже), и исправив некоторые ошибки и неудачные решения языка. C + + продолжает совершенствоваться и в настоящее время. Язык стал основой для разработки современных больших и сложных проектов. У него есть, однако же, и слабые стороны, вытекающие из требований эффективности [2].
В 1995 году в корпорации Sun Microsystems Кеном Арнольдом и Джеймсом Гослингом был создан язык Java. Он унаследовал синтаксис C и C + и был избавлен от некоторых неприятных черт последнего. Отличительной особенностью языка является компиляция в код некоей абстрактной машины, для которой затем пишется эмулятор (Java Virtual Machine) для реальных систем. Кроме того, в Java нет указателей и множественного наследования, что сильно повышает надежность программирования [2].
В 1999-2000 годах в корпорации Microsoft был создан язык C #. Он в достаточной степени схож с Java (И задумывался как альтернатива последнему), но имеет и отличительные особенности. Ориентирован, в основном, на разработку многокомпонентных Интернет-приложений.
В 1962 году появился речь Snobol (а в 1974 - его преемник Icon), предназначенный для обработки строк. Синтаксис Icon напоминает С и Pascal одновременно. Отличие заключается в наличии мощных встроенных функций работы со строками и связанная с этими функциями особая семантика. Современным аналогом Icon и Snobol является Perl - язык обработки строк и текстов, в который добавлены некоторые объектно-ориентированные возможности. Считается очень практичным языком, однако ему не хватает элегантности [1].
В 1969 году был создан язык SETL - язык для описания операций над множествами. Основной структурой данных в языке есть множество, а операции аналогичны математических операций над множествами. Полезен при написании программ, имеющих дело со сложными абстрактными объектами [1].
В 1958 году появился речь Lisp - язык для обработки списков. Получил достаточно широкое распространение в системах искусственного интеллекта. Имеет несколько потомков: Planner (1967), Scheme (1975), Common Lisp (1984). Многие его черты были унаследованы современными языками функционального программирования.
В последнее время в связи развитием Интернет-технологий, широким распространением высокопроизводительных компьютеров и рядом других факторов получили распространение так называемые скриптовые языки. Эти языки изначально ориентировались на использование в качестве внутренних управляющих языков во всякого рода сложных системах. Многие из них, однако же, вышли за пределы сферы своего первоначального применения и используются в настоящее время в совершенно других областях. Характерными особенностями данных языков является, во-первых, их интерпретируемость (компиляция либо невозможна, либо нежелательна), во-вторых, простота синтаксиса, а в-третьих, легкая расширяемость. Таким образом, они идеально подходят для использования в часто меняющихся программах, очень небольших программах или в случаях, когда для выполнения операторов языка затрачивается время, несравнимое со временем их разбора [2].
Язык JavaScript был создан в компании Netscape Communications в качестве языка для описания сложного поведения веб-страниц. Первоначально назывался LiveScript, причиной изменения названия получили маркетинговые соображения. Интерпретируется браузером при отображении веб-страницы. По синтаксиса схож с Java и (отдаленно) с C / C +. Имеет возможность использовать встроенную в браузер объектную функциональность, однако действительно объектно-ориентированным языком не является [2].
Язык VBScript был создан в корпорации Microsoft во многом в качестве альтернативы JavaScript. Имеет похожую область применения. Синтаксически схож с языком Visual Basic (и есть усеченной версии последнего). Так же, как и JacaScript, исполняется браузером при отображении веб-страниц и имеет ту же степень объектно-ориентированности [2].