История языка Си / Habr
Сейчас, наверно, невозможно найти в мире специалиста в IT-области, который бы не слышал о языке Си. Этот язык приобрёл огромную популярность во всём мире и оказал значительное влияние на многие другие языки программирования. Именно он является предшественником таких языков, как C++, C#, Java; менее известных (например J#). Компания Microsoft для разработки родного языка к своей платформе .Net выбрала именно Си-подобный синтаксис. Что ни говори, но язык Си серьезно изменил жизнь программистов прошлого века и стал де-факто в области низкоуровневого программирования, оставив ассемблеру только те места, где производительность имела критическое значение.Многие помнят имена создателей языка — Кена Томпсона и Дениса Ритчи, но я решил копнуть глубже и вспомнить историю создания и развития языка. Всем кому интересна эта тема — добро пожаловать под кат.
Язык Си восходит корнями к языку ALGOL (расшифровывается как ALGorithmic Language), который был создан в 1958 году совместно с комитетом Европейских и Американских учёных в сфере компьютерных наук на встрече в 1958 в Швейцарской высшей технической школе Цюриха. Язык был ответом на некоторые недостатки языка FORTRAN и попыткой их исправить.
Вдохновлённые языком ALGOL-60, Математическая лаборатория Кембриджского Университета совместно с Компьютерным отделом Лондонского университета создали в 1963 году язык CPL (Combined Programming Language).
Язык CPL посчитали сложным, и в ответ на это Мартином Ричардсоном был создан в 1966 году язык BCPL, основное предназначение которого заключалось в написании компиляторов. Сейчас он практически не используется, но в своё время из-за хорошей портируемости он играл важную роль.
BCPL послужил предком для языка Би, разработанного в 1969 в уже знакомой всем AT&T Bell Telephone Laboratories, не менее знакомыми Кеном Томпсоном и Денсом Ритчи.
Язык Би был использован для написания самых ранних версий UNIX, созданной как ответ на проект Multics, разрабатываемый всё в той же Bell Laboratories. Именно этот язык послужил непосредственным предшественником языка Си.
По поводу возникновения языка Си Питер Мойлан в своей книге «The case against C» пишет: «Нужен был язык, способный обойти некоторые жесткие правила, встроенные в большинство языков высокого уровня и обеспечивающие их надежность. Нужен был такой язык, который позволил бы делать то, что до него можно было реализовать только на ассемблере или на уровне машинного кода.» Си стал именно таким языком. Это обусловило его дальнейшую популярность в таких отраслях программирования, как написание драйверов и прочих аспектах низкоуровневого программирования.
Язык программирования Си был разработан в стенах Bell Labs в период с 1969 по 1973 годы. Как признался сам Ритчи, самый активный период творчества приходился на 1972 год.
За всё время своего существования, язык Си оброс легендами по поводу мотивов своего создания.
Согласно одной из легенд, Керниган и Ритчи любили одну компьютерную игру, которую они запускали на главном сервере компании. Позже, они захотели перенести её на компьютер, стоящий в офисе. Но он, к сожалению не имел операционной системы, что сподвигло Кернигана и Ритчи её написать. Когда они захотели перенести систему на другой компьютер, это оказалось непростой задачей, так как система была написана полностью на ассемблере. Тогда у них возникла идея переписать её на язык высокого уровня. Сначала для этих целей планировали использовать язык Би, но в связи с тем, что он не давал на полную использовать новые возможности компьютера, на который они хотели перенести систему, было решено создать свой язык.
Согласно другой легенде, язык Си был первоапрельской шуткой, которая обрела нешуточную популярность.
Компилятор языка Си унаследовал традицию, заложенную ещё Никлаусом Виртом и был написан на самом Си. Согласно мнению большинства, название языка Си является третьей буквой алфавита. Оно появилось как указание на то, что язык Си является более усовершенствованным, чем язык Би. Однако, сам Ритчи по поводу названия языка говорил следующее:«Создав систему типов, соответствующий синтаксис и компилятор для нового языка, я почувствовал, что он заслуживает нового имени: NB показалось мне недостаточно четким. Я решил следовать однобуквенному стилю и назвал его C (Си), оставляя открытым вопрос, являлось ли после B это следующей буквой в алфавите или в названии BCPL».
Успех Си в основном связан с тем, что на нём была написана значительная часть операционной системы UNIX, которая в итоге приобрела очень большую популярность. Если считать по количеству используемых на данный момент операционных систем, разработанных на базе UNIX, то она является самой распространённой системой в мире. В связи с её распространённостю, а также с тем, что на данный момент объём операционной системы измеряется в миллионах строк кода (для примера, в последних версиях Linux содержится более 10 000 000 строк кода), задача о переписывании UNIX на другой язык становиться практически невыполнимой (также следует учитывать тот факт, что при ручном переписывании неизбежно возникнут ошибки, что существенно снизит стабильность работы, а при переводе с использованием программных средств пострадает производительность кода). Кроме того, язык Си, будучи приближённым к аппаратной реализации компьютера позволяет выжать из него намного больше, чем многие другие языки программирования. Это обстоятельство показывает бессмысленность перевода UNIX на другой язык. Таким образом, если другие языки программирования могут исчезнуть с течением времени, уступив дорогу новым технологиям, то язык Си будет жить, пока живёт UNIX. То есть пока существуют компьютеры в том виде, в котором мы их себе представляем.
Первая книга, посвящённая языку Си была написана Керниганом и Ритчи в 1978 году и вышла в свет под названием «Язык программирования Си». Эта книга, в среде программистов более известная как «K&R», стала неофициальным стандартом языка Си.
В конце 1970-х годов, язык си начал вытеснять BASIC, который в то время был ведущим в области программирования микрокомпьютеров. В 1980-х годах он был адаптирован под архитектуру IBM-PC, что привело к значительному скачку его популярности. В то же время Бьярн Страуструп начал разработку языка программирования, который бы сочетал в себе синтаксис популярного языка Си и концепцию объектно-ориентированного программирования, которая становилась всё более востребованной, так началась разработка языка С++.
В то время как Си набирал всё большую популярность, компиляторы для него выпускались различными фирмами, и зачастую программа, которая компилировалась на компиляторе одной фирме, не компилировалась на компиляторе другой. Всё это было связано с отсутствием чётко оговоренного стандарта языка Си. Все разработчики ориентировались на книгу Кернигана и Ритчи, но интерпретировали её по-своему.
Разработкой стандарта языка Си занялся Американский национальный институт стандартов (ANSI). При нём в 1983 году был сформирован комитет X3J11, который занялся разработкой стандарта. Первая версия стандарта была выпущена в 1989 году и получила название С89. В 1990, внеся небольшие изменения в стандарт, его приняла Международная Организация Стандартизации ISO. Тогда он стал известен под кодом ISO/IEC 9899:1990, но в среде программистов закрепилось название, связанное с годом принятия стандарта: С90. Последней на данный момент версией стандарта является стандарт ISO/IEC 9899:1999, также известный как С99, который был принят в 2000 году.
Среди новшеств стандарта С99 стоит обратить внимание на изменение правила, касающегося места объявления переменных. Теперь новые переменные можно было объявлять посреди кода, а не только в начале составного блока или в глобальной области видимости. Это уводит Си от концепции объявления переменных в начале функции, которая присутствует в Паскале. Меня, как и многих программистов, привыкших писать на С++ (где это ограничение отсутствует) такое поведение компилятора вызывало недовольство. Тем не менее, даже с принятием стандарта С99, в программе Borland Embarcadeo RAD Studio 2010, ограничение на объявление переменных в начале блока кода всё ещё действует. Также можно указать другие места, в которых стандарты Си не до конца соблюдаются. Есть мнение, что это связано с тем, что основное внимание больших компаний, таких как Microsoft и Borland сосредоточено на более новых языках программирования. Однако, согласно заверениям компании Sun Microsystems, её среда разработки Sun Studio полностью поддерживает С99.
Стандарт С99 сейчас в большей или меньшей степени поддерживается всеми современными компиляторами языка Си. В идеале, код написанный на Си с соблюдением стандартов и без использования аппаратно- и системно-зависимых вызовов, становился как аппаратно- так и платформенно-независимым кодом.
В 2007 году начались работы над следующим стандартом языка Си: С1x.
История Языка Си
Теги: История Си, ANSI C, ISO C, C99, C11, ISO/IEC C, стандартизация си.
Истоки
Си – это «сопутствующий продукт», полученный во время создания операционной системы UNIX, которая разрабатывалась в Bell Laboratories Кеном Томпсоном, Денисом Ритчи и ко. Томпсон в одиночку написал оригинальную версию UNIX, которая работала на DEC PDP-7, одном из первых миникомпьютеров всего с 8К слов в основной памяти (в конце концов, это был 1969).
Как и остальные операционные системы того времени, UNIX был написан на ассемблере. Отладка программ на ассемблере настоящая мука и их проблематично улучшать, и UNIX не был исключением. Томпсон решил, что для дальнейшей разработки ОС необходим язык высокого уровня и придумал небольшой язык B. За основу Томпсон взял язык BCPL, язык для системного программирования, разработанный в середине 60-х. BCPL, в свою очередь, берёт начало от Алгола 60, одного из самых первых (и оказавших наибольшее влияние) языков.
Ритчи вскоре присоединился к проекту UNIX и начал писать на B. В 1970 Bell Labs приобрела для проекта PDP-11. Так как B был готов к работе на PDP-11, Томпсон переписал часть UNIX на B. В 1971 стало ясно, что B не совсем подходит для PDP-11, поэтому Ритчи начал создавать расширенную версию B. Сначала он назвал её NB (New B), но когда язык стал сильно отличаться от B, название сменили на C. Язык к 1973 стал достаточно стабилен для того, чтобы на нём можно было переписать UNIX. Переход на C обеспечил важное преимущество: переносимость. Написав компилятор C для каждой из машин в Bell Labs, команда разработчиков могла портировать на них UNIX.
Стандартизация
C продолжил развиваться в 70-х, особенно в период с 1977 по 1979, когда вышла первая книга по C. Книга «Язык программирования Си», написанная Брайаном Керниганом и Денисом Ритчи и опубликованная в 1978 стала библией программистов на Си. При отсутсвии официального стандарта эта книга – известная также как K&R, или «Белая Книга», как любят называть поклонники си – фактически стала стандартом. В 70-х программистов на C было немного и большинство из низ были пользователями UNIX. Тем не менее, в 80-х C вышел за узкие рамки мира UNIX. Компиляторы C стали доступны на различных машинах, работающих под управлением разных операционных систем. В частности, Си стал распространяться на быстро развивающейся платформе IBM PC.
Вместе с ростом популярности появились проблемы. Программисты, писавшие новые компиляторы брали за основу язык, описанный в K&R. К сожалению, в K&R некоторые особенности языка были описаны расплывчато, поэтому компиляторы часто трактовали их на своё усмотрение. Кроме того, в книге не было чёткого разделения между тем, что является особенностью языка, а что особенностью операционной системы UNIX. Ухудшало ситуацию и то, что после публикации K&R Си продолжал развиваться: в него добавлялись новые возможности и из него вырезались старые. Вскоре появилась очевидная необходимость в исчерпывающем, точном и соответствующем современным требованиям описании языка. Без такого стандарта стали появляться диалекты языка, которые мешали переносимости – сильнейшей стороне языка.
Разработка американского стандарта Си началась в 1983 под покровительством Американского Национального Института Стандартов (ANSI). После многих доработок стандарт был закончен в 1988 и формально принят в декабре 1989 как стандарт ANSI X3.159-1989. В 1990 году он был утверждён международной организацией по стандартизации (ISO) как интернациональный стандарт ISO/IEC 9899:1990. Эту версию языка обычно называют C89 или C90, для того, чтобы не путать её с оригинальной версией Си, которую обычно называют K&R C.
Язык подвергся небольшим изменениям в 1995 (изменения описаны в документе, который обычно называют Поправка 1). Более значительные изменения случились в 1999 году, когда был опубликован стандарт ISO/IEC 9899:1999. Язык, описанный в этом стандарте обычно называют C99. Термины «ANSI C», «ANSI/ISO C» и «ISO C», когда-то используемые для описания C99 из-за существования двух стандартов имеют двоякое толкование.
В 2011 году вместе с редакцией языка Си++ был выпущен стандарт C11. Несмотря на наличие стандарта 11 года, многие компиляторы до сих пор не поддерживают полностью даже версии C99, так что использование стандарта С11 будет указано явно.
ru-Cyrl 18- tutorial Sypachev S.S. 1989-04-14 [email protected] Stepan Sypachev students
Q&A
Всё ещё не понятно? – пиши вопросы на ящик
learnc.info
История создания языка программирования С и C++
Язык С (читается «Си») создан в начале 70х годов, когда Кен Томпсон и Дэннис Ритчи из Bell Labs разрабатывали операционную систему UNDC. Сначала они создали часть компилятора С, затем использовали ее для компиляции остальной части компилятора С и, наконец, применили полученный в результате компилятор для компиляции UNIX. Операционная система UNIX первоначально распространялась в исходных кодах на С среди университетов и лабораторий, а получатель мог откомпилировать исходный код на С в машинный код с помощью подходящего компилятора С.
Распространение исходного кода сделало операционную систему UNIX уникальной; программист мог изменить операционную систему, а исходный код мог быть перенесен с одной аппаратной платформы на другую. Сегодня стандарт POSIX определяет стандартный набор системных вызовов UNIX, доступных в С, которые должны быть реализованы в версиях UNIX, являющихся POSIX-совместимыми. С был третьим языком, который разработали Томсон и Ритчи в процессе создания UNIX; первыми двумя были, разумеется, А и В.
По сравнению с более ранним языком — BCPL, С был улучшен путем добавления типов данных определенной длины. Например, тип данных int мог применяться для создания переменной с определенным числом битов (обычно 16), в то время как тип данных long мог использоваться для создания целой переменной с большим числом битов (обычно 32). В отличие от других языков высокого уровня, С мог работать с адресами памяти напрямую с помощью указателей и ссылок. Поскольку С сохранил способность прямого доступа к аппаратному обеспечению, его часто относят к языкам среднего уровня или в шутку называют «мобильным языком ассемблера».
Что касается грамматики и синтаксиса, то С является структурным языком программирования. В то время как многие современные программисты мыслят в категориях классов и объектов, программисты на С думают в категориях процедур и функций. В С можно определить собственные абстрактные типы данных, используя ключевое слово struct. Аналогично можно описывать собственные целые типы (перечисления) и давать другие названия существующим типам данных при помощи ключевого слова typedef. В этом смысле С является структурным языком с зародышами объектно-ориентированного программирования.
Широкое распространение языка C на различных типах компьютеров (иногда называемых аппаратными платформами) привело, к сожалению, ко многим вариациям языка. Они были похожи, но несовместимы друг с другом. Это было серьезной проблемой для разработчиков программ, нуждавшихся в написании совместимых программ, которые можно было бы выполнять на нескольких платформах. Стало ясно, что необходима стандартная версия C. В 1983г. ANSI (Американский Национальный Комитет Стандартов) сформировал технический комитет X3J11 для создания стандарта языка C (чтобы «обеспечить недвусмысленное и машинно-независимое определение языка»). В 1989 стандарт был утвержден. ANSI скооперировался с ISO (Международной Организацией Стандартов), чтобы стандартизовать C в международном масштабе; совместный стандарт был опубликован в 1990 году и назван ANSI/ISO 9899:1990. Этот стандарт совершенствуется до сих пор и поддерживается большинством фирм разработчиков компиляторов.
Бьерн Страуструп высвободил объектно-ориентированный потенциал С путем перенесения возможностей классов Simula 67 в С. Первоначально новый язык носил имя «С с классами» и только потом стал называться C++. Язык C++ достиг популярности, будучи разработанным в Bell Labs, позже он был перенесен в другие индустрии и корпорации. Сегодня это один из наиболее популярных языков программирования в мире. C++ наследует как хорошие, так и плохие стороны С.
Бьерн Страуструп: «Я придумал C++, записал его первоначальное определение и выполнил первую реализацию. Я выбрал и сформулировал критерии проектирования C++, разработал его основные возможности и отвечал за судьбу предложений по расширению языка в комитете по стандартизации C++«, — пишет автор самого популярного языка программирования. — «Язык C++ многим обязан языку C, и язык C остается подмножеством языка C++ (но в C++ устранены несколько серьезных брешей системы типов C). Я также сохранил средства C, которые являются достаточно низкоуровневыми, чтобы справляться с самыми критическими системными задачами. Язык C, в свою очередь многим обязан своему предшественнику, BCPL; кстати, стиль комментариев // был взят в C++ из BCPL. Другим основным источником вдохновения был язык Simula67. Концепция классов (с производными классами и виртуальными функциями) была позаимствована из него. Средства перегрузки операторов и возможность помещения объявлений в любом месте, где может быть записана инструкция, напоминает Algol68. «
Название C++ выдумал Рик Масситти. Название указывает на эволюционную природу перехода к нему от C. «++» — это операция приращения в C. Чуть более короткое имя C+ является синтаксической ошибкой; кроме того, оно уже было использовано как имя совсем другого языка. Знатоки семантики C находят, что C++ хуже, чем ++C. Названия D язык не получил, поскольку он является расширением C и в нем не делается попыток исцеляться от проблем путем выбрасывания различных особенностей…
Изначально язык программирования C++ был разработан, чтобы автору и его друзьям не приходилось программировать на ассемблере, C или других современных языках высокого уровня. Основным его предназначением было сделать написание хороших программ более простым и приятным для отдельного программиста. Плана разработки C++ на бумаге никогда не было; проект, документация и реализация двигались одновременно. Разумеется, внешний интерфейс C++ был написан на C++. Никогда не существовало «Проекта C++» и «Комитета по разработке C++». Поэтому C++ развивался и продолжает развиваться во всех направлениях, чтобы справляться со сложностями, с которыми сталкиваются пользователи, а также в процессе дискуссий автора с его друзьями и коллегами.
В языке С++ полностью поддерживаются принципы объектно-ориентированного программирования, включая три кита, на которых оно стоит: инкапсуляцию, наследование и полиморфизм. Инкапсуляция в С++ поддерживается посредством создания нестандартных (пользовательских) типов данных, называемых классами. Язык С++ поддерживает наследование. Это значит, что можно объявить новый тип данных (класс), который является расширением существующего.
Хотя язык программирования С++ справедливо называют продолжением С и любая работоспособная программа на языке С будет поддерживаться компилятором С++, при переходе от С к С++ был сделан весьма существенный скачок. Язык С++ выигрывал от своего родства с языком С в течение многих лет, поскольку многие программисты обнаружили, что для того, чтобы в полной мере воспользоваться преимуществами языка С++, им нужно отказаться от некоторых своих прежних знаний и приобрести новые, а именно: изучить новый способ концептуальности и решения проблем программирования. Перед тем как начинать осваивать С++, Страуструп и большинство других программистов, использующих С++ считают изучение языка С необязательным.
Язык программирования C++ в настоящее время считается господствующим языком, используемым для разработки коммерческих продуктов, 90% игр пишутся на С++ с прменением DirectX.
2000 год
Литература :
Х.М.Дейтел, П.Дж.Дейтел «Как программировать на C++»
Бьерн Страуструп «Язык программирования C++. 3-е издание.»
Симон Робинсон, Олли Корнес, Джей Глинн и др. «C# для профессионалов»
Джесс Либерти «Освой самостоятельно С++ за 21 день»
Станислав Горнаков «DirectX, уроки программирования на С++»
Количество просмотров | 41595 |
---|
www.interestprograms.ru
1. История создания языка с.
Был разработан в начале 1970-х г. Денисом Ритчи как развитие языка Би. Был создан для использования в операционной системе Юникс. Был разработан в лабораториях Bell Labs в период с 1969 по 1973 г. Согласно Ритчи, самый активный период творчества пришелся на 1972 год. Язык назвали Си, потому что многие его особенности берут начало от старого языка Би. Си является самым популярным языком для создания системного программного обеспечения. Его также часто используют для создания прикладных программ. В дальнейшем синтаксис Си стал основой для многих других языков. Язык Си был создан уже после внедрения стандарта ASCII, поэтому использует почти все его графические символы. Более старые языки (Фортран, Кобол) использовали только круглые скобки, а в Си есть и круглые, и квадратные, и фигурные. Кроме того, в Си различаются заглавные и строчные буквы, а более старые языке использовали только заглавные.
В 1978 году Ритчи и Керниган опубликовали первую редакцию книги «Язык программирования Си». В конце 1970-х Си начал вытеснять Бейсик с позиции ведущего языка для программирования микрокомпьютеров. В 1980-х годах он был адаптирован для использования в IBM PC, что привело к резкому росту его популярности. В то же время сотрудники в лабораториях Bell Labs начали работу по добавлению в Си возможностей объектно-ориентированного программирования. Язык, который они в итоге сделали, С++, в настоящее время является самым распространенным языком программирования. Си остается более популярным в UNIX-подобных системах.
2. Основные характеристики алгоритмического языка Си.
Язык С часто называют языком программирования среднего уровня. Но это не значит, что С менее мощный, менее развитой и более трудный в использовании, чем языки высокого уровня, такие как Basic или Pascal. Это также не значит, что С такой же громоздкий и неудобный, как ассемблер (язык низкого уровня). Языком среднего уровня его называют скорее потому, что он объединяет в себе лучшие черты языков высокого уровня с возможностями ассемблера.
Как язык среднего уровня С позволяет манипулировать битами, байтами и адресами, то есть теми базовыми элементами данных, с которыми работает компьютер. Несмотря на это, программа, написанная на С, обладает высокой переносимостью. Переносимость – это свойство программного обеспечения, созданного для одного типа компьютера или операционной системы, позволяющее легко переделать его для другого типа, т.е. перенести в другую вычислительную среду.
Все языки высокого уровня придерживаются концепции типов данных. Тип данных представляет собой набор значений, хранящихся в переменной, а также набор операций, выполнение которых допускается над этими значениями. Обычные типы данных – это целые числа, символы и числа с плавающей точкой. Язык С имеет несколько встроенных типов данных, однако не является сильно типизированным языком, как Pascal или Ada. В языке С допускается почти все преобразования типов. Например, в выражениях можно свободно смешивать переменные символьного и целого типов.
В отличие от большинства языков высокого уровня, в С почти отсутствует контроль ошибок в процессе выполнения программы. Например, не проверяется нарушение границ массивов. Ответственность за подобные ошибки полностью возлагается на программиста.
С не требует строгой совместимости параметров и аргументов функций. В языках программирования высокого уровня обычно необходимо, чтобы тип аргумента более или менее соответствовал типу параметра. Для С это не характерно, здесь аргумент может иметь почти любой тип, если его можно разумно преобразовать в тип параметра. Более того, компилятор С автоматически осуществляет все виды необходимых преобразований.
Важная особенность С – это малое количество ключевых слов, составляющих команды языка. В С89 определено 32 ключевых слова, причем в С99 добавлено только 5 слов. Языки высокого уровня обычно имеют значительно больше ключевых слов, например, в большинстве версий языка Basic их количество превышает сотню!
Язык С хорошо структурирован. В книгах по программированию используется понятие блочной структурированности языка. Хоть этот термин и нельзя применять в полной мере к языку С, его обычно называют просто структурированным языком.
Отличительной особенностью структурированного языка является отдельное размещение различных частей кода программы и данных. Таким способом программист может «скрыть» часть информации, используемую для выполнения специфической задачи, от тех участков программы, где эта информация не нужна.
Структурированный язык предоставляет программисту много различных возможностей. Например, структурированные языки обычно содержат несколько операторов цикла, таких как while, do-while, for.
studfiles.net
1. История создания языка с.
Был разработан в начале 1970-х г. Денисом Ритчи как развитие языка Би. Был создан для использования в операционной системе Юникс. Был разработан в лабораториях Bell Labs в период с 1969 по 1973 г. Согласно Ритчи, самый активный период творчества пришелся на 1972 год. Язык назвали Си, потому что многие его особенности берут начало от старого языка Би. Си является самым популярным языком для создания системного программного обеспечения. Его также часто используют для создания прикладных программ. В дальнейшем синтаксис Си стал основой для многих других языков. Язык Си был создан уже после внедрения стандарта ASCII, поэтому использует почти все его графические символы. Более старые языки (Фортран, Кобол) использовали только круглые скобки, а в Си есть и круглые, и квадратные, и фигурные. Кроме того, в Си различаются заглавные и строчные буквы, а более старые языке использовали только заглавные.
В 1978 году Ритчи и Керниган опубликовали первую редакцию книги «Язык программирования Си». В конце 1970-х Си начал вытеснять Бейсик с позиции ведущего языка для программирования микрокомпьютеров. В 1980-х годах он был адаптирован для использования в IBM PC, что привело к резкому росту его популярности. В то же время сотрудники в лабораториях Bell Labs начали работу по добавлению в Си возможностей объектно-ориентированного программирования. Язык, который они в итоге сделали, С++, в настоящее время является самым распространенным языком программирования. Си остается более популярным в UNIX-подобных системах.
2. Основные характеристики алгоритмического языка Си.
Язык С часто называют языком программирования среднего уровня. Но это не значит, что С менее мощный, менее развитой и более трудный в использовании, чем языки высокого уровня, такие как Basic или Pascal. Это также не значит, что С такой же громоздкий и неудобный, как ассемблер (язык низкого уровня). Языком среднего уровня его называют скорее потому, что он объединяет в себе лучшие черты языков высокого уровня с возможностями ассемблера.
Как язык среднего уровня С позволяет манипулировать битами, байтами и адресами, то есть теми базовыми элементами данных, с которыми работает компьютер. Несмотря на это, программа, написанная на С, обладает высокой переносимостью. Переносимость – это свойство программного обеспечения, созданного для одного типа компьютера или операционной системы, позволяющее легко переделать его для другого типа, т.е. перенести в другую вычислительную среду.
Все языки высокого уровня придерживаются концепции типов данных. Тип данных представляет собой набор значений, хранящихся в переменной, а также набор операций, выполнение которых допускается над этими значениями. Обычные типы данных – это целые числа, символы и числа с плавающей точкой. Язык С имеет несколько встроенных типов данных, однако не является сильно типизированным языком, как Pascal или Ada. В языке С допускается почти все преобразования типов. Например, в выражениях можно свободно смешивать переменные символьного и целого типов.
В отличие от большинства языков высокого уровня, в С почти отсутствует контроль ошибок в процессе выполнения программы. Например, не проверяется нарушение границ массивов. Ответственность за подобные ошибки полностью возлагается на программиста.
С не требует строгой совместимости параметров и аргументов функций. В языках программирования высокого уровня обычно необходимо, чтобы тип аргумента более или менее соответствовал типу параметра. Для С это не характерно, здесь аргумент может иметь почти любой тип, если его можно разумно преобразовать в тип параметра. Более того, компилятор С автоматически осуществляет все виды необходимых преобразований.
Важная особенность С – это малое количество ключевых слов, составляющих команды языка. В С89 определено 32 ключевых слова, причем в С99 добавлено только 5 слов. Языки высокого уровня обычно имеют значительно больше ключевых слов, например, в большинстве версий языка Basic их количество превышает сотню!
Язык С хорошо структурирован. В книгах по программированию используется понятие блочной структурированности языка. Хоть этот термин и нельзя применять в полной мере к языку С, его обычно называют просто структурированным языком.
Отличительной особенностью структурированного языка является отдельное размещение различных частей кода программы и данных. Таким способом программист может «скрыть» часть информации, используемую для выполнения специфической задачи, от тех участков программы, где эта информация не нужна.
Структурированный язык предоставляет программисту много различных возможностей. Например, структурированные языки обычно содержат несколько операторов цикла, таких как while, do-while, for.
studfiles.net
Краткая история языка с
Язык С был создан Деннисом Ричи (Dennis Ritchie) в лабораториях Bell Telephone Laboratories в 1972 г. Этот язык создавался для конкретной задачи — разработки операционной системы UNIX (которая сейчас используется на множестве компьютеров). С самого начала язык С преследовал весьма практическую цель— помочь программистам, очень занятым людям, быстро писать программы.
Язык С оказался таким гибким и мощным, что быстро вышел за пределы лабораторий Bell. Им стали пользоваться повсюду для разработки самых разных программ. Однако вскоре различные организации стали применять свои собственные версии языка, и различия между этими версиями, пусть и небольшие, доставляли программистам немало неудобств. В ответ на возникновение этой проблемы Американский Национальный Институт Стандартов (American National Standards Institute— ANSI) сформировал в 1983 году комитет для создания стандарта языка С. Именно этот стандарт известен как стандарт ANSI языка С. Практически во всех современных компиляторах С предусмотрена возможность ограничить синтаксис программы этим стандартом.
Язык С изменяется очень редко. Самое недавнее изменение произошло в 1999 г., когда был принят стандарт ANSI C-99. Этот стандарт закрепил в языке несколько новых возможностей. Более ранние компиляторы не поддерживают этого новейшего стандарта.
Язык называется так, потому что его непосредственный предшественник назывался В. Язык В был разработан Кеном Томпсоном (Ken Thompson) из лабораторий Bell. А почему тот первый язык назывался В — это уж вы догадайтесь сами.
В современном мире компьютерного программирования существует широкий выбор языков высокого уровня, например, С, Perl, BASIC, Java, C#. Все они превосходны и подходят для решения практически любых задач программирования. Однако есть ряд причин, по которым многие специалисты компьютерной индустрии ставят С на первое место.
С — язык мощный и гибкий. Единственное ограничение возможностей программирования на нем — это пределы вашей собственной фантазии. Сам язык почти никаких ограничений не накладывает. С используется при разработке таких программных продуктов, как операционные системы, текстовые редакторы, графические приложения, программы делопроизводства и даже компиляторы других языков.
С — популярный язык, который предпочитают многие профессиональные программисты. Следствие этого — наличие большого количества разнообразных компиляторов С и полезных дополнений к ним.
С — хорошо переносимый язык. Переносимый означает, что программу на С, написанную для одной компьютерной системы (например, для IBM PC), можно скомпилировать и запустить в другой среде (скажем, на DEC VAX) без особых или даже без всяких изменений. Кроме того, программу для операционной системы Microsoft Windows можно перенести на компьютер под управлением Linux почти без доработки. Переносимости способствует стандарт ANSI, который устанавливает требования к компиляторам С.
Словарь С очень краток — в нем всего несколько фиксированных терминов, которые называются ключевыми словами. Они служат основой для функциональных возможностей языка. Может показаться, что язык с большим количеством ключевых слов (еще называемых служебными словами) был бы более мощным. Но это не так. Всякий, кто берется за программирование на С, вскоре обнаруживает, что с его помощью можно решить практически любую задачу.
С — модульный язык. Программу на С можно (и нужно) писать в виде набора отдельных подпрограмм-модулей, которые называются функциями. Такие функции можно затем использовать в других программах и в других целях. С помощью корректной передачи данных в функции можно добиться эффективной и экономной работы программы.
Может возникнуть вопрос, в чем разница между С и C++, и не следует ли изучать C++ вместо С. C++ является расширением С. Это означает, что в C++ содержится все, что есть в С, а также дополнительные средства для объектно-ориентированного программирования. При переходе к C++ оказывается, что все изученное про С по-прежнему справедливо и для его расширения, C++. Таким образом, изучение С не только дает знание одного из мощнейших и популярнейших современных языков программирования, но и подготавливает к изучению объектно-ориентированного программирования.
Си лежит также в основе таких мощных языков объектно-ориентированного программирования Java и С#.
studfiles.net
ПРОИСХОЖДЕНИЕ ЯЗЫКА СИ. Язык Си
ПРОИСХОЖДЕНИЕ ЯЗЫКА СИ
Сотрудник фирмы Bell Labs Деннис Ритчи создал язык Си в 1972 г. во время совместной работы с Кеном Томпсоном над операционной системой UNIX. Ритчи не выдумал Си просто из головы — прообразом послужил язык Би, разработанный Томпсоном, который в свою очередь…, но это уже другая история. Важным моментом для нас является то, что язык Си был разработан как инструмент для программистов-практиков. В соответствии с этим главной целью его автора было создание удобного и полезного языка.
Мы думаем, что критерий полезности принимался во внимание ПРИ разработке большинства языков программирования, но, кроме того, часто учитывались и другие потребности. Одной из главных Целей при создании языка Паскаль, например, было построение ПРОЧНЫХ основ обучения принципам программирования. Язык Бейсик создавался так, чтобы его синтаксис был близок к синтаксису английского языка; поэтому им легко могли пользоваться студенты, не знакомые с ЭВМ. Все эти цели тоже важны, но они не всегда совместимы с прагматическими, каждодневными требованиями. Предпосылки, послужившие основой создания языка Си как средства программирования, позволили разработать, кроме того, язык, облегчающий труд программиста.
Поделитесь на страничкеСледующая глава >
it.wikireading.ru