Файл: Классификация языков программирования. Критерии выбора среды и языка разработки программ (Основная терминология программирования).pdf
Добавлен: 28.03.2023
Просмотров: 347
Скачиваний: 2
СОДЕРЖАНИЕ
1. Теоретические концепции языков программирования и программных сред
1.1. Основная терминология программирования
1.2. Классификация языков программирования по способу исполнения программ
1.3. Классификация языков программирования по уровню детализации
1.4. Классификация парадигм, реализуемых языками программирования
1.5. Критерии выбора сред и языков программирования
2. Некоторые современные языки программирования и их сравнение
2.2. Язык программирования C++
2.3. Язык программирования Java
2.4. Язык программирования Python
2.6. Сравнительный анализ языков программирования с точки зрения одной из отраслей
3. Некоторые современные среды разработки и их сравнение
3.1. Среда разработки Microsoft Visual Studio
3.2. Среда разработки NetBeans
3.4. Сравнительный анализ сред разработки приложений с точки зрения одной из отраслей
10. Подбельский В. В. Язык C#. Базовый курс: учеб. Пособие. – 2-е изд. перераб. и доп. – М.: Финансы и статистика, 2013. – 408 с.
11. Приходько О. В. Компьютерный практикум: учеб. Пособие для будущих специалистов по управлению персоналом / О. В. Приходько, М. А. Токарева. – Оренбург: ГОУ ОГУ, 2008. – 201 с.
12. Программирование и основы алгоритмизации: Для инженерных специальностей технических университетов и вузов. /А.Г. Аузяк, Ю.А. Богомолов, А.И. Маликов, Б.А. Старостин. Казань: Изд-во Казанского национального исследовательского технического ун-та – КАИ, 2013, 153 с.
13. Рихтер Дж. CLR via C#. Программирование на платформе Microsoft .NET Framework 4.5 на языке C#. — 4-е изд. — СПб.: Питер, 2013. — 896 с. — ISBN 978-5-496-00433-6.
14. Таненбаум Э. Архитектура компьютера. – 4-е изд. –СПб.: Питер, 2003. – 704 с. ISBN 5-318-00298-6.
15. Шилдт Г. Java. Полное руководство, 8-е изд.: Пер. с англ. — М .: Вильямс, 2012. — 1104 с .: ил. — Парал. тит. англ.
16. Эванс Б, Вербург М. Java. Новое поколение разработки. — СПб.: Питер, 2014. — 560 с.: ил. ISBN 978-5-496-00544-9
17. Blum R. Professional Assembly Language. – Wiley Publishing, Inc., 2005. – 576 p.
18. Gosling J., McGilton H. The Java Language Environment: A White Paper. – Sun Microsystems, October 1995. – 85 p.
Материалы конференций
19. Чернышов Л.Н. Среды разработки программного обеспечения: история и перспективы // «Новые информационные технологии». Тезисы докладов XVII Международной студенческой конференции-школы-семинара. – М.: МИЭМ, 2009. – С. 60 – 66.
20. Analysis of integrated development environments for J2EE applications. /H. Dagdeviren, R. Juric, O. Ogunleye, I. Tesanovic // Proceedings of the 11th IASTED International Conference on Software Engineering and Applications. – Anaheim, CA: ACTA Press, 2007. – pp. 349–354.
21. Atkinson K., Flatt M., Lindstrom G. ABI Compatibility Through a Customizable Language // Proc. Of the Ninth International Conference on Generative Programming and Component Engineering (GPCE 2010), Eindhoven, The Netherlands, October 2010. – New York, NY: ACM, 2010. – pp. 147–156.
22. Obfuscator-LLVM — Software Protection for the Masses. / P. Junod, J. Rinaldini, J. Wehrli, J. Michielin // Software Protection (SPRO), 2015 IEEE/ACM 1st International Workshop on. – IEEE, 2015. – pp. 3-9.
23. Stroustrup B. Evolving a language in and for the real world: C++ 1991-2006. ACM HOPL-III, June 2007. – 59 p. Режим доступа: http://www.stroustrup.com/hopl-almost-final.pdf (дата обращения: 26.01.2018).
Статьи в периодических изданиях
24. Вишнеков А.В., Иванова Е.М. Принятие решений при администрировании сложных технических проектов // Системный администратор. 2015. №7-8 (152-153). URL: http://samag.ru/archive/article/3009 (дата обращения: 26.01.2018).
25. Кизянов А. О., Лучанинов Д. В. Анализ программных средств, реализующих язык программирования Python // Постулат. 2016. №8. URL: http://e-postulat.ru/index.php/Postulat/article/view/177/202 (дата обращения: 26.01. 2018).
26. Лучанинов Д.В., Ленкин А.В. Анализ сред разработки программного обеспечения на языке С++ // Современные научные исследования и инновации. 2016. № 8. URL: http://web.snauka.ru/issues/2016/08/70888 (дата обращения: 26.01.2018).
27. Любимцев Р.Г. Среда Eclipse для разработки программ на языке Java. / Под науч. рук. к.п.н. И.А. Буяковской // Информационно-коммуникационные технологии в педагогическом образовании. 2014. 02 (30). URL: http://infed.ru/articles/155/ (дата обращения: 26.01.2018).
28. Свердлов С. Арифметика синтаксиса // PC Week/RE. 1998. №42-43. URL: https://www.itweek.ru/themes/detail.php?ID=49177 (дата обращения: 26.01.2018).
29. Barendregt, H. The Impact of the Lambda Calculus in Logic and Computer Science // The Bulletin of Symbolic Logic. 1997. Vol. 3. №.2. – pp. 181–215.
30. Cardelli L., Wegner P. On understanding types, data abstraction, and polymorphism //ACM Computing Surveys (CSUR). 1985. Vol. 17. №. 4. – pp. 471-523.
Интернет-ресурсы
31. Интегрированная среда разработки Visual Studio // Microsoft Developer Network. URL: https://msdn.microsoft.com/library/dn762121 (дата обращения: 26.01.2018).
32. Староверов К.С. Сравнительный анализ микроконтроллеров с ядром ARM // Рынок Микроэлектроники. URL: http://www.gaw.ru/html.cgi/txt/publ/micros/arm.htm (дата обращения: 26.01.2018).
33. .NET Framework Class Library // Microsoft Developer Network. URL: https://msdn.microsoft.com/en-us/library/mt472912.aspx (дата обращения: 26.01.2018).
34. About Mono // Mono Project. URL: http://www.mono-project.com/docs/about-mono/ (дата обращения: 26.01.2018).
35. C++ Standard Library Header Files // Microsoft Developer Network. URL: https://msdn.microsoft.com/en-us/library/a7tkse1h (дата обращения: 26.01.2018).
36. Configuring NetBeans IDE 8.0 for C/C++/Fortran // NetBeans Docs & Support. URL: https://netbeans.org/community/releases/80/cpp-setup-instructions.html (дата обращения: 26.01.2018).
37. Diakopoulos N., Cass S. Interactive: IEEE Spectrum Top 2017 // IEEE Spectrum. URL: https://spectrum.ieee.org/static/interactive-the-top-programming-languages-2017 (дата обращения: 26.01.2018).
38. Functional Programming vs. Imperative Programming (C#) // Microsoft Docs. URL: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/functional-programming-vs-imperative-programming (дата обращения: 26.01.2018).
39. Fundamentals of Garbage Collection // Microsoft Docs. URL: https://docs.microsoft.com/en-us/dotnet/standard/garbage-collection/fundamentals#the_managed_heap (дата обращения: 26.01.2018).
40. Grid℠ for Integrated Development Environment (IDE) – Winter 2017 // G2 Crowd. – Систем. требования: браузер с поддержкой JS. URL: http://www.g2crowd.com/grid_report/documents/grid-for-integrated-development-environment-ide-winter-2017 (дата обращения: 26.01.2018).
41. IntegraStudio User Manual // SOFT-ERG website. URL: http://www.softerg.com/integra/docs/pages/is_intro.htm (дата обращения: 26.01.2018).
42. Integrated Development Environment Software Overview // TrustRadius. URL: https://www.trustradius.com/integrated-development-environment (дата обращения: 26.01.2018).
43. Overview (Java SE 9 & JDK 9). // Oracle Help Center. URL: https://docs.oracle.com/javase/9/docs/api/overview-summary.html (дата обращения: 26.01.2018).
44. Package Index // Android Developers. URL: https://developer.android.com/reference/packages.html (дата обращения: 26.01.2018).
45. The Python Language Reference // Python 3.6.4 documentation. URL: https://docs.python.org/3/reference/index.html (дата обращения: 26.01.2018).
46. The Python Standard Library // Python 3.6.4 documentation. URL: https://docs.python.org/3/library/index.html (дата обращения: 26.01.2018).
47. The Python Tutorial // Python 3.6.4 documentation. URL: https://docs.python.org/3/tutorial/index.html (дата обращения: 26.01.2018).
48. TIOBE Index // TIOBE – The Software Quality Company. URL: https://tiobe.com/tiobe-index/ (дата обращения: 26.01.2018).
ПРИЛОЖЕНИЯ
Таблица 1
Изменения первых 10 позиций рейтинга TIOBE за 2017-2018 гг.
Позиция (2018) |
Позиция (2017) |
Изменение позиции |
ЯП |
Индекс (2018) |
Изменение Индекса |
1 |
1 |
0 |
Java |
14.215% |
-3.06% |
2 |
2 |
0 |
Си |
11.037% |
+1.69% |
3 |
3 |
0 |
C++ |
5.603% |
-0.70% |
4 |
5 |
+1 |
Python |
4.678% |
+1.21% |
5 |
4 |
-1 |
C# |
3.754% |
-0.29% |
6 |
7 |
+1 |
JS |
3.465% |
+0.62% |
7 |
6 |
-1 |
VB .NET |
2.261% |
+0.30% |
8 |
16 |
+8 |
R |
2.549% |
+0.76% |
9 |
10 |
+1 |
PHP |
2.532% |
-0.03% |
10 |
8 |
-2 |
Perl |
2.419% |
-0.33% |
Источник: TIOBE Index. URL: https://tiobe.com/tiobe-index/
(дата обращения: 26.01.2018).
Таблица 2
Свойства ЯП, выраженные в процентах
Тип критериев |
C |
C++ |
Java |
Python |
C# |
Частичная стоимость |
16,(6)% |
66,(6)% |
83,(3)% |
83,(3)% |
83,(3)% |
оптимизация |
0% |
50% |
100% |
100% |
100% |
автоматизация некоторых операций |
0% |
50% |
100% |
100% |
100% |
сложность исходника |
50% |
100% |
50% |
50% |
50% |
Портабельность ЯП |
75% |
75% |
100% |
100% |
75% |
независимость от ОС |
100% |
100% |
100% |
100% |
50% |
аппаратная совместимость |
50% |
50% |
100% |
100% |
100% |
Универсальность |
75% |
100% |
75% |
75% |
100% |
синтаксическая |
50% |
100% |
100% |
100% |
100% |
семантическая |
100% |
100% |
50% |
50% |
100% |
Целостность |
83,(3)% |
16,(6)% |
50% |
50% |
50% |
простота синтаксиса |
100% |
0% |
0% |
0% |
0% |
простота ограничений |
100% |
50% |
50% |
50% |
50% |
единообразие |
50% |
0% |
100% |
100% |
100% |
Читабельность и надёжность |
16,(6)% |
83,(3)% |
100% |
83,(3)% |
100% |
типизация |
0% |
50% |
100% |
50% |
100% |
абстракции |
50% |
100% |
100% |
100% |
100% |
исключения |
0% |
100% |
100% |
100% |
100% |
Таблица составлена по: Опалева Э.А., Самойленко В.П. Языки программирования и методы трансляции. – СПб.: БХВ-Петербург, 2005 - 480 с., Орлов С. Теория и практика языков программирования: Учебник для вузов. 2-е изд. Стандарт 3-го поколения. - СПб.: Питер, 2017. – 688 с.: ил. – (серия «Учебник для вузов»). ISBN 978-5-496-00032-1.
Таблица 3
Характеристики IDE
Критерий |
Visual Studio |
Eclipse |
NetBeans |
Функциональность |
96,5% |
84% |
83% |
Лучанинов, Ленкин, 2016 |
100% |
80% |
80% |
G2 Crowd, 2017 |
93% |
88% |
86% |
Установка и доступность |
83,5% |
93% |
91,5% |
Лучанинов, Ленкин, 2016 |
80% |
100% |
100% |
G2 Crowd, 2017 |
87% |
86% |
83% |
Удобство использования |
82,5% |
80% |
83% |
Лучанинов, Ленкин, 2016 |
80% |
80% |
80% |
G2 Crowd, 2017 |
85% |
80% |
86% |
Портабельность IDE |
60% |
100% |
60% |
Производительность |
100% |
80% |
80% |
Безотказность |
80% |
60% |
100% |
Техподдержка и удобство сопровождения |
92,5% |
90% |
90% |
Лучанинов, Ленкин, 2016 |
100% |
100% |
100% |
G2 Crowd, 2017 |
85% |
80% |
80% |
Удобство создания коммерческого ПО |
83% |
88% |
79% |
Удобство администрирования |
86% |
84% |
87% |
Таблица составлена по: Лучанинов Д.В., Ленкин А.В. Анализ сред разработки программного обеспечения на языке С++ // Современные научные исследования и инновации. 2016. № 8. URL: http://web.snauka.ru/issues/2016/08/70888 (дата обращения: 26.01.2018), Grid℠ for Integrated Development Environment (IDE) – Winter 2017 // G2 Crowd. – Систем. Требования: браузер с поддержкой JS. URL: http://www.g2crowd.com/grid_report/documents/grid-for-integrated-development-environment-ide-winter-2017 (дата обращения: 26.01.2018).
Рисунок 1. Создание нового проекта и внешний вид интерфейса NetBeans
Рисунок 2. Описание ошибок в NetBeans
Рисунок 3. Простой пример рефакторинга в NetBeans
Рисунок 4. Автодополнение кода в NetBeans
Рисунок 5. Справочная система NetBeans
Рисунок 6. GUI приложение в Visual Studio (Toolbox можно передвинуть в любую часть редактора)
Рисунок 7. Простой пример рефакторинга исходника в IDE Visual Studio
Рисунок 8. Внешний вид Visual Studio
Рисунок 9. Навигация при поиске ошибок в Visual Studio
Рисунок 10. IntelliSense и справочная система Visual Studio
Рисунок 11. Автоисправление ошибок в Eclipse
Рисунок 12. Простой пример рефакторинга в Eclipse
Рисунок 13. Внешний вид Eclipse
Рисунок 14. Сообщение об ошибке в Eclipse Community
Приложение 1
Простая иерархия классов и интерфейсов на Java
Статус: интерпретируется, работает (JDK 8, файлы Java сгруппированы в один листинг, требуется точка входа).
public interface IWeapon extends IUnsafeTechnology//Наследование интерфейсов
{public Boolean IsLethal();}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@FunctionalInterface //разрешает инициализацию с помощью анонимной функции
public interface IUnsafeTechnology
{public double GetCurrentTraumaRisks();}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
public interface IExplosive
{public double GetPower();}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
public class Fireworks implements IExplosive
{
public double GetPower()
{return 0.00009;}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Реализация интерфейса и наследование от класса одновременно
public class RejectedFireworks extends Fireworks implements IUnsafeTechnology