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

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

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

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

Добавлен: 28.03.2023

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

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

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

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

1. Теоретические концепции языков программирования и программных сред

1.1. Основная терминология программирования

1.2. Классификация языков программирования по способу исполнения программ

1.3. Классификация языков программирования по уровню детализации

1.4. Классификация парадигм, реализуемых языками программирования

1.5. Критерии выбора сред и языков программирования

2. Некоторые современные языки программирования и их сравнение

2.1. Язык программирования C

2.2. Язык программирования C++

2.3. Язык программирования Java

2.4. Язык программирования Python

2.5. Язык программирования C#

2.6. Сравнительный анализ языков программирования с точки зрения одной из отраслей

3. Некоторые современные среды разработки и их сравнение

3.1. Среда разработки Microsoft Visual Studio

3.2. Среда разработки NetBeans

3.3. Среда разработки Eclipse

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