Здравствуйте, Garb, Вы писали:
G>В чём принципиальное отличие, например, Пролога от С++: G>В С++ описать задачу != решить задачу. G>В Prolog описать задачу == решить задачу.
Это плод собственного опыта, или лозунг вычитан из книжек?
Ты не можешь описать задачу в свободной форме, не учитывая тонкостей исполнительного механизма — например, глубины рекурсии, отсечения заведомо ложных ветвей и т.п.
Если есть интерактивность (как с пользователем, так и внутри программы: например, работа со встроенной БД) — то сюда добавятся знания о последовательности выполнения.
Вы никогда не задумывались, почему не исчез ФОРТРАН. Да потому что компьютеры принципиально остались теми же. И наиболее к ним подходят императивные языки, паскаль бейсик си фортран. А они ничем друг от друга не отличаются. И С++ и Ява никаких принципиальных свойств Фортрана не изменили. Вы скажете-ООП. Так это скорее стиль.
А есть ли альтернативы императивности? Да,- другие парадигмы, уж простите за избитое слово. Функциональное программирование, логическое. К первому относится, в частности, Лисп, ко второму- Пролог.
В чём принципиальное отличие, например, Пролога от С++:
В С++ описать задачу != решить задачу.
В Prolog описать задачу == решить задачу.
Просто, обобщённый алгоритм решения уже заложен в исполняющей системе, которая выполняет Пролог-программу. Вы скажете, а почему нельзя тоже сделать на С++. Можно, просто, вы повторите то что уже сделано не добавив ничего нового(ООП расширения Пролога тоже существуют ,а у Лиспа(CLOS) появились раньше С++).
Всё гораздо интереснее, нежели очередная Java или С#.
К чему я это. А к вопросу о кругозоре программистов, о том, как их учат.
Я не призываю заменить С++ Прологом и т.д.. Это невозможно! Но вовремя(в институте) пораскинуть мозгами необходимо, а то загоняют будущих программеров в рамки С++,С#.
Re[4]: ФОРТРАН,Бейсик,С++,Ява == разговоры о погоде
Здравствуйте, Garb, Вы писали:
G>Здравствуйте, CrazyPit, Вы писали:
CP>>Логическое программирование конечно интересная штука, но у него имхо круг задач для которых оно подходит намноооого уже чем у ФП...
G>Думаю, это потому, что функциональный стиль гораздо ближе императивному нежели декларативный.
ЭЭЭ вообще-то функциональное программирование тоже декларативно как и логическое....
G>Я говорю не о реализации Пролог-интерпретатора средствами Лиспа(это есть), а о органичном языке, слиянии парадигм.
Можно встроить пролог в лисп, т.е. использовать прологовые фишки внутри лисповых программ прозрачно. Причём всего в 200 строк кода
Garb wrote:
> К чему я это. А к вопросу о кругозоре программистов, о том, как их учат. > Я не призываю заменить С++ Прологом и т.д.. Это невозможно! Но вовремя(в > институте) пораскинуть мозгами необходимо, а то загоняют будущих > программеров в рамки С++,С#.
G>>В чём принципиальное отличие, например, Пролога от С++: G>>В С++ описать задачу != решить задачу. G>>В Prolog описать задачу == решить задачу.
К>Это плод собственного опыта, или лозунг вычитан из книжек?
К>Ты не можешь описать задачу в свободной форме, не учитывая тонкостей исполнительного механизма — например, глубины рекурсии, отсечения заведомо ложных ветвей и т.п. К>Если есть интерактивность (как с пользователем, так и внутри программы: например, работа со встроенной БД) — то сюда добавятся знания о последовательности выполнения.
Это я к тому, что дистанция между "описать" и "решить" в Прологе меньше, чем в С++, но не нулевая.
Перекуём баги на фичи!
Re[3]: ФОРТРАН,Бейсик,С++,Ява == разговоры о погоде
Здравствуйте, Кодт, Вы писали:
К>Это я к тому, что дистанция между "описать" и "решить" в Прологе меньше, чем в С++, но не нулевая.
Угу. В той единственной книге о Прологе, которую я в детстве читал, про это было написано первым делом. Типа того, что язык, с одной стороны, дает иллюзию полной декларативности, а с другой стороны, оказывается что не все декларации одинаково полезны. И для выбора "правильного" порядка крайне важно знать, как именно пролог собирается твою программу исполнять. Так что абстрагироваться от императивщины в нем не получается.
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: ФОРТРАН,Бейсик,С++,Ява == разговоры о погоде
Здравствуйте, kan_izh, Вы писали:
_>Garb wrote:
>> К чему я это. А к вопросу о кругозоре программистов, о том, как их учат. >> Я не призываю заменить С++ Прологом и т.д.. Это невозможно! Но вовремя(в >> институте) пораскинуть мозгами необходимо, а то загоняют будущих >> программеров в рамки С++,С#.
_>Недавно обсуждали http://rsdn.ru/forum/?mid=1820702
Здравствуйте, Кодт, Вы писали:
G>>>В чём принципиальное отличие, например, Пролога от С++: G>>>В С++ описать задачу != решить задачу. G>>>В Prolog описать задачу == решить задачу.
К>>Это плод собственного опыта, или лозунг вычитан из книжек?
Это плод собственного опыта!
К>>Ты не можешь описать задачу в свободной форме, не учитывая тонкостей исполнительного механизма — например, глубины рекурсии, отсечения заведомо ложных ветвей и т.п. К>>Если есть интерактивность (как с пользователем, так и внутри программы: например, работа со встроенной БД) — то сюда добавятся знания о последовательности выполнения.
К>Это я к тому, что дистанция между "описать" и "решить" в Прологе меньше, чем в С++, но не нулевая.
Я немного не о том. Чистого вообще ничего не бывает. Я говорил о принципиально других стилях и подходах. Кстати, С++ ООП всего лишь одна из проекций ООП. Более того, по большому счёту, концепция ООП малоконструктивна. Т.е. она лишь помогает описывать задачу не предлагая никаких способов её решения. В Прологе всё не так.
Лично мне копание в Логическом программировании много дало, хотя я использую С++.
Re[5]: ФОРТРАН,Бейсик,С++,Ява == разговоры о погоде
CP>Логическое программирование конечно интересная штука, но у него имхо круг задач для которых оно подходит намноооого уже чем у ФП...
Думаю, это потому, что функциональный стиль гораздо ближе императивному нежели декларативный.
Любопытно, что синтаксис Лиспа и, например Микропролога очень близки. Теже сплошные скобки. Были разговоры о конвергенции или расширении Лиспа. Может уже есть некий функционально-логический язык?. А если нет, то почему?.
Я говорю не о реализации Пролог-интерпретатора средствами Лиспа(это есть), а о органичном языке, слиянии парадигм.
Re[7]: ФОРТРАН,Бейсик,С++,Ява == разговоры о погоде
G>>Я говорю не о реализации Пролог-интерпретатора средствами Лиспа(это есть), а о органичном языке, слиянии парадигм.
CP>Можно встроить пролог в лисп, т.е. использовать прологовые фишки внутри лисповых программ прозрачно. Причём всего в 200 строк кода
В Allegro Lisp, если я правильно помню, Пролог имеется out of the box