Re[10]: SEMAT – Единая Теория Всего Программирования?
От: vdimas Россия  
Дата: 06.04.15 21:30
Оценка:
Здравствуйте, petr_t, Вы писали:

V>>Просто "спецы" могут увлечься, могут проигнорировать составление и следование планам и графикам и т.д.

_>Плох тот спец, у которого планирование работы и инкрементальная разработка не стали привычкой.

ЧТД. Вот тебе база UP.

Сам с собой споришь. ))
Re[6]: SEMAT – Единая Теория Всего Программирования?
От: vdimas Россия  
Дата: 06.04.15 21:47
Оценка: -1
Здравствуйте, Sinix, Вы писали:

S>ты сейчас про современные версии, а не про оригиналы времён расцвета Розы? Тогда всё правильно, кроме того, что речь вообще-то шла про каноничные "бронебойные" методики.


Кстате, вспомнил про неплохой давний пост коллеги насчет "предварительного проектирования":
http://rsdn.ru/forum/management/2646352.1
Автор: Gaperton
Дата: 05.09.07


"Бронебойные методики" были выработаны на больших (по тем временам) проектах.
Re[9]: SEMAT – Единая Теория Всего Программирования?
От: landerhigh Пират  
Дата: 06.04.15 22:37
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Не хочешь поделиться опытом, хотя бы в двух словах.


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

V>Применяли ли НКА вместо ДКА, например?


В нашей предметной области (не парсеры, а именно физические автоматы — роботы, исполнительные устройства, разнообразные сервисы и прочий полтергейст) НКА в принципе не должны применяться, но после анализа кода часто оказывалось, что реализован был именно НКА, что являлось ошибкой и причиной трудноуловимых багов.

V>Или, как в классике, насильно вводили "эквивалентные процессы", то бишь, разбивали автомат на подавтоматы, то бишь, отказывались от конечности автомата, получая почти МТ в итоге? ))


Вообще-то разбитие КА на подавтоматы — это один из простых способов его минимизации и избегания State Explosion.

На самом деле проблема тут очень проста. Каждый раз делается одна и та же ошибка — начинают реализовывать автомат, не имея диаграммы состояний (таблицы переходов, алфавита с функцией переходов и т.п., называй как удобно) перед глазами. Сложность реализации КА на ЯВУ ведет к тому, что наличие КА в коде становится крайне неочевидным, а логика его — размазанной по коду. Обычно таблица переходов в коде просто отсутствует. Затем, вследствие отсутствия структуры изначального автомата, при отладке попытке заставить все это работать начинается все вышеописанное — превращение ДКА в НКА, а то и в самовозбуждающийся генератор, и state explosion.

Исправлять проблему state explosion в имеющемся коде, который уже вышел в продакшен — это большой нуегонафиг. Был случай, когда коллега, получивший от другого подразделения некий код, основывающийся на КА, решил выяснить, почему именно дальнейшее расширение и поддержка этого кода застопорились. Написал простой парсер и скормил его plantuml. Получил диаграмму одного автомата с 90 состояниями. И хотя эквивалентные процессы из этой диаграммы стали очевидными, стало понятно, что рефакторинг в данном случае будет синонимом полного переписывания с нуля.

Наличие же поддерживаемой в актуальном состоянии диаграммы стейтов рядом с кодом обычно помогает избежать этих проблем. Фреймворки, в которых таблица переходов существует в коде явно, тоже являются хорошим подспорьем — мы в итоге выработали свой похожий на бустовский FSM подход.
Re[11]: SEMAT – Единая Теория Всего Программирования?
От: petr_t  
Дата: 07.04.15 03:02
Оценка:
Здравствуйте, vdimas, Вы писали:

V>ЧТД. Вот тебе база UP.

V>Сам с собой споришь. ))

Черта с два. Пара простых практических правил, которым надо следовать — совсем не то же самое, что талмуд правил и вагон бюрократии.
Re[7]: SEMAT – Единая Теория Всего Программирования?
От: petr_t  
Дата: 07.04.15 03:20
Оценка: -1
Здравствуйте, vdimas, Вы писали:

V>Кстате, вспомнил про неплохой давний пост коллеги насчет "предварительного проектирования":


"Сначала проектируем, потом пишем" — старая добрая водопадная модель, которая стабильно приводит к раздутым срокам, говнокоду и провалам проектов.
Отредактировано 07.04.2015 5:10 petr_t . Предыдущая версия . Еще …
Отредактировано 07.04.2015 3:52 petr_t . Предыдущая версия .
Re[7]: SEMAT – Единая Теория Всего Программирования?
От: Sinix  
Дата: 07.04.15 05:41
Оценка: +1
Здравствуйте, vdimas, Вы писали:

S>>ты сейчас про современные версии, а не про оригиналы времён расцвета Розы? Тогда всё правильно, кроме того, что речь вообще-то шла про каноничные "бронебойные" методики.


V>Кстате, вспомнил про неплохой давний пост коллеги насчет "предварительного проектирования":

V>"Бронебойные методики" были выработаны на больших (по тем временам) проектах.
Так я в хорошем смысле про бронебойные методики, "тяжёлый — значит надёжный"(c). При употреблении по месту, конечно. А вот с этим были баальшие проблемы, ибо тот самый ореол универсальной методики. Вплоть до попыток организовать курсы по RUP в виде "группа просто работает по RUP, организуясь в процессе". Мне в этом дурдоме повезло не участвовать, но рассказов наслушался.

Мне честно лень спорить, тем более что разговор вообще ушёл от "как оно было в прошлый раз на практике" к "как оно должно быть, в этот раз у них всё получится". Пока я не увидел ни одного принципиального отличия, те же грабли, те же люди.
Re[12]: SEMAT – Единая Теория Всего Программирования?
От: vdimas Россия  
Дата: 07.04.15 11:51
Оценка:
Здравствуйте, petr_t, Вы писали:

V>>ЧТД. Вот тебе база UP.

V>>Сам с собой споришь. ))

_>Черта с два. Пара простых практических правил, которым надо следовать — совсем не то же самое, что талмуд правил и вагон бюрократии.


Во-первых, не совсем пара, во-вторых, вовсе не вагон. Я имел ввиду это:
http://en.wikipedia.org/wiki/Unified_Process
Re[10]: SEMAT – Единая Теория Всего Программирования?
От: vdimas Россия  
Дата: 07.04.15 12:15
Оценка:
Здравствуйте, landerhigh, Вы писали:

V>>Не хочешь поделиться опытом, хотя бы в двух словах.

L>В реализации КА на мейнстримовых ЯВУ существуют две проблемы. Первая — это собственно нахождение приемлимого подхода к реализации КА с более чем двумя-тремя состояниями. Вторая — собственно в понимании того, что именно есть КА.

Странно, странно.


V>>Применяли ли НКА вместо ДКА, например?


L>В нашей предметной области (не парсеры, а именно физические автоматы — роботы, исполнительные устройства, разнообразные сервисы и прочий полтергейст) НКА в принципе не должны применяться, но после анализа кода часто оказывалось, что реализован был именно НКА, что являлось ошибкой и причиной трудноуловимых багов.


Ясно. Но жаль, жаль. Если предметная область позволяет явно выделить "промежуточные" состояния от "конечных", то на промежуточных вполне допустима неоднозначность и весь аппарат НКА в полный рост. Да, именно в парсерах это самая мощная на сегодня техника.


V>>Или, как в классике, насильно вводили "эквивалентные процессы", то бишь, разбивали автомат на подавтоматы, то бишь, отказывались от конечности автомата, получая почти МТ в итоге? ))


L>Вообще-то разбитие КА на подавтоматы — это один из простых способов его минимизации и избегания State Explosion.


И способ потери контроля над его детерминированностью. ))


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


А, ну это при более 7-ми состояний и более двух десятков переходов — амба, ес-но. Тогда и говорить не о чем. Текстовое описание уже трудноверифицируемое в итоге.

А как представляли КА? Обязательно ли граф переходов, или допустимы регулярные выражения? Например (просто делюсь), в одной из разработок было удобней проектировать ДКА на основе регулярных выражений (не тех, которые regexp в Перле/JS и т.д., а именно класс грамматик). Входным сигналам был назначен алфавит и на основе этого алфавита были введены "пути" для целевых состояний. Удобным получилось то, что в этом случае доступен весь аппарат минимизации целевого КА по состояниям/переходам, а так же по кодированию самих состояний.


L>Сложность реализации КА на ЯВУ ведет к тому, что наличие КА в коде становится крайне неочевидным, а логика его — размазанной по коду.


Это смотря как реализовать. Например, на ЯВУ удобно реализовать более мощный Мили, чем Мура. Как раз ООП-паттерн "State" — это про Мили.


L>Обычно таблица переходов в коде просто отсутствует.


Есть несколько популярных техник реализаций КА в ЯВУ. Таблица переходов, не смотря на удобство кодогенерации, не самая удачная. (Но, фактически, единственный вариант, когда автомат задан прямо в коде в виде исходного НКА, во время старта программы этот НКА преобразуется в ДКА, минимизируется, кодируется и получается в виде таблицы). Хождение "автомата" по таблице переходов — это классика интерпретации, т.е. когда программа выполняет данные. На switch/case + goto получаются до полутора-двух раз более более шустрые автоматы. В этом случае "курсором" состояния является не специально выделенная переменная, а положение указателя команд в автоматной процедуре.


L>Затем, вследствие отсутствия структуры изначального автомата, при отладке попытке заставить все это работать начинается все вышеописанное — превращение ДКА в НКА, а то и в самовозбуждающийся генератор, и state explosion.

L>Исправлять проблему state explosion в имеющемся коде, который уже вышел в продакшен — это большой нуегонафиг. Был случай, когда коллега, получивший от другого подразделения некий код, основывающийся на КА, решил выяснить, почему именно дальнейшее расширение и поддержка этого кода застопорились. Написал простой парсер и скормил его plantuml. Получил диаграмму одного автомата с 90 состояниями. И хотя эквивалентные процессы из этой диаграммы стали очевидными, стало понятно, что рефакторинг в данном случае будет синонимом полного переписывания с нуля.

Ну я так и думал, что такое писали околопрограммисты. Профильные специальности гоняют по автоматам последние 3 года обучения.


L>Наличие же поддерживаемой в актуальном состоянии диаграммы стейтов рядом с кодом обычно помогает избежать этих проблем.


Не обязательно UML, порой удобней старый добрый граф переходов, особенно когда нет иерархии состояний или "разрывов".


L>Фреймворки, в которых таблица переходов существует в коде явно, тоже являются хорошим подспорьем — мы в итоге выработали свой похожий на бустовский FSM подход.


Цена такому "фреймворку" — полторы сотни строк темплейтного кода. Например, в одной из реализаций я принял за "курсор" состояния адрес ф-ии, которая вычисляет следующее состояние + текущий выход. Эдакая разновидность паттерна "State", где CurrentState-интерфейс содержал всего одну ф-ию, и вся кухня в итоге выродилась до, собственно, адреса этой ф-ии. Для отладки это оказалось большим бонусом, кста.
Re[11]: SEMAT – Единая Теория Всего Программирования?
От: landerhigh Пират  
Дата: 07.04.15 13:23
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Ясно. Но жаль, жаль. Если предметная область позволяет явно выделить "промежуточные" состояния от "конечных", то на промежуточных вполне допустима неоднозначность и весь аппарат НКА в полный рост. Да, именно в парсерах это самая мощная на сегодня техника.


НКА в таких случаях — мина замедленного действия.

L>>Вообще-то разбитие КА на подавтоматы — это один из простых способов его минимизации и избегания State Explosion.


V>И способ потери контроля над его детерминированностью. ))


Вот не согласен, хотя и правда — запутаться проще простого.

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


V>А, ну это при более 7-ми состояний и более двух десятков переходов — амба, ес-но. Тогда и говорить не о чем. Текстовое описание уже трудноверифицируемое в итоге.


Больше трех, на самом деле.

V>А как представляли КА? Обязательно ли граф переходов,


Нужен паттерн State. С явной таблицей переходов.

L>>Сложность реализации КА на ЯВУ ведет к тому, что наличие КА в коде становится крайне неочевидным, а логика его — размазанной по коду.

V>Это смотря как реализовать. Например, на ЯВУ удобно реализовать более мощный Мили, чем Мура. Как раз ООП-паттерн "State" — это про Мили.

Паттерн State — штука хорошая, но не решает проблему таблицы переходов.

L>>Обычно таблица переходов в коде просто отсутствует.

V>В этом случае "курсором" состояния является не специально выделенная переменная, а положение указателя команд в автоматной процедуре.

можно использовать корутины. Но тут нужно сильно бить себя по рукам, чтобы избежать соблазна затолкать всю логику КА в одну процедуру. Но мы пользуем темплейты, примерно тем же способом, как ты ниже описал — быстрее не бывает.

V>Ну я так и думал, что такое писали околопрограммисты. Профильные специальности гоняют по автоматам последние 3 года обучения.


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

L>>Наличие же поддерживаемой в актуальном состоянии диаграммы стейтов рядом с кодом обычно помогает избежать этих проблем.

V>Не обязательно UML, порой удобней старый добрый граф переходов, особенно когда нет иерархии состояний или "разрывов".

Дело в том, что можно скрестить doxygen с plantuml. Диаграмма состояний описывается прямо в комментариях к коду и попадает в документацию автоматически. Программисты техподдержки долго ссали кипятком по всем направлениям, увидев такое чудо.

L>>Фреймворки, в которых таблица переходов существует в коде явно, тоже являются хорошим подспорьем — мы в итоге выработали свой похожий на бустовский FSM подход.

V>Цена такому "фреймворку" — полторы сотни строк темплейтного кода. Например, в одной из реализаций я принял за "курсор" состояния адрес ф-ии, которая вычисляет следующее состояние + текущий выход.

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

V>Эдакая разновидность паттерна "State", где CurrentState-интерфейс содержал всего одну ф-ию, и вся кухня в итоге выродилась до, собственно, адреса этой ф-ии. Для отладки это оказалось большим бонусом, кста.


Адреса этой функции или же адреса объекта, описывающего и обрабатывающего состояние. Я первую реализацию делал для ардуинки, получив оверхед по памяти в один указатель.
А вот отлаживать КА нам после внедрения юнит-тестирования и шаблонного фреймворка больше не пришлось ни разу.
Re: SEMAT – Единая Теория Всего Программирования?
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 07.04.15 14:22
Оценка:
Здравствуйте, craft-brother, Вы писали:

Если это действительно теория Всея Программирования, то давай на примере...

Я хочу написать программу, которая играет в го на уровне про. Что мне надо делать по шагам?
Re[12]: SEMAT – Единая Теория Всего Программирования?
От: vdimas Россия  
Дата: 07.04.15 15:43
Оценка:
Здравствуйте, landerhigh, Вы писали:

V>>А как представляли КА? Обязательно ли граф переходов,

L>Нужен паттерн State. С явной таблицей переходов.

Спорно насчет "нужен". Если у тебя автомат Мура, то интерфейс CurentState будет пуст.

Далее, чем мне зачастую не нравится State. Дело в том, State удобен только для реализации той части функциональности автомата Мили, когда текущий выход автомата зависит от текущего состояния. В этом случае ф-ии интерфейса CurrentState являются теми самыми функциональными преобразователями входных сигналов в выходные, зависимые от состояния. Пока что всё ОК. Но беда в том, что программисты зачастую помещают логику вычисления следующего состояния в этот же CurrentState, в итоге в одном методе получается мешанина из двух независимых функций: функции текущего "поведения" и ф-ии вычисления следующего состояния.


L>>>Сложность реализации КА на ЯВУ ведет к тому, что наличие КА в коде становится крайне неочевидным, а логика его — размазанной по коду.

V>>Это смотря как реализовать. Например, на ЯВУ удобно реализовать более мощный Мили, чем Мура. Как раз ООП-паттерн "State" — это про Мили.

L>Паттерн State — штука хорошая, но не решает проблему таблицы переходов.


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

L>можно использовать корутины. Но тут нужно сильно бить себя по рукам, чтобы избежать соблазна затолкать всю логику КА в одну процедуру.


В случае корутин — да запросто. Опять же, техника корутин оправдана только при push распространении воздействий (обработка событий, например), в этом случае никакой паттерн State не нужен.

V>>Ну я так и думал, что такое писали околопрограммисты. Профильные специальности гоняют по автоматам последние 3 года обучения.

L>Вот не угадал. Еще раз, по моим наблюдениям — нормальную реализацию КА с большей вероятностью сделают инженеры не-программерских специальностей.

Ну знач разные наблюдения.


L>>>Наличие же поддерживаемой в актуальном состоянии диаграммы стейтов рядом с кодом обычно помогает избежать этих проблем.

V>>Не обязательно UML, порой удобней старый добрый граф переходов, особенно когда нет иерархии состояний или "разрывов".

L>Дело в том, что можно скрестить doxygen с plantuml. Диаграмма состояний описывается прямо в комментариях к коду и попадает в документацию автоматически. Программисты техподдержки долго ссали кипятком по всем направлениям, увидев такое чудо.


Спасибо за наводку.
Re[13]: SEMAT – Единая Теория Всего Программирования?
От: landerhigh Пират  
Дата: 07.04.15 17:13
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Спорно насчет "нужен". Если у тебя автомат Мура, то интерфейс CurentState будет пуст.


Паттерн State вообще имеет очень опосредованное отношение к КА. Он просто отображает состояние некоей сущности. У нас, например, поведение некоего мощного объекта зависит от его текущего состояния.

V>Но беда в том, что программисты зачастую помещают логику вычисления следующего состояния в этот же CurrentState, в итоге в одном методе получается мешанина из двух независимых функций: функции текущего "поведения" и ф-ии вычисления следующего состояния.


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

L>>>>Сложность реализации КА на ЯВУ ведет к тому, что наличие КА в коде становится крайне неочевидным, а логика его — размазанной по коду.

V>>>Это смотря как реализовать. Например, на ЯВУ удобно реализовать более мощный Мили, чем Мура. Как раз ООП-паттерн "State" — это про Мили.

L>>Паттерн State — штука хорошая, но не решает проблему таблицы переходов.


L>>можно использовать корутины. Но тут нужно сильно бить себя по рукам, чтобы избежать соблазна затолкать всю логику КА в одну процедуру.

V>В случае корутин — да запросто. Опять же, техника корутин оправдана только при push распространении воздействий (обработка событий, например), в этом случае никакой паттерн State не нужен.

Согласен.

L>>Вот не угадал. Еще раз, по моим наблюдениям — нормальную реализацию КА с большей вероятностью сделают инженеры не-программерских специальностей.


V>Ну знач разные наблюдения.


У меня подозрение, что профильных программистов настолько закормили парсерами и формальными автоматами, что они банально за деревьями леса не видят.
Re[4]: SEMAT – Единая Теория Всего Программирования?
От: 1303  
Дата: 08.04.15 01:00
Оценка:
Здравствуйте, beyv, Вы писали:
...
B>Вы уверены что 1 + 1 = 2? Да, для двух спичек это верно — если сложить одну и одну спички получим две спички, а для двух капель воды это неверно, если сложить две капли воды получим одну каплю воды logic_error

Не в математике проблема, а в том, что кто-то не думаючи перегрузил оператор сложения для капель воды. Тут нужно использовать оператор "слияние".
Re[13]: SEMAT – Единая Теория Всего Программирования?
От: petr_t  
Дата: 08.04.15 03:11
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Во-первых, не совсем пара, во-вторых, вовсе не вагон. Я имел ввиду это:

V>http://en.wikipedia.org/wiki/Unified_Process

Про это я еще лет 15 назад читал. Расскажи что-нибудь, чего я еще не слышал.
Re[7]: SEMAT – Единая Теория Всего Программирования?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 22.04.15 19:32
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Я не могу комментировать чьи-то мечты. Описанная тобой ситуация ни разу не новость. Гораздо обидней, когда собираются спецы, а проект заваливают. Подсказка сработала или опять мимо?))


Само существование этого сайта как бы намекаэ, что не все так печально, не?
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re: SEMAT – Единая Теория Всего Программирования?
От: dimgel Россия https://github.com/dimgel
Дата: 29.04.15 20:02
Оценка:
Здравствуйте, craft-brother, Вы писали:

CB>А что-то про SEMAT тут никто еще не написал? Исправляем.


Можно я тут чутка пофлужу? Проскроллил пост по диагонали и вспомнил, что бы когда-то такой прекрасный сайт, назывался пиши-код-[beep].рф (к сожалению, на территории .РФ его давно заблокировали и с тех пор домен протух). Ну, по крайней мере англоязычный вариант сохранился.
Re[8]: SEMAT – Единая Теория Всего Программирования?
От: vdimas Россия  
Дата: 05.05.15 20:53
Оценка: +1
Здравствуйте, AndrewVK, Вы писали:

V>>Я не могу комментировать чьи-то мечты. Описанная тобой ситуация ни разу не новость. Гораздо обидней, когда собираются спецы, а проект заваливают. Подсказка сработала или опять мимо?))

AVK>Само существование этого сайта как бы намекаэ, что не все так печально, не?

Дык, "заваленный проект" — это не потому, что люди оказались в принципе неспособны его сделать (такого практически не бывает), а потому что не вложились в сроки/деньги. А так-то любой проект, при желании, можно довести до ума. Особенно дотационный какой-нить, опен-сорс или как этот сайт — интересу ради.
Re[9]: SEMAT – Единая Теория Всего Программирования?
От: Sharov Россия  
Дата: 06.05.15 12:05
Оценка:
Здравствуйте, vdimas, Вы писали:


V>Дык, "заваленный проект" — это не потому, что люди оказались в принципе неспособны его сделать (такого практически не бывает), а потому что не вложились в сроки/деньги. А так-то любой проект, при желании, можно довести до ума. Особенно дотационный какой-нить, опен-сорс или как этот сайт — интересу ради.


Угу, вообще технически сложных задач не бывает. Бывает недостаток времени и отсутствие воли.
Кодом людям нужно помогать!
Re: SEMAT – Единая Теория Всего Программирования?
От: lseder lseder.livejournal.com
Дата: 18.05.15 16:54
Оценка:
CB>А что-то про SEMAT тут никто еще не написал? Исправляем.
>Единая Теория Всего Программирования
Это не теория программирования, это теория управления процессом проектирования
программирования. или, если просто, то проектный менеджмент.

ошибка перевода. software engineering — общий процесс, программирование только одна фаза этого процесса.
>Within software engineering, programming (the implementation) is regarded as one phase in a software development process.
http://en.wikipedia.org/wiki/Computer_programming

так что для программирования нужно что-то более мелкое по охвату (но не мелко-мягкое )) ).
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.