Язык с история создания и особенности. История языка си

Почему C++

С++ в настоящее время считается господствующим языком, используемым для разра-ботки коммерческих программных продуктов. В последние годы это господство слегка по-колебалось вследствие аналогичных претензий со стороны такого языка программирова-ния, как Java, но маятник общественного мнения качнулся в другую сторону, и многие программисты, которые бросили С++ ради Jаvа, в последнее время поспешили вернуться к своей прежней привязанности. В любом случае эти два языка настолько похожи, что, изучив один из них, вы автоматически осваиваете 90% другого.

С# -- это новый язык, разработанный Мiсгоsоft для сетевой платформы. По суще-ству С# является разновидностью С++, и несмотря на ряд принципиальных отличий, языки С# и С++ совпадают примерно на 90%. Вероятно, пройдет немало времени, прежде чем язык С# составит серьезную конкуренцию языку С++; но даже если это и произойдет, то знание языка С++ окажется существенным преимуществом.

С++ является языком программирования общего назначения. Естественная для него область применения - системное программирование, понимаемое в широком смысле этого слова. Кроме того, С++ успешно используется во многих областях приложения, далеко выходящих за указанные рамки. Реализации С++ теперь есть на всех машинах, начиная с самых скромных микрокомпьютеров - до самых больших супер-ЭВМ, и практически для всех операционных систем.

Возникновение и эволюция языка C++

Бьерн Страуструп является разработчиком языка С++ и создателем первого транслятора. Он - сотрудник научно-исследовательского вычислительного центра AT&T Bell Laboratories в Мюррей Хилл (Нью-Джерси, США). Он получил звание магистра математики и вычислительной техники в университете г. Аарус (Дания), а докторское звание по вычислительной технике в кэмбриджском университете (Англия). Он специализируется в области распределенных систем, операционных систем, моделирования и программирования. Вместе с М. А. Эллис он является автором полного руководства по языку С++ - "Руководство по С++ с примечаниями".

Безусловно С++ многим обязан языку С , который сохраняется как его подмножество. Сохранены и все свойственные С средства низкого уровня, предназначенные для решения самых насущных задач системного программирования. С, в свою очередь, многим обязан своему предшественнику языку BCPL . Комментарий языка BCPL был восстановлен в С++. Еще одним источником вдохновения был язык SIMULA-67 ; именно из него была заимствована концепция классов (вместе c производными классами и виртуальными функциями). Возможность в С++ перегрузки операций и свобода размещения описаний всюду, где может встречаться оператор, напоминают язык Алгол-68 .

Более ранние версии языка, получившие название "С с классами" , использовались, начиная с 1980 г. Этот язык возник потому, что автору потребовалось написать программы моделирования, управляемые прерываниями. Язык SIMULA-67 идеально подходит для этого, если не учитывать эффективность. Язык "С с классами" использовался для больших задач моделирования. Строгой проверке подверглись тогда возможности написания на нем программ, для которых критичны ресурсы времени и памяти. В этом языке недоставало перегрузки операций, ссылок, виртуальных функций и многих других возможностей. Впервые С++ вышел за пределы исследовательской группы, в которой работал автор, в июле 1983 г., однако тогда многие возможности С++ еще не были разработаны.

Название С++ (си плюс плюс) , было придумано Риком Маскитти летом 1983 г. Это название отражает эволюционный характер изменений языка С. Обозначение ++ относится к операции наращивания С. Чуть более короткое имя С+ является синтаксической ошибкой. Кроме того, оно уже было использовано как название совсем другого языка. Знатоки семантики С находят, что С++ хуже, чем ++С. Язык не получил названия D, поскольку он является расширением С, и в нем не делается попыток решить какие-либо проблемы за счет отказа от возможностей С. Еще одну интересную интерпретацию названия С++ можно найти в приложении к .

Изначально С++ был задуман для того, чтобы автору и его друзьям не надо было программировать на ассемблере, С или других современных языках высокого уровня. Основное его предназначение - упростить и сделать более приятным процесс программирования для отдельного программиста. До недавнего времени не было плана разработки С++ на бумаге. Проектирование, реализация и документирование шли параллельно. Никогда не существовало "проекта С++" или "Комитета по разработке С++". Поэтому язык развивался и продолжает развиваться так, чтобы преодолеть все проблемы, с которыми столкнулись пользователи. Толчками к развитию служат также и обсуждения автором всех проблем с его друзьями и коллегами.

С момента выхода в свет первого издания этой книги язык С++ подвергся существенным изменениям и уточнениям. В основном это касается разрешения неоднозначности при перегрузке, связывании и управлении памятью. Вместе с тем, были внесены незначительные изменения с целью увеличить совместимость с языком С. Были также введены некоторые обобщения и существенные расширения, как то: множественное наследование, функции-члены со спецификациями static и const, защищенные члены (protected), шаблоны типа и обработка особых ситуаций. Все эти расширения и доработки были нацелены на то, чтобы С++ стал языком, на котором можно создавать и использовать библиотеки. Все изменения описываются в .

Другие расширения, введенные за период между 1985 и 1991 г.г. (такие как множественное наследование, статические функции-члены и чистые виртуальные функции), скорее появились в результате обобщения опыта программирования на С++, чем были почерпнуты из других языков.

Сделанные за эти шесть лет расширения языка прежде всего были направлены на повышение выразительности С++ как языка абстракции данных и объектно-ориентированного программирования вообще и как средства для создания высококачественных библиотек с пользовательскими типами данных в частности.

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

Фирма AT&T Bell Laboratories внесла основной вклад в эту работу. Около ста представителей из порядка 20 организаций изучали и комментировали то, что стало современной версией справочного руководства и исходными материалами для ANSI по стандартизации. С++. Наконец, по инициативе фирмы Hewlett-Packard в декабре 1989 г. в составе ANSI был образован комитет X3J16. Ожидается, что работы по стандартизации С++ в ANSI (американский стандарт) станут составной частью работ по стандартизации силами ISO (Международной организации по стандартизации).

С++ развивался одновременно с развитием некоторых фундаментальных классов.

Был разработан в 1972 г. Денисом Ритчи на базе языка Би. Был создан для использования в операционной системе Юникс. Язык назвали Си, потому что многие его особенности берут начало от старого языка Би. Си является самым популярным языкомдля создания системного программного обеспечения . Его также часто используютдля создания прикладных программ . В дальнейшем синтаксис Си стал основой для многих других языков. Язык Си был создан уже после внедрения стандарта ASCII, поэтому использует почти все его графические символы. Более старые языки (Фортран, Кобол) использовали только круглые скобки, ав Си есть и круглые, и квадратные, и фигурные. Кроме того,в Си различаются заглавные и строчные буквы , а более старые языке использовали только заглавные.

В 1978 году Ритчи и Керниган опубликовали первую редакцию книги «Язык программирования Си». В конце 1970-х Си начал вытеснять Бейсик с позиции ведущего языка для программирования микрокомпьютеров. В 1980-х годах он был адаптирован для использования в IBM PC, что привело к резкому росту его популярности. В то же время сотрудники в лабораториях Bell Labs начали работу по добавлению в Си возможностей объектно-ориентированного программирования. Язык, который они в итоге сделали, С++, в настоящее время является самым распространенным языком программирования. Си остается более популярным в UNIX-подобных системах.

2. Основные характеристики алгоритмического языка Си.

Язык С часто называют языком программирования среднего уровня. Но это не значит, что С менее мощный, менее развитой и более трудный в использовании, чем языки высокого уровня, такие как Basic или Pascal. Это также не значит, что С такой же громоздкий и неудобный, как ассемблер (язык низкого уровня). Языком среднего уровня его называют скорее потому, что он объединяет в себе лучшие черты языков высокого уровня с возможностями ассемблера.

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

Все языки высокого уровня придерживаются концепции типов данных. Тип данных представляет собой набор значений, хранящихся в переменной, а также набор операций, выполнение которых допускается над этими значениями. Обычные типы данных – это целые числа, символы и числа с плавающей точкой. Язык С имеет несколько встроенных типов данных, однако не является сильно типизированным языком, как Pascal или Ada.В языке С допускается почти все преобразования типов . Например, в выражениях можно свободно смешивать переменные символьного и целого типов.

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

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

Важная особенность С – это малое количество ключевых слов, составляющих команды языка . В С89 определено 32 ключевых слова, причем в С99 добавлено только 5 слов. Языки высокого уровня обычно имеют значительно больше ключевых слов, например, в большинстве версий языка Basic их количество превышает сотню!

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

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

Структурированный язык предоставляет программисту много различных возможностей. Например, структурированные языки обычно содержат несколько операторов цикла, таких как while, do-while, for.

Причины, послужившие созданию нового языка программирования. Основные отличия С++ от других известных языков, его положительные и отрицательные характеристики.

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

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

С++ возник в начале 1980-х годов. Бьёрн Страуструп, сотрудник фирмы Bell Laboratories, усовершенствовал язык С под свои нужды. То есть, изначально создание нового языка он не планировал. Но в конце 70-х годов программист начал работать над задачами теории очередей (в моделировании телефонных вызовов), он обнаружил, что попытки применения действующих тогда языков моделирования, таких, как Симула и BCPL, оказываются неэффективными, а применение высокоэффективных машинных языков слишком сложно. Так, язык Симула имеет полезные для разработки большого программного обеспечения возможности, но все работает чересчур медленно, а язык BCPL достаточно быстр, но сильно близок к низкоуровневым языкам, он не подходит для разработки больших программ.

По объяснению Страуструпа, для создания нового языка программирования самой лучшей основой послужил язык С, так как он универсален, прост, переносим, быстр и функционален в исполнении многих задач, стыкуется со средой программирования UNIX. Страуструп добавил к С возможность работы с типами данных (классами) и объектами. Благодаря быстродействию С практические задачи моделирования оказались доступными для решения по времени разработки и вычислений. В первую очередь в C были добавлены типы данных, их наследование, проверка типов и аргументы по умолчанию. Первые версии языка, изначально называвшегося Си с классами, стали доступны с 1980 года. Затем Страуструп создал компилятор cfront, который перерабатывал код С++ в код простого С, что позволило сразу применять его на практике.

Язык стал невероятно популярен. К 1983 году в него были добавлены различные константы, виртуальные функции, ссылки, перегрузка функций и операторов, контроль пользователя над управлением свободной памятью, улучшенная проверка типов и новый стиль комментариев //. В 1985 году вышло издание Языка программирования C++, это было первое описание языка, что из-за отсутствия официального стандарта было очень важно. В 1989 году состоялся выход второй версии C с новыми возможностями наследования, функциями и классами. В 1998 году был утвержден международный стандарт языка C++. Он является свободным, никто не обладает правом на владение им.

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

Нововведениями C++ в сравнении с C являются:

Поддержка объектно-ориентированного программирования;

Поддержка обобщённого программирования;

Новые типы данных;

Исключения - реакции программы на ошибки;

Пространства имён (хранилища для группировки уникальных идентификаторов);

Встраиваемые функции;

Перегрузка операторов (существования в одной области видимости нескольких различных вариантов применения оператора);

Дополнения к стандартной библиотеке.

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

Дальнейшее развитие языка будет идти путем дополнения в существующие стандартные библиотеки. Планом развития С++ на будущее является расширение обобщенного программирования.

ЛИТЕРАТУРА

1. https://ru.wikipedia.org/wiki/C%2B%2Bhttp://articles.org.ru/web/specperl.php

2. Бьёрн Страуструп. Язык программирования C++. Специальное издание = The C++ programming language. Special edition. М.: Бином-Пресс, 2007. 1104 с. ISBN 5-7989-0223-4

Несколько ссылок и цитат про первые компиляторы C, B, BCPL, AED-0, Bootstrap Compiler; и о том, как компилировался первый компилятор новых языков



История компилятора BCPL и AED-0

BCPL was designed by Martin Richards in the mid-1960s while he was visiting MIT, and was used during the early 1970s for several interesting projects, among them the OS6 operating system at Oxford , and parts of the seminal Alto work at Xerox PARC . We became familiar with it because the MIT CTSS system on which Richards worked was used for Multics development. The original BCPL compiler was transported both to Multics and to the GE-635 GECOS system by Rudd Canaday and others at Bell Labs ; during the final throes of Multics"s life at Bell Labs and immediately after, it was the language of choice among the group of people who would later become involved with Unix.

BCPL was intended to be portable. Portability is achieved by bootstrapping the runtime system a number of times so that it eventually implements the compliler"s output language. This language is called OCODE. OCODE is similar to a high-level assembly language… also defined in such a way that it could be translated into the machine language of most processors.…
In the book on BCPL , Richards and Whitby-Strevens define a second low-level intermediate language called Intcode. Intcode is an extremely simple language that can be used to bootstrap OCODE.… The BCPL system was distributed in OCODE form.

Таким образом, для запуска компилятора BCPL, который распространялся в кодах OCODE и компилировал программы с BCPL в OCODE, требовался транслятор OCODE. Транслятор OCODE написан на Intcode, а Intcode уже достаточно прост для реализации без языков высокого уровня (единицы дней для ассемблера и интерпретатора Intcode на новой машине; хотя реализация Intcode на самом BCPL тоже возможна). Осталось лишь скомпилировать первый компилятор BCPL, написанный на BCPL в OCODE https://www.bell-labs.com/usr/dmr/www/bcpl.html :


Richards"s first BCPL compiler was written using the 6-bit BCD character set on CTSS, and adapted shortly thereafter to use the characters available on the IBM "golf-ball" 1050 and 2741 terminals.

BCPLCTSS contains the version of the BCPL compiler as it was in June 1968 running on CTSS at MIT"s Project MAC. It also contains a modification of this compiler that runs under the current 64-bit Cintcode BCPL System. Click BCPLCTSS.html to obtain a copy.
I have typed in the source code from IBM golf ball listing of the compiler dating back to between February and June 1968.

BCPL was initially similar to this subset of CPL used in the encoding of the CPL compiler. An outline of BCPL’s main features first appeared in my PhD thesis in 1966 but it was not fully designed and implemented until early the following year when I was working at Project MAC of the Massachussetts Institute of Technology. Its first implementation was written in Ross’s Algol Extended for Design (AED-0) which was the only language then available on CTSS, the time sharing system at Project MAC, other than LISP that allowed recursion.

Немного истории AED-0 есть на странице http://groups.csail.mit.edu/mac/projects/studentaut/DR%20HK%20Bio.htm и Compiler Construction. LNCS 21, isbn 3662215497 page 470 (1974) - компилятор AED-0 был переписан на язык AED-0 лишь к концу 1964 года, а в 1963 году заработал изначальный компилятор AED-0 для IBM 7094 (фото), написанный на неуточненном "bootstrap compiler language"


He started programming in July 1952 on the MIT Whirlwind computer and later, through collaboration of his MIT Computer-Aided Design Project with MIT’s Project Mac, on the pioneering Compatible Time-Sharing System (CTSS).… 1962 - 1969: MIT Computer-Aided Design Project (with Project MAC), first software engineering language (AED, Algol Extended for Design)

AED-0 is a high level language developed by the M.I.T. Computer-Aided Design Project. It is based on ALGOL60 and is aimed at providing a convinient and effective language for creating specialized computer aided design systems for a wide variety of application areas. The original AED-0 compiler written in a bootstrap compiler language became operational on an IBM 709 machine in 1963. Subsequently, it was moved to CTSS of M.I.T. Project MAC operating on an IBM 7094. Further developments were made in this system to produce a fairly stable language by late 1964. By this time, the compiler existed in its own language and all further system changes and improvements were carrier out in AED-0 itself.


… Part 1 of the manual describes the AED-0 language proper, including descriptions of several subroutine packages which extend the features of the language beyond the forms derived from Algol-60 syntax.

Идеи, которые привели к созданию AED описываются Ross в Richard L. Wexelblat. History of Programming Languages. Chapter VI APT Session. "Origins of the apt language for automatically programmed tools", 1978


Немного об AED-0 есть в отчете Project MAC "VERBAL AND GRAPHICAL LANGUAGE FOR THE AED SYSTEMI A PROGRESS REPORT" MAC-TR-4
http://publications.csail.mit.edu/lcs/pubs/pdf/MIT-LCS-TR-004.pdf#page=8


THE AED-0 COMPILER
It was found that no existing compiler could provide an efficient mechanization of the plex concept so that in the Spring of 1963 the Project undertook to construct a compiler incorporating the techniques proposed for the Computer-Aided Design System itself as the first major step toward accomplishing the goals of the Project. Prior to that time plex programming had been carried out using an experimental compiler called the Bootstrap Compiler, which also was written by the Project, both for educational experience and as an experimental tool. The AED-0 Compiler was originally written in the Bootstrap Compiler language, but recently the resulting system has been disassembled from binary machine code back into FAP assembly language and a great many changes and improvements to the AED-0 Compiler have been made so that now it is available as a public command in the Project MAC Time-Sharing System. AED-0 language at present consists of Algol-60, with some features omitted, and others for plex programming added. The compiler is very efficient and flexible and compiles very good machine code in most cases. The compiler is based directly on the plex concepts described 1 above.

По языку Bootstrap Compiler информации еще меньше, чем по AED-0. Есть отдельные упоминания в http://www.dtic.mil/dtic/tr/fulltext/u2/681342.pdf Project MAC Progress Report IV (July 1966 to July 1967) и интервью Росса
http://conservancy.umn.edu/bitstream/handle/11299/107611/oh178dtr.pdf?sequence=1 An Interview with DOUGLAS T. ROSS, 1989:


… AED releases, and also from the beginning, AED was a machine independent software engineering job. In fact, we started out in parallel on the 709 and the TX-0, before MAC was even thought of, you see. That was actually the Bootstrap Compiler--in which we first wrote AED . Then it was that first AED Compiler that we had up and running here within two weeks of Project MAC opening its doors.…
I backed out of the theoretically-beautiful and clean way that we originally were generating AED code and had the whole compiler back-end redone. We did what we called a disassembly. We took the machine code of the compiler, itself, (just a bit- map of memory essentially) and went back as though it had been written in the FAP assembly language, then came back out and reassembled the whole thing so that it would be easier to do patches. Then we changed the whole code-generation part of the compiler to generate the standard (what was called the BBS format of machine-language representation, so that whatever came out of our compiler would fit into the standards that they"d adopted for Project MAC.

Не все компиляторы начинались с компиляторов:
http://en.wikipedia.org/wiki/History_of_compiler_construction#First_compilers
http://en.wikipedia.org/wiki/Bootstrapping_(compilers%29


The first compiler was written by Grace Hopper, in 1952, for the A-0 System language. The term compiler was coined by Hopper. The A-0 functioned more as a loader or linker than the modern notion of a compiler. The first autocode and its compiler were developed by Alick Glennie in 1952 for the Mark 1 computer at the University of Manchester and is considered by some to be the first compiled programming language. The FORTRAN team led by John W. Backus at IBM is generally credited as having introduced the first complete compiler, in 1957. The first FORTRAN compiler took 18 person-years to create.
The first ALGOL 58 compiler was completed by the end of 1958 by Friedrich L. Bauer, Hermann Bottenbruch, Heinz Rutishauser, and Klaus Samelson for the Z22 computer. Bauer et al. had been working on compiler technology for the Sequentielle Formelubersetzung (i.e. sequential formula translation) in the previous years.…
The COBOL compiler for the UNIVAC II was probably the first to be written in a high-level language, namely FLOW-MATIC, by a team led by Grace Hopper.

И чуть ниже там же - пример компилятора языка, написанного на этом же языке и запускаемого на интерпретаторе языка:


Building a self-hosting compiler is a bootstrapping problem, i.e. the first such compiler for a language must be either hand written machine code or compiled by a compiler written in another language, or compiled by running the compiler in an interpreter.…
Another early self-hosting compiler was written for Lisp by Tim Hart and Mike Levin at MIT in 1962. They wrote a Lisp compiler in Lisp, testing it inside an existing Lisp interpreter. Once they had improved the compiler to the point where it could compile its own source code, it was self-hosting.…
Forth is an example of a self-hosting compiler. The self compilation and cross compilation features of Forth are commonly confused with metacompilation and metacompilers.

Выберите интересующие Вас в Си уроки:

Си — язык программирования, который был создан в 1972 г. Деннисом М. Ритчи. Стандарт языка того времени был продемонстрирован в книге Ритчи в соавторстве с Брайаном Керниганом («Язык программирования Си»). Данный стандарт носит название K&R стандарт (по именам Кернигана и Ритчи). Любая программа, написанная с использованием правил K&R-Си, успешно откомпилируется любым компилятором Си.

Программисты, разрабатывающие компиляторы для Си начали модернизировать и развивать язык. Чтобы не было путаниц, Американский Институт Национальных Стандартов (American National Standards Institute) в 1983 году разработал стандарт ANSI языка. ANSI-Си и по сей день устанавливает правила изменения и развития языка Си.

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

  • Скорость

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

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

  • Переносимость

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

Си использует стандартные наборы ключевых слов. Т.е. программа пишется один раз для любой платформы, любого компьютера с любой операционной системой. Но компиляторы для языка бывают двух типов: одни для IBM, другие — для Apple. Но сам текст программы создается раз и навсегда.

  • Структурирование

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

  • Библиотеки функций

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

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