пятница, 2 июля 2010 г.

Как работает net frame work


Так получилось, что у меня на блоге нет отдельной рубрики, посвященной net frame work. Поэтому статьи из этой серии я помещаю в категорию WPF – как наиболее близкую к фреймворку.

В прошлый раз я описал историю Net FrameWork. Историю, как я считаю, составил довольно полную. Но я еще не описал один момент, который является самым главным – как все-таки работает этот самый net frame work? Чтобы ответить на этот вопрос – прочитайте данную статью.

Как нам всем понятно, язык программирования создан для того, чтобы пользователи компьютера могли «сказать» ему, что необходимо сделать (чаще всего – это программисты). Для людей больше подходят для понимания символы (буквы, слова, предложения и тд). Но для компьютера они совершенно непонятны. Как вы помните, компьютер понимает только цифры, в частности только двоичную систему. Поэтому каким-то образом необходимо преобразовывать код на языке программирования в цифры, которые будут понятны компьютеру. Для этого существуют программы, которые называются компиляторами.

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

Зачем необходимо преобразовывать исходный код в промежуточный? Ответ на этот вопрос я уже частично сказал – для того, чтобы максимально использовать возможности конкретной аппаратной платформы. CIL можно сравнить с алгоритмом (это грубое сравнение). Такой алгоритм, в каждой конкретной ситуации (с разными параметрами) будет выдавать различный результат, это обуславливается условиями алгоритма. То есть будет получен максимально возможная, в данной ситуации, производительность. Не правда ли – удобно?

Кроме того, мы можем использовать различные языки программирования (которые поддерживаются платформой net frame work, обычно такие языки имеют окончание .NET). Причем языки могут кардинально друг от друга отличаться. Но промежуточный код CIL будет одинаков.



Для того, чтобы промежуточный код CIL мог быть преобразован, необходимо установить среду CLR (Common Language Runtime – общеязыковые библиотеки). Именно эта среда и преобразует промежуточный код в конечное приложение.

Важно еще сказать, что среда CLR способна оптимизировать промежуточный код CIL – например, автоматическая сборка мусора и закрытие тех файлов, которые не были закрыты программистом. Кроме того, система типов в net frame work одинакова, так что CIL-файл, который получен при преобразовании программы с языка C# может свободно взаимодействовать с CIL-файлом, который мы получим при использовании языка Visual Basic.

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

Кстати, нашел интересную картинку, которую правда лучше было бы поместить в историю net frame work. Но помещу сюда:

Комментариев нет:

Отправить комментарий