Файл: ИСТОРИЯ ВОЗНИКНОВЕНИЯ И РАЗВИТИЯ ЯЗЫКА С, С++ и Java (ЯЗЫКИ ПРОГРАММИРОВАНИЯ C, C++, Java).pdf
Добавлен: 30.03.2023
Просмотров: 146
Скачиваний: 1
ВВЕДЕНИЕ
В современных реалиях сложно переоценить значимость вопроса развития информационных технологий, в свою очередь в стеке средств программного обеспечения (Software), языки программирования занимают особую роль. На протяжении всей истории вычислительной техники изучаются, разрабатываются и внедряются новые, а также развиваются существующие языки программирования. Данный вопрос представляет интерес для всех, кто так или иначе вовлечен в процесс использования, создания или обслуживания информационных систем.
Существует огромное количество языков программирования различных типов: процедурные, функциональные, логические, объектно-ориентированные, скриптовые. Они могут иметь различные виды типизации, синтаксиса, и областей использования. Выполняться в собственной среде, интерпретироваться или компилироваться.
Цель данной работы, рассмотреть вопросы развития языков программирования, историю возникновения и современное представление таких языков общего назначения как С, С++ и Java, а также показать на примере способы проектирования и реализации программ на этих языках. Данные языки, безусловно, являются одними из самых распространенных, и непременно входят в десятку самых востребованных языков современности. Согласно индексу TIOBE, который оценивает популярность языков программирования по количеству поисковых запросов в сети интернет, первые строчки уже более 20 лет неизменно занимают языки С, С++, Java.[1]
Также, согласно статистическим данным, этого же источника, на сегодняшний день ситуация остается неизменной:
Далее, в первой главе, коротко рассматривается общая информация о языках и значимые факты истории их развития. Во второй главе описана практическая работа, выполненная средствами языка С++, в которой наглядно демонстрируются возможности, и области применения современных стандартов языка и мощность средств программирования и фреймворков.
ГЛАВА 1. ЯЗЫКИ ПРОГРАММИРОВАНИЯ C, C++, Java
Язык программирования С
Язык C — это универсальный, компилируемый статически типизированный язык программирования общего назначения, разработанный в 1969—1973 годах сотрудником Bell Labs Деннисом Ритчи как развитие языка B. Для С характерны экономичность выражения, современный поток управления и структуры данных, богатый набор операторов. Отсутствие ограничений и общность языка делают его удобным и эффективным для многих задач. Согласно дизайну языка, его конструкции близко сопоставляются типичным машинным инструкциям, благодаря чему он нашёл применение в проектах, для которых был свойственен язык ассемблера, в том числе в операционных системах и в различном прикладном программном обеспечении для множества устройств. Язык программирования С оказал существенное влияние на развитие индустрии программного обеспечения, а его синтаксис стал основой для таких языков программирования, как C++, C#, Java и Objective-C. [2]
Создание языка С непосредственно связано с языком ALGOL, который был создан в 1958 году, в противовес языку FORTRAN, которые имел ряд определенных недостатков в своей структуре. В свою очередь Математическая лаборатория Кембриджского Университета совместно с Компьютерным отделом Лондонского университета, почерпнули немало идей из ALGOL-60, и создали в 1963 году язык CPL (Combined Programming Language).
Однако CPL посчитали сложным, и в в 1966 году Мартином Ричардсоном был создан язык BCPL, который изначально создавался для написания компиляторов. На момент создания, в связи с возможностью портировать язык на разные платформы, он играл важную роль в индустрии. BCPL послужил прародителем для языка B, разработанного в 1969 году, который был использован для написания самых ранних версий UNIX. Именно этот язык послужил непосредственным предшественником языка С.
В дальнейшем, история языка С неразрывно связана с операционной системой "UNIX". Он является ключевым языком данной системы, на нем было переписано ее ядро, и создано большое количество программного обеспечения. Это низкоуровневый язык, с возможностью управления памятью и простым, но достаточным набором синтаксических конструкций. Язык C является одним из наиболее распространённых языков и прародителем многих современных языков программирования.
В языке C изначально отсутствуют операции, имеющие дело непосредственно с составными объектами, такими как строки символов, множества, списки или с массивами, рассматриваемыми как целое. Язык не предоставляет никаких других возможностей распределения памяти, кроме статического определения и механизма стеков, обеспечиваемого локальными переменными функций. Также в С отсутствует “сборка мусора”, возможности ввода-вывода, и нет никаких встроенных методов доступа к файлам. Все эти механизмы высокого уровня должны обеспечиваться явно вызываемыми функциями. Отсутствие многих из этих возможностей было продиктовано желанием создателей сохранить небольшой размер языка, что дает определенные преимущества. Так как "C" относительно мал, он не требует много места для своего описания и может быть быстро выучен. Компилятор может быть простым и компактным, что позволяет реализовать его в короткие сроки, например для новых систем. Это обеспечивает высокую степень мобильности языка.[3]
С течением времени, язык развивался и в стандарте С99 он получил новые возможности, из которых в качестве наиболее значимых можно отметить массивы переменной длины и встраиваемые функции. А в стандарте C11 в язык добавили реализацию потоков и поддержку атомарных типов.[4]
История и особенности языка С++
C++ — компилируемый, статически типизированный язык программирования общего назначения. Он поддерживает такие парадигмы программирования как процедурное программирование, объектно-ориентированное программирование, обобщённое программирование, обеспечивает модульность, раздельную компиляцию, обработку исключений, абстракцию данных, объявление типов (классов) объектов и виртуальные функции. В С++ реализована поддержка объектно-ориентированного и обобщённого программирования, чего не хватало по мнению создателя языку С, широко распространённому в то время.
C++ широко используется для разработки программного обеспечения, а также применяется для создания операционных систем, прикладных программ, драйверов устройств, и приложений для встраиваемых систем, высокопроизводительных серверов, а также развлекательных приложений. Существует множество реализаций языка C++, как бесплатных, так и коммерческих, для различных платформ.
Язык С++ является одним из наиболее широко распространенных языков программирования. Программы, написанные на языке С++, можно встретить всюду и на дне океана, и на поверхности Марса. Кроме того, существует точный и полный общедоступный международный стандарт языка С++, не защищенный правом собственности. Качественные и/или бесплатные реализации этого языка доступны для любых компьютеров. Большинство концепций программирования языка С++, можно непосредственно использовать и в других языках таких как С, С#, Fortran и Java.[5]
Язык программирования С++ был создан в начале 1980-х годов, сотрудником фирмы Bell Laboratories — Бьёрном Страуструпом. Он придумал ряд усовершенствований к языку программирования C, для собственных нужд. Т. е. изначально не планировалось создания языка программирования С++. Ранние версии языка С++, известные под именем «Cи с классами», начали появляться с 1980 года. Страуструп добавил возможность работы с классами и объектами к языку С. Язык Simula также называется среди основных источников идеи для реализации объектно-ориентированных возможностей языка C++, самим автором. Очевидно, самой важной чертой C with Classes, а позже и C++ была концепция класса. Синтаксис C++ был основан на синтаксисе C, так как Бьёрн Страуструп стремился сохранить совместимость с с этим языком.
Основной целью, по словам автора языка, было спроектировать язык достаточно простой для понимания, чтобы привлечь пользователей, и довольно простой в реализации, чтобы заинтересовать разработчиков компиляторов. С другой стороны, относительно несложная реализация должна была генерировать код, который не уступал бы C в корректности, скорости и величине. Пользователь, незнакомый с языком на практике и находясь в не очень «дружелюбной» среде разработки, тем не менее должен суметь воспользоваться компилятором в реальных проектах.[6] В 1998 году был ратифицирован международный стандарт языка C++: ISO/IEC 14882:1998 «Standard for the C++ Programming Language», а после принятия технических исправлений к стандарту в 2003 году — следующая версия этого стандарта — ISO/IEC 14882:2003.[7]
C++ добавляет к C объектно-ориентированные возможности. Он вводит классы, которые обеспечивают три самых важных свойства ООП: инкапсуляцию, наследование и полиморфизм.
Язык программирования Java
На сегодняшний момент язык Java является одним из самых распространенных и популярных языков программирования. Первая версия языка появилась еще в 1996 году. Java задумывался как универсальный язык программирования, который можно применять для различного рода задач. Это сильно типизированный объектно-ориентированный язык программирования, разработанный компанией Sun Microsystems. Одно из основных преимуществ языка Java — независимость от платформы, на которой выполняются программы, т.е. один и тот же код можно запускать под управлением операционных систем Windows, Solaris, Linux, Machintosh и др. Это действительно необходимо, когда программы загружаются через Интернет для последующего выполнения под управлением разных операционных систем. Другое преимущество заключается в том, что синтаксис языка Java похож на синтаксис языка C++, и программистам, знающим языки C и С++, его изучение не составляет труда.[8]
Для создателей языка было принципиально важно иметь возможность разрабатывать программы, не содержащие ошибок, на языке Java легче, чем на языке С++. Они снабдили язык Java средствами, позволяющими исключить саму возможность создавать программы, в которых были бы скрыты наиболее распространенные ошибки, характерные для прародителей, языков С и С++. Для этого в языке Java сделано следующее:
• Исключена возможность явного выделения и освобождения памяти. Память в языке Java освобождается автоматически с помощью механизма сборки мусора. Программист гарантирован от ошибок, связанных с неправильным использованием памяти.
• Введены истинные массивы и запрещена арифметика указателей.
Теперь программисты в принципе не могут стереть данные из памяти вследствие неправильного использования указателей.
• Исключена возможность перепутать оператор присваивания с оператором сравнения на равенство.
• Исключено множественное наследование. Оно заменено новым понятием — интерфейсом, позаимствованным из языка Objective C. Интерфейс дает программисту почти все, что тот может получить от множественного наследования, избегая при этом сложностей, возникающих при управлении иерархиями классов. [9]
Платформа Java — это программное обеспечение, предоставляющее нам среду
времени исполнения. Это виртуальная машина Java (JVM), линкующая и выполняющая код в том виде, в каком он ей предоставляется. Код предоставляется в виде файлов классов, непригодных для чтения человеком. Иными словами, машина не интерпретирует непосредственно файлы с исходным кодом на языке Java, а требует предварительного преобразования этого кода в файлы классов.
Одна из основных причин успеха Java как системы ПО заключается в ее стандартизации. Java имеет спецификации, описывающие как должна работать платформа. Стандартизация позволяет различным производителям и участникам разнообразных проектов создавать реализации, которые теоретически должны работать одинаково. Такие спецификации не гарантируют, насколько высока будет производительность конкретной реализации одной конкретной задачи, но вполне гарантируют правильность результатов. В связи с чем Java широко используется для написания различного ПО во всех сферах деятельности, где присутствуют информационные системы и требования надежности выходят на первый план. [10]
ГЛАВА 2. РАЗРАБОТКА КОМПОНЕНТА ПРИЛОЖЕНИЯ НА ЯЗЫКЕ С++
2.1 Планирование разработки
В этой главе рассматривается практическое применение современного стандарта языка С++ на примере реализации задачи в среде Unreal Engine 4 (v4.20.3) с использованием API игрового движка и встроенных средств разработки и визуализации.
В общем виде проект представляет собой компонентный модуль приложения (игры), в жанре стратегии в реальном времени. Проект реализуется на игровом движке с открытым исходным кодом Unreal Engine 4 (далее по тексту UE4), который написан на языке C++, и удовлетворяет потребности профессионалов в области архитектуры, визуализации дизайна, дизайна продуктов, производства, приложений для сферы развлечений и игр. UE4 позволяет разрабатывать приложения под разные платформы, включая Windows PC, PlayStation 4, Xbox One, Mac OS X, iOS, Android, AR, VR, Linux, SteamOS, HTML5.[11]
Основные средства разработки, которые я использовал в работе - это Unreal Studio, которая является непосредственно средой разработки UE4, и Visual Studio 2017 Community, для написания кода на языке C++. Для остальных целей я выбрал онлайн инструмент для проектирования диаграмм Lucid Chart [12], систему контроля версий Git для отслеживания изменений в проекте, терминал GitBash для операционной системы Windows 10, а также приложение ResilioSync для синхронизации больших пакетов с ассетами графики, звука, материалов и т.д. Все выбранные мной средства являются условно бесплатными и позволяют реализовать задачу в полной мере.