Файл: Классификация языков программирования Критерии выбора среды и языка программирования.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 21.05.2023

Просмотров: 259

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

ВВЕДЕНИЕ

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

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

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

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

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

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

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

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

Глава 1. Языки программирования. История возникновения и классификация

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

Обратимся к истокам развития вычислительной техники. Вспомним самые первые компьютеры и программы для них. Это была эра программирования непосредственно в машинных кодах, а основным носителем информации были перфокарты и перфоленты. Программисты обязаны были знать архитектуру машины досконально. Программы были достаточно простыми, что обуславливалось, во-первых, весьма ограниченными возможностями этих машин, и, во-вторых, большой сложностью разработки и, главное, отладки программ непосредственно на машинном языке. Вместе с тем такой способ разработки давал программисту просто невероятную власть над системой. Становилось возможным использование таких хитроумных алгоритмов и способов организации программ, какие и не снились современным разработчикам. Например, могла применяться такая возможность, как самомодифицирующийся код. Знание двоичного представления команд позволяло иногда не хранить некоторые данные отдельно, а встраивать их в код как команды. Но, все же, эти процедуры были очень трудоемкими, к тому же, программы на машинном языке являлись машинно-зависимыми, т.е. для каждой ЭВМ необходимо было составлять свою программу. Программа получалась громоздкой, труднообозримой, ее трудно было отлаживать, изменять и развивать. Для того чтобы представить, насколько это было сложно, приведу фрагмент (примерно одну десятую часть) программы, которая выводит на экран приветствие «Hello, world!»:


457f464c010100010000000000000000000200030001000003d00800003400000698

00000000000000340020000500280016001300060000003400000034080000000000

00а0000000а0000000050000000400000003000000d4000000d40800000000000013

00000013000000040000000100000001000000000000000008000000000004f500000

4f5000000050000100000000001000004f8000014f808000000000000c4000000c8000

0000600001000000000020000052c0000152c0800000000000090000000900000000

60000000400006c2f62696c2f2d64696c756e2e786f73312e000000110000001100000 0000000000e0000000a000000000000...

В 40-х годах XX века началась разработка языков программирования, которые по своей лексике были бы максимально приближены к естественному языку человека. Язык программирования — это способ записи программ решения различных задач на ЭВМ в понятной для компьютера форме[1]. Такие языки программирования получили название «алгоритмические».

Промежуточным шагом к разработке алгоритмических языков стал язык Assembler. В Ассемблере команды представляются не двоичными числами, а в виде сочетаний символов (мнемоническими кодами), по которым можно воспроизвести смысл команды, что значительно устраняет трудности и недостатки программирования на машинном языке. Программы, составленные на языке Ассемблер, не могут быть непосредственно выполнены на компьютере. Чтобы такая программа заработала, ее текст нужно преобразовать в машинные коды. Для этого существуют специальные программы-переводчики (трансляторы). Различают 2 вида трансляторов: компилятор и интерпретатор. Компилятор транслирует программу сразу целиком, и лишь после этого возможно ее выполнение. Интерпретатор - это более простой транслятор, он последовательно транслирует операторы программы и так же по частям ее выполняет.

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

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


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

Прообразом современных языков высокого уровня является Планкалкюль – язык, созданный в 1945 году талантливым немецким инженером Конрадом Цузе. Однако Планкалкюль так и не был реализован. Часто в связи с разговором о первых языках программирования, упоминают ряд проектов, осуществленных Грейс Хоппер в 1950-е годы. Но первыми по-настоящему распространенными языками стали Фортран, Кобол и Алгол.[3]

В 1954 году в недрах корпорации IBM группой разработчиков во главе с Джоном Бэкусом был создан язык программирования Fortran. Значение этого события трудно переоценить. Это первый язык программирования высокого уровня. Впервые программист мог по-настоящему абстрагироваться от особенностей машинной архитектуры. Ключевой идеей, отличающей новый язык от ассемблера, была концепция подпрограмм. Современные компьютеры поддерживают подпрограммы на аппаратном уровне, предоставляя соответствующие команды и структуры данных (стек) прямо на уровне ассемблера, в 1954 же году это было совершенно не так. Поэтому компиляция Фортрана была процессом отнюдь не тривиальным. Кроме того, синтаксическая структура языка была достаточно сложна для машинной обработки в первую очередь из-за того, что пробелы как синтаксические единицы вообще не использовались. Это порождало массу возможностей для скрытых ошибок. Язык Фортран использовался (и используется по сей день) для научных вычислений. Он страдает от отсутствия многих привычных языковых конструкций и атрибутов, компилятор практически никак не проверяет синтаксически правильную программу с точки зрения семантической корректности (соответствие типов и проч.). В нем нет поддержки современных способов структурирования кода и данных. Это осознавали и сами разработчики. По признанию самого Бэкуса, перед ними стояла задача скорее разработки компилятора, чем языка. Понимание самостоятельного значения языков программирования пришло позже.


Фортран – яркий пример прагматического подхода. Строгости и изяществу языка здесь уделялось мало внимания. Основной акцент был сделан на модульности, организации ввода-вывода.[4]

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

Поскольку Фортран оказался столь успешным языком, в Европе возникли опасения, что IBM будет доминировать в компьютерной отрасли. Немецкое общество прикладной математики (Germansocietyofappliedmathematics — GAMM) создало комитет по разработке универсального языка. В то же время AssociationforComputingMachinery (ACM) организовала похожий комитет в США. Несмотря на то, что у европейцев было некоторое беспокойство по поводу господства американцев, оба этих комитета слились в один.

В 1958 году на недельной конференции в ETH (Цюрих, Швейцария) был разработан Algol, как универсальный язык программирования для широкого круга применений, а затем доработан комитетом, созданным Международной федерацией по обработке информации (IFIP). Первоначально этот язык назвали IAL (International Algebraic Language).[5] В комитет вошёл ряд ведущих европейских и американских учёных и инженеров-разработчиков языков. В Алголе появилось представление о программе не как о свободной последовательности команд, а как о блочной структуре, состоящей из чётко описанных и отделённых друг от друга частей. Основной блок программы на Алголе — это сама главная программа. Она содержит свою исполняемую часть, заключённую в блок, ограниченный парой ключевых слов begin и end, а также описания подпрограмм. Каждая подпрограмма — это программа в миниатюре, имеющая собственные, описанные внутри неё данные, однозначно определённый интерфейс в виде имени и списка формальных параметров, и блок кода. При этом в блоке могут выделяться подблоки.


Были выделены структурные управляющие конструкции: ветвления, циклы, последовательные участки, исполняющие условно или многократно вложенные наборы операторов , также ограниченные теми же ключевыми словами begin и end. Современным программистам подобная структура программы кажется очевидной, кое в чём устаревшей и не всегда удобной, но на момент появления Алгола всё это было заметным шагом вперёд. Программы становились регулярными, это давало возможность наращивать их по объёму, сохраняя обозримыми, понятными, доступными анализу и исправлению. Именно на базе Алгола и его языков-потомков были выполнены успешные работы по аналитическому доказательству правильности программ.

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

В 1960 году был создан язык программирования Cobol. Он задумывался как язык для создания коммерческих приложений, и он стал таковым. На Коболе написаны тысячи прикладных коммерческих систем. Отличительной особенностью языка является возможность эффективной работы с большими массивами данных, что характерно именно коммерческих приложений. Популярность Кобола столь высока, что даже сейчас, при всех его недостатках (по структуре и замыслу Кобол во многом напоминает Фортран) появляются новые его диалекты и реализации. В Коболе по сравнению с Фортраном слабее развиты математические средства, но зато хорошо развиты средства обработки текстов, организация вывода данных в форме требуемого документа.[6]

В 1964 году все та же корпорация IBM создала язык PL/1, который был призван заменить Кобол и Фортран в большинстве приложений. Язык обладал исключительным богатством синтаксических конструкций. В нем впервые появилась обработка исключительных ситуаций и поддержка параллелизма. Надо заметить, что синтаксическая структура языка была крайне сложной. Пробелы уже использовались как синтаксические разделители, но ключевые слова не были зарезервированы. В частности, следующая строка — это вполне нормальный оператор на PL/1: IF ELSE=THEN THEN THEN; ELSE ELSE. В силу таких особенностей разработка компилятора для PL/1 была исключительно сложным делом. Язык так и не стал популярен вне мира IBM.