Файл: Изучение классификации языков программирования и их развития.pdf

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

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

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

Добавлен: 12.03.2024

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

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

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

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

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

Достоинства языков программирования высокого уровня:

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

Низкоуровневый язык программирования – это Ассемблер. Следующие высокоуровневые языки рассмотрены выше: Fortran, COBOL, Алгол.

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

Pascal. Язык Паскаль, созданный в конце 70-х годов основоположником множества идей современного программирования, ученым, теоретиком Никлаусом Виртом, во многом напоминает Алгол. Широко известный в вузовских кругах, в основном в России и в странах бывшего Советского Союза. Он использовался и продолжает использоваться как учебный язык. Во всём остальном мире он поменьше распространён, но тоже живёт и им пользуются.

C. Си придумали инженеры в 1972 году. Если Паскаль придумал учёный, то Си придумали Керниган и Ритчи, они работали инженерами в компании Bell. В то время на языках Fortran, COBOL и Algol ничего системного написать было нельзя. Например, операционную систему, драйвера и т.д. Эти языки предназначались для математических расчётов и для бизнес-расчётов. А всё остальное писали на Ассемблере. Керниган и Ритчи любили играть в игрушку Asteroids - летающий космический корабль, есть астероиды, он в них стреляет, и они разлетаются на части. У них был сервер, на котором они играли, но там было много народу, поэтому игрушка тормозила. И они обнаружили у себя где-то в кабинете, что у них стоит какой-то компьютер, которым никто не пользуется. Но было проблема - он другой архитектуры, а игра была написана на Ассемблере. Они её переписали. Но это навело их на мысль, что переписывать под новую архитектуру каждый раз – дело не из легких. И они решили написать такой язык высокого уровня, который будет подходить для системного программирования, то есть, в котором можно будет управлять памятью, в котором можно будет узнать, где, что лежит и как обращаться к памяти. Так появился язык Си, который оказал огромное влияние на всё дальнейшее. Соответственно, это был основной язык в Unix - операционной системе, которая в то время была ещё популярнее, чем сейчас. И примерно к 80-м годам ситуация была такая. Допустим, что всё это у нас уже уходит (упоминания об Ассемблере, Фортране и Алголе). И в 80-е годы компьютеры стали меньше, производительнее, дешевле, и людям захотелось всяких странностей, чтобы жить стало ещё лучше, ещё веселее.


Появление объектно-ориентированных языков программирования

Принято считать, что объектно-ориентированное программирование строится на 4 основных принципах[2]:

  • Абстракция
  • Инкапсуляция
  • Наследование
  • Полиморфизм

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

Инкапсуляция - это свойство системы, позволяющее объединить данные и методы, работающие с ними, в классе и скрыть детали реализации от пользователя.

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

Полиморфизм - это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.

Одна из первых странностей - был язык C++. Язык Си имеет огромное количество недостатков, особенно проблемы с памятью, а точнее её утечки. C++ создавался сначала как набор дополнений к языку Си, который облегчит разработку. В то время стало модно объектно-ориентированное программирование и люди решили, что всё можно описать в виде иерархии. C++ в каком-то смысле реализовывал этот объектный подход - это не был первый язык объектно-ориентированного программирования, но он стал достаточно популярным и в нём начали появляться всякие полезные функции. При этом C++ сохранял почти полную совместимость с языком Си, программа, написанная на Си в 99% случаев, успешно компилировалась и даже работала также. Это было задумано, чтобы с Си было легко перейти на C++. Помимо объектного подхода в C++, достаточно быстро появилась стандартная библиотека шаблонов STL. Кто ещё учил Паскаль, обнаруживали, что там, во-первых, нет встроенной сортировки. Но если понадобиться отсортировать в одном месте целые числа, в другом вещественные числа, а в третьем - строки, которые можно между собой сравнивать, приходилось писать три разные сортировки, которые делают абсолютно одно и тоже, просто у них разные типы данных. Это, конечно, не очень хорошо и шаблоны, которые не сразу появились в C++, эту проблему облегчили. В 90-х годах C++ применялся для всего, что нужно было писать не для веб-приложений, не для обработки текста, а для просто приложений, для операционных систем, в общем, для чего угодно. Но C++ это всё еще проблемный язык. Во-первых, он наследовал из-за обратной совместимости все проблемы языка Си. При этом, если писать всё хорошо и правильно, как было задумано авторами C++, то старыми способами, используемые в Си, убиться было нельзя, и вроде как их стало поменьше. Тем не менее разбиение программы на модули, вообще пришло из Си. В общем, недостатков у C++ очень много. Квалификация у программиста должна была быть высокая, чтобы писать на C++, и стоили такие программисты дорого. А компьютеры у нас всё быстрее и быстрее считают, становятся всё дешевле, люди покупают себе новые компьютеры и хотят больше приложений.


Но на рубеже 80-х и 90-х гг. компьютеры стали настолько хороши, что делали очень неэффективные вещи. И это были скриптовые языки, которые не компилировались в машинный код, а интерпретировались. Бейсик тоже в какое-то время интерпретировался, но эти скриптовые языки были предназначены в основном для обработки текстов - это Perl, Python (он был тогда не очень популярен), PHP, Ruby - вот те скриптовые языки, которые в той или иной степени используются до сих пор.

Perl был предназначен для обработки текстов - в те времена уже памяти стало настолько много в компьютерах, что туда можно было оставить какой-нибудь текст и с этим текстом сделать что-то полезное (например, считать слова, поиск и т.д.). Но его проектировали люди, которые были немного не в себе, потому что на нём можно только писать, читать его нельзя. Если посмотреть на код на Перле и пытаться что-то понять, то будет ничего не понятно. То есть, программы получаются коротки и проще переписать заново, чем разобраться с тем, что там есть и исправить. Примерно в то время, в середине 90-х, появился интернет. Сначала это были почта, сайты со статичным HTML, но людям захотелось добавить туда динамику, чтобы всё происходило динамично. Соответственно это требовало взаимодействия, придумали протокол, как это взаимодействует, и, самое главное, генерацию этих статических (условно) страниц, которые будут появляться пользователю в ответ на его запрос. В общем, ничего кроме языка Перла на тот момент не подходило. Писать на чистом Си или на C++ обработчик было плохой идеей. Перл был популярным языком для веб-разработки. Конечно, масштабы не сравнятся с тем, что сейчас происходит.

PHP появился случайно. Один человек довольно быстро перестал заниматься этим - делал свою страничку, была у него гостевая книга. И он написал набор макросов для Перла, которые были похожи на Си, потому что он на Си умел, просто потому что ему было так удобно. И назвал это Personal HomePage. Отправил в сеть и написал, что здесь всё намного понятнее, чем на Перле и можно править. Людям, конечно же, это понравилось. Потом он это дело бросил. В итоге этот PHP стал жить и со временем стал гораздо популярнее, чем Perl. Но вот эта его задумка как набор макросов для Перла с ним сыграла довольно злую шутку. Язык получился не лучший. То есть он развивался сам по себе, его никто не проектировал, никто не администрировал процесс развития, а было много групп, каждая из которых разрабатывала то, что им нравится. В итоге там функции называются по-разному, стиля нет, всё через подчёркивания, как попало, и как всё это будет работать не очень понятно. Зато можно сесть и через два часа писать на PHP, потому что он так задумывался.


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

Java был создан компанией Sun в начале 90-х годов на основе C++. Язык Java зародился как часть проекта создания передового программного обеспечения для различных бытовых приборов. Реализация проекта была начата на языке С++, но вскоре возник ряд проблем, наилучшим средством борьбы с которыми было изменение самого инструмента - языка программирования. Стало очевидным, что необходим платформо-независимый язык программирования, позволяющий создавать программы, которые не приходилось бы компилировать отдельно для каждой архитектуры и можно было бы использовать на различных процессорах под различными операционными системами. Язык Java потребовался для создания интерактивных продуктов для сети Internet. Фактически, большинство архитектурных решений, принятых при создании Java, было желание предоставить синтаксис, сходный с Си и C++. В Java используются практически идентичные соглашения для объявления переменных, передачи параметров, операторов и для управления потоком выполнением кода. В Java добавлены все хорошие черты C++. Три ключевых элемента объединились в технологии языка Java:

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

Так вот, этот язык был хорошим по написанию и сразу же завоевал популярность. Во-первых, избавились от наследия Си, полностью, никаких указателей. Во-вторых, внедрили гораздо более свежие идеи в плане объектной модели - то есть C++ появился значительно раньше, чем Java и использовал более архаичную объектную модель. И третье, программы на Джаве собирались не в машинный код, а в код для виртуальной машины. То есть, у вас была виртуальная машина (VM) JVM – Джaвовская, программы собирались в промежуточное представление и затем, с помощью этой машины уже выполнялись. Отсюда и преимущества этого языка со своими недостатками, во-первых, он тормозил, во-вторых, он использовало память со страшной силой, в-третьих он был переносим куда угодно (теоретически) - хоть на кофеварку, хоть на кофемолку, хоть на компьютер, хоть на мобильный телефон. Это, с одной стороны хорошо, то есть можно написать просто реализацию виртуальной машины, потом джавовские программы запускаеть везде. Но, с другой стороны, плохо, что на том же телефоне тогда было мало памяти, отсюда была низкая производительность и всё это ещё дополнительно начинало тормозить. Но даже не это главное. Язык Джава придумывался чтобы снизить требования к квалификации программистов.

Следующее, что появилось - это .Net (дотнет), ну и в частности C# (Си Шарп). В конце 90-х годов в компании Microsoft под руководством Андерса Хейльсберга был разработан язык С#. В нем воплотились лучшие идеи Си и С++, а также достоинства Java. Правда, С#, как и другие технологии Microsoft, ориентирован на платформу Windows. Однако он не отличается от прочих универсальных языков. Язык С# предназначен для быстрой разработки .NET-приложений, и его реализация в системе Microsoft Visual Studio .NET содержит множество особенностей, привязывающих С# к внутренней архитектуре Windows и платформы .NET.

И ещё одна штука - JavaScript. Не имеет никакого отношения к языку Java, появился в том же году. Язык был создан в компании Netscape Communications в качестве языка для описания сложного поведения веб-страниц. Первоначально назывался LiveScript, причиной смены названия получили маркетинговые соображения. Интерпретируется браузером во время отображения веб-страницы. По синтаксису схож с Java и отдаленно с C/C++. Имеет возможность использовать встроенную в браузер объектную функциональность, однако подлинно объектно-ориентированным языком не является.

VBScript. Язык был создан в корпорации Microsoft во многом в качестве альтернативы JavaScript. Имеет схожую область применения. Синтаксически схож с языком Visual Basic. Так же, как и JacaScript, исполняется браузером при отображении веб-страниц и имеет ту же степень объектно- ориентированности.