Файл: Основы алгоритмизации и программирования: классификация языков программирования. Критерии выбора среды и языка разработки программ.pdf
Добавлен: 23.04.2023
Просмотров: 265
Скачиваний: 1
СОДЕРЖАНИЕ
1. ИСТОРИЯ РАЗВИТИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ
2. ОСНОВНЫЕ СОВРЕМЕННЫЕ ЯЗЫКИ ПРОГРАММИРОВАНИЯ
2.1. Основные парадигмы современного программирования
2.2. Объектно-ориентированные языки программирования
2.3. Процедурные языки программирования
3. КРИТЕРИИ ВЫБОРА СРЕДЫ И ЯЗЫКА РАЗРАБОТКИ ПРОГРАММ
3.1. Рейтинг TIOBE для языков программирования
3.2. Критерии выбора языка программирования для разработки комплекса программных решений
В середине 2011 года был закончен новый стандарт C ++ (получивший название C ++ 11). Проект библиотеки Boost оказал значительное влияние на новый стандарт, а некоторые из новых модулей были получены непосредственно из соответствующих библиотек Boost. Некоторые из новых функций включают поддержку регулярных выражений (здесь можно найти подробные сведения о регулярных выражениях), полную библиотеку рандомизации, новую библиотеку времени C ++, поддержку атомизации, стандартную библиотеку потоков (которая до 2011 года отсутствовала как на C, так и на C ++) , новый синтаксис цикла, обеспечивающий функциональность, подобную циклам foreach в некоторых других языках, ключевое слово auto, новые классы контейнеров, лучшую поддержку объединений и списки инициализации массивов и вариативные шаблоны.
Нововведениями C++ в сравнении с C являются:
- поддержка объектно-ориентированного программирования через классы. C++ предоставляет все четыре возможности ООП — абстракцию, инкапсуляцию, наследование (в том числе и множественное) и полиморфизм.
- поддержка обобщённого программирования через шаблоны функций и классов [1];
- стандартная библиотека C++ состоит из стандартной библиотеки C (с некоторыми модификациями) и библиотеки шаблонов (Standard Template Library, STL), которая предоставляет обширный набор обобщенных контейнеров и алгоритмов [1];
- дополнительные типы данных;
- обработка исключений;
- виртуальные функции;
- пространства имён;
- встраиваемые (inline) функции;
- перегрузка (overloading) операторов;
- перегрузка имён функций;
- ссылки и операторы управления свободно распределяемой памятью.
На основе достоинств и недостатков С++ был разработан следующий язык Java.
Java — объектно-ориентированный язык программирования, разрабатываемый компанией Sun Microsystems с 1991 года и официально выпущенный 23 мая 1995 года. Изначально новый язык программирования назывался Oak (James Gosling) и разрабатывался для бытовой электроники, но впоследствии был переименован в Java и стал использоваться для написания апплетов, приложений и серверного программного обеспечения.
Программы на Java могут быть транслированы в байт-код, выполняемый на виртуальной java-машине (JVM) — программе, обрабатывающей байт-код и передающей инструкции оборудованию, как интерпретатор, но с тем отличием, что байт-код, в отличие от текста, обрабатывается значительно быстрее [2].
Язык Java зародился как часть проекта создания передового программного обеспечения для различных бытовых приборов. Реализация проекта была начата на языке C++, но вскоре возник ряд проблем, наилучшим средством борьбы с которыми было изменение самого инструмента — языка программирования. Стало очевидным, что необходим платформо-независимый язык программирования, позволяющий создавать программы, которые не приходилось бы компилировать отдельно для каждой архитектуры и можно было бы использовать на различных процессорах под различными операционными системами [2].
Язык Java потребовался для создания интерактивных продуктов для сети Internet. Фактически, большинство архитектурных решений, принятых при создании Java, было продиктовано желанием предоставить синтаксис, сходный с C и C++. В Java используются практически идентичные соглашения для объявления переменных, передачи параметров, операторов и для управления потоком выполнением кода. В Java добавлены все хорошие черты C++.
Три ключевых элемента объединились в технологии языка Java [2].
Java предоставляет для широкого использования свои апплеты (applets) — небольшие, надежные, динамичные, не зависящие от платформы активные сетевые приложения, встраиваемые в страницы Web. Апплеты Java могут настраиваться и распространяться потребителям с такой же легкостью, как любые документы HTML
Java высвобождает мощь объектно-ориентированной разработки приложений, сочетая простой и знакомый синтаксис с надежной и удобной в работе средой разработки. Это позволяет широкому кругу программистов быстро создавать новые программы и новые апплеты [2].
Java предоставляет программисту богатый набор классов объектов для ясного абстрагирования многих системных функций, используемых при работе с окнами, сетью и для ввода-вывода. Ключевая черта этих классов заключается в том, что они обеспечивают создание независимых от используемой платформы абстракций для широкого спектра системных интерфейсов [2].
C# (произносится си-шарп) — язык программирования, сочетающий объектно-ориентированные и контекстно-ориентированные концепции. Разработан в 1998—2001 годах группой инженеров под руководством Андерсa Хейлсбергa в компании Microsoft как основной язык разработки приложений для платформы Microsoft .NET. Компилятор с C# входит в стандартную установку самой .NET, поэтому программы на нём можно создавать и компилировать даже без инструментальных средств вроде Visual Studio [2].
C# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к C++ и Java. Язык имеет строгую статическую типизацию, поддерживает полиморфизм, перегрузку операторов, указатели на функции-члены классов, атрибуты, события, свойства, исключения, комментарии в формате XML. Переняв многое от своих предшественников — языков C++, Delphi, Modula и Smalltalk — С#, опираясь на практику их использования, исключает некоторые модели, зарекомендовавшие себя как проблематичные при разработке программных систем: так, C# не поддерживает множественное наследование классов (в отличие от C++) или вывода типов (в отличие от Haskell).
Perl — высокоуровневый интерпретируемый динамический язык программирования общего назначения, созданный Ларри Уоллом, лингвистом по образованию. Название языка представляет собой аббревиатуру, которая расшифровывается как Practical Extraction and Report Language «практический язык для извлечения данных и составления отчётов»
Сейчас Perl содержится практически в каждом дистрибутиве Linux и других UNIX-систем, портирован на Windows и многие другие платформы. Администраторы со всего мира используют его для автоматизации своих повседневных задач [2].
Репозиторий CPAN содержит множество модулей для языка буквально на все случаи жизни [2].
PHP - это «язык сценариев, встроенный в HTML», используемый в основном для динамических веб-приложений. Первая часть этого определения означает, что PHP-код может быть перемешан с HTML, что упрощает создание динамических частей веб-страниц на лету. В качестве языка сценариев PHP-код требует наличия процессора PHP [2]. PHP-код обычно запускается в текстовых сценариях, которые будут работать только на компьютерах с поддержкой PHP (наоборот, языки программирования могут создавать автономные исполняемые бинарные файлы, программы a.k.a.). PHP занимает большую часть своего синтаксиса с C, Java и Perl. Это технология с открытым исходным кодом и работает на большинстве операционных систем и с большинством веб-серверов. PHP был написан на языке программирования C Расмусом Лердорфом в 1994 году для использования в мониторинге его онлайн-резюме и связанной личной информации. По этой причине PHP первоначально стоял за «Личную домашнюю страницу». Лердорф объединил PHP со своим собственным интерпретатором форм, выпустив комбинацию публично как PHP / FI (обычно называемый PHP 2.0) 8 июня 1995 года [2]. Два программиста, Zeev Suraski и Andi Gutmans, перестроили ядро PHP, выпустив обновленный результат как PHP / FI 2 в 1997 году. В настоящее время акроним был официально изменен на PHP: HyperText Preprocessor. В 1998 году был выпущен PHP 3, который был первой широко используемой версией. PHP 4 был выпущен в мае 2000 года с новым ядром, известным как Zend Engine 1.0. PHP 4 показал улучшенную скорость и надежность над PHP 3. Что касается функций, добавлены ссылки на PHP 4, логический тип, поддержка COM в Windows, буферизация вывода, множество новых функций массива, расширенное объектно-ориентированное программирование, включение библиотеки PCRE, и более. Обновления по обслуживанию PHP 4 по-прежнему доступны, в основном для обновлений безопасности. [2].
Когда JavaScript был впервые представлен в 1995 году, он был создан для Netscape Navigator и быстро стал известен как LiveScript. Позже имя было изменено на JavaScript, чтобы отразить поддержку Netscape Java в своем браузере.
На этом этапе нашей истории были два доминирующих веб-браузера: Netscape Navigator (с JavaScript) и Internet Explorer (с Jscript). И к тому времени, когда мир браузеров изменился, и Internet Explorer стал доминирующим браузером, JavaScript превратился в одобренный стандарт для написания интерактивной обработки в веб-браузере.
К 1996 году важность JavaScript выросла настолько, что он был передан международному стандарту для написания сценариев языка под названием ECMA (Европейская ассоциация производителей компьютеров), который по сей день несет ответственность за разработку и поддержку этого языка. В результате на языке сценариев официально было присвоено имя «ECMAScript» (или «ECMA-262»), однако люди по-прежнему называют его JavaScript.
Процесс стандартов ECMA работает в циклах - ECMAScript 2 был выпущен в 1998 году, а ECMAScript 3 был выпущен в 1999 году (который превратился в современный современный JavaScript). Несмотря на то, что Microsoft приступила к реализации некоторых предложений на своем языке JScript, стало ясно, что Microsoft не будет внедрять JavaScript в Internet Explorer.
В 2005 году Eich и Mozilla присоединились к ECMA для поддержки E4X (ECMA-357), что привело к сотрудничеству с Macromedia (приобретенным Adobe), которые работали над внедрением E4X в ActionScript 3. Целью этого сотрудничества было стандартизировать то, что было в AS3 и реализовать его в SpiderMonkey. В результате Adobe выпустила Tamarin - проект открытого курса, созданный с AVM2 [2].
Одновременно сообщества разработчиков с открытым исходным кодом и разработчиков также работали над революционизацией JavaScript и с тем, что с ним можно было сделать, а влияние сообщества достигло своего пика благодаря публикации, выпущенной в 2005 году Джесси Джеймсом Гарреттом, которая описала набор технологий, поддерживаемых JavaScript в качестве основы и где он создал термин «Аякс». Этот документ привел к росту разработчиков, тяготеющих к JavaScript и сообществам с открытым исходным кодом и библиотекам вокруг него. Кроме того, среди выпущенных новых библиотек были jQuery, Prototype и Dojo [2].
Преимущество Ajax возвратило JavaScript в центр внимания и привлекло больше внимания к профессиональному программированию. Результатом стало распространение всеобъемлющих рамок и библиотек, улучшенная практика программирования JavaScript и расширение использования JavaScript за пределами веб-браузеров, что видно из распространения серверных JavaScript-платформ на стороне сервера [2].
Сегодня JavaScript по-прежнему повсюду - это наиболее часто используемый язык сценариев на стороне клиента. JavaScript написан в HTML-документах и позволяет взаимодействовать с веб-страницами многими уникальными способами. Например, благодаря JavaScript мы можем автоматически назначать встречи и играть в онлайн-игры. Кроме того, новые разработки, такие как Node.js, позволяют использовать JavaScript на стороне сервера, в то время как API-интерфейсы, такие как HTML5, позволяют управлять пользовательскими носителями и другими функциями устройства.
Современный JavaScript – это «безопасный» язык программирования общего назначения. Он не предоставляет низкоуровневых средств работы с памятью, процессором, так как изначально был ориентирован на браузеры, в которых это не требуется [2].
Что же касается остальных возможностей – они зависят от окружения, в котором запущен JavaScript. В браузере JavaScript умеет делать всё, что относится к манипуляции со страницей, взаимодействию с посетителем и, в какой-то мере, с сервером:
- Создавать новые HTML-теги, удалять существующие, менять стили элементов, прятать, показывать элементы и т.п.
- Реагировать на действия посетителя, обрабатывать клики мыши, перемещения курсора, нажатия на клавиатуру и т.п.
- Посылать запросы на сервер и загружать данные без перезагрузки страницы (эта технология называется "AJAX").
- Получать и устанавливать cookie, запрашивать данные, выводить сообщения [2].
Далее упомянем о Python. Интерпретируемый объектно-ориентированный язык программирования высокого уровня с динамической типизацией, автоматическим управлением памятью и удобными высокоуровневыми структурами данных, такими как словари (хэш-таблицы), списки, кортежи. Поддерживает классы, модули (которые могут быть объединены в пакеты), обработку исключений, а также многопоточные вычисления. Питон обладает простым и выразительным синтаксисом. Язык поддерживает несколько парадигм программирования: структурное, объектно-ориентированное, функциональное и аспектно-ориентированное.
Ruby — интерпретируемый объектно-ориентированный язык программирования, созданный в 1995 году Юкихиро Мацумото по прозвищу Мац. Автор ставил себе целью создать истинно объектно-ориентированный язык, что у него и получилось. Ruby имеет строгую динамическую типизацию. Особенностью языка является то, что в нем можно изменить любой класс в любое время. Как и во многих современных языках, в Ruby все данные является объектом (даже классы являются объектом класса Class), а все функции — методами [2].
Scala — мультипарадигменный язык программирования, спроектированный кратким, элегантным, и типобезопасным для простого и быстрого программирования. В нем органично сочетаются возможности функционального и объектно ориентированного программирования. Основной целью разработки был язык, обладающий хорошей поддержкой компонентного ПО [2].
На дизайн Scala оказали влияние многие языки и исследовательские работы.
Конечно, Scala впитала значительное число концепций и синтаксических соглашений Java и C#. Способ выражения свойств во многом заимствован из Sather. Из Smalltalk взята концепция унифицированной объектной модели. Из Beta пришла идея, что все, включая классы, должно допускать вложенность. Абстрактные типы в Scala очень похожи на абстрактные типы сигнатур в SML и OCaml, обобщенные в контексте полноценных компонентов. В некотором смысле Scala – это продолжение работы Pizza. Как и Pizza, Scala компилируется под Java VM, добавляя функции высшего порядка, сопоставление с образцом, конструкции, которые исходно были созданы в сообществе функционального программирования. В то время как Pizza обратно совместима с Java, цель Scala – всего лишь возможность взаимодействия, так что у нее больше степеней свободы в дизайне. Ещё одна цель Scala – предоставить расширенные конструкции для абстракции и композиции компонентов – общая с несколькими недавними исследовательскими разработками [2].