C_Kurs_Lekt / C_I_семестр / 00_История_С_и_Особенности
.pdfЯЗЫК «Си» История, Особенности |
1 |
ßÇÛÊ ÑÈ
История языка.
ßçûê "C", первоначально предназначавшийся для написания операционной системы "UNIX" на ЭВМ DEC PDP-11, был разработан и реализован на этой системе в 1972 году 31-летний специалистом по системному программированию из фирмы Bell Labs Деннисом Ритчи.
На язык «С» оказали влияние такие алгоритмические языки как Алгол (60г), CPL(63г), BCPL, A(1970г),
B.
Многие из наиболее важных идей "C" от языка BCPL, разработанного Мартином Ричардсом (67г). Косвенно язык BCPL оказал влияние на "C" через язык "B", написанный Кеном Томпсоном в-1972г для первой операционной системы "UNIX" на ЭВМ PDP-7.
Хотя язык "C" имеет несколько общих с BCPL характерных особенностей, он никоим образом не является диалектом последнего. И BCPL и "B" - безтипные языки; единственным видом данных для них являются машинное слово, а доступ к другим объектам реализуется специальными операторами или обращением к функциям.
Язык "C" - это язык относительно "низкого уровня", т.е. он имеет дело с объектами того же вида, что и большинство ЭВМ, а именно: с символами, числами и адресами. Они могут объединяться и пересылаться посредством обычных арифметических и логических операций, осуществляемых реальными ЭВМ. Кроме того, имеется иерархия производных типов данных, создаваемых указателями, массивами, структурами, объединениями и функциями.
Язык "C" не является языком строгой типизации в смысле Паскаля или Алгола 68.
Он сравнительно снисходителен к преобразованию данных, хотя и не будет автоматически преобразовывать типы данных, как это делает PL/1. Также в отличие от PL/1, в языке "C" отсутствуют операции, имеющие дело непосредственно с составными объектами, такими как строки символов или массивы, рассматриваемыми как целое.
Язык не предоставляет никаких других возможностей распределения памяти, кроме статического определения и механизма стеков, обеспечиваемого локальными переменных функций; здесь нет ни "куч" (heap), ни "сборки мусора", как это предусматривается в АЛГОЛЕ-68.
Â1984 году французский математик и саксофонист Филип Кан основывает фирму Borland International. Далее появился диалект языка Си фирмы Borland.
Вскоре он стал распространяться для программистов-практиков. В конце 70-х были разработаны трансляторы Си для МикроЭВМ для операционной системой СР/M.
Â1983 г. Американский Институт Стандартов (ANSI) сформировал Технический Комитет X3J11, для создания стандарта языка Си. Появившийся на рынке язык Си++ корпорации Borland подчиняется большинству требований стандарта.
ОСОБЕННОСТИ ЯЗЫКА
Си - это универсальный язык программирования общего назначения (используется почти на всех существующих ЭВМ).
Он отличается своей эффективностью, экономичностью, и переносимостью.
Си большой набор операций, многие из которых соответствуют машинным командам и допускают прямую трансляцию в машинный код.
Си поддерживает указатели на переменные и функции, соответствующие машинному адресу этого объекта и позволяющие ссылаться на объект тем же самым путем, как это делает машина. Си поддерживает арифметику указателей, и тем самым позволяет осуществлять непосредственный доступ и манипуляции с адресами памяти.
Это позволяет разрабатывать эффективно-выполняемые программные продукты почти любого вида и получать при этом быстрые и компактные программы, во многих случаях сравнимы по скорости с программами, написанными на языке ассемблера.
Си сочетает эффективность и мощность в относительно малом по размеру языке. Не имея встроенных компонентов языка, Си располагает библиотекой объектных модулей, в которой реализованы функции выполняющие ввод-вывод, распределение памяти, манипуляций с экраном и т.д. Такое решение позволяет изолировать языковые особенности от специфики процессора, на котором выполняется результирующая программа. Строгое определение языка делает его независимым от любых деталей операционной системы или машины. В то же время программисты могут добавлять в библиотеку специфические системные программы, чтобы более эффективно использовать конкретные особенности машины.
Т.е по своей сути Си является языком функций. Программирование на Си, осуществляется путем написания функций и обращения к библиотечным функциям. Большинство функций возвращают некоторые значения, которые могут использоваться в других операторах.
Си обеспечивает полный набор операторов структурного программирования.
В своем составе Си содержит препроцессор, который обрабатывает текстовые файлы перед компиляцией. Среди его наиболее полезных приложений при написании программ на Си являются: определение программных констант, замена вызовов функций аналогичными, но более быстрыми макросами, условная компиляция.
Тем не менее, Си это слабо типизированный язык и это налагает ограничения в таких, например, действиях, как преобразование типов.
Существующие компиляторы не предусматривают никакой проверки индексов массивов, типов аргументов и т.п во время выполнения программы, что может привести к непредсказуемым результатам. Ответственность за такие последствия полностью ложатся на программиста.