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

Возникает новое направление – объектно-ориентированное программирование. Его особенность заключается в использовании виртуальных функций и классов, что увеличивает гибкость динамической организации программы в виде отдельных модулей; а также активное преднамеренное использование таких свойств как наследование, полиморфизм, инкапсуляция. Разработан объектно-ориентированный язык программирования C++, соответствующий практически всем аспектам данного направления. Данный язык является основным во многих операционных системах, и почти вся нами горячо любимая Windows (почему почти?
— потому что без ASMa никак в системном программировании). Короче в С++ писали почти все
(и чуть меньше пишут сейчас). Также широко используется сочетание его с другими языками. Проги в С/C++ компилируются в бинарные исполняемые файлы или в бинарные динамические библиотеки (dll). 

Но как известно многим нам – программистам и юзерам, существует один страшный монстр в этом компьютерном мире, и называет он себя гордо – Microsoft. Базару нет — он управляем, и управляет им отважный
праотец миллионов дыр в своих операционках, его дырявое величество, Билл Гейтс, мать его так!
Решил Билл удивить мир и сказал своим апостолам:

— Вот С++ — хорошая концепция, а мы мутим, типа, самую лучшую реализацию этой концепции под самую глючную, самую дырявую, короче, самую конченную операционную систему во всем этом, из-за наших систем, неидеальном мире! Мы гребанные молодцы!!! Надо создавать свой язык программирования и заставим пользоваться им всех владельцев новых версий Visual C++ 7. Вот это будет тема, типа!

И то ли он что-то недосказал, то ли апостолы что-то прослушали… Сделали, в общем, вещь толковую. А назвать ее решили C#. Я считаю, красивый понт. А Билл, сам того не желая, сделал в своей жизни хоть что-то толковое, а не очередную покупку у лохов прав на DOS или подписывание контрактов с IBM, где последняя расписывается в том, что является лохушкой!
C# имеет двух родителей – это С++ и Java, легко учится при наличии небольшого опыта хоть в одном из этих двух языков.
В последние годы много шуму наделал язык JAVA от Sun Microsystems. Его можно назвать внуком С++. Программы JAVA компилируются не в бинарный исполняемый файл, как в С/C++, а в так называемый байт-код, выполняемый виртуальной машиной JAVA. Так был решен вопрос о переносимости. Но, по мнению Microsoft, у JAVA ест один серьезный недостаток – отсутствие прямой поддержки Windows. Код JAVA не совместим с кодом C/C++, но синтаксис явно
заимствован из С++, но конечно есть некоторые изменения.

Интересный факт:
Язык программирования JAVA – это детище Sun Microsystems, можно сказать, гордость этой компании. Хотя еще какие-то 2 недели назад моя матушка скачивала Java Virtual Machine(среду выполнения JAVA-приложений) с сайта Microsoft. Однако, по решению суда от 3.02.2003, зловещий производитель Windows не имеет прав на распространеие JVM. 

И вот тут Microsoft решает внести свою лепту… В конце 90х разрабатывается язык С# для создания кода Net Framework. В 2000 году появляется первая бета-версия. Мне не известно, на чем сделан Net Framework, но это не мешает мне рассказать о том, что это и зачем надо.

Итак, Net Framework – это среда, в которой могут выполняться программно-независимые приложения. В данной среде поддерживается совместная работа в приложении разных языков программирования. Net Framework определяет библиотеки классов, используемых в C#. Любая примитивная программа C# основана на использовании библиотек классов Net Framework. И, пожалуй, самое главное – Net Framework не ограничивается Windows! Я не знаю, существует ли реализация данной среды под другие системы, но уверяю вас, что скоро это все будет. 

Net Framework содержит в себе не зависящую от языка среду выполнения. Программы C# не компилируются в бинарный исполняемый файл, а компилируются в промежуточный язык (MS Intermediate Language, MSIL). MSIL можно назвать переносным ассемблером, но это псевдо-ассемблер. Среда переводит MSIL в машинный исполняемый код, который в последствии и выполняется. То есть, Net Framework содержит интерпретатор MSIL. А кто сказал, что интерпретаторы плохи? Я с ним не согласен (ну без базару, небольшой проигрыш во времени при запуске), и вот мой аргумент:
интерпретируемость – это идеальное решение проблем переносимости прог. В это же время не возникает никаких ошибок при переносе (если же конечно не глючная версия Net Framework 🙂 ).
Кто знаком с PERL, вспомните, как просто переносятся скрипты в разные ОС. 

По традиции, сейчас мы вместе напишем первую прогу на С# — “Hello
World!!!”. Если вы являетесь счастливым обладателем MS Studio Net, можете набрать прогу в файле с расширением .сs (пусть его имя Hello.cs), затем в командой строке набираете csc Hello.cs в директории содержащей исходник. В результате получается файл Hello.exe, и запустится он только при наличии Net Framework.

Листинг:

using System; //Это называется определением пространства имен, об этом я буду говорить 
//позже 
class Hello //Определение класса

public static void Main() //любая C#-программа начинается с вызова функции Main()
{
Console.WriteLine(“Hello World!!!”);//метод вывода строки класса Console
}

ИТОГ… В вышеприведенном листинге ярко видны 2 отличия от С++:

  • мы определили пространство имен, использовав новое ключевое слово’using’, которого в С++ не было;
  • функция Main() содержится прямо в классе, как в
    JAVA;

А вот еще одно не очень яркое:

  • в С++ для вывода строки в консольном режиме, мы использовали оператор
    cout (в принципе, это целый класс) из iostream.h.

Несмотря на все, С# не утрачивает возможности использования динамических библиотек. Успешно комбинируется с ASP.net. Кроме разработки обычных приложений C# может быть использован для автоматизации работы программ, в частности офисных приложений Microsoft, а также других важных направлениях информационных технологий и сферах деятельности человека. С# имеет
нововведение, тип decimal, используемый в финансовых вычислениях. Об этих и других возможностях этого концептуально нового языка я расскажу позже, в следующих статьях.

Объектно-ориентированная модель C# куда более совершенна модели C++. Об этом пойдет речь в следующей статье. 

I’ll be back!!! See ya!

1 комментарий

  1. 27.04.2015 at 09:37

    выделять код Зеленым курсивом, ну это очень хуево, для сайта который с 1999 года занимается технологиями

Оставить мнение

Check Also

Алмазный фонд «Хакера». Самые крутые материалы по реверсингу и malware за три года

Иногда мы, редакторы и авторы «Хакера», сами читаем «Хакер». Нет, ну то есть мы постоянно …