Программирование или программная инженерия.

Сегодня столкнулся с вопросом. Чем программирование отличается от программой инженерии ? Умные учебники уверяют, что программирование является некоторой абстрактной деятельностью и может происходить во многих различных контекстах. Например программировать можно для удовольствия. А можно заниматься промышленным программированием.  Это обычно происходит в команде, и совершенно точно – для заказчика, который обычно платит за эту работу деньги. При этом процессе получить удовольствие получить не так просто. При этом необходимо точно понимать, что нужно заказчику, выполнить работу в заранее оговоренные сроки и результат должен быть нужного именно такого качества, которое удовлетворит заказчика. Чтобы удовлетворить этим таким требованиям, обычное программирование «обрастает» различными дополнительными видами деятельности: разработкой требований, планированием, тестированием, конфигурационным управлением, проектным менеджментом, созданием различной документации. Все эти виды деятельности нужны в данном случае по большому счету для того, что бы в случае неудачи проекта сказать: «Мы все делали по науке, но получилось, как всегда, а мы в этом не виноваты.»

День рождения 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 литра». И эту можно инструкцию легко представить написанной на одном из языков программирования. Таким образом «бытовое» программирование существует с древнейших времен и до наших дней, а примерно пятьдесят лет назад произошла техническая революция и появился первый компьютер которому можно и нужно было дать инструкцию, что и как делать. К несомненным плюсам компьютера следует отнести его послушность, он никогда не скажет в ответ на указания: «Иди сам к костру и выбирай свой кусок мамонта». Но по закону подлости или по закону диалектики там, где есть плюс, всегда есть минус. В нашем случае минус в том, что инструкции для компьютера должны быть четким и понятными для него. С этого момента начинается история программирования для компьютеров. Это история о том, как люди придумывали, как с наименьшими затратами сил и времени объяснять компьютерам, что и как они должны делать.

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