9 Начальные сведения о языке
В энциклопедическом словаре по поводу того, что такое ЯЗЫК, приводится следующее:
ЯЗЫК - естественный язык, важнейшее средство человеческого общения.
ЯЗЫК неразрывно связан с мышлением; является социальным средством хранения и передачи информации, одним из средств управления человеческим поведением. ….
C++ также является языком. Это формальный язык.
Несмотря на огромную разницу между естественными и формальными языками, у них есть много общего.
Например, изучение естественного языка является сложным процессом, включающим как обретение элементарных автоматических навыков, так и восприятие сложных абстрактных понятий. При этом возможность относительно свободного использования языка как средства общения появляется уже на ранних стадиях этого процесса, когда вообще ещё не имеет смысла говорить о знании языка.
Практически все мы свободно владеем разговорным языком, а вернее, навыками разговорной речи. При этом лишь незначительная часть жителей действительно глубоко знает этот язык.
Аналогичная ситуация наблюдается и с языками программирования. Первые опыты программирования, подобно использованию навыков разговорной речи, не требуют особых познаний в области формальных языков. Для составления работающих программ достаточно иметь интуитивные представления об алгоритмах и устройстве компьютера. Часто бывает достаточно ознакомиться с несколькими работающими программами или даже с фрагментами таких программ, чтобы, в буквальном смысле используя образцы, успешно описывать собственные алгоритмы.
Формальный язык является объединением нескольких множеств:
множества исходных символов, называемых литерами (алфавит),
множества правил, которые позволяют строить из букв алфавита новые слова (правила порождения слов или идентификаторов),
множества предопределённых идентификаторов или словаря ключевых слов (прочие идентификаторы называются именами),
множества правил, которые позволяют собирать из имён и ключевых слов выражения, на основе которых строятся простые и сложные предложения (правила порождения операторов или предложений).
Множество правил порождения слов, выражений и предложений называют грамматикой формального языка или формальной грамматикой.
Характеристика языков С и C++
C++ — это объектно-ориентированный язык программирования, фундаментом которого является С.
C++ - это наиболее полный и совершенный продукт разработки программного обеспечения на сегодня. Он обеспечивает беспрецедентный уровень скорости и удобства программирования, в то же время он предлагает широкий набор разнообразных форм проектирования, удобный практически для любого стиля программирования.
С++ является расширением популярного и широко распространенного языка программирования С. В языке С++ сохранены все достоинства С, включая его мощные и гибкие средства для работы с аппаратурой. Одной из ключевых задач при создании С++ было обеспечение совместимости с языком С. Имелось желание сохранить в целости миллионы ранее написанных и отлаженных строк программ языка С, многие существующие библиотеки С и полезные инструментальные средства, написанные ранее на С. Поскольку эта задача была в значительной мере успешно решена, многие программисты считают переход с С на С++ гораздо более легким, чем с других языков.
Язык программирования служит двум взаимосвязанным целям: он предоставляет программисту инструмент для описания подлежащих выполнению действий и набор концепций, которыми оперирует программист, обдумывая, что можно сделать. Первая цель в идеале требует языка, близкого к компьютеру, чтобы все важные элементы компьютера управлялись просто и эффективно способом, достаточно очевидным для программиста. Язык С создавался, отталкиваясь именно от этой идеи. Вторая цель в идеале требует языка, близкого к решаемой задаче, чтобы концепции решения могли быть выражены понятно и непосредственно. Эта идея привела к пополнению С свойствами, превратившими его в С++.
Самое существенное улучшение по сравнению с языком С касается концепции объектно-ориентированного программирования. Класс в С++ - это тип. Он описывает поведение объектов этого класса: как они создаются, управляется и уничтожается. Ключом к проектированию хороших программ является выделение классов, каждый из которых ясно описывает отдельное понятие. Одним из мощнейших интеллектуальных инструментов преодоления сложности является иерархическое упорядочивание понятий. В С++ для представления такой иерархической структуры используются производные классы. Т.е. при проектировании программист определяет ряд базовых классов, каждый из которых имеет набор производных классов. Для определения операций с наиболее общими понятиями (операций базовых классов) можно воспользоваться виртуальными функциями. Затем в конкретных случаях интерпретация операций может быть переопределена в производных классах.
Другая форма общности может быть выражена при помощи шаблонов. Шаблон класса определяет целое семейство классов. Шаблон – это механизм создания типа, которому другой тип передается в качестве аргумента. Наиболее распространенными шаблонами являются классы контейнеров и основные алгоритмы, использующие эти контейнеры.
.
Краткая история развития языков С и С++
Язык С был изобретен и реализован Деннисом Ритчи (Dennis Ritchie) для компьютера DEC PDP-11 в операционной системе Unix. Этот язык был разработан на основе "более старого" языка BCPL, созданного в свое время Мартином Ричардсом (Martin Richards). BCPL оказал определенное влияние на язык В, разработанный Кеном Томпсоном (Ken Thompson). В свою очередь развитие язык В привело к созданию в 1970 году языка С.
На протяжении многих лет стандартом С была фактически версия, поставляемая вместе с операционной системой Unix. Эта версия впервые была описана Брайаном Керниганом (Brian Kernighan) и Деннисом Ритчи в книге The С Programming Language (Englewood Cliffs, N.J.: Prentice-Hall, 1978). Летом 1983 года был образован комитет по созданию для языка С стандарта ANSI (American National Standards Institute — Национальный институт стандартизации США}. Надо отметить, что процесс стандартизации занял весьма немалый срок — шесть лет.
Стандарт ANSI был окончательно принят в декабре 1989 года и впервые опубликован в начале 1990 года. Этот стандарт был также принят организацией ISO (International Standards Organisation — Международная организация по стандартизации),. поэтому он называется стандартом ANSI/ISO языка С.
В 1995 году была принята 1-я Поправка к стандарту С, согласно которой, среди прочего, было добавлено несколько библиотечных функций. В 1989 году стандарт С вместе с 1-й Поправкой стал базовым документом Стандарта C++, определяющего С как подмножество C++. Версию С, определенную стандартом 1989 года, обычно называют С89.
На протяжении 90-х годов внимание программистов было приковано главным образом к развитию стандарта C++. Тем временем разработка С также продолжалась, приведя в 1999 году к появлению стандарта С, который принято называть С99. В целом С99 сохранил все основные черты С89, т.е., можно сказать, что язык С остался самим собой!
Хотя язык С был одним из наиболее распространённых и любимх профессиональных языков программирования, его мощности уже не хватало для решения основной проблемы – возрастающей сложности программ. Механизмы языка С не позволяют работать с программой как с единым целым, если её размер колеблется в пределах от 25000 до 10000 строк кода. Одной из главных целей С++ было преодоление этого препятствия. Язык С++ позволил программистам прекрасно справляться с более крупными и сложными программами.
Разработчиком языка С++ является Бьерн Страуструп (Bjarne Stroustrup). В своей работе он опирался на опыт создателей языков Симула, Модула 2, абстрактных типов данных. Основные работы велись в исследовательском центре компании Bell Laboratories роде Мюррей-Хилл (штат Нью-Джерси). Непосредственный предшественник С++ — язык «С с классами» — появился в 1979 году, однако в 1983 г. его название было изменено на С++.
Большинство усовершенствований, внесённых Страуструпом в язык С, касалось поддержки объекетно-ориентированного программирования (ООП).
В 1997 году был принят международный стандарт С++, который фактически подвел итоги его 20-летнего развития. Принятие стандарта обеспечило единообразие всех реализации языка С++. Не менее важным результатом стандартизации стало то, что в процессе выработки и утверждения стандарта язык был уточнен и дополнен рядом существенных возможностей.
Язык С++ является универсальным языком программирования, в дополнение к которому разработан набор разнообразных библиотек. Поэтому, строго говоря, он позволяет решить практически любую задачу программирования.
С++ как преемник языка С широко используется в системном программировании. На нем можно писать высокоэффективные программы, в том числе операционные системы, драйверы и т.п. Язык С++ — один из основных языков разработки трансляторов.
Поскольку системное программное обеспечение часто бывает написано на языке С или С++, то и программные интерфейсы к подсистемам ОС тоже часто пишут на С++. Соответственно, те программы, даже и прикладные, которые взаимодействуют с операционными системами, написаны на языке С++.
Распределенные системы, функционирующие на разных компьютерах, также разрабатываются на языке С++. Этому способствует то, что у широко распространенных компонентах моделей CORBA и СОМ есть удобные интерфейсы на языке С++.
Обработка сложных структур данных — текста, бизнес-информации, Internet-страниц и т.п. — одна из наиболее распространенных возможностей применения языка. В прикладном программировании, наверное, проще назвать те области, где язык С++ применяется мало.
Разработка графического пользовательского интерфейса на языке С++ выполняется, в основном, тогда, когда необходимо разрабатывать сложные, нестандартные интерфейсы. Простые программы чаще пишутся на языках Visual Basic, Java и т.п.
Программирование для Internet в основном производится на языках Java, VBScript, Peri.
В целом надо сказать, что язык С++ в настоящее время является одним из наиболее распространенных языков программирования в мире.