Кто был создателем языка C++?
C++
Выбор именно C в качестве базы для создания нового языка программирования объясняется тем, что язык C:Несмотря на ряд известных недостатков языка C, Страуструп пошёл на его использование в качестве основы, так как «в C есть свои проблемы, но их имел бы и разработанный с нуля язык, а проблемы C нам известны». Кроме того, это позволило быстро получить прототип компилятора (), который лишь выполнял трансляцию добавленных синтаксических элементов в оригинальный язык C.
Microsoft Visual C++
Microsoft Visual C++ (MSVC) — интегрированная среда разработки приложений на языке C++, разработанная корпорацией Microsoft и поставляемая либо как часть комплекта Microsoft Visual Studio, либо отдельно в виде бесплатного функционально ограниченного комплекта Visual C++ Express Edition. Сменила интегрированную среду разработки Microsoft QuickC.
Google C++ Testing Framework
Google C++ Testing Framework (Google Test) — библиотека для модульного тестирования () на языке С++. Исходные тексты открыты с середины 2008 года под лицензией BSD. Документация частично переведена на русский язык.
Dev-C++
Проект поддерживается SourceForge. Основатель проекта Колин Лаплас, компания Bloodshed Software. Одно время был доступен Linux-порт, однако на сегодня актуализирована только Windows-версия. В настоящее время оригинальный Dev-C++ не разрабатывается.
Eiffel
Компиляторы с Eiffel от автора языка дороги и не так распространены, как компиляторы C/C++, что, в своё время, и ограничило распространение этого языка, свободных/бесплатных альтернатив долгое время не было.
Встраиваемый C++
Embedded C ++ ( EC ++ ) - это диалект языка программирования C++ для встраиваемых систем. Он был определен отраслевой группой, во главе с основными японскими производителями центральных процессоров (ЦП), включая NEC, Hitachi , Fujitsu и Toshiba, для устранения недостатков C++ для встроенных приложений. Целью работы является сохранение наиболее полезных объектно-ориентированных возможностей языка C++ с одновременным минимизацией размера кода при максимальной эффективности выполнения и упрощении построения компилятора. Официальный веб-сайт заявляет о своей цели: «предоставить программистам встроенных систем подмножество C++, которое среднему программисту C легко понять и использовать».
Список программистов
Страуструп, Бьёрн - автор языка программирования C++
C++
C++ содержит средства разработки программ контролируемой эффективности для широкого спектра задач, от низкоуровневых утилит и драйверов до весьма сложных программных комплексов. В частности:К числу обычно упоминаемых недостатков языка можно отнести:
Степанов, Александр Александрович (учёный)
В 1988 году перешёл в HP Labs, где первоначально работал над вещами, не связанными с обобщённым программированием: системами хранения данных, дисковыми контроллерами. В 1992 году вернулся к работе над алгоритмами, в конце 1993 года рассказал о своих идеях Энди Кёнигу, который, высоко оценив их, организовал ему встречу с членами Комитета ANSI/ISO по стандарту C++. Уже весной 1994 года библиотека STL, разработанная Степановым, при помощи стала частью официального стандарта языка C++.
C++ AMP
C++ Accelerated Massive Parallelism (сокращенно C++ AMP) — библиотека, использующая DirectX 11, и открытая спецификация, созданные Microsoft для реализации параллельных программ для гибридных систем на языке C++. Система C++AMP позволяет переносить вычисления на GPU (видеоускорители) без внесения большого количества изменений в программы. Код, который не может запуститься на GPU, например, из-за своей сложности, будет автоматически запущен на центральном процессоре с применением SIMD (SSE) инструкций. Реализация системы от Microsoft (единственная на настоящий момент) включена в Visual Studio 2012 и включает в себя отладчик и профилировщик. Поддержку других платформ и оборудования могли бы реализовать компания Microsoft или другие в будущем.
C++
Непрерывная эволюция языка побуждает (а порой вынуждает) программистов раз за разом изменять уже отлаженный код — это не только удорожает разработку, но и несёт риск внедрения в отлаженный код новых ошибок. В частности, хотя изначально обратная совместимость с Си была одним из базовых принципов C++, с 1999 года Си перестал быть подмножеством C++, так что отлаженный код на Си уже не может использоваться в проекте на C++ без изменений.
Симула
Тем не менее, этот язык активно использовался в образовательном процессе в высших учебных заведениях, особенно в Скандинавии. О влиянии достоинств и недостатков Симулы на разработку им C++ пишет Страуструп в начале своей книги «Дизайн и эволюция C++».
C++
Объектная модель C++, унаследованная от Симулы и дополненная двумя формами множественного наследования (простой и виртуальной), имеет не только объективные проблемы, но и опасную идеологию. По словам создателя Smalltalk Алана Кэя, объектная модель «Алгол с классами» обладает худшими характеристиками качества, чем модель «всё — объект», и в этом смысле C++ уступает своему ближайшему конкуренту Objective-C: показатель повторного использования кода оказывается крайне низким (см. раздел Полиморфизм); рефлексивное метапрограммирование — невозможным; показатели понимаемости, модифицируемости и тестируемости — слабыми (см. раздел Отсутствие возможностей). Реализация указателей на методы классов не стандартизирована, и их размер в различных компиляторах варьируется от диапазоне 4 до 20 байт, что значительно снижает портируемость программ с их использованием.
Мультиметод
В своей книге "Дизайн и эволюция C++" (англ. The Design and Evolution of C++) Страуструп упоминает, что ему нравится концепция мультиметодов и что он рассматривал возможность их реализации в C++, но утверждает, что ему не удалось найти пример эффективной (в сравнении с виртуальными функциями) их реализации и решить некоторые возможные проблемы неоднозначности типов. Он далее утверждает, что, хотя было бы хорошо реализовать поддержку этой концепции, она может быть приближенно реализована двойной диспетчеризацией или таблицей поиска на основе типов, как описано в примере на C/C++ выше, поэтому эта задача имеет низкий приоритет при разработке будущих версий языка.
Страуструп, Бьёрн
Бьёрн Страуструп разработал язык программирования C++.
Дизайн и эволюция C++
«Дизайн и эволюция C++» (, D&E) — книга Бьёрна Страуструпа, описывающая создание C++. Была переведена как минимум на 6 языков.
Doxygen
Автором программы является голландец Димитри ван Хееш (Dimitri van Heesch). Во время работы в Quasar Technologies (впоследствии Trolltech и Qt Software) он занимался созданием системы документирования исходного кода для программистов — qDoc. Данная система была написана на интерпретируемых языках. После ухода из Trolltech основал собственный проект — Doxygen, написанный уже на С++ и учитывающий недочёты qDoc. На сегодняшний день Doxygen поддерживает несколько меток (ключей) системы qDoc для совместимости.
Степанов, Александр Александрович (учёный)
Алекса́ндр Алекса́ндрович Степа́нов () — русско-американский учёный в области информатики и вычислительной техники. Был топ-менеджером компаний SGI, AT&T и Compaq. Наиболее известен как создатель STL (), ставшей частью стандартной библиотеки языка C++.
Common Intermediate Language
Все компиляторы, поддерживающие платформу .NET, должны транслировать код с языков высокого уровня платформы .NET на язык CIL. В частности, код на языке CIL генерируют все компиляторы .NET фирмы «Microsoft», входящие в среду разработки «Microsoft Visual Studio» (C#, Managed C++, Visual Basic .NET, Visual J# .NET).
Visual J++
Visual J++ — реализация языка Java и среды разработки для него от компании Microsoft. Компания Microsoft прекратила развитие языка в январе 2004 года, критические обновления прекращены в 2007 году. Последней версией среды разработки с языком Visual J++ являлась Visual Studio 6.0.
Active Template Library
Active Template Library (ATL) — набор шаблонных классов языка C++, разработанных компанией Microsoft для упрощения написания COM-компонентов. Эта библиотека позволяет разработчикам создавать различные объекты COM, серверы автоматизации OLE и управляющие элементы ActiveX. Среда разработки Visual Studio включает мастера и помощники для ATL, позволяющие создать первичную объектную структуру практически без программирования вручную.
C++
В стандарте C++ под классом (class) подразумевается пользовательский тип, объявленный с использованием одного из ключевых слов codice_47, codice_48 или codice_49, под структурой (structure) подразумевается класс, определённый через ключевое слово struct, и под объединением (union) подразумевается класс, определённый через ключевое слово union.
Страуструп, Бьёрн
Бьёрн Страуструп (, род. (Орхус, Дания)) — программист, автор языка программирования C++.
Брайт, Уолтер
Уолтер Брайт () — программист, известный как главный разработчик первого «родного» компилятора C++ "Zortech C++" (позже ставшего "Symantec C++", а затем "Digital Mars C++") и создатель языка D. Владеет компанией Digital Mars.
Object Windows Library
Интернет-сообщество открытого программного обеспечения разработало серию исправлений и улучшений оригинальной OWL под названием «OWLNext», для современных компиляторов C++: (BC++ Builder 5, BCC55, BC++ Builder 6, GCC, MSVC++ 6, MSVC 2003, MSVC 2005, BDS C++ 2006, CodeGear C++ 2007).
Майерс, Скотт
Скотт Дуглас Майерс () — эксперт по языку программирования C++, консультант по разработке программного обеспечения и автор серии книг «Эффективное использование C++». Он получил степень бакалавра по биологии и магистра по вычислительной технике в Стэнфордском университете и степень доктора компьютерных наук в Брауновском университете (1985). Скотт Майерс является постоянным автором в «The С/С++ Users Journal».
В 2009 году он получил премию «Dr. Dobb’s Excellence in Programming Award», как человек внесший значительный вклад в развитие программного обеспечения в духе новаторства и сотрудничества.
Си (язык программирования)
Изначально C++ сохранял совместимость с Си, которая была заявлена как одно из преимуществ нового языка. Первые реализации C++ просто переводили новые конструкции в чистый Си, после чего код обрабатывался обычным Си-компилятором. Для сохранения совместимости создатели C++ отказались от исключения из него некоторых часто критикуемых особенностей Си, вместо этого создав новые, «параллельные» механизмы, которые рекомендуется применять при разработке нового кода на C++ (шаблоны вместо макроопределений, явное приведение типов вместо автоматического, контейнеры стандартной библиотеки вместо ручного динамического выделения памяти и так далее). Однако в дальнейшем языки развивались независимо, и сейчас Си и C++ последних выпущенных стандартов являются лишь частично совместимыми: не гарантируется успешная компиляция программы на Си компилятором C++, а в случае успеха нет гарантии, что откомпилированная программа будет работать правильно. Особенно неприятны некоторые тонкие семантические различия, которые могут приводить к разному поведению одного и того же кода, синтаксически корректного для обоих языков. Например, символьные константы (символы, заключённые в одинарные кавычки) имеют тип codice_130 в Си и тип codice_128 в C++, так что объём памяти, занимаемый такими константами, в разных языках различается. Если программа чувствительна к размеру символьной константы, она будет работать по-разному, будучи откомпилирована трансляторами Си и C++.
C++
Все противопоставляемые C++ языки программирования, если проходили процедуру стандартизации (что не обязательно для портируемости), то лишь после многолетней апробации на практике; при этом все они изначально имеют формальное определение семантики, так что накапливающиеся к моменту стандартизации изменения от первой версии языка оказываются не принципиальны.
C++
Порождающее метапрограммирование на основе шаблонов C++ трудоёмко и ограничено по возможностям. Оно осуществляется за счёт реализации статического (исполняемого на этапе компиляции) интерпретатора примитивного функционального языка программирования посредством шаблонов C++, а также примитивного препроцессора, унаследованного от Си. Сама по себе данная возможность весьма привлекательна, но, во-первых, код на шаблонах C++ имеет крайне низкие показатели понимаемости и тестируемости; во-вторых, при разворачивании шаблонов порождается неэффективный код, так как язык шаблонов не предоставляет никаких средств для оптимизации (см. также раздел #Вычислительная эффективность). При этом встраиваемые предметно-специфичные языки, реализуемые таким образом, всё равно требуют знания самого C++ для их использования, так как возводимые барьеры абстракции сохраняют все свойства нижележащей реализации, что не обеспечивает полноценное разделение труда. Таким образом, возможности C++ по расширению возможностей самого C++ весьма ограничены.
C++
Единственным прямым потомком C++ является язык D, задуманный как переработка C++ для устранения наиболее очевидных его проблем. Авторы отказались от совместимости с Си, сохранив синтаксис и многие базовые принципы C++ и введя в язык возможности, характерные для новых языков. В частности, в D нет препроцессора, включения заголовочных файлов, множественного наследования, но есть система модулей, интерфейсы, ассоциативные массивы, поддержка unicode в строках, сборка мусора (при сохранении возможности ручного управления памятью) встроенная многопоточность, вывод типов, явное объявление чистых функций и неизменяемых значений. Несмотря на преимущества, D не смог потеснить C++, его использование весьма ограничено: для программистов на C++ различия в возможностях (с учётом библиотек C++) не стали достаточно весомым стимулом для перехода, а для тех, кто нуждался в альтернативе C++, более привлекательными оказались более радикальные варианты.
C++/CX
C++/CX ("Component Extensions") — расширения языка C++, реализованные в компиляторах от Microsoft. Позволяют писать программы на языке C++ для новой платформы Windows Runtime ("WinRT"). Они привносят синтаксические и библиотечные абстракции, которые работают с программной моделью COM WinRT в естественном для программистов на C++ стиле.
Colorer
Colorer написан на C++, что позволяет использовать его на любой платформе (UNIX/win32/mac).
Си (язык программирования)
Си () — компилируемый статически типизированный язык программирования общего назначения, разработанный в 1969—1973 годах сотрудником Bell Labs Деннисом Ритчи как развитие языка Би. Первоначально был разработан для реализации операционной системы UNIX, но впоследствии был перенесён на множество других платформ. Согласно дизайну языка, его конструкции близко сопоставляются типичным машинным инструкциям, благодаря чему он нашёл применение в проектах, для которых был свойственен язык ассемблера, в том числе как в операционных системах, так и в различном прикладном программном обеспечении для множества устройств — от суперкомпьютеров до встраиваемых систем. Язык программирования Си оказал существенное влияние на развитие индустрии программного обеспечения, а его синтаксис стал основой для таких языков программирования, как C++, C#, Java и Objective-C.
DC++
DC++ («диси-плюс-плюс») — свободный и открытый клиент файлообменной сети Direct Connect для ОС Windows. Разработан как замена стандартному клиенту NeoModus Direct Connect, написанному на Visual Basic.
Сравнение C Sharp и Java
C# и Java — два языка программирования, развивающих язык программирования С++, с синтаксисом, который во многом наследует синтаксис С++, и созданных во многом в условиях конкуренции, и, вследствие этого, обладающих определённым сходством, а также имеющих и ряд различий.
Современное проектирование на С++: Обобщенное программирование и прикладные шаблоны проектирования
Скотт Майерс назвал книгу в числе пяти важнейших в истории C++.
C++
Разрабатывая "C с классами", Страуструп написал программу  — транслятор, перерабатывающий исходный код "C с классами" в исходный код простого C. Это позволило работать над новым языком и использовать его на практике, применяя уже имеющуюся в UNIX инфраструктуру для разработки на C. Новый язык, неожиданно для автора, приобрёл большую популярность среди коллег и вскоре Страуструп уже не мог лично поддерживать его, отвечая на тысячи вопросов.
CCleaner
CCleaner (ранее — Crap Cleaner) — условно-бесплатная утилита с закрытым исходным кодом, которая предоставляет пользователям мощный и простой в использовании инструмент для очистки и оптимизации 32-битных и 64-разрядных операционных систем Microsoft Windows. Утилита была создана британской частной фирмой Piriform Limited и написана на C++.
Open Watcom
В 2003 году, после проблем с новой версией компилятора, а также невозможностью конкурировать с фирмой Microsoft, фирма Sybase, которая приобрела Watcom в 1995 году, решила открыть исходные коды компиляторов. Так был создан проект Open Watcom под эгидой фирмы SciTech Software. В настоящее время проект развивается самостоятельно. Компилятор Open Watcom не полностью поддерживает стандарт С++, что не позволяет считать его полноценным компилятором С++ и мешает его широкому использованию.
Мультипарадигмальный язык программирования
В качестве одного из наиболее успешных мультипарадигмальных языков программирования часто называют язык C++.
C Sharp
Проект C# был начат в декабре 1998 и получил кодовое название COOL (C-style Object Oriented Language). Версия 1.0 была анонсирована вместе с платформой .NET в июне 2000 года, тогда же появилась и первая общедоступная бета-версия; C# 1.0 окончательно вышел вместе с Microsoft Visual Studio .NET в феврале 2002 года.
C++
В 2003 году был опубликован стандарт языка ISO/IEC 14882:2003, где были исправлены выявленные ошибки и недочёты предыдущей версии стандарта.
Standard ML
Около 1980 года реализовал первый компилятор , дополнив ML некоторыми своими идеями. Вскоре Карделли портировал на Unix, используя Berkley Pascal. Среда выполнения была переписана на Си, но большая часть компилятора оставалась на Паскале. Работа Карделли вдохновила Милнера на создание SML как самостоятельного языка общего назначения, и они начали совместную работу в Эдинбурге, результатом чего стал компилятор , выпущенный в 1984 году. В процессе этой работы Майк Гордон придумал ссылочные типы и предложил их Луи Дамасу, который позже защитил на них диссертацию. Одновременно велось сотрудничество Кэмбриджа с INRIA. Жерар Хью из INRIA портировал ML на Maclisp под Multics. INRIA разработали собственный диалект ML, названный Caml, и впоследствии развившийся в OCaml. оптимизировал , так что код на ML стал работать в 4-5 раз быстрее. Вскоре после этого Дэвид Мэтьюз разработал язык Poly на основе ML. Дальнейшая работа в этом направлении привела к созданию среды . В 1986 Дэвид МакКуин сформулировал язык модулей ML, и к работе подключился . Совместно они начали вести работу над компилятором , который служил одновременно исследовательской платформой для развития языка и первым промышленным оптимизирующим компилятором. Многие из реализаций языка были первоначально разработаны с использованием и затем раскручены.
Ритчи, Деннис
Изобретение Ритчи языка C и его роль в разработке Unix вместе с Кеном Томпсоном сделали его пионером современной вычислительной техники. Язык C по сей день широко используется для написания приложений и операционных систем, и его влияние наблюдается во многих современных языках программирования. Unix также оказал сильное влияние, основав идеи и принципы, которые сейчас являются прочно устоявшимися в вычислительной технике. Популярные операционные системы GNU/Linux и Mac OS X, а также их инструменты являются потомками работ Ритчи, и ОС Microsoft Windows также включает инструменты для совместимости с Unix и компилятор C для разработчиков.
Cilk
Разрабатывался с 1994 года в лаборатории Информатики MIT. Основан на языке ANSI C, с добавлением небольшого количества ключевых слов Cilk. Позже был расширен на Си++, в виде Cilk++ — коммерческого продукта, разрабатываемого компанией Cilk Arts.
C++
В книге «Дизайн и эволюция C++» Бьёрн Страуструп описывает принципы, которых он придерживался при проектировании C++. Эти принципы объясняют, почему C++ именно такой, какой он есть. Некоторые из них:Стандарт C++ состоит из двух основных частей: описание ядра языка и описание стандартной библиотеки.
Stdio.h
stdio.h (от  — стандартный заголовочный файл ввода-вывода) заголовочный файл стандартной библиотеки языка Си, содержащий определения макросов, константы и объявления функций и типов, используемых для различных операций стандартного ввода и вывода. Функциональность унаследована от «портативного пакета ввода-вывода» («portable I/O package»), написанного Майком Леском из Bell Labs в начале 1970-х. C++ ради совместимости также использует codice_1 наряду со схожим по функциональности заголовочным файлом cstdio.
C++
Поскольку все элементы семантики C++, отсутствующие в Си, были заимствованы из других языков (зачастую чужеродных Алголу), очевидно, что для адекватного применения этих взаимно противоречивых возможностей и избегания провоцируемых ими ошибок программисту на C++ крайне желательно знать непосредственно эти языки-источники и лежащую в их основе формальную базу. То есть чем более широк профессиональный кругозор программиста, тем лучше он сможет программировать на C++. Однако на практике положительная оценка и предпочтение использования C++ характерны преимущественно для программистов, не владеющих ни одним языком, не являющимся потомком Алгола (не считая ограниченного набора узкоспециализированных языков, таких как SQL, HTML, Perl и др.). Те же, кто имеет опыт использования языков, построенных на иной теоретической базе, чаще отзываются о C++ скептически и стараются его избегать, если нет вынужденности поддерживать унаследованный код. Это даёт основания полагать, что существует обратная зависимость между умением программировать на C++ в «хорошем» стиле и желанием использовать C++ в качестве инструмента разработки, из которой следует, что защищающие C++ программисты, по всей видимости, заблуждаются в отношении того, что именно следует считать «хорошим» стилем программирования.
Сайм, Дон
Дон Сайм () — австралийский информатик и главный разработчик () в Microsoft Research (подразделение в Кембридже, Великобритания). Дизайнер и архитектор языка программирования F#, иногда описываемый журналистами как «одна из самых оригинальных личностей в компьютерных языках с момента разработки Бьёрном Страуструпом языка C++ в начале 1980-х».
Страуструп, Бьёрн
Книга Страуструпа «Язык программирования C++» — одна из самых широко читаемых книг из своей области, которая была переведена на 19 языков. Следующая книга, «Дизайн и эволюция C++», открыла много нового в описании языков программирования: новые идеи, идеалы, проблемы. В дополнение к своим пяти книгам, Страуструп опубликовал более сотни академических и других популярных статей.
C++
Никто не обладает правами на язык C++, он является свободным. Однако сам документ стандарта языка (за исключением черновиков) не доступен бесплатно. В рамках процесса стандартизации, ISO выпускает несколько видов изданий. В частности, технические доклады и технические характеристики публикуются, когда «видно будущее, но нет немедленной возможности соглашения для публикации международного стандарта.» До 2011 года было опубликовано три технических отчёта по C++: TR 19768: 2007 (также известный как C++, Технический отчёт 1) для расширений библиотеки в основном интегрирован в C++11, TR 29124: 2010 для специальных математических функций, и TR 24733: 2011 для десятичной арифметики с плавающей точкой. Техническая спецификация DTS 18822:. 2 014 (по файловой системе) была утверждена в начале 2015 года, и остальные технические характеристики находятся в стадии разработки и ожидают одобрения
Частичная специализация шаблона
Частичная специализация шаблона — механизм языка программирования С++, предназначенный для специализации обобщённых шаблонных классов под конкретные задачи или под конкретное подмножество своих параметризованных типов данных. По мнению американского учёного и создателя С++ Б. Страуструпа специализация шаблонов является эффективным средством предотвращения неконтролируемого разрастания объёмов кода при активном использовании инструментария классов-шаблонов даже при разработке программных проектов умеренного размера. Это связывают с тем, что она не позволяет генерировать избыточные реплики кода под каждый конкретный тип данных, заменяя их более обобщёнными фрагментами кода и вдобавок сокращая время компиляции и компоновки конечного продукта.
C++
Неоднократно предпринимались попытки предложить альтернативы C++, как для прикладного, так и для низкоуровневого программирования (не обязательно заявляемые как «универсально применимые» языки).
Boost
Boost — собрание библиотек классов, использующих функциональность языка C++ и предоставляющих удобный кроссплатформенный высокоуровневый интерфейс для лаконичного кодирования различных повседневных подзадач программирования (работа с данными, алгоритмами, файлами, потоками и т. п.). Свободно распространяются по лицензии Boost Software License вместе с исходным кодом. Проект был создан после принятия стандарта C++, когда многие были недовольны отсутствием некоторых библиотек в STL. Проект является своего рода «испытательным полигоном» для различных расширений языка и части библиотек, которые являются кандидатами на включение в следующий стандарт C++. Boost имеет заметную направленность на исследования и расширяемость (метапрограммирование и обобщённое программирование с активным использованием шаблонов).
Си (язык программирования)
Подобные различия затрудняют написание программ и библиотек, которые могли бы нормально компилироваться и работать одинаково и в Си и в C++, что, конечно, запутывает тех, кто программирует на обоих языках. Среди разработчиков и пользователей как Си, так и C++, есть сторонники максимального сокращения различий между языками, что объективно принесло бы ощутимую пользу. Существует, однако, и противоположная точка зрения, согласно которой совместимость не особенно важна, хоть и полезна, и усилия по уменьшению несовместимости не должны препятствовать улучшению каждого языка в отдельности.
Microsoft Word
Microsoft Word многим обязан Bravo — текстовому редактору с оригинальным графическим интерфейсом, разработанному в исследовательском центре «Xerox PARC». Создатель Bravo Чарльз Симони () покинул PARC в 1981 году. Тем же летом Симони переманил Броди, с которым вместе работал над Bravo.
HTML
Язык HTML был разработан британским учёным Тимом Бернерсом-Ли приблизительно в 1986—1991 годах в стенах ЦЕРНа в Женеве в Швейцарии. HTML создавался как язык для обмена научной и технической документацией, пригодный для использования людьми, не являющимися специалистами в области вёрстки. HTML успешно справлялся с проблемой сложности SGML путём определения небольшого набора структурных и семантических элементов — дескрипторов. Дескрипторы также часто называют «тегами». С помощью HTML можно легко создать относительно простой, но красиво оформленный документ. Помимо упрощения структуры документа, в HTML внесена поддержка гипертекста. Мультимедийные возможности были добавлены позже.
C++
C++ заявляется как кроссплатформенный: стандарт языка накладывает минимальные требования на ЭВМ для запуска скомпилированных программ. На практике для написания портируемого кода на C++ требуется огромное мастерство и опыт, и «небрежные» коды на C++ с высокой вероятностью могут оказаться непортируемыми. Тонкое владение C++ в принципе может сделать код на C++ столь же портируемым, что и код на Си (хотя, по мнению Линуса Торвальдса, C++ при этом фактически сократится до своего подмножества Си). Однако, критики C++ утверждают, что изучение и использование одновременно всех языков, противопоставляемых C++ (не вызывающих серьёзных проблем при портировании), в сумме требует примерно тех же интеллекта, усилий и временных затрат, что и изучение и использование одного только C++ на высококлассном уровне — в связи с чем становится актуальной также оценка порога вхождения и результативности (производительности и качества труда программистов).
THINK C
THINK C — расширение ANSI C для Mac OS, разработанное компанией THINK Technologies. При первоначальном релизе в середине 1986 года называлось Lightspeed C, но позже было переименовано в THINK C. Позднее THINK Technologies была куплена Symantec Corporation, но, несмотря на этом, разработку продолжил первоначальный автор, Михаэль Кал. Версия 3 и последующие версии по существу являлись подмножествами C++ и поддерживали основные концепции объектно-ориентированного программирования, такие как одиночное наследование и расширения стандарта языка C для приведение в более близкое соответствие требованиям программирования под Mac OS. После 6-й версии средства ООП были расширены до полной реализации C++, после чего продукт переименовали, и 7-я и 8-я версии носили название Symantec C++, и разрабатывались разными авторами.
C++
Некоторые особенности C++ позднее были перенесены в C, например, ключевые слова codice_11 и codice_10, объявления в циклах codice_69 и комментарии в стиле C++ (codice_1). В более поздних реализациях C также были представлены возможности, которых нет в C++, например макросы codice_71 и улучшенная работа с массивами-параметрами.
Ultimate++
Ultimate++ (известен также как U++ и UPP) — кросс-платформенный инструментарий разработки ПО на языке программирования C++. Целью U++ является уменьшение сложности типичных десктопных приложений за счёт интенсивного использования особенностей C++. Работает под Linux/X11, BSD/X11 и Windows.
Кашлер, Клифф
Клифф Кашлер (, другой вариант написания фамилии на русском — Кушлер; род. в Сиэтле, штат Вашингтон, США) — американский инженер, изобретатель и предприниматель, один из основателей Tegic, компании, создавшей Т9 — алгоритм предсказания ввода, используемый на мобильных устройствах, и Swype, занимающуюся технологией использования движений при наборе слов на клавиатурах с тач-скрином. Ранее он также основал Exbiblio и работал над созданием продукта, который бы позволил людям общаться с дельфинами. Также известен как разработчик gizmo, доминирующего языка ввода для инвалидов.
Managed C++
В отличие от Managed C++, при разработке на обычном C++ программисту доступны все возможности языка C++ без каких-либо ограничений (в частности, множественное наследование, ручное управление памятью и др.), а также все функции Win32 API, но зато недоступны возможности, предоставляемые платформой .NET Framework.
Csound
Csound — язык программирования для работы со звуком. Программа-компилятор Csound написана на языке C и распространяется под лицензией GNU LGPL. Создатель — Барри Веркоу (Barry Vercoe), сотрудник Массачусетского технологического института и композитор.
Caffe
Caffe — среда для глубинного обучения, разработанная Яньцинем Цзя (Yangqing Jia) в процессе подготовки своей диссертации в университете Беркли. "Caffe" является открытым программным обеспечением, распространяемым под лицензией BSD license. Написано на языке C++, и поддерживает интерфейс на языке Python.
C++
Стандартная библиотека C++ также развивалась вместе с ним. Первым добавлением к стандартной библиотеке C++ стали потоки ввода-вывода, обеспечивающие средства для замены традиционных функций C codice_2 и codice_3. Позднее самым значительным развитием стандартной библиотеки стало включение в неё Стандартной библиотеки шаблонов.
C++ Technical Report 1
Одной из концепций при разработке C++ было обеспечение как можно большей совместимости с языком программирования Си. Однако данная концепция не являлась и не является приоритетной, а лишь настоятельно рекомендованной, а потому C++ нельзя в строгом смысле считать надмножеством Си (стандарты этих языков расходятся). TR1 — это попытка примирить некоторые из различий данных языков путём добавления различных заголовков в следующие библиотеки С++: codice_5, codice_6, codice_1 и т. д. Данные изменения способствуют приведению C++ в соответствие с C99 (не все части C99 включены в TR1).
CSSTidy
CSSTidy — это открытый синтаксический анализатор и оптимизатор каскадных таблиц стилей, написанный Флорианом Шмитцем. Доступны C++- и PHP-версии. Название происходит от HTML Tidy, так как CSSTidy предполагается быть его коллегой для CSS. В настоящее время, CSSTidy способен исправлять некоторые распространённые ошибки (например, отсутствующие единицы или точки с запятой) и переформатировать и сжимать CSS код.
Страуструп, Бьёрн
Бьёрн Страуструп был избран членом Национальной Академии Инженерии в США («National Academy of Engineering») в 2004 году за «создание языка С++». Как первый компьютерный учёный, он был награждён («William Procter Prize for Scientific Achievement from Sigma Xi») американским научно-исследовательским сообществом в 2005 году. Бьёрн Страуструп работает в AT&T Bell Laboratories и AT&T. Кроме того, Страуструп является членом Техасской академии медицины, инженерии и науки (). Бьёрн Страуструп был назван журналом «Fortune magazine» одним из «двенадцати лучших молодых американских учёных». Почётный доктор НИУ ИТМО (2013) http://is.ifmo.ru/doctors/stroustrup.pdf
C++
По мере разработки C++ в него были включены другие средства, которые перекрывали возможности конструкций C, в связи с чем неоднократно поднимался вопрос об отказе от совместимости языков путём удаления устаревших конструкций. Тем не менее, совместимость была сохранена из следующих соображений:
Язык программирования C++ (книга)
Первое издание было выпущено в 1986 году и сейчас представляет только исторический интерес. Второе было опубликовано в 1991 году, а третье — в 1997 году. Улучшенная версия третьего издания, выпущенная в твёрдой обложке, получила название «специального издания» ("special edition") и отличалась от ранних выпусков третьего издания двумя дополнительными приложениями («Локализация» и «Безопасность исключений и стандартная библиотека»), примерно тысячей исправлений и уточнений, а также дополненным алфавитным указателем.
Четвёртое издание книги, которая включает в себя C++11, было выпущено 19 мая 2013.
Тауэр, Леонард
В 1986 году Тауэр помогал Ричарду Столлману с его первоначальным планом создать компилятор Си для проекта GNU на базе компилятора "Pastel", полученного Столлманом из Ливерморской национальной лаборатории. Тауэр работал над переписыванием существующего кода Си на "Pastel", вариацию "Pascal", а Столлман работал над новым внешним интерфейсом Си. Столлман отверг этот план, когда обнаружил, что ливерморскому компилятору требуется слишком много памяти, заключив: «Я бы написал новый компилятор с нуля. Этот новый компилятор теперь известно как GCC; ни один из компиляторов Pastel не используется в нём, но мне удалось адаптировать и использовать внешний интерфейс Си, который я написал.» Столлман выпустил свой новый GNU C компилятор 22 марта 1987 года, признав вклад других людей, в том числе Тауэра, которые «писали части синтаксического анализатора, RTL генератора, RTL определения», основанные на идеях Джека Дэвидсона и Кристофера Фрейзера.
Game Maker Language
Game Maker Language (GML) — это интерпретируемый язык программирования, разработанный для использования вместе с программой для разработки компьютерных игр называемой Game Maker. Изначально поддержка языка была внедрена в Game Maker Марком Овермарсом для дополнения системы кнопочных событий, однако позже все кнопочные события были включены в GML, позволяя программисту избежать использования кнопочных функций.
GML очень сильно связан со средой Game Maker. Game Maker организован так, чтобы не было необходимости программирования вручную таких вещей, как управление событиями, дизайн уровней и настройка объектов.
Существует заблуждение, что GML поддерживает вставки фрагментов кода на других языках, таких как Pascal, Assembler или C++. Заблуждение возникло из-за частичной схожести синтаксиса GML с Pascal и C++. (Например, оператор «&&» может быть заменен на «and»).
Дизайн и эволюция C++
Основное внимание в книге уделено общим целям дизайна, ходу эволюции языка от первоначального проекта «Си с классами» до современного состояния и описанию развития языковых концепций. Также Страуструп подробно показал в книге связь C++ и языка Симула.
C++
Явная поддержка функционального программирования присутствует только в стандарте C++0x, вышедшим лишь после почти 30 лет развития языка. До этого данный пробел устранялся различными библиотеками (Loki, Boost), использующими язык шаблонов для расширения основного языка функциональными конструкциями. Качество подобных решений значительно уступает качеству встроенных в функциональные языки решений и качеству реализаций высокоуровневых возможностей C++ (таких как ООП) посредством функциональных языков. Все реализованные в C++ возможности ФП оказываются лишь их эмуляцией и используются совместно с императивными возможностями, что не даёт возможности применения присущих функциональному программированию мощных оптимизационных методик (см. раздел #Вычислительная эффективность). Кроме того, из-за трудоёмкости использования шаблонов, на практике ФП в C++ обычно ограничивается вызовами функциональных библиотек и реализацией отдельных методов, и практически не даёт преимуществ в проектировании программ (см. Соответствие Карри — Ховарда и пред.пункт), так что оно в C++ по-прежнему осуществляется обычно лишь посредством объектно-ориентированной декомпозиции.
Сравнение C Sharp и Java
Можно спорить, является ли разработка C# в какой-то степени результатом признания Майкрософтом того, что среда управляемого кода, где лидирует Java, имеет множество достоинств в растущем сетевом мире, особенно при появлении интернета на устройствах, отличных от персональных компьютеров, и при растущей важности сетевой безопасности. До создания C# Microsoft модифицировала Java (создав J++), с тем чтобы добавить возможности, работающие только на ОС Windows, нарушив таким образом лицензионное соглашение Sun Microsystems. Пока Microsoft находилась на второй фазе своей бизнес-стратегии, известной как «Embrace, Extend, and Extinguish», развитие J++ было остановлено иском, поданным Sun’ом. Будучи лишённой возможности разрабатывать клон Java с нужными ей свойствами, Microsoft создала альтернативу, которая больше соответствовала их потребностям и видению будущего.
C++
C++ широко используется для разработки программного обеспечения, являясь одним из самых популярных языков программирования. Область его применения включает создание операционных систем, разнообразных прикладных программ, драйверов устройств, приложений для встраиваемых систем, высокопроизводительных серверов, а также развлекательных приложений (игр). Существует множество реализаций языка C++, как бесплатных, так и коммерческих и для различных платформ. Например, на платформе x86 это GCC, Visual C++, Intel C++ Compiler, Embarcadero (Borland) C++ Builder и другие. C++ оказал огромное влияние на другие языки программирования, в первую очередь на Java и C#.
C++ Builder
В 2007 году CodeGear выпустила "C++Builder 2007", в котором реализовала полную поддержку API Microsoft Windows Vista, увеличила полноту соответствия стандарту ANSI C++, увеличила скорость компиляции и сборки до 500 %, включила поддержку MSBuild, архитектур баз данных DBX4 и «VCL для Web», поддерживающий AJAX. Поддержка API Microsoft Windows Vista включила в себя приложения, изначально оформленные в стиле Vista, и естественную поддержку VCL для Aero и Vista Desktop. "CodeGear RAD Studio 2007" содержит "C++Builder 2007" и "Delphi". Также в 2007 году CodeGear «воскресила» марку «Turbo» и выпустила две «Turbo» версии C++Builder: Turbo C++ Professional и Turbo C++ Explorer (бесплатный), основанных на "Borland C++ Builder 2006".
C++
Стандартная библиотека C++ включает в себя набор средств, которые должны быть доступны для любой реализации языка, чтобы обеспечить программистам удобное пользование языковыми средствами и создать базу для разработки как прикладных приложений самого широкого спектра, так и специализированных библиотек. Стандартная библиотека C++ включает в себя часть стандартной библиотеки C. Стандарт C++ содержит нормативную ссылку на стандарт C от 1990 года и не определяет самостоятельно те функции стандартной библиотеки, которые заимствуются из стандартной библиотеки C.
Protocol Buffers
На данный момент компанией Google созданы компиляторы для языков программирования: C++, Java, Python, Go, C#, Objective C, Javascript. Но существует ряд проектов сторонних разработчиков, которые создали компиляторы для следующих языков программирования: Action Script, C, C#, Clojure, Common Lisp, D, Erlang, Go, Haskell, Haxe, JavaScript, Lua, Matlab, Mercury, Objective C, Swift, OCaml, Perl, PHP, Python, Ruby, Scala, Visual Basic, Delphi.
Turbo C
Название «Turbo C» после версии 2.0 не использовалось, потому что с выпуском Turbo C++ 1.0 в 1990 году эти два продукта были объединены. Первый компилятор С++ был разработан по контракту с компанией в Сан-Диего и был одним из первых настоящих компиляторов языка C++ (долгое время большинство компиляторов C++ являлось не самостоятельными компиляторами, а надстройками над компиляторами языка Си). Следующая версия была названа Borland C++, чтобы подчеркнуть свой статус флагманского, и полностью переписана внутри фирмы, с Питером Куколем в качестве ведущего инженера. Наименование Turbo C++, в течение короткого времени не использовавшееся, в конце концов вновь появляется в Turbo C++ 3.0. Продукт версии 2.0 никогда не существовал в серии Turbo C++.
Notepad++
Notepad++ — свободный текстовый редактор с открытым исходным кодом для Windows с подсветкой синтаксиса большого количества языков программирования и разметки, а также языков описания аппаратуры VHDL и Verilog. Поддерживает открытие более 100 форматов. Базируется на компоненте Scintilla, написан на C++ с использованием STL, а также Windows API и распространяется под лицензией GNU General Public License. Базовая функциональность программы может быть расширена как за счёт плагинов, так и сторонних модулей, таких как компиляторы и препроцессоры.
Томпсон, Кен
Кен То́мпсон (; род. 4 февраля 1943) — пионер компьютерной науки, известен своим вкладом в создание языка программирования C и операционной системы UNIX.
C++
Ещё одним языком, рассматриваемым как конкурент C++, стал Nemerle, являющийся результатом попытки совместить модель типизации Хиндли-Милнера и макро-подмножество Common Lisp с языком C#.. В том же русле находится созданный Microsoft язык F# — диалект ML, адаптированный для среды .NET.
Императивное программирование
В 1980-х годах возрос интерес к объектно-ориентированному программированию (ООП). В 1980 году сотрудники исследовательского центра Xerox PARC на основе языка Smalltalk, разработанного Аланом Кэем в 1969 году, создали язык Smalltalk-80. Бьерн Страуструп на основе языка C и по образу и подобию языка Simula (предположительно, первого в мире ООП-языка, разработанного ещё в 1960-х годах) разработал язык C++. Первая реализация C++ была создана в 1985 году. В 1987 году Ларри Уолл выпустил язык Perl и интерпретатор для него. В 1990 году Гвидо ван Россум выпустил язык Python. В 1994 году в фирме Sun Microsystems был разработан язык Java. В 1995 году Расмус Лердорф разработал язык PHP. Язык Ruby был выпущен в 1995 году. Язык C# был выпущен в 2002 году вместе с программной платформой (фреймворком) .NET Framework, поддерживающей несколько языков.
C++
Многие аспекты в спорах «за и против C++» обусловлены расхождением в сущностном понимании процесса стандартизации. Б.Страуструп и его последователи считают, что «"стандарт — это контракт между программистами, разрабатывающими программы на языке, и программистами, разрабатывающими компиляторы языка"». Каждый новый стандарт C++ являлся декларацией того, что отныне должно быть реализовано во всех компиляторах — при том, что C++ имеет естественное определение семантики, то есть потенциально зависим от реализации (стандарт содержит множество пунктов, определённых как «implementation-defined»).
Csh
C shell (csh) — командная оболочка UNIX со встроенным скриптовым языком, разработанная Биллом Джоем, активным разработчиком BSD UNIX и создателем редактора vi, в 1979 году.
Язык программирования C++ (книга)
«Язык программирования C++» () — книга, посвящённая C++, которую написал автор языка, Бьёрн Страуструп. Подобно другой книге, «Язык программирования Си», первое издание было написано до выпуска стандарта языка. Третье издание, основанное на стандарте ISO/IEC 14882, даёт всесторонний охват текущих возможностей языка C++ и его стандартной библиотеки. Оно переведено более чем на 20 языков.
C++ Builder
C++ Builder (по-русски обычно произносят ["си-плюс-плюс би́лдэр"], ["си би́лдэр"]) — программный продукт, инструмент быстрой разработки приложений (RAD), интегрированная среда программирования (IDE), система, используемая программистами для разработки программного обеспечения на языке программирования C++.
Cosmos (операционная система)
Cosmos — операционная система с открытым кодом, написанная на языке программирования C#. Кроме того, она содержит компилятор языка Microsoft Intermediate Language (IL2CPU), позволяющий формировать законченные программные модули, включающие в себя библиотеки .NET Framework и саму операционную систему Сosmos, что позволяет создавать загрузочные модули, не требующие для своей работы внешней ОС. Может загружаться с дискеты, USB флеш-накопителя, CD-ROM или в виртуальной машине. В настоящее время поддерживается архитектура только x86, хотя система направлена на C#, она может быть использована с большинством совместимых языков .NET (требуется «чистая» компиляция CIL без использования P/Invoke). Cosmos в первую очередь предназначен для использования только с Microsoft .NET Framework, но может быть скомпилирована с использованием Mono с опорой на блок System.Threading, класса ReaderWriterLockSlim.
Loki
Loki — библиотека для языка программирования C++, написанная Андреем Александреску как часть книги «».
Препроцессор
Наиболее широкое распространение среди лексических препроцессоров получил препроцессор языка Си, используемый в языках программирования Си и его потомке — C++. Препроцессор удаляет из кода комментарии, преобразует код в соответствии с макросами и выполняет иные директивы, начинающиеся с символа «#» (такие как #include, #define, разнообразные директивы типа #pragma).
C++
В свою очередь, сторонники C++ возражают против сравнения различных аспектов C++ с различными языками, заявляя, что общий набор средств C++ существенно шире, чем в большинстве альтернативных языков, и эта широта является оправданием несовершенства каждой отдельно взятой возможности; в том числе недостатки, вызванные сохранением совместимости с Си, оправданы предоставляемыми ею преимуществами (см. раздел Философия C++).
GNU Compiler Collection
До версии 4.7.2 GCC был почти полностью написан на Си, хотя значительная часть front-end для Ады написана на Аде. С разработка была переведена на язык C++, версия 4.8 и более поздние требуют для своей сборки наличия C++ компилятора, поддерживающего С++ 2003.
TypeScript
Разработчиком языка TypeScript является Андерс Хейлсберг (), создавший ранее Turbo Pascal, Delphi и C#.
D (язык программирования)
D ("Ди") — мультипарадигмальный компилируемый язык программирования, созданный Уолтером Брайтом из компании Digital Mars. Начиная с 2006 года соавтором также является Андрей Александреску. Изначально D был задуман как реинжиниринг языка C++, однако, несмотря на значительное влияние С++, не является его вариантом. Также язык испытал влияние концепций из языков программирования Python, Ruby, C#, Java, Eiffel.
C++ Builder
В 2003 году Borland выпустила "C++BuilderX" (CBX), написанный при помощи той же инфраструктуры, что и JBuilder, который при этом был мало похож на C++ Builder или Delphi. Этот продукт предназначался для разработки больших программ для крупных предприятий, но коммерческого успеха не достиг. В конце 2004 года Borland объявила, что продолжит развитие классического C++ Builder и объединит его со средой разработки Delphi, прекратив, таким образом, разработку C++ BuilderX.
Спустя примерно год после этого объявления, Borland выпустила "Borland Developer Studio 2006", который включал в себя "Borland C++Builder 2006", предлагавший улучшенное управление конфигурацией и отладкой. "Borland Developer Studio 2006" — единственный полноценный комплект, содержащий Delphi, C++ Builder и C# Builder.
Теслер, Ларри
Ларри Теслер (официально Лоуренс Гордон Теслер) — родился 24 апреля 1945 года. Информатик, работающий в области взаимодействия человека и компьютера.Он фактически ввел в оборот комбинацию клавиш Ctrl+c, Ctrl+v.Теслер работал в Xerox PARC, Apple Computer, Amazon.com и Yahoo!.Теслер изучал информатику в Стэнфордском университете в 1960 году. Некоторое время работал в лаборатории искусственного интеллекта Стэнфордского университета. Совместно с Горацием Энья он вёл разработку языка программирования. Этот функциональный язык программирования был предназначен для параллельной обработки и использовался для обучения новичков программированию.
IntelliSense
IntelliSense вступила в новую стадию разработки с появлением Visual Studio .NET, поддерживавшей метаданные и модель документации кода .NET Framework. В настоящее время IntelliSense поддерживается в Visual Studio для таких языков, как C++, C#, J#, Visual Basic, Visual FoxPro, XML, HTML, XSLT и других. Начиная с Visual Studio 2005 IntelliSense по умолчанию начинает предлагать варианты дополнения кода, не требуя ввода маркеров, то есть, как только пользователь начинает печатать. Поскольку теперь доступные варианты включают в себя и конструкции языка (такие как for или if), они также были включены в список вариантов для автодополнения.
C++
Альтернативный путь развития языка Си — совмещение его не с объектно-ориентированным, а с аппликативным программированием, то есть улучшение абстракции, строгости и модульности низкоуровневых программ посредством обеспечения не инкапсуляции изменяемого состояния, а предсказуемости поведения и ссылочной прозрачности. Примерами работ в этом русле служат языки BitC, Cyclone и Limbo. Хотя есть и успешные попытки применения ФП в задачах реального времени без интеграции со средствами Си, всё же на данный момент (2013 г.) в низкоуровневой разработке применение в той или иной мере средств Си имеет лучшее соотношение трудоёмкости с результативностью. Много усилий было приложено разработчиками Python и Lua для обеспечения использования этих языков программистами на C++, так что из всех языков, достаточно тесно связанных с ФП, именно они чаще всего отмечаются в совместном использовании с C++ в одном проекте. Наиболее значимыми точками соприкосновения C++ с ФП можно считать привязки разработанных на C++ библиотек wxWidgets и Qt с характерной для C++ идеологией к языкам Lisp, Haskell и Python (в большинстве случаев привязки к функциональным языкам делают для библиотек, написанных на Си или на других функциональных языках).
AutoHotkey
В настоящее время развитие изначальной ветки — AutoHotkey 1.0 (впоследствии названной AutoHotkey Classic или AutoHotkey Basic) — прекращено её создателем Chris_Mallett'ом. Официальный наследник — AutoHotkey_L (AutoHotkey 1.1) — развивается силами сообщества во главе Steve Gray (Lexikos) и fincs, эта версия предоставляет поддержку Юникода, 64-разрядной архитектуры, массивов, объектов с прототипным конструированием, а также COM и элементов управления ActiveX в GUI. Далее tinku99 разработал неофициальную версию AutoHotkey_N, важнейшей чертой которого была компиляция в Dll, эта версия была самой не популярной. Следующей была AutoHotkey_H (v.1), разработчиком был HotKeyIt, эта версия построена базе AutoHotkey_N, отличился возможностью защиты кода и многопоточностью, возможностью вызывать ахк код из других приложений через COM или вызов в Dll, так же сильно увеличился функционал компиляции в Dll. Добавлена поддержка криптографии, MemoryModule и структур в стиле C. Важным недостатком стало нестабильность запуска, обычно на Windows 10. Следующим этапом стала разработка AutoHotkey_H (v.2), разработчик остался прежним, в общих чертах не отличался от 1-ой версии, но было произведено реструктурирование синтаксиса, что сделало его более приближенным к C++, несмотря на это она является альфа-версией.