Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

State Mashine. Объясните.   Найти похожие ветки 

 
333333-й   (2012-09-23 13:09) [0]

Объясните про данный паттерн.
На пальцах. Мне тупенькому.
Где применяется на реальных задачах.


 
TUser ©   (2012-09-23 13:18) [1]

Кто конкретно объяснить? Что такое конечный автомат? Мне понравилась вот эта книга

http://www.ozon.ru/context/detail/id/2432037/

> Где применяется на реальных задачах.

Например, для распознавания регулярных выражений.


 
TUser ©   (2012-09-23 13:18) [2]

Правда,с современными реализациями регулярных выражений -чуть не так.


 
Пит   (2012-09-23 13:19) [3]

а паттерн State ты полностью понял?


 
333333-й   (2012-09-23 13:32) [4]


> Пит   (23.09.12 13:19) [3]
> а паттерн State ты полностью понял?


Есть такой паттерн?


 
Дмитрий С ©   (2012-09-23 13:46) [5]

О а я думал что State machine это что-то вроде процедуры:

procedure StateMachine(var State: TMachineState, ...);

Которая изменяет состояние при каждом вызове в (или вне) зависимости от параметров.


 
Дмитрий С ©   (2012-09-23 13:47) [6]

Я этим пользуюсь для выполнения http запроса на микроконтроллере, который выполняется долго по времени. Получается некая имитация распараллеливания.


 
Пит   (2012-09-23 14:18) [7]


>
> Есть такой паттерн?

а разве нету?


 
Юрий Зотов ©   (2012-09-23 14:42) [8]

> 333333-й   (23.09.12 13:09)

State Mashine - машина состояний. В русскоязычной литературе обычно используется термин "конечный автомат".

> Объясните про данный паттерн. На пальцах.

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

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

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

Над иметь в виду, что здесь под "символом" подразумевается не символ, как таковой (буква, цифра, знак...), а некая логически цельная единица информации. Например, многозначное число, или многобуквенное слово.

Программа - это тот же автомат. Ее состояние в каждый момент времени определяется двумя факторами:
- какой участок кода выполняется;
- какие значения имеют переменные.

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

var
 z: double = 1; // Задали начальное состояние.  
begin
 while z >= 0 do // Задали признак окончания входной цепочки.
 begin
   ReadLn(z); // Считали входной символ - перешли в новое состояние.
   if z = 0 then // Проверили допустимость этого нового состояния.
     raise ...  // Оно недопустимо, работу прекращаем.
   WriteLn(1/z) // Оно допустимо, работу продолжаем.
 end
end

В этой программе начальное состояние такое:
- выполнение на точке входа;
- переменная z (еще не хранящая никакого входного символа) равна 1.

Все состояния здесь являются допустимыми, кроме двух:
1.
- выполняется процедура ReadLn;
- входной символ не является числом.
2.
- выполняется оператор if;
- входной символ (хранящийся в переменной z) равен нулю.

Конечное состояние:
- выполнена процедура ReadLn;
- входной символ (хранящийся в переменной z) меньше нуля.

> Где применяется на реальных задачах.

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

По сути дела, любая конструкция вида
if <что-то> then <возбудить исключение>
уже говорит о том, что, здесь использован принцип конечного автомата (проверка состояния). И в недопустимом состоянии работа программы не обязательно заканчивается, потому что его можно откатить, перехватив исключение.


 
Юрий Зотов ©   (2012-09-23 15:14) [9]

http://ru.wikipedia.org/wiki/%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5#.D0.9F.D1.80.D0.B8.D0.BC.D0.B5.D1.80_.D1.81_.D0.B8.D1.81.D0.BF.D0.BE.D0.BB.D1 .8C.D0.B7.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5.D0.BC_.D0.BA.D0.BE.D0.BD.D0.B5.D1. 87.D0.BD.D0.BE.D0.B3.D0.BE_.D0.B0.D0.B2.D1.82.D0.BE.D0.BC.D0.B0.D1.82.D0.B0


 
Пит   (2012-09-23 17:20) [10]

молодец вы, дядь Юр, конечно.

Но по формулировке заглавного вопроса достаточно очевидно, что автору ответ нафиг не нужен...


 
Rouse_ ©   (2012-09-23 17:36) [11]


> Пит   (23.09.12 17:20) [10]

Смысл поста?


 
RWolf ©   (2012-09-23 18:02) [12]

ответ прост: этот «паттерн» применяется везде, где есть вычислительное оборудование, потому что любая цифровая электроника с памятью, начиная с простого триггера, есть конечный автомат.


 
Rouse_ ©   (2012-09-23 18:14) [13]

Не только в оборудовании, в виртуальных машинах конечные автоматы частое явление.


 
Пит   (2012-09-23 20:27) [14]


> Смысл поста?

моего? Да жалко, когда профи время так тратят впустую... ( Да понимаю я всё...
Ну ок, дождемся автора ,может быть и правда он неделю разбирался, а теперь спрашивает


 
Rouse_ ©   (2012-09-23 20:30) [15]


> Пит   (23.09.12 20:27) [14]

Этот пост останется в хистори и вполне возможно в дальнейшем будет кому-то полезен, так что зря ты так, не системный подход :)


 
DVM ©   (2012-09-23 20:41) [16]

О машинах состояний и их применении хорошо рассказано в книге
Д. Бакнелл
Фундаментальные алгоритмы и структуры данных в Delphi


 
Petr V. Abramov ©   (2012-09-23 21:24) [17]

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


 
QAZ2   (2012-09-23 21:42) [18]

Удалено модератором


 
Юрий Зотов ©   (2012-09-23 21:48) [19]


> QAZ2   (23.09.12 21:42) [18]

Новомодное словечко, означающее просто "шаблон". Т.е. нечто, обладающее заранее известными свойствами. Необязательно из ООП.


 
DVM ©   (2012-09-23 21:49) [20]


> QAZ2   (23.09.12 21:42) [18]

нет


 
DVM ©   (2012-09-23 21:52) [21]


> QAZ2

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


 
Petr V. Abramov ©   (2012-09-23 23:19) [22]

Удалено модератором


 
Petr V. Abramov ©   (2012-09-23 23:27) [23]

Удалено модератором


 
QAZ2   (2012-09-24 21:47) [24]

шаблон некой фигни которую нельзя описать классами или процедурами ???


 
Ega23 ©   (2012-09-25 09:36) [25]


> шаблон некой фигни которую нельзя описать классами или процедурами???

При чём тут классы или процедуры? Речь о "приёме" идёт.
Вот у тебя есть "сортировка бинарным деревом". Ты как её, через процедуры или через классы будешь реализовывать?  :)


 
Пит   (2012-09-25 09:38) [26]


> Этот пост останется в хистори

на этом сайте? ))
Тут форум очень грамотно написан. Пару месяцев - и топика нету, нагрузка знаешь ли ) Впрочем, вроде есть зеркало кем-то написанное, так что ладно )


> так что зря ты так, не системный подход

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

Розыч, кстати, объясни мне про Visual Studio, где она практически используется, на пальцах в реальных задачах опиши.


 
картман ©   (2012-09-25 09:57) [27]

русский меняется, следующие издания книг будут называться "Шаблоны данных и шаблоны"... не, вот так: Шаблоны и шаблоны.))


 
Ega23 ©   (2012-09-25 10:25) [28]


> объясни мне про Visual Studio, где она практически используется

???


 
Компромисс ©   (2012-09-25 10:57) [29]


> Само по себе изучение шаблонов - пустая трата времени, интересоваться
> ими стоит уже когда сам к ним пришел.


Неверно ИМХО. Очень полезно изучить, какие уже есть велосипеды, перед тем как начинать свой изобретать. К некоторым шаблонам очень трудно придти самостоятельно, на это слишком много времени уйдет, причем впустую.


 
Пит   (2012-09-25 11:37) [30]


> Неверно ИМХО

ИМХО, абсолютно верно. Иначе ты будешь использовать шаблон не понимая почему именно так. Или тебе должен объяснить очень грамотный профи с разбором контр примеров, как можно по другому и в чем минусы, плюсы и что ВОТ ЭТО - наиболее оптимально.

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

Чтобы не говорили мудрецы - а собственные опыт отпечатывается гораздо лучше, чем чужой.


 
DVM ©   (2012-09-25 12:03) [31]


> Компромисс ©   (25.09.12 10:57) [29]


> Неверно ИМХО. Очень полезно изучить, какие уже есть велосипеды,
>  перед тем как начинать свой изобретать.

Главное, чтобы после прочтения, человек не начал применять паттерны ради паттернов.


 
Ega23 ©   (2012-09-25 12:09) [32]


> Главное, чтобы после прочтения, человек не начал применять
> паттерны ради паттернов.

плюс миллион. А в 90% случаев - именно такая картина. Умные слова, диаграммы, то-сё. И тонны говнокода.


 
Компромисс ©   (2012-09-25 13:20) [33]

Пит   (25.09.12 11:37) [30]


> ИМХО, абсолютно верно. Иначе ты будешь использовать шаблон
> не понимая почему именно так. Или тебе должен объяснить
> очень грамотный профи с разбором контр примеров, как можно
> по другому и в чем минусы, плюсы и что ВОТ ЭТО - наиболее
> оптимально.


Естественно. Продолжая аналогию с велосипедом, человек может пытаться построить велосипед по схеме, когда ему нужен танк.
Обучение шаблонам как раз и начинается с постановки проблемы, которую они помогают решать.

DVM ©   (25.09.12 12:03) [31]


> Главное, чтобы после прочтения, человек не начал применять
> паттерны ради паттернов.


Да, бывает такое. Тем не менее, это уже проблема не шаблонов, а человека. Любое средство можно использовать не по назначению


 
Rouse_ ©   (2012-09-25 21:42) [34]


> Розыч, кстати, объясни мне про Visual Studio, где она практически
> используется, на пальцах в реальных задачах опиши.

На пальцах? Она используется везде и в любых задачах где не используются другие языки программирования.


 
Ega23 ©   (2012-09-25 21:48) [35]


> Она используется везде и в любых задачах где не используются
> другие языки программирования.


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


 
Пит   (2012-09-26 09:46) [36]

Удалено модератором


 
Компромисс ©   (2012-09-26 09:57) [37]


> State Mashine - такой паттерн программирования, который
> используется в любых задачах, где не используются другие
> паттерны )))


У меня обычно паттерны кучкуются в проектах: если один паттерн появился, то скоро и другие появляются.


 
Jeer ©   (2012-09-26 15:16) [38]

Для любителей виртуальных hard-"State Mashine":

http://ozark.hendrix.edu/~burch/logisim/

Занятная штуковина, жаль эффект "гонок" не реализован :)


 
jack128_   (2012-09-26 16:02) [39]


> Ты как её, через процедуры или через классы будешь реализовывать?
>   

через процедуры И классы(или рекорды). А какая разница?


 
jack128_   (2012-09-26 16:05) [40]


> Новомодное словечко, означающее просто "шаблон". Т.е. нечто,
>  обладающее заранее известными свойствами. Необязательно
> из ООП.

односвязный список целых чисел имеет заранее определённые свойства. Это шаблон?


 
Ega23 ©   (2012-09-26 16:08) [41]


> через процедуры И классы(или рекорды). А какая разница?


А почему не через строки? Или просто указатели?
Сути не меняет. Паттерн проектирования - это, по сути, UML-диаграмма. Как ты её реализовывать будешь - твоё личное дело.


 
Юрий Зотов ©   (2012-09-26 21:36) [42]

> jack128_   (26.09.12 16:05) [40]

Конечно, шаблон. Шаблон структур данных под названием "односвязный список".


 
jack128_   (2012-09-26 21:40) [43]


> UML-диаграмма.

в вики перечислено 12 видов UML-диаграмм, которая из них?


 
jack128_   (2012-09-26 21:56) [44]


> Конечно, шаблон. Шаблон структур данных под названием "односвязный
> список"

ну тогда я вообще не могу представить хотя бы одно существительное, которое не было бы паттерном.


 
Rouse_ ©   (2012-09-26 21:56) [45]


> Паттерн проектирования - это, по сути, UML-диаграмма.

Паттерн на регулярки в студию :)


 
Rouse_ ©   (2012-09-26 21:57) [46]

тьху - диаграмму на регулярки :)))


 
Jeer ©   (2012-09-26 22:02) [47]

Паттерны, шаблоны.. тьху на вас.


 
Ega23 ©   (2012-09-26 22:14) [48]


> в вики перечислено 12 видов UML-диаграмм, которая из них?

http://ru.wikipedia.org/wiki/%D0%94%D0%B8%D0%B0%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0_%D0%BA%D0%BE%D0%BC%D0%BF%D0%BE%D0%B7%D0%B8%D1%82%D0%BD%D0%BE%D0%B9_%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D1%8B


 
Юрий Зотов ©   (2012-09-26 22:41) [49]


> jack128_   (26.09.12 21:56) [44]

Ряд целых чисел сам по себе не шаблон, конечно. Но как только ты реализовал его в программе в виде связного списка - ты применил шаблон.


 
DVM ©   (2012-09-26 22:52) [50]


> Rouse_ ©   (26.09.12 21:57) [46]
> тьху - диаграмму на регулярки :)))

Наверное не на регулярные выражения, а на конечный NFA автомат, который производит синтаксический анализ регулярных выражений. Обычная машина состояний. Паттерн State Machine существует. Про UML ничего не знаю вообще.


 
jack128_   (2012-09-26 23:09) [51]


> Ряд целых чисел сам по себе не шаблон, конечно. Но как только
> ты реализовал его в программе в виде связного списка - ты
> применил шаблон.

А чем же ряд целых - не шаблон. Обладает опереленными характеристиками, всё как положенно. У тебя какое то жутко обобщенное, и потому бессмысленное определение. Под него можно всё что угодно подвести.

Во например ( http://rsdn.ru/forum/philosophy/4856509.1 ) - уже что то более конкретное.


 
Rouse_ ©   (2012-09-26 23:20) [52]


> DVM ©   (26.09.12 22:52) [50]
> Наверное не на регулярные выражения, а на конечный NFA автомат,
>  который производит синтаксический анализ регулярных выражений.
>  Обычная машина состояний. Паттерн State Machine существует.
>  Про UML ничего не знаю вообще.

Аналогично, собственно и Легыч тоже - поэтому я и удивился его спичу :)
У нас только Юра пропагандирует сие направление, периодически захламляя свой рабочий стол листами А4 с красивыми стрелочками и кружочками :))


 
Юрий Зотов ©   (2012-09-26 23:30) [53]

> А чем же ряд целых - не шаблон

Тем, что он не имеет отношения к программированию.

> Обладает опереленными характеристиками, всё как положенно. У тебя
> какое то жутко обобщенное, и потому бессмысленное определение. Под
> него можно всё что угодно подвести.


Можно, если ты - двоичный программист. Нельзя, если ты не только читаешь слова, а еще и понимаешь их контекст.

Жень, ты сколько стаканов на прикроватный столик ставишь?
:o)


 
Юрий Зотов ©   (2012-09-26 23:33) [54]

> Rouse_ ©   (26.09.12 23:20) [52]

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


 
Rouse_ ©   (2012-09-26 23:38) [55]


> Юрий Зотов ©   (26.09.12 23:33) [54]
> Вообще, бывает все же полезно

Сам используешь?


 
DVM ©   (2012-09-26 23:39) [56]


> Юрий Зотов ©   (26.09.12 23:33) [54]


> проектируя, ты одновременно составляешь документацию. Как
> бы даром она получается.

актуальность еще надо поддерживать, если все эти диаграммы не будут генерироваться автоматически, или наоброт код не будет генерироваться по диаграммам, то слишком много усилий будет уходить на поддержание этого всего в актуальном виде. Документация в коде - еще куда ни шло.


 
DVM ©   (2012-09-26 23:41) [57]


> Rouse_ ©   (26.09.12 23:38) [55]

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


 
Rouse_ ©   (2012-09-26 23:48) [58]


> DVM ©   (26.09.12 23:41) [57]
>
> > Rouse_ ©   (26.09.12 23:38) [55]
>
> я использовал только тогда когда надо было понять всю иерархию
> хитросплетений классов и модулей чужого приложения

Я вот этого кстати никогда не понимал, Юрка мне тоже именно эти слова говорил. Мошт у меня просто получается без всякой этой ерунды вникнуть в сторонний код, или мошт оно реально не нужно? :)
В свое время изучал код AVZ, EurekaLog, DevExpress - для того чтобы начать его расширение требовалось от силы два-три часа на анализ, нафига какие-то схемы? Дерева проекта и самодокументации кода за глаза...


 
Юрий Зотов ©   (2012-09-26 23:49) [59]


> Rouse_ ©   (26.09.12 23:38) [55]

Когда на проектирование дают время. А это, увы, бывает не часто - в ходу известная политика РП: "Кончай дедукцию - давай продукцию."

DVM ©   (26.09.12 23:39) [56]

Разумеется.


 
Rouse_ ©   (2012-09-26 23:52) [60]


> Юрий Зотов ©   (26.09.12 23:49) [59]
> Когда на проектирование дают время.

Ну я тоже проектирую, завожу специальную папку в проекте куда картинки складываю и прочую святотень, а так-же специальный блокнотик, в котором ведется ТЗ по провекту, никаких UML - усе по старинке :)


 
Юрий Зотов ©   (2012-09-26 23:55) [61]


> Rouse_ ©   (26.09.12 23:48) [58]
> требовалось от силы два- три часа на анализ, нафига какие-то схемы?

В моем нынешнем проекте несколько сотен классов и приличная глубина наследования. Думаю, что за два-три часа хрен въедешь в них самих и тем более и в логику их взаимодействия. Скорее, и за две-три недели не до конца въедешь.


 
Rouse_ ©   (2012-09-27 00:01) [62]


> Юрий Зотов ©   (26.09.12 23:55) [61]
> В моем нынешнем проекте несколько сотен классов и приличная
> глубина наследования.

А в вышеперечисленных продуктах всего 3 класса, и те из двух методов :)
Не, я конечно могу поверить что у вас там черт ногу сломит, но, как показывает практика, при правильном проектировании количество классов не проблема.


 
DVM ©   (2012-09-27 00:03) [63]


> Rouse_ ©   (27.09.12 00:01) [62]


> но, как показывает практика, при правильном проектировании
> количество классов не проблема.

одно дело когда надо найти что-то конкретное в куче классов, совсем другое - понять как в целом все работает - тут надо обозревать все и сразу.


 
Rouse_ ©   (2012-09-27 00:12) [64]


> совсем другое - понять как в целом все работает

Ну так а я об чем? Возьмем эврику - сотни классов + куча низкоуровнего кода.
В течении трех часов после установки я начал отправлять багрепорты о глюках, как в движке компиляции и неверно построенном алгоритме дизассемблера длинн, так и о промахах в алгоритмах отправки данных через MAPI/SimpleMAPI/SMTP.
А почему? Да потому что код хорошо спроектирован, все прозрачно и на ладони. Да, там больше сотни классов, та там достаточно хорошее наследование, особенно в движке отправки данных и что?
Все это от лукавого - если хочешь разобраться, разберешься достаточно быстро.


 
Rouse_ ©   (2012-09-27 00:14) [65]

В смысле не багрепорты отправлять - а отправлять исправленные варианты классов (собственно почему в свое время и получил халявную лицензию как один из хороших бетатестеров ;)


 
Rouse_ ©   (2012-09-27 00:25) [66]

ЗЫ: кстати, если кто использует эврику, то за фильтрацию исключений через назначение им атрибутов типа [EurekaLogHandler(TFilterHandlerType)] можете сказать нам с Jack128 спасибо - это наше предложение было реализовано :)


 
Юрий Зотов ©   (2012-09-27 00:43) [67]

> Rouse_ ©
> Возьмем эврику - сотни классов + куча низкоуровнего кода.

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

Мой проект, наоборот,  имеет прикладной функционал. И до тех пор, пока ты в эту прикладную область не въедешь, не поймешь ее бизнес-правил, не узнаешь структуру БД и логику ее построения, ты, просто изучая код, даже не поймешь, что в нем вообще происходит и зачем.

А на освоение всей этой прикладухи нужны отнюдь не часы. Недели нужны, а может и месяцы.


 
Rouse_ ©   (2012-09-27 00:49) [68]


> Юрий Зотов ©   (27.09.12 00:43) [67]
> Мой проект, наоборот,  имеет прикладной функционал.

Согласен, собственно ждал этой постановки вопроса :)
А как тут поможет UML?
Вот у нас например сметы - этому учатся 5 лет, как мне построить диаграму чтобы стать сметчиком и начать разбираться в специфике продукта? :)


 
Юрий Зотов ©   (2012-09-27 00:56) [69]

> Rouse_ ©   (27.09.12 00:49) [68]
> А как тут поможет UML?

UML начинается с вариантов использования - а это уже описание прикладухи.


 
Rouse_ ©   (2012-09-27 00:58) [70]


> Юрий Зотов ©   (27.09.12 00:56) [69]
> UML начинается с вариантов использования - а это уже описание
> прикладухи.

Отлично, берем прикладное приложение - ассистент врача, нарисуй мне UML диаграмму на основании которой можно поставить диагноз :)


 
Ega23 ©   (2012-09-27 00:59) [71]


> Ну я тоже проектирую, завожу специальную папку в проекте
> куда картинки складываю и прочую святотень, а так-же специальный
> блокнотик, в котором ведется ТЗ по провекту, никаких UML
> - усе по старинке :)


Ты часто рисуешь в своём блокноте блок-схемы? Понятно, что для простого цикла её рисовать бесмысленно. Но вот представь, что у тебя какой-то супер-пупер-навороченный алгоритм. Тут уже эта блок-схема может пригодиться.
Теперь ты отдал этот блокнот мне. Я смотрю на твои кружочки-прямоугольнички - и ни хрена не понимаю. Прошу объяснения. Ты мне объясняешь, что кружочек - это тарелка, прямоугольничек - это спички, а кружочек в кружочке - это вид мексиканца в сомбреро сверху. ОК.
Теперь мы отдаём этот блокнотик Жеке и говорим про все эти кружочки и прямоугольнички. И тоже всё ОК.
А теперь ты решаешь этот хитрый алгоритм на своём сайте разместить, так, чтобы его понял Вася Пупкин из Нижней бердяевки. А у Васи Пупкина в конторе "ОАО Колокольчик", в которой он трудится, есть договорённость, что прямоугольничек - это ЗИЛ с мешком удобрений, кружочек - это молочный сепаратор, а кружочек в кружочке - это бесконечный цикл в бесконечном цикле, которые символизируют бренность бытия.
И вот тут на помощь приходит UML.

Это не панацея от всех бед. Это совершенно необязательная фича. Просто иногда - оно очень удобно, а порой без него - вообще полный швах.
Городить UML-диаграммы ради них самих - это сравни комментирования каждой строчки кода.
И паттерны, собственно, считай то же самое.


 
Rouse_ ©   (2012-09-27 01:03) [72]


> Ega23 ©   (27.09.12 00:59) [71]

У тебя отдельный и передовой случай, под тебя я уже специально купил диктофон, бо наскальная живопись в виде палочек и кружочков не эффективна  :)


 
Германн ©   (2012-09-27 01:08) [73]


> о промахах в алгоритмах отправки данных через SimpleMAPI.

Когда это было?


 
Rouse_ ©   (2012-09-27 01:16) [74]


> Германн ©   (27.09.12 01:08) [73]
>
> > о промахах в алгоритмах отправки данных через SimpleMAPI.
>
>
> Когда это было?

Бета семерки, не помню какая по номеру...


 
Германн ©   (2012-09-27 01:41) [75]


> Бета семерки, не помню какая по номеру

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


 
Rouse_ ©   (2012-09-27 01:54) [76]

В шестерке я тоже правил код и постил багрепорты в виде исправленного кода, там их в районе 14 штук было примерно, один из них был связан с транспортом, но не с отправкой а с переключением режимов отправки, т.е. грубо изначально мы отправляем через SMTP, а если не получилось то переключаемтся на SimpleMAPI и там происходила потеря части данных из-за некоторых нюансов в калбэках.
А по семерке, я очень плотно поработал. Но там уже другой нюанс, ребята практически полностью переписали движок и понятное дело что ошибок (один инсталер на 80 метров) может быть море во всех местах, ибо переписано практически все.


 
Германн ©   (2012-09-27 02:12) [77]


> Rouse_ ©   (27.09.12 01:54) [76]

Просто я в начале этого года сдавал проект. И в качестве дополнительного бонуса использовал посылку отчета Эврики об ошибке на адрес разработчика/владельца программы. И возникли проблемы. АА посоветовал мне обновить Эврику и проблемы исчезли.


 
Inovet ©   (2012-09-27 04:19) [78]

> [53] Юрий Зотов ©   (26.09.12 23:30)
> ты сколько стаканов на прикроватный столик ставишь?

Зависит от объёма подкроватной вазы.


 
Inovet ©   (2012-09-27 04:21) [79]

> [54] Юрий Зотов ©   (26.09.12 23:33)
> проектируя, ты одновременно составляешь документацию. Как
> бы даром она получается.

Для этого давно придумана Автошема.


 
Игорь Шевченко ©   (2012-09-27 09:54) [80]

вот поэтому основная масса программного обеспечения приходит из-за рубежа :)


 
Юрий Зотов ©   (2012-09-27 16:37) [81]

> Rouse_ ©   (27.09.12 00:58) [70]
> берем прикладное приложение - ассистент врача, нарисуй мне UML
> диаграмму на основании которой можно поставить диагноз


Ты маленько путаешь. UML рисуется не на этапе реализации, а на этапе проектирования. То есть, на том этапе, когда проектировщик как раз и въезжает в прикладуху.

Поэтому - если бы я был врачом (или имел консультанта-врача), то нарисовал бы.



Страницы: 1 2 3 вся ветка

Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.69 MB
Время: 0.054 c
15-1346925778
LDV
2012-09-06 14:02
2013.03.22
bat-файлы


2-1333239798
toropoff
2012-04-01 04:23
2013.03.22
чтение WMI


15-1349680247
Scott Storch
2012-10-08 11:10
2013.03.22
uml


15-1351557893
Вепрь
2012-10-30 04:44
2013.03.22
Как получить список всех процессов?


2-1332423903
Cobalt
2012-03-22 17:45
2013.03.22
AnsiString[128] - "; Expected ; but received [ at line"





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский