| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Prolog > Выбор одного из диалектов Prolog |
| Автор: Terrika 13.2.2010, 00:39 |
| Здравствуйте, дорогие форумчане! На днях я решил заняться Прологом... Но вот меня поразило обилие диалектов этого языка. Я хотел бы подобрать под мои нужды какой-нибудь диалект, на худой конец два: 1. Межплатформенность 2. Исходный код нормален 3. Чтоб я видел программу после компиляции. С уважением. З.Ы. Только не сильно пинайте меня. |
| Автор: Грымзик 13.2.2010, 01:29 |
| Я согласна, берите SWI Prolog. Самые распространенные это он и Visual Prolog. Если у последнего и есть какие-то преимущества относительно SWI, то я думаю, что если Вы с ними и выстретитесь, то очень не скоро, я лично с ними не встречалась. Зато есть сразу же вылезающий недостаток, связанный с загромождением кода. |
| Автор: Terrika 13.2.2010, 01:30 |
| Ой, извини... Например, после компиляции получился бы EXE-файл |
| Автор: Фантом 13.2.2010, 01:37 | ||
А, ясно.
Я бы выразился сильнее - Visual Prolog, строго говоря, попросту не является Прологом. Это некий другой язык, имеющий достаточно смутное отношение к оригиналу. |
| Автор: Terrika 13.2.2010, 01:41 | ||
Вот именно, но какой диалект подойдет? |
| Автор: Фантом 13.2.2010, 01:55 |
Я имел в виду, что SWI-Prolog это умеет. |
| Автор: Terrika 13.2.2010, 02:23 |
| А Визуал Пролог? Добавлено позже А Визуал Пролог? |
| Автор: Грымзик 13.2.2010, 18:51 |
| Визуал Пролог умеет. Фантом, а я не знала что SWI создает экзешники. Куда он их кладет? |
| Автор: Фантом 13.2.2010, 19:19 |
Полагаю, туда же, где лежит исходник (проверить не могу, поскольку версии под Windows, равно как и самой Windows, не имеется). Попробуйте запустить pl -g <основная цель> -c <имя файла с программой>. |
| Автор: Грымзик 13.2.2010, 21:41 |
| Нет, в папку с исходником точно не кидает. Проверила папку на диске С, где установлен компилятор, может там есть папка для экзешников, в визуале так делается, но я там тоже ничего не нашла. Потом есть папка для открытия/сохранения файлом по умолчанию, она тоже пуста. pl -g <основная цель> -c <имя файла с программой> сделать не могу, в винде в компиляторе можно только запросы после ?- вводить. А что, в линуксе исполняемый файл создается? |
| Автор: Фантом 13.2.2010, 21:53 |
Странно. По идее, оба варианта должны быть идентичными. Да, конечно. |
| Автор: Винитарх 16.2.2010, 12:56 | ||||
- непревзойдённая скорость исполнения программ - надёжность и безопасность кода - развитый GUI - возможность программирования с использованием современных парадигм функционального и императивного программирования - наличие огромной библиотеки, ставящей его на один уровень с такими монстрами, как С# и Delphi и проч. |
| Автор: Фантом 16.2.2010, 17:18 | ||
Только при этом он стал слишком непохож на исходный язык, растеряв основную часть тех особенностей, которые отличают Пролог от других языков. При этом перечисленные достоинства, вообще говоря, либо не являются достоинствами, либо их наличие само по себе спорно: 1) Непревзойденная скорость исполнения программ - это, конечно, плюс. Правда, можно спорить о том, обладает ли им VP. 2) Надежность и безопасность кода - в чем именно она выражается? 3) Развитый GUI - да. Только любая внешняя библиотека сделает это не хуже, да и работает вся эта кухня (как, впрочем, и сам компилятор) только под одной ОС. 4) Возможность программирования с использованием современных парадигм функционального и императивного программирования - это не достоинство, это недостаток. Языков-солянок, в которых намешаны все концепции, о которых слышали их создатели, и так больше, чем требуется. 5) Наличие огромной библиотеки - это, конечно, тоже плюс. Но тут то же замечание, что и в п.3 - непереносимость ее сильно обесценивает. |
| Автор: Грымзик 16.2.2010, 21:17 |
| Винитарх, я считаю, что это недостаток, потому что я никак не могу понять зачем это надо, если можно без этого. Я конечно особенности visual prolog не знаю, но я не могу себе представить, чтобы где-то вот эти лишние описания сыграли бы положительную роль. По поводу Си-шарп и Делфи особо ничего сказать не могу, я с каждым из них всего пару раз дело имела, но все-таки уже от этого опыта сложилось впечатление, что можно было бы поубавить. Зачем например в шарпе делать чтобы мейн был членом какого-то класса, почему как в С/С++ нельзя. |
| Автор: Винитарх 17.2.2010, 00:23 | ||||||||||||
Итого счёт 5:1 в пользу Visual Prolog7.2.
|
| Автор: Фантом 17.2.2010, 01:49 | ||||||||||||
А это разве задача для декларативного языка? Хотя бы для функционального - да. VIP действительно в этом отношении более универсален, но мы так и не определились, почему это следует считать достоинством. А на "родных" для Пролога задачах разница в быстродействии, пожалуй, невелика (хотя она, не буду возражать, действительно в пользу VIP). Заодно, кстати, не дадите ссылку на сравнение? Не поймите превратно, мне просто интересно посмотреть на более детальное описание результатов.
Да, пожалуй, тут соглашусь. Хотя та же типизация (она в VIP, кстати, не слишком уж строгая, до какой-нибудь Ады ему очень далеко) - это существенно противоречащее исходной идее свойство. Получившийся результат, возможно, и лучше, но он не является Прологом. Скорее он заполняет экологическую нишу Хаскеля и т.п., но при этом, пожалуй, излишне громоздок.
А зачем? Это просто еще одна задача, которую не надо решать на Прологе. Да, если хочется все сразу сделать на одном языке, то в случае SWI это будет посложнее, но подобное желание не вполне естественно.
Кхм... а что понимается под "моим форумом"? Знаете, то, что в языке есть нечто, чем я не хочу пользоваться, для меня не является достоинством.
Я бы сказал, что он не шестой, а нулевой. Допустим, написал я некую программу на VIP в 1999 году (пример, кстати, совершенно реальный), и что я с ней сейчас буду делать? Инструмент импорта старых проектов, конечно, есть, но он, мягко говоря, кривоват. На нынешних версиях Windows все это дай бог если вообще как-то запустится. А программа и сейчас представляет ценность, причем вариант "выкинуть и написать заново" не стоит рассматривать - слишком сложно. В реальности, правда, и пришлось переписывать. Но в расчете на SWI и под Linux, с другими обертками. Но то, что получилось, и сейчас успешно крутится на разных платформах, и я не думаю о том, что завтра разработчик компилятора еще что-то поменяет и мне придется лихорадочно думать, что и где в коде более чем десятилетней давности при этом отвалится.
Ну совсем уж по старинке не получится. А заманчивости неиспользования сторонних библиотек (если они есть и достаточно хорошо сделаны) я, откровенно говоря, не понимаю. Помимо всяких частных соображений, есть одно стандартное общее - универсальный комбайн умеет делать все, но, как правило, каждую конкретную вещь он делает хуже, чем специализированный инструмент. |
| Автор: Винитарх 18.2.2010, 18:03 | ||||||||
|
| Автор: Фантом 18.2.2010, 20:14 | ||||||
Необходимость прототипирования предикатов - пожалуй, мешает.
А в чем именно разница? В SWI посимвольная обработка - это те же "полстрочки".
Ну, вкус фломастеров у каждого и в самом деле разный. На мой взгляд, механизм унификации является существенным для языка. |
| Автор: Винитарх 20.2.2010, 14:49 | ||||
Кстати в Visual Prolog есть так называемые анонимные предикаты, которых в ISO Прологах нет. Поэтому в некоторых случаях писать весь предикат не надо, а только тело.
|
| Автор: Фантом 20.2.2010, 15:09 | ||
Знаете, написание всего кода на Аде повышает эту безопасность еще сильнее. Ада - это тоже разновидность Пролога? Только очень основательно обрезанный. Фактически допустима унификация только объектов с заранее гарантированной однотипной структурой, что резко снижает ее ценность. |
| Автор: Винитарх 20.2.2010, 20:00 | ||||
|
| Автор: Фантом 21.2.2010, 00:15 | ||
Нет, просто довел Ваш аргумент до логического завершения. Любой язык программирования отличается от других каким-то набором характерных особенностей (вообще говоря, неважно, хороших или плохих). Если у некоторого языка поменять эти характерные особенности на другие (неважно, по каким причинам) - получится другой язык. Возможно, даже более хороший, но другой. В Прологе нет статической типизации и существенно ограничены императивные возможности. Можно долго и упорно выяснять, хорошо это или плохо, но это так. И если все эти элементы добавить в язык, то получится нечто другое. В конце концов, Erlang почему-то никто не пытается назвать Прологом, хотя его синтаксис, вообще говоря, ближе к Прологу, чем синтаксис VIP. |
| Автор: Винитарх 21.2.2010, 19:16 | ||||||
|
| Автор: Фантом 21.2.2010, 23:15 | ||
Ладно, давайте закругляться. Признаться, этот спор слепого с глухим мне уже немного надоел, а поскольку мы придерживаемся разных представлений о том, где проходит граница между диалектом и другим языком, то спорить на эти темы мы можем бесконечно долго. |