Файл: История возникновения и развития языка программирования Си (С++) и Java (ИССЛЕДОВАНИЕ ПРЕДМЕТНОЙ ОБЛАСТИ).pdf
Добавлен: 31.03.2023
Просмотров: 125
Скачиваний: 1
В ранние годы C был разработан с учетом UNIX. C использовался для выполнения задач и управления UNIX системой. Сохранив производительность многие компоненты UNIX были переписаны на язык C с языка ассемблер. Например, ядро UNIX было переписано в 1973 году на DEC PDP-11.
Ритчи и Керниган задокументировали их новый язык в виде книги под названием «Язык программирования C». Хотя Керниган утверждал, что не играл роли в создании C, он был автором знаменитой программы «Hello World» и многих других программ UNIX. [14, 16]
Со временем C начал использоваться в персональных компьютерах для разработки приложений и других целей.
Первое изменение произошло, когда Американский национальный институт стандартов (ANSI) сформировал комитет в 1983 году для стандартизации C. После обзора языка они немного изменили его, чтобы он был также совместим с другими программами, которые были до C. Таким образом, новый стандарт ANSI появился в 1989 году и известен как ANSI C или C89. Международная организация по стандартизации (ISO) также способствовали стандартизации C. [3]
Со временем C развился, так как он добавил в свой богатый набор некоторые важные опции, такие как управление памятью, функции, классы и библиотеки. C используется в разработке многих крупнейших проектов в мире. C также повлиял на развитие множества языков, таких как AMPL, AWK, C ++, C--, C#, Objective-C , Bit C, D, Go, Java, JavaScript , Julia, Limbo, LPC, Perl, PHP, Pike, Processing, Python , Rust, Seed7 и Verilog. [14, 16, 17]
За появление Microsoft Windows нужно поблагодарить язык C, потому что разработан Windows в основном на C. То же самое касается MacOS, Linux, Android, iOS и Windows Phone, потому что почти все современные операционные системы основаны на C. Он также широко используется во встроенных системах, такие как датчики в автомобилях, интеллектуальные мониторы и бесчисленные интернет-устройства (интернет вещей).
Некоторые из проектов, которые разрабатываются на С:
- разработка компиляторов;
- баз данных;
- компьютерные и мобильные игры;
- обновление ядра UNIX;
- оценка математических уравнений;
- проектирование сетевых устройств.
Подобно большинству величайших изобретений в мире, C родился при возникновении необходимости. Обстоятельства и проблемы послужили источником вдохновения. Однако, в отличие от многих языков программирования, которые теперь вымерли или почти вымерли, C выдержал испытание временем и всё время процветал. Некоторые языки теперь классифицируются как нишевые языки, например, Fortran теперь в основном используется только для инженерных целей, а COBOL изо всех сил пытается оставаться актуальным.
C не только остался актуальным, но и послужил источником вдохновения для развития многих других языков программирования. Даже мощные технологические новшества, такие как IoT, искусственный интеллект и автоматизация, не смогли выбить C из своего положения.
2.3 История развития языка С++
C++ — это язык объектно-ориентированного программирования общего назначения (OOP), является расширением языка C. Это даёт возможность программировать на C++ в стиле «C» или же в «объектно-ориентированном стиле». В некоторых случаях он может использовать оба варианта, что показывает эффективным примером гибридного языка. [6, 16]
C++ считается языком промежуточного уровня, поскольку он инкапсулирует как языковые функции высокого, так и низкого уровня. Первоначально язык назывался «C с классами», так как он обладал всеми свойствами языка C с дополнительным понятием «классы». Однако в 1983 году он был переименован в C++.
C++ — один из самых популярных языков, в основном используется в системном и прикладном программном обеспечении, при написании драйверов, и при разработке клиент-серверных приложений. [7]
Основная особенность языка C++ в наборе шаблонных классов, в которых имеются самые часто используемые алгоритмы и контейнеры. Они уже написаны и могут много раз использоваться разработчиками при написании своих программ. Язык также облегчает объявление пользовательских классов. Классы используют функции для реализации определенных требований. Можно создавать множество объектов класса, у которых будут все свойства определенные для данной сущности. Объекты могут быть определены как экземпляры, и созданы прямо во время выполнения. Эти классы также могут быть унаследованы другими новыми классами, которые по умолчанию используют публичные свойства своих предков и реализует их в своих объектах. [17]
C++ включает в себя большое количество операторов, таких как:
- арифметически операторы;
- операторы сравнения;
- операторы составного присваивания;
- побитовые операторы;
- логические операторы;
- операторы работы с указателями и членами класса.
Одной из наиболее привлекательных особенностей C++ является то, что он позволяет перегружать определенные операторы.
К основным концепциям С++ относятся полиморфизм, инкапсуляция и наследование. Они вместе составляют основную концепцию объектно-ориентированного программирования. [17]
C++ является одним из самых популярных языков программирования и работает на самых разных платформах оборудования и операционных систем. В качестве эффективного компилятора для собственного кода он реализует себя в таких областях, как системное программное обеспечение, прикладное программное обеспечение, драйверы устройств, встроенное программное обеспечение, высокопроизводительные серверные и клиентские приложения и развлекательное программное обеспечение, такие как видеоигры. Несколько групп разработчиков предоставляют как бесплатное, так и проприетарное программное обеспечение для компилятора C++, включая GNU Project, LLVM, Microsoft и Intel.
C++ сильно повлиял на многие другие популярные языки программирования, в первую очередь на C # и Java. [3, 16]
Язык программирования C++ имеет историю, восходящую к 1979 году, когда Бьёрн Страуструп работал над своей кандидатской диссертацией. Одним из языков, который был создан Страуструпом, был язык под названием «Simula», который, как следует из названия, является языком, в основном предназначенным для моделирования. Язык Simula 67, который был вариантом, с которым работал Страуструп, рассматривается как первый язык для поддержки парадигмы объектно-ориентированного программирования. Страуструп обнаружил, что эта парадигма очень полезна для разработки программного обеспечения, однако язык Simula был слишком медленным для практического использования. [12, 14]
Вскоре после этого он начал работу над языком «C с классами», которая, как следует из названия, должна была быть надмножеством языка C. Его целью было добавить объектно-ориентированное программирование в язык C, который был языком, активно используемым из-за его возможности быть переносимым, не теряя при этом скорости или функциональности. Его язык включал в себя классы, базовое наследование, аргументы функций по умолчанию и строгую проверку типов в дополнение ко всем функциям языка C.
Первый компилятор C с классами был назван Cfront, который был получен из компилятора C под названием CPre. Это была программа, предназначенная для перевода C с кодом Classes на обычный C. Интересным моментом, является то, что Cfront был написан в основном на C с классами, что делает его компилятором для самостоятельной компиляции (компилятор, который может скомпилировать себя). Позднее Cfront будет оставлен в 1993 году после того, как стало сложно интегрировать в него новые функции, а именно исключения C++. Тем не менее, Cfront оказал огромное влияние на реализации будущих компиляторов и операционной системы Unix. [17]
В 1983 году название языка было изменено с C с классами на C++. Оператор ++ на языке C является оператором для увеличения переменной, что дает некоторое представление о том, как Страуструп рассматривал этот язык. В это время было добавлено много новых функций, наиболее заметными из которых являются виртуальные функции, перегрузка функций, ссылки на символ &, ключевое слово const и однострочные комментарии с использованием двух косых черт (что является опцией, взятой из языка BCPL).
В 1985 году труд Страуструпа под названием «Язык программирования C++» был опубликован. В том же году C++ был переведен в ранг коммерческого продукта. Язык еще не был официально стандартизован, что делало книгу очень важным трудом. Язык был обновлен снова в 1989 году, чтобы включить защищенные и статические члены, а также наследование из нескольких классов. [14]
В 1990 году было выпущено справочное руководство Annotated C++. В том же году компилятор Borland Turbo C++ будет выпущен как коммерческий продукт. Turbo C++ добавил множество дополнительных библиотек, которые существенно повлияли на разработку C++. Хотя последний стабильный выпуск Turbo C ++ был в 2006 году, компилятор по-прежнему широко используется. [17]
В 1998 году Комитет по стандартам С++ опубликовал первый международный стандарт для C++ ISO/IEC 14882:1998, который стал неофициально известен под именем C++98. Было упомянуто, что справочное руководство Annotated C++ оказывает большое влияние на разработку стандарта. Также была включена Библиотека стандартных шаблонов, которая начала свою концептуальную разработку в 1979 году. В 2003 году комитет ответил на многочисленные жалобы, о которых сообщалось, со своим стандартом 1998 года, и соответствующим образом пересмотрел его. Измененный язык был назван C++ 03. [10, 17]
В 2005 году комитет по стандартам C++ опубликовал технический отчет (получивший название TR1), в котором подробно описаны различные функции, которые они планировали добавить к последнему стандарту C++. Новый стандарт был неофициально назван C++ 0x, поскольку ожидалось, что он будет выпущен до конца первого десятилетия. Как ни странно, однако, новый стандарт не был выпущен до середины 2011 года. Несколько технических отчетов были выпущены до тех пор, и некоторые компиляторы начали добавлять экспериментальную поддержку для новых функций. [16]
В середине 2011 года был закончен новый стандарт C++ (получивший название C++ 11). Проект библиотеки Boost оказали значительное влияние на новый стандарт, а некоторые из новых модулей были получены непосредственно из соответствующих библиотек Boost. Некоторые из новых функций включают поддержку регулярных выражений, полную библиотеку рандомизации, новую библиотеку для работы со временем C++, поддержку атомизации, стандартную библиотеку потоков (которая до 2011 года отсутствовала как на C, так и на C++), новый синтаксис цикла, обеспечивающий функциональность, подобную циклам foreach в некоторых других языках, ключевое слово auto, новые классы контейнеров, лучшую поддержку объединений и списки инициализации массивов, и вариативные шаблоны. [6]
В 2012 году был основан Фонд стандарта С++, а в 2014 году было выпущено 4-ое издание главной книги о языке С++.
В 2014 году были опубликованы новые новшества языка. Обновления касались появления новых переменных шаблонов, бинарные литералы, вывод типа, возвращающего значение для функций.
Новые возможности библиотеки: std и многие небольшие улучшения в существующих библиотечных средствах, такие как двух диапазонные перегрузки для некоторых алгоритмов, типы псевдонимов, типы признаков типа, определяемые пользователем строки, длительность и литералы сложных чисел и т.д. [8, 16]
В 2015 году появился TS. Этот TS является экспериментальным расширением библиотеки C++, которое указывает библиотеку файловой системы на основе boost.filesystem V3 (с некоторыми изменениями и расширениями). Этот TS был объединен с C++17.
Это TS стандартизирует параллельный интерфейс для всех стандартных алгоритмов библиотеки, а также добавляет новые алгоритмы, такие как reduce, transform_reduce и exclusive_scan. [17]
2.4 Перспективы развития языка C++
Дискуссии о текущем положении C++ в мире программирования, как правило, делят участников на два фронта: одни специалисты, считают, что язык скоро исчезнет; другие же наоборот утверждают, что на C++ ещё будет долго использоваться. В данный момент C++ находится в «подвешенном» состоянии, в котором он был, например, между выходами стандартов C++03 и C++11.
Может быть C++ не настолько популярен в плане изучения начинающими программистами, как C# или Java, может быть под него не затачиваются новые технологии, выпускаемые корпорациями-гигантами, может быть он не продвигается теми же Microsoft и Oracle, но несмотря на всё это, он ещё активно используется, и будет в трендах ещё долгое время. Программное обеспечение, написанное с использованием C++, никуда не делось и требует поддержки. Новое ПО, например, игровые движки, также вовсю использует C++, а стандарты C++11, C++14 и C++17 только подтверждают, что дела у этого языка программирования идут неплохо. [23]
Как упоминалось ранее, между стандартами C++11 и C++03 язык находился в своеобразном «подвешенном» состоянии. Вроде бы развивались и дополнялась такие библиотеки, как boost, Qt и прочие, появился C++/CLI, а нового официального стандарта всё не было и не было. [9, 13]
Так продолжалось достаточно долго, да и стандарт C++11, планировавшийся к публикации в 2009 году, вышел только двумя годами позже. Но тем не менее вышел. И не просто вышел, а принёс собой множество дополнений, расширений и «синтаксического сахара». Писать с использованием нового стандарта стало проще и удобнее, в стандартную библиотеку было добавлено множество средств, облегчающих программистам жизнь. Была введена официальная поддержка параллельного программирования, что немаловажно, списки инициализации, призванные сделать код понятнее, лямбда-функции и т.д.
Но что не менее важно — тенденция не потеряна и на горизонте уже виднеются заготовки для нового стандарта.
Несомненно, пройдёт некоторое время, прежде чем программисты познают все прелести новых стандартов и научатся грамотно применять нововведения. Тем не менее, эти нововведения должны положительно сказаться на качестве кода и программного обеспечения. [12, 18]