Логин:
Пароль:

Клан Си

Меню сайта
Наведи..
И нажми для выбора
Данные сайта
Онлайн всего: 1
Гостей: 1
Пользователей: 0
Статистика

Каталог статей

Главная » Статьи » С/С++/С# » история

Языки Си
Начало современной эпохи программирования отмечено созданием языка С. Он
был разработан Дэнисом Ритчи (Dennis Ritchie) в 1970-х годах для компьютера PDP
11 компании DEC (Digital Equipment Corporation), в котором использовалась операционная система UNIX. Несмотря на то что некоторые известные языки программирования, в особенности Pascal, достигли к тому времени значительного развития и
признания, именно язык С определил направление сегодняшнего программирования.
Язык С вырос из кризиса программного обеспечения 1960-х годов и революционного перехода к структурному программированию. До структурного программирования
многие программисты испытывали трудности при написании больших программ, поскольку обозначилась тенденция вырождения программной логики и появления так
называемого "спагетти-кода" (spaghetti code) с большим размером процедур и интенсивным использованием оператора перехода goto. Такие программы были весьма
трудны для изучения и модификаций. В структурных языках программирования эта
проблема решалась посредством добавления точно определенных управляющих конструкций, вызова подпрограмм с локальными переменными и других усовершенствований. Структурные языки позволили писать довольно большие программы в приемлемые сроки.
Хотя в то время уже существовали другие структурные языки, С был первым языком, в котором удачно сочетались мощь, элегантность, гибкость и выразительность.
Его лаконичный и к тому же простой в применении синтаксис в совокупности с философией, подразумевающей возложение ответственности на программиста (а не на язык), быстро завоевал множество сторонников. С точки зрения сегодняшнего дня,
этот язык, возможно, несколько трудноват для понимания, но программистам того
времени он показался порывом свежего ветра, которого они так долго ждали. В результате С стал самым популярным структурным языком программирования 1980-х годов .
Но многоуважаемый язык С имел ограничения. Одним из его недостатков была
невозможность справиться с большими программами. Если проект достигал определенного размера, то дальнейшая его поддержка и развитие были связаны с определенными трудностями. Местоположение этой "точки насыщения" зависело от конкретной программы, программиста и используемых им средств, но вероятность ее
достижения очень возрастала, когда количество строк в программе приближалось к 5 000.

Создание ООП и C++

К концу 1970-х размер проектов стал приближаться к критическому, при превышении которого методика структурного программирования и язык С "опускали руки". Поэтому стали появляться новые подходы к программированию, позволяющие
решить эту проблему. Один из них получил название объектно-ориентированного про-
граммирования (ООП). Используя ООП, программист мог справляться с программами
гораздо большего размера, чем прежде. Но вся беда состояла в том, что С, самый популярный на то время язык, не поддерживал ООП. Желание работать с объектно-ориентированной версией языка С в конце концов и привело к созданию C++.
Язык C++ был разработан Бьярни Страуструпом (Bjarne Stroustrup) в компании
Bell Laboratories (Муррей Хил, Нью-Джерси), и годом создания считается 1979-й.
Первоначально создатель нового языка назвал его "С с классами", но в 1983 году это
имя было изменено на C++. C++ полностью включает элементы языка С. Таким образом, С можно считать фундаментом, на котором построен C++. Большинство дополнений, которые Страуструп внес в С, были предназначены для поддержки объектно-ориентированного программирования. По сути, C++ — это объектно-ориентированная версия языка С. Возводя "здание"C++ на фундаменте С, Страуструп обеспечил плавный переход многих программистов на "рельсы" ООП. Вместо необходимости изучать совершенно новый язык, С-программисту достаточно было освоить лишь новые средства, позволяющие использовать преимущества объектно-ориентированной методики.
На протяжении 1980-х годов C++ интенсивно развивался и к началу 1990-х уже
был готов для широкого использования. Рост его популярности носил взрывоподобный характер, и к концу этого десятилетия он стал самым широко используемым
языком программирования. В наши дни язык C++ по-прежнему имеет неоспоримое
превосходство при разработке высокопроизводительных программ системного уровня.
Важно понимать, что создание C++ не было попыткой изобрести совершенно но-
вый язык программирования. Это было своего рода усовершенствование и без того
очень успешного языка. Такой подход к разработке языков (взять за основу существующий язык и поднять его на новую ступень развития) дал начало тенденции, которая продолжает жить и сегодня.

Internet и появление языка Java

Следующей ступенью на лестнице прогресса языков программирования стал язык
Java, который первоначально назывался Oak (в переводе с англ. "дуб"). Работа над его
созданием началась в 1991 году в компании Sun Microsystems. Основной движущей
силой разработки Java был Джеймс Гослинг (James Gosling). В его рабочую группу
входили Патрик Нотон (Patrick Naughton), Крис Уортс (Chris Warth), Эд Фрэнк (Ed
Frank) и Майк Шеридан (Mike Sheridan).
Java — это структурный объектно-ориентированный язык программирования, синтаксис и основополагающие принципы которого "родом" из C++. Своими новаторскими аспектами Java обязан не столько прогрессу в искусстве программирования
(хотя и это имело место), сколько изменениям в компьютерной среде. Еще до наступления эры Internet большинство программ писалось, компилировалось и предназначалось для выполнения с использованием определенного процессора и под управлением
конкретной операционной системы. Несмотря на то что программисты всегда старались делать свои программы так, чтобы их можно было применять неоднократно,
возможность легко переносить программу из одной среды в другую не была еще достигнута, к тому же проблема переносимости постоянно отодвигалась, решались же
более насущные проблемы. Однако с появлением всемирной сети Internet, в которой
оказались связанными различные типы процессоров и операционных систем, старая проблема переносимости заявила о себе уже в полный голос. Для ее решения понадобился новый язык программирования, и им стал Java.
Интересно отметить , что, хотя единственным наиболее важным аспектом Java (и
причиной быстрого признания) является возможность создавать на нем межплатформенный (совместимый с несколькими операционными средами) переносимый программный код, исходным импульсом для возникновения Java стала не сеть Internet, a
настоятельная потребность в не зависящем от платформы языке, который можно было бы использовать в процессе создания программного обеспечения для встроенных
контроллеров. В 1993 году стало очевидным, что проблемы межплатформенной переносимости, четко проявившиеся при создании кода для встроенных контроллеров,
также оказались весьма актуальными при попытке написать код для Internet. Ведь
Internet — это безбрежная компьютерная среда, в которой "обитает" множество компьютеров различных типов. И оказалось, что одни и те же методы решения проблемы
переносимости в малых масштабах можно успешно применить и к гораздо большим,
т.е. в Internet.
В Java переносимость достигается посредством преобразования исходного кода
программы в промежуточный код, именуемый байт-кодом (bytecode), т.е. машиннонезависимый код, генерируемый Java-компилятором. Байт-код выполняется виртульной машиной Java (Java Virtual Machine — JVM) -— специальной операционной
системой. Следовательно, Java-программа могла бы работать в любой среде, где доступна JVM. А поскольку JVM относительно проста для реализации, она быстро стала
доступной для большого количества сред.
Использование Java-программами байт-кода радикально отличало их от С- и С++-
программ, которые почти всегда компилировались для получения исполняемого машинного кода. Машинный код связан с конкретным процессором и операционной
системой. Поэтому, если С/С++ - программу нужно выполнить в другой системе, ее
необходимо перекомпилировать в машинный код, соответствующий этой среде. Следовательно, чтобы создать С/С++ - программу, предназначенную для выполнения в
различных средах, необходимо иметь несколько различных исполняемых (машинных)
версий этой программы. Это было непрактично и дорого. И наоборот, использование
для выполнения Java - программпромежуточного языка было элегантным и рентабельным решением. Именно это решение было адаптировано для языка С#.
Как уже упоминалось, Java — потомок С и C++. Его синтаксис основан на синтаксисе С, а объектная модель — продукт эволюции объектной модели C++. Хотя
Java-код несовместим с С или C++ ни снизу вверх, ни сверху вниз, его синтаксис так
похож на синтаксис языка С, что толпы C/C++-программистов могли с минимальными усилиями переходить к программированию на Java. Более того, поскольку язык
Java строился на существующей парадигме (и усовершенствовал ее), Джеймсу Гослингу ничто не мешало сосредоточить внимание на новых возможностях этого языка.
Подобно тому как Страуструпу не нужно было "изобретать колесо" при создании
C++, так и Гослингу при разработке Java не было необходимости создавать совершенно новый язык программирования. Более того, создание Java показало, что языки
С и C++ - прекрасный "субстрат" для "выращивания" новых компьютерных языков.
Созданный компанией Microsoft для поддержки среды .NET Framework , язык С#
опирается на богатое наследие в области программирования. Его главным архитектором был ведущий специалист в этой области — Андерс Хейлсберг (Anders Hejlsberg) .
С# - прямой потомок двух самых успешных в мире компьютерных языков : С и C++.
От С он унаследовал синтаксис, ключевые слова и операторы. Он позволяет построить и усовершенствовать объектную модель , определенную в C++. Кроме того, С# близко связан с другим очень успешным языком: Java. Имея общее происхождение ,но различаясь во многих важных аспектах, С# и Java — это скорее "двоюродные братья". Например, они оба поддерживают программирование распределенных систем и оба используют промежуточный код для достижения переносимости, но различаются при этом в деталях реализации . Опираясь на мощный фундамент, который составляют унаследованные характеристики , С# содержит ряд важных новшеств, поднимающих искусство программирования на новую ступень. Например, в состав элементов языка С# включены такие понятия, как делегаты (представители), свойства, индексаторы и события. Добавлен также синтаксис, который поддерживает атрибуты; упрощено создание компонентов за счет исключения проблем, связанных с COM ( Component Object Model ) – модель компонентных объектов Microsoft - стандартный механизм, включающий интерфейсы, с помощью которых объекты предоставляют свои службы другим объектам) .И еще . Подобно Java язык С# предлагает средства динамического обнаружения ошибок, обеспечения безопасности и управляемого выполнения программ. Но, в отличие от Java, C# дает программистам доступ к указателям. Таким образом, С# сочетает первозданную мощь C++ с типовой безопасностью Java, которая обеспечивается наличием механизма контроля типов (type checking) и корректным использованием шаблонных классов (template class). Более того, язык С# отличается тем, что компромисс между мощью и надежностью тщательно сбалансирован и практически прозрачен (не заметен для пользователя или программы). На протяжении всей истории развития вычислительной техники эволюция языков программирования означала изменение вычислительной среды, способа мышления программистов и самого подхода к программированию. Язык С# не является исключением. В непрекращающемся процессе усовершенствования, адаптации и внедрения нововведений С# в настоящее время находится на переднем крае. Это - язык, игнорировать существование которого не может ни один профессиональный программист.
Языку С# "досталось" богатое наследство. Он - прямой потомок двух самых успешных языков программирования (С и C++) и тесно связан с не менее успешным
языком Java.

Категория: история | Добавил: tank (18.01.2010)
Просмотров: 4728 | Теги: объектно орейнтированное программир, ООП, программироание, история С#, история С, история java, структурные языки, история С++, статьи про язык Си | Рейтинг: 2.0/1
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]