Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

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

Содержание:

ВВЕДЕНИЕ

Языки программирования для компьютеров разрабатываются с целью прежде всего помочь большому количеству людей использовать компьютеры без необходимости детального изучения их внутренней структуры. Языки соответствуют типу приложений, которые должны быть запрограммированы с использованием языка [1.].

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

Почти все современные языки программирования разработаны так, чтобы быть независимыми от машины. Другими словами, структура языка программирования не будет зависеть от внутренней структуры определенного компьютера; нужно уметь исполнять программу, написанную на языке программирования, на любом компьютере, независимо от того, кто его изобрел или какой моделью он является. Такие языки известны как машинно-независимые языки программирования высокого уровня [6.].

Создание программ на языках программирования высокого уровня по-прежнему является актуальным. Программисты низкоуровневых языков зачастую пишут неэффективные программы, так как упускают из виду высокоуровневые оптимизации [6.]; в то же время разработка низкоуровневых программ сопряжена со сложностью, поскольку большинство людей не могут быстро читать машинный код (и соответственно вносить изменения). Конечно, здесь имеются исключения – это небольшие, критичные ко времени исполнения фрагменты программы (например, тело цикла, или отдельная функция), которые не могут быть идеально оптимизированы компилятором. Такие составные части программы иногда пишут в виде ассемблерных вставок.

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

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

Инструкции первых языков программирования, появившихся в начале 50-х годов XX века и ориентированных на конкретный компьютер, записывались в исходном коде и выполнялись последовательно. Данные, полученные при выполнении предыдущих инструкций, могли быть считаны из памяти или записаны в нее. Таким образом, программы представляли собой последовательность команд, которые должен был выполнить компьютер. Языки программирования, использующие этот подход (прежде всего, это машинные инструкции и язык ассемблера), образовали императивную парадигму программирования. В отличие от декларативного подхода, при котором задается спецификация решения задачи, в императивном широко используются операторы присваивания. Ранние императивные языки сложны для понимания и решения прикладных задач.

Новый этап начинается с середины 50-х годов. Постепенно на смену ламповым ЭВМ стали приходить транзисторные ЭВМ. Бурное развитие технологий привело к тому, что компьютеры сменяли друг друга каждые пару лет (IBM-701, TRADIAC, Pegasus, Philco-2000, Elliot-803, Siemens-2002, H-1, IBM-7030, Atlas, CDC-6600). Программирование, в основном сводится, к переписыванию старых программ для новых ЭВМ.

В этот период компьютеры становятся доступны исследовательским институтам и университетам. Их выход за пределы закрытых лабораторий электро-инженеров означает, что программирование стало занятием большего числа людей. Использование компьютера выглядит очень необычно по современным меркам. Программист отдает программу диспетчеру, который поставит программу на исполнение и вернет результаты работы через часы или даже дни, т. е. никакой интерактивности и уж тем более собственного компьютера.

Высокоуровневых языков программирования все еще не существует, программированием занимаются математики и инженеры электротехники. До сих пор нет учебных дисциплин, нацеленных на развитие языков в целом и программирование на этих языках в частности. Не существует и понятия управления программными проектами, предсказывать сроки завершения программных проектов практически невозможно. Бессистемный подход к разработке программ этого этапа можно, условно, обозначить как «Code and Fix» – сначала пишется код, потом исправляются проблемы в этом коде, т. е. сначала идет реализация, а потом уже задумываются о требованиях, дизайне, тестировании и прочем.

Программам не уделяется особого внимания – они просто бесплатное дополнение к ЭВМ. Это довольно курьезное положение дел, по двум причинам. Во-первых, программируемые ЭВМ бесполезны без программ. Во-вторых, программирование считается сложной задачей, требующей изучения конкретной ЭВМ и недюжинного упорства. Чтобы облегчить кодирование, появляются приближенные к человеку формальные языки – то, что сейчас принято называть языками программирования высокого уровня.

Языки высокого уровня (ЯВУ) – изначально, формальные языки описания программ, обладающими большей степенью абстрактности, чем язык машинных команд. При использовании машинного языка программист привык мыслить в терминах регистров, памяти, машинных слов, бит и инструкций компьютера, в то время как при использовании языков высокого уровня программист использует числа, символы, строки, арифметические операции, типы и структуры данных. А трансляция этих понятий на низкоуровневые возможности ЭВМ выполняется механически с помощью компилятора.

В 1970-е компания Intel создала и популяризировала первые микропроцессоры. В середине этого же десятилетия была основана Microsoft, которая на заре своей деятельности продавала интерпретаторы для языка программирования BASIC. В это время большой популярностью пользуются процедурные языки. Они позволяли разбивать задачи на шаги и решать их за шагом, причем возможность определять каждый шаг в процессе решения задачи была предоставлена программисту. Эти языки использовали императивную парадигму, но последовательно выполняемые операторы могли быть собраны в подпрограммы, то есть более крупные целостные единицы кода, с помощью самого языка. Согласно некоторым классификациям, такой подход выделяется в самостоятельную парадигму, получившую название процедурной. К процедурным языкам программирования относятся также Паскаль, Си, Algol, COBOL и FORTRAN. Компиляторы к последним двум языкам программирования появились в 1977 и 1978 годах соответственно и также продавались компанией Microsoft. Кроме того, можно отметить еще несколько значимых языков программирования, разработанных на ранних этапах развития: LISP и PL/1. Все вышеперечисленные языки не были первыми ЯВУ, но их можно назвать самыми заметными в ранней истории. Сейчас, спустя много лет, на некоторые из них принято смотреть, скорее, как на отрицательные примеры, чем как на положительные, но это не отрицает их важности.

Высокоуровневые понятия, которые использовались в ЯВУ того времени, соответствовали задачам, решаемым с помощью компьютеров. То есть они, за некоторым исключением, были «заточены» под численные расчеты. Языки, не обладавшие конкретной специализацией, считались игрушками. Например, язык программирования LISP описывали как «наиболее умный способ неправильно использовать компьютер», и именно LISP сегодня можно считать примером удачного ЯВУ.

FORTRAN (FORmula TRANslator, 1957) – первый ЯВУ, получивший действительно широкое распространение. Чтобы подчеркнуть значимость этой разработки, достаточно упомянуть, что язык FORTRAN до сих пор используется, не так широко и активно как раньше, – его применение сократилось до весьма узкого использования в научных вычислениях – но это все равно совершенно удивительный срок жизни для технологии (имеется в виду именно FORTRAN, а не сама идея ЯВУ). Впрочем, несмотря на всю значительность этой разработки, можно констатировать, что язык FORTRAN безнадежно устарел, и как отметил Дейкстра: «чем раньше мы забудем, что FORTRAN когда-либо существовал, тем лучше».

LISP (LISt Processing language, 1958), в отличие от FORTRAN, даже спустя много лет рассматривается как положительный опыт в истории развития языков программирования. В начале своего появления он не пользовался большой популярностью, однако, стоит заметить, что свое применение он все же нашел – в области искусственного интеллекта он был основным языком, вероятно, за свою исключительную простоту и выразительность. LISP базировался на небольшом количестве простых идей, которые показали удивительную стойкость. LISP был совершенно отличен от FORTRAN, и многие современные технологии появились впервые именно в LISP: автоматическое управление памятью (которое активно используется очень многими современными языками программирования, например, целой группой языков для JVM, Python, JavaScript и др.), динамическая типизация (мнение об этой концепции среди современных теоретиков языков программирования неоднозначно – есть сторонники такого подхода, есть противники, как есть и те, кто признает важность и динамической, и статической типизации), функции высшего порядка (так называют функции, которые принимают на вход другие функции как аргумент или возвращают их как результат своей работы – одна из интересных реализаций идеи подпрограммы) и др. Как и FORTRAN, LISP до сих пор используется в виде множества различных более современных диалектов, сохраняющих общие концепции с оригинальной разработкой.

COBOL (COmmon Buisness Oriented Language, 1960) отличается и от FORTRAN, и от LISP, его специализация – бизнес-приложения, т. е. приложения, нацеленные не на математические расчеты, а на хранение и поиск информации, например, банковские системы. Все предложения на COBOL составлялись из слов английского языка, и даже для обозначения таких операций, как сложение приходилось писать "ADD a TO b" или "SUBTRACT a FROM b". Впоследствии COBOL был серьезно раскритикован за его многословность. COBOL проектировался так, чтобы быть простым и переносимым языком программирования. Переносимость означала, что программы на COBOL должны были работать практически на всем допустимом множестве компьютеров без изменения окружающей среды. Это обуславливалось тем, что, в конечном итоге, и компьютер, и программа – это всего лишь инструмент, и вкладывать деньги в написание новой программы для нового компьютера, как и потому что появилась новая технология, было совершенно неприемлемо. Поэтому бизнес-приложения с возрастом в 10, 20, а то и больше лет не были редкими. COBOL был призван удовлетворить эти нужды, и он до сих пор используется для тех же целей.

Появление и развитие высокоуровневых языков поспособствовало прогрессу в области интегрированных сред разработки, которые предлагают единый интерфейс, включающий в себя все инструменты, необходимые разработчику программ. В 1983 году компания Borland Ltd. приобрела компилятор языка Паскаль и выпустила его под названием TurboPascal, в котором впервые появился полноценный интегрированный редактор и компилятор. Он позволял править исходный программный код, манипулировать файлами, компилировать, отлаживать и выполнять программы таким же способом, как и многие современные интегрированные среды разработки.

В 1987 году инженер Билл Аткинсон спроектировал и реализовал технологию HyperCard («Гиперкард») – программное приложение и набор средств разработки для компьютеров Apple Macintosh и Apple IIGS. Это была первая визуальная среда программирования, которая позволяла создавать собственные приложения в системе Mac OS. В Гиперкард можно собирать воедино текстовые, графические, звуковые данные, предлагая их пользователю в удобном интерактивном виде. Кроме того, там использовался язык программирования HyperTalk («гиперток»), который упрощал создание обучающих (и других) программ. В частности, первая версия популярной игры Myst была создана с помощью системы Гиперкард. В 1987 Гиперкард продавался примерно за 50 долларов США; в 2004 году он был снят с производства.

Несмотря на то, что впервые TurboPascal выдвинул идею интегрированной среды разработки, многие специалисты и исследователи в области компьютерных наук считают, что система Microsoft Visual Basic (VB), выпущенная в 1991 году, была первой настоящей интегрированной средой разработки. Visual Basic был построен на более старом языке BASIC, который был популярным языком программирования в течение 1980-х годов. VB был объектным языком программирования – он поддерживал определение объекта как структуры данных, но не обладал полиморфизмом и наследованием (что отличало его от объектно-ориентированных языков). Впервые с появлением Visual Basic программирование можно было представить в графическом виде, и это дало значительные преимущества в производительности.

Дальнейшее развитие интегрированных сред разработки связано с появлением и последующим ростом популярности объектно-ориентированных языков программирования, таких как C++, C#, Java и других.

2.Обзор и сравнение Си-подобных языков

Развитие языков программирования происходило быстрыми темпами. С момента появления первого поколения языков программирования в начале 1950-х годов сформировалось пять поколений языков программирования. Последнее поколение было нацелено на то, чтобы «заставить компьютер решить данную задачу без участия программистов» [5.]. Однако, согласно индексу TIOBE Programming Community, который указывает на популярность языков программирования [12.], третье поколение языков программирования все еще широко распространено и активно используется.

В соответствии с [12.], в качестве объектов для изучения в данной работе были выбраны языки C, C++, C#, которые являются одними из наиболее популярных языков программирования на сегодняшний день. Технические характеристики этих трех языков программирования были обобщены и сравнены друг с другом. Один из языков программирования был выбран в качестве приоритетного языка для разработки программного обеспечения, затем были подробно изучены некоторые из наиболее популярных интегрированных сред для создания программ на выбранном языке. Одна из рассмотренных сред была выбрана в качестве основной рабочей среды для разработки программного обеспечения.

Си – язык программирования, который появился в Bell Laboratories в США в 1972 году. Он был написан Деннисом Ритчи. Этот язык был создан для определенной цели, а именно для разработки операционной системы UNIX (которая долго время использовалась на многих компьютерах). После этого Си стал использоваться все большим и большим количеством людей за пределами Bell Laboratories, потому что в то время он более эффективен, чем другие языки программирования. В конце 70-х годов Си занял доминирующее положение языков программирования. Комитет, образованный Американским национальным институтом стандартов (ANSI), одобрил версию Си в 1989 году, известную как ANSI C. Этот стандарт был впоследствии одобрен Международной организацией по стандартизации (ISO) в 1990 году. Язык получил название Си (англ. «C») потому, что его предшественник назывался Би (англ. «B») и был также разработан Кеном Томпсоном из Bell Laboratories.

Во времена появления языка Си большой популярностью пользовались процедурные языки, которые позволяли разбивать задачи на шаги и решать их за шагом, причем возможность определять каждый шаг в процессе решения задачи была предоставлена программисту. Эти языки использовали императивную парадигму, но последовательно выполняемые операторы могли быть собраны в подпрограммы, то есть более крупные целостные единицы кода, с помощью самого языка. Согласно некоторым классификациям, такой подход выделяется в самостоятельную парадигму, получившую название процедурной [2.]. Язык Си – процедурный язык программирования. К процедурным языкам программирования относятся также Паскаль, Алгол, Кобол и Фортран.

Существуют различные преимущества для выбора языка Cи в качестве основного инструмента для разработки [3.]:

  1. Строительный блок для многих других языков программирования

Си считается наиболее фундаментальным языком, который необходимо изучать, вне зависимости от первого изучаемого языка программирования. Многие языки программирования, такие как Python, C ++, Java и т. д. построены на основе языка Си.

  1. Мощный и эффективный язык

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

  1. Переносимый язык

Си очень гибок – иными словами, можно сказать, что он не является машинно-зависимым, что помогает запускать код на любом компьютере без внесения каких-либо изменений в исходном коде.

  1. Встроенные функции

В ANSI C всего 32 ключевых слова, имеющих много встроенных функций. Эти функции полезны при создании программы на Си.

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

Это означает, что проблемы или сложные проблемы делятся на более мелкие блоки или функции. Такая модульная структура облегчает тестирование и поддержку программ

  1. Язык среднего уровня

Си – это язык программирования «среднего» уровня. Это означает, что он поддерживает программирование высокого уровня, а также программирование низкого уровня. Он поддерживает как использование ядер и драйверов в низкоуровневом программировании, так и также системные программные приложения на языке программирования высокого уровня.

  1. Реализация алгоритмов и структур данных

Использование алгоритмов и структур данных в Си сделало вычисления программ очень быстрыми и плавными. Таким образом, язык Си может использоваться в сложных вычислениях и операциях.

  1. Процедурный язык программирования

Поскольку Си использует процедурное программирование, для языка становится легче идентифицировать структуру кода и решить любую проблему на его определенном участке. В процедурном программировании переменные и функции Си объявляются перед использованием.

  1. Динамическое распределение памяти

Си обеспечивает динамическое распределение памяти – это означает, что память можно выделять во время выполнения

К сожалению, программирование на Си также сопряжено с рядом недостатков, которые не позволяют рекомендовать его для использования в некоторых проектах. Вот основные из них [2.]:

  1. Концепция ООП

Си – очень богатый язык, но он не поддерживает концепцию объектно-ориентированного программирования (наследование, полиморфизм, инкапсуляция, абстракция, сокрытие данных)

  1. Проверка во время выполнения

В языке программирования Си ошибки или баги не обнаруживаются после каждой строки кода. Вместо этого компилятор показывает все ошибки после написания программы. Это делает проверку кода очень сложной в больших программах.

  1. Понятие пространства имен

Си не реализует концепцию пространств имен. Пространство имен структурировано как цепочка команд, допускающая повторное использование имен в разных контекстах. Без пространств имен невозможно объявить две переменные с одинаковыми именами.

  1. Отсутствие обработки исключений

Обработка исключений – одна из важнейших функций языков программирования. При компиляции кода могут возникать различные аномалии и ошибки. Обработка исключений позволяет перехватить ошибку на этапе обнаружения и принять соответствующие меры. Однако язык Си не допускает эту важную особенность.

  1. Конструктор или деструктор

Си не имеет конструкторов или деструкторов.

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

  1. Низкий уровень абстракции

Си имеет минимальное сокрытие данных и исключительную видимость, что влияет на безопасность этого языка.

C++ был написан Бьерном Страуструпом в Bell Labs в 1983-1985 гг. C++ является расширением Си. До 1983 года Бьерн Страуструп добавил функции в C и сформировал то, что он назвал «C с классами». Он объединил использование классов и объектно-ориентированных функций из языка Simula с мощью и эффективностью языка Си [11.].

Преимущества C++ [3.]:

  1. Портативность

C++ предлагает функцию переносимости или независимости от платформы, которая позволяет пользователю легко запускать одну и ту же программу в разных операционных системах или интерфейсах

  1. Объектно-ориентированность и мультпарадигменность

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

C++ является языком программирования с несколькими парадигмами. Термин «парадигма» относится к стилю программирования. Парадигмой программирования называют используемый различными языками подход к программированию, то есть, проще говоря, набор идей и понятий, определяющих стиль написания программ. Среди основных парадигм программирования выделяют объектно-ориентированную, императивную, декларативную, структурную, функциональную и логическую. Большинство языков программирования, активно используемых в современной разработке прикладных программ, являются мультипарадигменными.

  1. Манипуляции низкого уровня

Поскольку C++ тесно связан с Си, который является процедурным языком, тесно связанным с машинным языком, C++ допускает низкоуровневое манипулирование данными на определенном уровне. Встроенные системы и компилятор создаются с помощью C++.

  1. Управление памятью

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

  1. Поддержка большого сообщества

C++ имеет большое сообщество, которое поддерживает его, предоставляя онлайн-курсы и лекции, как платные, так и бесплатные. С точки зрения статистики, C++ является 6-м наиболее часто используемым тегом на StackOverflow и GitHub.

  1. Совместимость с Си

C++ в значительной степени совместим с C. Практически каждая скомпилированная и отлаженная программа на языке Си является допустимой программой на C++. В зависимости от используемого компилятора каждая программа C++ может запускаться в файле с расширением .cpp.

  1. Масштабируемость

Масштабируемость относится к способности программы масштабироваться. Это означает, что программа на C++ способна работать как в небольших масштабах, так и на больших объемах данных. Также можно создавать приложения, которые являются ресурсоемкими.

  1. Производительность

Как язык со статической типизацией, C++, как правило, более производительный, чем языки с динамической типизацией, потому что код проверяется перед выполнением. Java набирает обороты с точки зрения скорости, но, в конце концов, в зависимости от того, насколько талантлив разработчик C++, C++ все еще может быть быстрее, чем Java.

  1. Карьерные перспективы

Для разработки популярных видеоигр, скорее всего, придется использовать C++. Многие мобильные бестселлеры также были созданы с Cocos2d-x, который является свободно распространяемым кроссплатформенным игровым движком с открытым исходным кодом. Игры Cocos2d-x разрабатываются на C++, хотя Cocos2d теперь также поддерживает другие языки.

Недостатки языка C++:

  1. Использование указателей

Указатели в C / C++ довольно сложны для понимания и занимают много памяти. Неправильное использование указателей, известное как «висячие указатели», может привести к сбою системы или неправильному поведению системы.

  1. Проблема безопасности

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

  1. Отсутствие сборщика мусора

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

Подводя итоги, можно сделать вывод о том, что язык C++ в качестве основного инструмента для разработки программного приложения является подходящим выбором для опытных разработчиков [7.].

C# был разработан в качестве конкурента языка Java; подразумевалось, что он будет чистым объектно-ориентированным языком программирования [9.]. C# дебютировал в 2000 году на конференции профессиональных разработчиков, где основным докладчиком был основатель Microsoft Билл Гейтс. В то же время была представлена среда разработки Visual Studio .NET.

Высокоуровневый язык программирования C# является флагманом разработки от Microsoft. Можно выделить следующие плюсы языка, отличающие его от конкурентов:

  1. Доступность

Если для Java необходимо отдельно устанавливать виртуальную машину, то .NET-разработка требует только .NET-платформы, которая есть на большинстве компьютеров с ОС Windows. Соответственно, оптимизация исполняемого кода ложится на платформу, что облегчает жизнь разработчика.

  1. Универсальность

Приложения C# функционируют на всех компьютерах с ОС Windows – притом можно указывать версию .NET Framework для работы с более ранними версиями. Среда разработки Xamarin также распространяет C# на Unix-системы, C# отныне является кроссплатформенным языком.

  1. Эргономичность

Поставляемые пакеты NuGet, интерактивное взаимодействие с объектами, ADO/OLE/Entity/ASP, интеллектуальная подсказка, одно из самых широчайших и полезных сообществ.

  1. Инновационность

С# стал флагманом не просто так – именно в нем реализуются многие особенности архитектуры программ, протоколов, принципов работы с памятью, структурами данных, подходов и принципов проектирования.

C# – отличный язык для корпоративных приложений, но у него есть некоторые недостатки. Поскольку C# является частью .NET Framework, сервер, на котором выполняется приложение, должен иметь Windows. Другими словами, любому приложению .NET требуется платформа Windows для выполнения. Многие новые компании работают с серверами Linux, поскольку это намного более дешевая среда. Вам нужен хостинг Windows для запуска приложения .NET. Microsoft перестает поддерживать старые платформы .NET после нескольких обновлений операционных систем. Например, старые серверы Windows 2000 могут поддерживать только приложения .NET 2.0. Хотя установка старой операционной системы кажется ошибкой, многие корпоративные организации сохраняют старые операционные системы из-за множества проблем, которые может привести к обновлению платформы. Основные обновления серверной архитектуры должны быть протестированы и утверждены перед развертыванием, что увеличивает время и затраты на разработку. Если организация использует рабочие станции и серверы Windows, .NET проще всего интегрировать. C# может использоваться для автоматизации, такой как Windows Services или веб-приложения.

Плюсы C# в целом перевешивают минусы, но тем не менее в качестве языка для разработки программного обеспечения был выбран язык C++, более производительный и портативный [8.].

3.Выбор интегрированной среды разработки для языка высокого уровня

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

Dev-C++ включает в себя следующие возможности:

  • Поддержка компиляторов на основе GCC (включая Mingw);
  • Интегрированная отладка (с GDB);
  • Поддержка нескольких языков (локализация);
  • Класс браузера;
  • Отладка переменной браузера;
  • Завершение кода;
  • Список функций;
  • Менеджер проектов;
  • Настраиваемый редактор подсветки синтаксиса;
  • Быстрое создание Windows-приложения, консольные приложения, статические библиотеки и DLL;
  • Поддержка шаблонов для создания собственных типов проектов;
  • Создание Makefile;
  • Редактирование и компиляция файлов ресурсов;
  • Менеджер инструментов;
  • Менеджер пакетов для легкой установки дополнительных библиотек;
  • Поддержка печати.

Кроме того, Dev-C++ имеет набор меню, которые дают возможность давать имена и сохранять файлы исходного кода, а также компилировать, компоновать, выполнять и отлаживать программы, не покидая окно среды разработки. Если компилятор обнаруживает ошибки, выполняется возврат в программу редактора (при этом указываются ошибочные строки программы и соответствующие сообщения об ошибках). Если программа содержит несколько исходных модулей, в среде разработки создается проект, в котором указываются имена файлов, содержащих исходные модули. Это дает возможность не только компоновать все объектные модули проекта в единый загрузочный модуль, но и автоматически перекомпилировать только те модули проекта, в которых были сделаны изменения. Вызов пунктов меню, переключение окон и выход из среды выполняется таким же образом, как и в других приложениях Windows.

Dev-C++, написанная на языке программирования Delphi для Windows, является легковесной средой разработки, бесплатной и с открытым исходным кодом, которой требуется всего пару минут для установки. Можно сделать вывод о том, что это отличная среда разработки для новичков, которая позволяет легко создавать консольные приложения, но, тем не менее, в силу своей простоты она не предоставляет возможности создавать полнофункциональные программные средства с графическим интерфейсом пользователя без установки дополнительных плагинов или фреймворков.

Microsoft Visual Studio – это современная интегрированная среда, предназначенная для разработки программного обеспечения. Visual Studio включает в себя редактор исходного кода с поддержкой технологии IntelliSense и возможностью простейшего рефакторинга кода [10.]. Встроенный отладчик может работать как отладчик уровня исходного кода, так и отладчик машинного уровня. Присутствует удобный редактор форм для упрощения создания графического интерфейса приложения, веб-редактор, дизайнер классов и дизайнер схемы базы данных. Visual Studio позволяет создавать и подключать сторонние дополнения (плагины) для расширения функциональности практически на каждом уровне, включая добавление поддержки систем контроля версий исходного кода.

Основными преимуществами Visual Studio являются:

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

Главными недостатками среды является ее ориентированность на платформу .NET и тот факт, что точно так же, как и в случае с Windows, лицензия VS для коммерческих продуктов является платной.

Наиболее подходящим вариантом для низкобюджетных проектов остается операционная система Linux. Кроме того, что большинство дистрибутивов этой ОС являются свободно распространяемыми, до сих пор имеется ряд бесплатных средств для разработки ПО для этой системы. Одним из наиболее распространенных средств для программирования на языках C, C++ и QML является кроссплатформенная свободная IDE под названием Qt Creator. Эта среда была разработана Trolltech (Digia) для работы с фреймворком Qt; первоначальное кодовое название – Greenhouse. Qt Creator включает в себя графический интерфейс отладчика и визуальные средства разработки интерфейса как с использованием виджетов QtWidgets (аналог WinForms), так и QML.

Эта интегрированная среда разработки также выглядит слишком ориентированной на Qt и прекрасно интегрируется с экосистемой Qt (Qt Designer, система сборки Qt), в то же время ее возможности ничем не уступают другим средам. Вот лишь некоторые из них:

  • простой и удобный конструктор GUI-форм;
  • кроссплатформенность;
  • поддержка отладки, компиляции, профилирования, автозаполнения кода и рефакторинга;
  • поддержка анализа статического кода;
  • быстрый компилятор Qt;
  • визуализация данных Qt;
  • Qt Quick 2D Renderer;
  • Qt WebView;
  • Qt Virtual Keyboard.

Основная задача Qt Creator – упростить разработку приложения с помощью фреймворка Qt на разных платформах. Поэтому среди возможностей, присущих любой среде разработки, есть и специфичные, такие как отладка приложений на QML и отображение в отладчике данных из контейнеров Qt, встроенный дизайнер интерфейсов: как на QML, так и на QtWidgets.

В Qt Сreator реализовано автодополнение, в том числе ключевых слов, введённых в стандарте C++11 (начиная с версии 2.5), подсветка кода (её определение аналогично таковому в Kate, что позволяет создавать свои виды подсветок или использовать уже готовые). Также, начиная с версии 2.4, есть возможность задания стиля выравнивания, отступов и постановки скобок.

Реализован ряд возможностей при работе с сигнатурами методов, а именно:

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

При навигации по коду доступно переключение между определением и объявлением метода, переход к объявлению метода, переименование метода как в отдельном проекте, так и во всех открытых. Также есть возможность вызвать справку согласно текущему контексту.

Для небольших и средних мультиплатформенных проектов свободно распространяемая среда разработки Qt Creator будет лучшим выбором.

ЗАКЛЮЧЕНИЕ

Итак, языки программирования высокого уровня (ЯВУ) изначально были созданы, чтобы облегчить написание программ и для того, чтобы приблизить описание программы к человеку и предоставить абстракцию, не привязанную к ЭВМ. Сейчас ЯВУ ушли далеко за пределы только описания программ. Например, существуют полуформальные графические языки для описания алгоритмов, дизайна программ, описания вариантов использования и многого другого (имеются ввиду различные блок-схемы и UML). Существует большое число языков программирования на сегодняшний день, причем все они обладают своими особенностями, поддерживают различные парадигмы, имеют свою область применения. Само понятие ЯВУ претерпело со временем множество изменений – для первых языков, таких как COBOL, числа, строки и файлы были существенным уровнем абстракции, теперь же большинство языков снабжены полиморфизмом и абстрактными типами данных. Стоит отметить, что в различных инженерных дисциплинах есть свои формальные языки, но в области программирования их выбор существенно больше и разнообразнее, и этот выбор не ограничен какими-либо стандартами, государственными или отраслевыми [4.].

В работе были рассмотрены языки программирования Си, C++, C# и некоторые среды разработки программ. Для разработки программного обеспечения был выбран язык программирования C++ со средой разработки Qt Creator, обеспечивающей быструю многоуровневую разработку, кроссплатформенность, использование в мобильных платформах, переносимость на уровне исходного кода и обладающей хорошей документацией.

При выборе языка для разработки программных средств большое внимание уделяется мультипарадигменности. Одним из таких языков, поддерживающих несколько парадигм (технологий) программирования, является высокоуровневый язык общего назначения C++. Он может использоваться как для начальных шагов в программировании, так и для решения серьезных научных задач.

В большинстве высших учебных заведениях по всему миру C++ постепенно становится первым языком при изучении программирования. Это один из самых популярных языков в промышленном программировании, который отлично подходит не только для решения школьных задач из курса информатики, но и для выполнения проектов по самым разным тематикам: обработка данных и визуализация, машинное обучение, разработка игр, написание программ для автоматизации различных процессов и т.п. Также язык характеризуется наличием большого количества обучающих материалов. Все это позволяет его использовать в качестве основного средства не только при обучении программированию, но и для написания промышленных программ.

Таким образом, все поставленные в курсовой работе цели были выполнены в полном объеме.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

  1. Вирт Н. Алгоритмы и структуры данных. Новая версия для Оберона + CD / Н. Вирт; пер. Д. Б. Подшивалов. - 2-е изд., испр. - М.: ДМК Пресс, 2012. - 272 с.
  2. Давыдов В.Г. Visual С++. Разработка Windows-приложений с помощью MFS и API функций / В.Г. Давыдов – СПб.: БХВ – Петербург, 2008. – 576 с.
  3. Демидович Е.М. Основы алгоритмизации и программирования. Язык Си, учебное пособие / Е. М. Демидович. - 2-е изд., испр. и доп. - СПб.: БХВ - Петербург, 2008. - 440 с.
  4. Ключарев А.А., Матьяш В.А., Щекин С.В. Структуры и алгоритмы обработки данных: Учебное пособие / СПбГУАП. СПб., 2004.
  5. Кнут Д. Искусство программирования // The art of computer programming: [в 3 т.]. Т.1. Основные алгоритмы / Д. Кнут; ред. Ю. В. Козаченко. - 3-е изд. - М.: Вильямс, 2014. - 720 с.
  6. Колдаев В.Д. Основы алгоритмизации и программирования: Учебное пособие / В. Д. Колдаев под ред. проф. Л.Г. Гагариной - М.: ИД ФОРУМ, НИЦ ИНФРА-М, 2016. - 416 с.
  7. Оберг Р.Д., Торстейнсон П. Архитектура .NET и программирование с помощью Visual C++ / Р.Д. Оберг, П. Торстейнсон пер.с англ. М.:Издательский дом "Вильям", 2002. - 656 с.
  8. Страуструп Б. Язык программирования C++: специальное издание / Б. Страуструп; пер.: С. Анисимов, М. Кононов; ред.: Ф. Андреев, А. Ушаков. - [Б. м.]: Бином-Пресс, 2008. - 1098 с.
  9. Шилдт Г. Полный справочник по С#, 4-ое издание / Г. Шилдт пер. с англ. – М.: Издательский дом «Вильямс», 2015. – 704 с.
  10. Документация по семейству продуктов Visual Studio [Электронный ресурс] / URL: https://docs.microsoft.com/ru-ru/visualstudio/?view=vs-2019 (дата обращения – 13.05.2020).
  11. Advantages and Disadvantages of C++ [Электронный ресурс] / URL: https://data-flair.training/blogs/advantages-and-disadvantages-of-cpp/ (дата обращения: 13.05.2020)
  12. Index | TIOBE [Электронный ресурс] / URL: https://www.tiobe.com/tiobe-index/ (дата обращения: 13.05.2020)