Отправляет email-рассылки с помощью сервиса Sendsay

Программирование для .NET

  Все выпуски  

Программирование для .NET


Добрый день!

Этим выпуском я начинаю серию публикаций, посвященных изучению основ программирования.

Вы знаете, что важной составляющей компьютерной техники является ее программное обеспечение. Именно программы позволяют компьютеру быть столь универсальным устройством, дают ему возможность выполнять то, ради чего он приобретается: работать с документами, общаться, играть... На обычном домашнем компьютере имеются сотни и тысячи программ разного назначения, причем одновременно работает не один десяток из них.

Что же такое программа, как она устроена?

Программа размещается в оперативной памяти компьютера. Ее фрагменты делятся на два типа: код и данные. В коде содержатся команды процессора, которые заставляют его выполнять необходимую работу, а данные — это те значения, с которыми работает программа (числа, текст, изображения и т. п.) Процессор поочередно извлекает команды из памяти и исполняет их. При исполнении команд он может извлекать из данных необходимые величины и записывать туда результаты обработки (здесь мы говорим о так называемом фон-неймановском компьютере, которыми, с рядом оговорок, является подавляющее большинство современных компьютеров).

Сами команды представляют собой двоичные значения, занимающие от одного до нескольких байт (конкретное соответствие значений командам определяется типом процессора). Фактически, создание программы сводится к тому, чтобы в коде нужным образом разместить необходимые команды, разместить исходные данные и определить структуру данных для остальных значений. Проблема в том, что представление программы в таком виде совершенно не наглядно и крайне неудобно для разработки.

Первый шаг к тому, чтобы сделать программирование более наглядным, состоял в том, что каждая команда стала обозначаться некоторым буквенным сокращением — мнемоникой. Теперь программа стала представлять собой текст, в каждой строке которой находилась мнемоника команды (с дополнительными параметрами) либо описание фрагмента данных. Этот текст переводился в двоичный вид автоматически с помощью специальной программы — ассемблера. Соответственно, такой способ описания программы стал называться языком ассемблера (а впоследствии сам язык стали упрощенно называть ассемблером).

Использование ассемблера, конечно, ощутимо упростило разработку программ, но оставляло нерешенными следующие проблемы:

  • Набор команд и иных средств ассемблера непосредственно связан с платформой, для которой пишется программа (под платформой подразумевается тип процессора и семейство используемых операционных систем).
  • Объем программы достаточно велик, так как команды процессора, как правило, могут выполнять лишь элементарные действия. Соответственно, для сложной обработки приходится указывать большое количество команд.
  • В силу большого объема текст программы трудно обозрим, его трудно изучать, дорабатывать, в нем сложно находить ошибки.
  • Разработчику приходится иметь в виду, какие возможности имеет тот или иной процессор, и каковы особенности их использования, вместо того чтобы сконцентрироваться непосредственно на разработке логики программы.
  • Если возникает потребность перенести программу на другую платформу, ее приходится переписывать заново. Проблема усугубляется, если необходимо поддерживать и развивать параллельно версии программы для разных платформ.

Эти и другие проблемы привели к тому, что в настоящее время ассемблеры используются только в специфически узкой сфере, и мы в дальнейшем исключаем их из своего рассмотрения.

 

Тема следующего выпуска: Языки высокого уровня


В избранное