Файл: Основы алгоритмизации и программирования: классификация языков программирования. Критерии выбора среды и языка разработки программ.pdf
Добавлен: 23.04.2023
Просмотров: 260
Скачиваний: 1
СОДЕРЖАНИЕ
1. ИСТОРИЯ РАЗВИТИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ
2. ОСНОВНЫЕ СОВРЕМЕННЫЕ ЯЗЫКИ ПРОГРАММИРОВАНИЯ
2.1. Основные парадигмы современного программирования
2.2. Объектно-ориентированные языки программирования
2.3. Процедурные языки программирования
3. КРИТЕРИИ ВЫБОРА СРЕДЫ И ЯЗЫКА РАЗРАБОТКИ ПРОГРАММ
3.1. Рейтинг TIOBE для языков программирования
3.2. Критерии выбора языка программирования для разработки комплекса программных решений
Swift — открытый мультипарадигмальный компилируемый язык программирования общего назначения. Создан компанией Apple в первую очередь для разработчиков iOS и macOS. Swift работает с фреймворками Cocoa и Cocoa Touch и совместим с основной кодовой базой Apple, написанной на Objective-C. Swift задумывался как более легкий для чтения и устойчивый к ошибкам программиста язык, нежели предшествовавший ему Objective-C[7]. Программы на Swift компилируются при помощи LLVM, входящей в интегрированную среду разработки Xcode 6 и выше. Swift может использовать рантайм Objective-C, что делает возможным использование обоих языков (а также С) в рамках одной программы [2].
Kotlin (Котлин) - статически типизированный язык программирования, работающий поверх JVM и разрабатывается компанией JetBrains. Также компилируется в JavaScript. Авторы ставили перед собой цель создать более лаконичный и типо-безопасный язык, чем Java, и более простой, чем Scala [3]. Последствиями упрощения по сравнению с Scala стали также быстрейшая компиляция и лучшая поддержка IDE [2].
Язык разрабатывается с 2010 года, публично представлен в июле 2011. Исходный код был открыт в феврале 2012 [5]. С 17 мая 2017 входит в список официально поддерживаемых языков для разработки приложений для платформы Android.
2.3. Процедурные языки программирования
Язык Pascal является одной из классических языков программирования. Наибольшую известность она достигла в 80-х - первой половине 90-х годов. На ее основе разработан целый ряд современных языков программирования, таких как Borland Delphi. Язык программирования Pascal разработан в 1968 году на кафедре информатики Стэнфордского университета швейцарским ученым Никлаус Вирт. Этот язык программирования получила название в честь известного французского математика и философа Блеза Паскаля (1623-1662) [1].
Сначала она рассматривалась как учебная язык программирования и благодаря простоте использования применялась в учебных заведениях как "первая" язык программирования для студентов. В 1983 году фирма Borland International перевела ее на коммерческую основу в качестве языка программирования для персональных компьютеров "компьютеров. Переломным этапом для языка Pascal стал 1985 год, то когда появилась ее новая версия, которую назвали Turbo Pascal 3.0.[1].
Она содержала оболочку для удобного написания и редактирования текста программ и компилятор стандартного Pascal. С этого времени Pascal получил широкое использование в кругах как опытных программистов так и начинающих. В следующей версии Turbo Pascal 4.0 были устранены многие ограничений компилятора часто подвергались критике, и повышена производительность системы.
Наиболее важным нововведением стало применение модульной концепции (UNIT-концепции), которая была заимствована из языка программирования Modula-2. Это позволило реализовать в Turbo Pascal разработку крупных программных продуктов. С появлением версии 5.0 Turbo Pascal получила еще большие возможности для использования профессиональными программистами. Одним из важных нововведений стало использование аппаратных перекрытий или оверлеев (overlays) [1].
Они позволили создавать мощные программные продукты, которые рассчитаны на использование при малых объемах памяти. Механизм оверлеев заключается в разделении программы на части, поочередно загружаются в память "память (с дискеты или жесткого диска) по мере необходимости. Кроме этого в Turbo Pascal 5.0 расширены возможности отладки программ и обеспечена возможность поддержки расширенной памяти" памяти [1].
Фортран (Fortran) (ранее FORTRAN - сокращение от «The IBM Mathematical Formula Translating System», то есть «Система трансляции математических формул от IBM») - это императивный язык программирования общего назначения, особенно подходит для интенсивных многочисленных и научных вычислений. Разработанная корпорацией IBM в 1950-х годах в университетском городке на юге Сан-Хосе (Калифорния) для нужд научных и инженерных проектов. Довольно быстро Fortran стал доминировать в этой области программирования, и вот уже как более полувека находится в постоянном употреблении в области численного прогноза погоды [1], анализа методом конечных элементов, вычислительной гидродинамики, вычислительной физики и химии. Это один из самых популярных языков в области высокопроизводительных вычислений, а также используется для тестирования быстродействия самых мощных в мире суперкомпьютеров.
Версия Fortran 77 добавила поддержку для обработки символьных данных; операции с массивами и модульное программирование появились в Fortran 90; функциональное программирование в Fortran 95 (частично), объектно-ориентированное программирование и обобщенное программирование в Fortran 2003. И наконец обобщенное параллельное программирование с помощью co-arrays, что использует архитектурно-независимый и близкий для Фортрана синтаксис для параллельной декомпозиции данных и выполнения инструкций было стандартизировано в Fortran 2008 [1].
Кобо́л (COBOL, COmmon Business Oriented Language) — один из старейших языков программирования (первая версия выпущена в 1959 году), предназначенный, в первую очередь, для разработки бизнес-приложений. Руководителем проекта по созданию Кобола была Грейс Хоппер («бабушка Кобола»). Практически с самого своего рождения Кобол является ANSI-стандартизованным языком программирования.
В стандарт языка 2002 года в Кобол добавлены средства объектно-ориентированного программирования и другие современные языковые конструкции[2].
Кобол обычно критикуется за многословность и громоздкость, поскольку одной из целей создателей языка было максимально приблизить конструкции к английскому языку (ещё в 2006 году Кобол считался языком программирования, на котором было написано больше всего строк кода[3]). Кобол имел прекрасные для своего времени средства для работы со структурами данных и файлами, стал первым языком, в котором появился тип данных «запись»[1], это обеспечило ему долгую жизнь в бизнес-приложениях, по крайней мере, в США.
К 1997 году активно использовалось около 240 миллиардов строк кода на Коболе, кодом на Коболе обрабатывалось около 90 % финансовых транзакций в мире и 75 % коммерческих транзакций, общая стоимость используемого кода — 2 трлн долларов США.
3. КРИТЕРИИ ВЫБОРА СРЕДЫ И ЯЗЫКА РАЗРАБОТКИ ПРОГРАММ
3.1. Рейтинг TIOBE для языков программирования
TIOBE индекс (рейтинг языков программирования) является показателем популярности языков программирования, продукт компании TIOBE (Нидерланды). Расчет идет согласно совокупности запросов к браузерным системам, что содержат название языка. [3] Охват поисков в Google, Yahoo! , MSN, Baidu, Youtube и Википедии. Обновление каждый месяц. По мнению авторов это может быть ценным в ходе принятия разных ключевых решений. TIOBE делает акцент на Тьюринговых языках, и потому не информирует про популярность того же HTML [2].
Рис. 3.1. Рейтинг TIOBE 2002-2018 [8]
По состоянию на апрель 2018 года языки программирования Objective-C и Perl в третий раз за последние 12 месяцев потеряли свои позиции в рейтинге TIOBE. В то же время в список возвратился SQL, о чем уже было упоминание в февральском отчете.
Уменьшенный интерес к Objective-C связан с релизом его преемника — языка Swift. Однако даже новый язык не смог переманить на свою сторону мобильных разработчиков, всё больше использующих сторонние кроссплатформенные фреймворки.
Низкая популярность Perl объясняется неуверенностью программистов в его будущем развитии. Работа над новой версией ведется с 2000 года, но релиз состоялся только в декабре 2015, а интерпретатор Rakudo Star вышел в мае 2017 года. По данным TIOBE, его наилучшей альтернативой считаются Python и Ruby [2].
Но главный факт данного рейтинга демонстрирует уверенное лидерство многие годы трех С-языков: Java, C++, C. И безусловное первенство уже среди этих трех выбранных систем языка программирования Java.
3.2. Критерии выбора языка программирования для разработки комплекса программных решений
В ходе формирования программного продукта нужно подходить к нему, как к сложной системе, различные части которой находятся во взаимодействии друг с другом с целью решения совместной задачи в то же время, разные его модули вольны вести решение независимых задач. В ходе проектирования сложных программных систем важна поддержка такого рода модульности, как для упрощения поддержки конечного продукта и расширения его функционала, так и для разделения труда программистов [5].
В процессе разделения системы на модули с планируемым функционалом, скрытым за определенным интерфейсом, возникает возможность разработки различных частей программной системы с использованием независимого стека технологий. Оттого не существует необходимости написания системы целиком с использованием одного языка программирования. Нужно воспринимать язык программирования как инструмент и, соответственно брать для использования тот инструмент, что есть лучше подходящим для решаемой задачи [5].
Ключевыми параметрами в процессе выбора языка программирования есть [1]:
• кроссплатформенность,
• мультипарадигменность,
• эффективность,
• безопасность,
• выразительность,
• поддержка,
• расширяемость,
• поддержка методов параллельного программирования.
Ход проектирования программных продуктов (ПП) с целью повышения качества обязательно нужно проводить согласно отраслевым стандартам [4, 5], базовым требованием которых есть реализация выполнение в исчерпывающем объеме всех стадий и этапов проектирования ПП. На каждой определенной стадии проектирования разработчикам нужно оценивать и производить выбор из имеющихся в наличии альтернативных методов и средств. Нет однозначных способов реализации сравнительного анализа такого рода альтернатив. Рекомендуется использования методов теории принятия решений для таких стадий проектирования ПП, как разрабатывание технического задания (ТЗ), технического проекта и построение методики испытаний программы.
На этапе разрабатывания и утверждения ТЗ ключевым моментом есть выбор языка программирования. Поиск решения такой задачи может быть весьма легким в случае наличия того или иного транслятора и навыка программирования на определенном языке. Однако если в пользовательском распоряжении есть несколько языков программирования и программных пакетов, и нужно обоснование выбора некоторого языка согласно ТЗ, то нужно брать в учет множество моментов [6]:
- возможности языка программирования;
- назначение ПП, принятого к разработке;
- доступность программных пакетов (редактора, транслятора, компилятора, отладчика):
простоту написания программ и понятность языка программирования для широкого круга пользователей;
свободное или лицензионное распространение;
простоту компиляции программ и установки их на различные компьютеры пользователей [7];
- долговременность использования ПП (временная или постоянная);
- возможность расширения, наращивания функционала;
- число пользователей (возможность единоличного использования или передачи/продажи третьим лицам);
- необходимость работы в режиме реального времени;
- необходимую скорость работы ПП, его вычислительных и диалоговых компонентов (если таковые имеются) и их соотношение;
- предполагаемый размер программы (нужно ли минимизировать размер памяти, которую занимает программа во время работы) [7];
- требования к структуре/архитектуре ПП (необходимость модульного проектирования, использование архитектуры клиент/сервер и т.д.);
- возможность сопряжения разрабатываемого софта с другими приложениями (пакетами или программами), включая приложения, составленные на нескольких языках программирования;
- основные типы данных и их структур и массивов, которыми придется оперировать (целые, строковые, действительные, списки, таблицы и др.);
- характер и уровень использования периферийных средств (монитора, клавиатуры и др.), необходимость в специальном программировании некоторых функций, чтобы работать с периферийными устройствами;
- целесообразность и возможность применения имеющихся стандартных библиотек подпрограмм, процедур, функций [6];
- соответствие и необходимость интеграции между языками программирования и системами баз данных, возможности управления базами данных;
- необходимость отслеживания, отображения, управления текущим состоянием технических средств;
- парадигму языка программирования (стиль написания программ): императивное, объектно-ориентированное, функциональное, декларативное, рефлексивное программирование;