День рождения Windows XP. Девять лет с нами.

Девять лет назад 25 октября 2001 года корпорация Microsoft представила операционную систему Windows XP. Презентация в Москве проводилась  в Политехническом музее одновременно с мероприятиями в США. Была организована интернет-трансляцию прямо из Нью-Йорка. Сейчас Windows XP несмотря на все усилия по ее похоронам, остается самой распространенной операционной системой. По данным на сентябрь 2010 года, Windows XP  удерживая за собой 51,7% рынка. И это при том, что после нее выпущены целых две операционные системы на продвижение которых потрачено не меренное количество денег и усилий.

Наброски к книге. Первые шаги программирования.

Состояние дел и проблемы.

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

Поэтому возникает естественное желание сделать так, что бы человек работал не с набором чисел, а с чем-то более понятным ему.

Решение.

Каждой машинной команде можно сопоставить условное буквенное обозначение и разработать программу которая будет переводить условные обозначения в машинные коды.  В результате работ в этом направлении появились программы, предназначенные для преобразования условных обозначений в исполняемый машинный код. Такие программы стали называть ассемблерами, а языки, используемые для записи таких программ, — языками ассемблера, или, кратко, тоже ассемблерами.

Ниже приводится фрагмент программы на ассемблере для современного персонального компьютера.

@@1:   CMP AX,BX

JLE @@2

MOV BX,AX

@@2:   LOOP @@1

$3B $3C

$7E $02

$8B $D8

$2E $F7

Наброски к книге. Предисловие.

Многие полагают, что программирование появилось десять или двадцать лет назад, в крайнем случае, пятьдесят лет назад. На самом деле программирование появилось с появлением речи у человека. Как только один человек научился говорить, а другой человек понимать его, первый человек стал давать второму указания, что и как нужно делать. Например: «Иди к костру и выбери самый большой кусок мамонта и принеси его мне».  Я думаю, что те из читателей, кто уже знаком с основами программирования, без труда представят себе программу, описывающую это указание на одном из языков программирования.  С древних времен «бытовое» программирование практически не изменилось. Например,  посылая ребенка в магазин за молоком, родители дают ему инструкции: «Иди в магазин и купи литровый пакет молока, а если литровых пакетов не будет, то купи два пакета по 0,5 литра». И эту можно инструкцию легко представить написанной на одном из языков программирования. Таким образом «бытовое» программирование существует с древнейших времен и до наших дней, а примерно пятьдесят лет назад произошла техническая революция и появился первый компьютер которому можно и нужно было дать инструкцию, что и как делать. К несомненным плюсам компьютера следует отнести его послушность, он никогда не скажет в ответ на указания: «Иди сам к костру и выбирай свой кусок мамонта». Но по закону подлости или по закону диалектики там, где есть плюс, всегда есть минус. В нашем случае минус в том, что инструкции для компьютера должны быть четким и понятными для него. С этого момента начинается история программирования для компьютеров. Это история о том, как люди придумывали, как с наименьшими затратами сил и времени объяснять компьютерам, что и как они должны делать.

Далее в этой книге будет рассказ об основах программирования, но не так как в большинстве учебников: «Оператор – это …», «Объект – это …», а в историческом контексте. Кто и когда придумал различные конструкции и приемы программирования, зачем это было нужно и почему до этого никто не додумался раньше. На мой взгляд, такой подход более полезен, чем попытка на первом занятии понять, что такое объект и чем инкапсуляция отличается от полиморфизма. Если Вы со мной согласны, то вперед.

Извечный вопрос всех программистов.

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

Исходя из своего опыта могу порекомендовать установить адекватную цену на свою работу. Начальник (заказчик) должен понимать,  что при равных затратах времени труд программиста стоит дороже труда секретарши (менеджера) и уже основываясь на этом принимать решение.