ailev.ru

Обсуждение

В архиве: 12 комментариев.

Читать и комментировать в ЖЖ ↗

Имя не сохранено · 29 ноября 2009

Комментарий

Но при программировании на DSL (а в САПР идет именно оно: программирование=моделирование на декларативных domain specific languages) почему-то нет тех практик, которые приняты при программировании на GPL (general programming languages). Но ведь суть та же! Значит, и приемы работы должны быть похожи, и приемы обучения. Суть и приемы работы в декларативке и императивке сильно различаются. Разница примерно как в случае стратегического и тактического мышления.

Анатолий Левенчук · 29 ноября 2009

Комментарий

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

Ответ на комментарий

Имя не сохранено · 29 ноября 2009

Комментарий

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

Ответ на комментарий

9000 · 29 ноября 2009

Комментарий

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

Анатолий Левенчук · 29 ноября 2009

Комментарий

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

Ответ на комментарий

Имя не сохранено · 29 ноября 2009

песок в часах

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

Ответ на комментарий

Анатолий Левенчук · 29 ноября 2009

Re: песок в часах

Чисто декларативное программирование -- это даже не идеал. Настоящее программирование мультипарадигмально. Трудность с его внедрением только в том, что практически инструментарий по компиляции работает уже сейчас, а вот интерактивное программирование (отладка!) не поддерживается. Так, в аспект-ориентированном программировании вы "сплести" можете, а вот "расплести обратно" в тот момент, когда вы не понимаете, что такое вытворяет программа, не можете. Именно в это место и думают сейчас продвинутые люди: оказывается, нужны особые подходы, чтобы с этим справляться. Я как раз об этом уже пару последних дней у себя в блоге пишу.

Ответ на комментарий

Имя не сохранено · 29 ноября 2009

Re: песок в часах

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

Ответ на комментарий

Имя не сохранено · 29 ноября 2009

Комментарий

Я тоже делаю верификационные ката :). Доказываю/формулирую одну и ту же теорему разными способами. Т.е. делаю несколько пару тройку моделей формулировок, и каждую доказываю несколькими способами. Ну и еще потом имплементации разные делаю :). Иначе действительно не асилить.

Анатолий Левенчук · 29 ноября 2009

Re: песок в часах

В программировании есть еще часть понимания, чего именно достигает компьтер вместо поставленной перед ним цели ;) Я вот привожу последние несколько дней ссылки на интерактивное программирование, а ведь это и есть прорывная точка: решение проблемы отладки!

Ответ на комментарий