![]() |
|
![]() ![]() ![]() |
|
Terrika |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 30.12.2009 Репутация: нет Всего: нет |
Здравствуйте, дорогие форумчане!
На днях я решил заняться Прологом... Но вот меня поразило обилие диалектов этого языка. Я хотел бы подобрать под мои нужды какой-нибудь диалект, на худой конец два: 1. Межплатформенность 2. Исходный код нормален 3. Чтоб я видел программу после компиляции. С уважением. З.Ы. Только не сильно пинайте меня. |
|||
|
||||
Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: 6 Всего: 49 |
Возьмите SWI-Prolog. Это один из лучших вариантов, причем он свободно распространяется. Реализует наиболее стандартный (т.н. "эдинбургский") диалект языка. Конкретно по пунктам: 1) Windows, Linux, MacOS X. При желании можно собрать и для чего-нибудь другого, благо имеются исходники. 2) См.выше. Хотя, в принципе, по этому пункту подходит почти все, за исключением Turbo Prolog и его потомков (PDC, Visual Prolog). 3) Не понял смысла пожелания. |
|||
|
||||
Грымзик |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 7.10.2009 Репутация: 6 Всего: 6 |
Я согласна, берите SWI Prolog. Самые распространенные это он и Visual Prolog.
Если у последнего и есть какие-то преимущества относительно SWI, то я думаю, что если Вы с ними и выстретитесь, то очень не скоро, я лично с ними не встречалась. Зато есть сразу же вылезающий недостаток, связанный с загромождением кода. |
|||
|
||||
Terrika |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 30.12.2009 Репутация: нет Всего: нет |
Ой, извини...
Например, после компиляции получился бы EXE-файл |
|||
|
||||
Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: 6 Всего: 49 |
А, ясно. ![]() Я бы выразился сильнее - Visual Prolog, строго говоря, попросту не является Прологом. Это некий другой язык, имеющий достаточно смутное отношение к оригиналу. |
|||
|
||||
Terrika |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 30.12.2009 Репутация: нет Всего: нет |
||||
|
||||
Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: 6 Всего: 49 |
||||
|
||||
Terrika |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 30.12.2009 Репутация: нет Всего: нет |
А Визуал Пролог?
Добавлено позже А Визуал Пролог? |
|||
|
||||
Грымзик |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 7.10.2009 Репутация: 6 Всего: 6 |
Визуал Пролог умеет.
Фантом, а я не знала что SWI создает экзешники. Куда он их кладет? |
|||
|
||||
Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: 6 Всего: 49 |
||||
|
||||
Грымзик |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 7.10.2009 Репутация: 6 Всего: 6 |
Нет, в папку с исходником точно не кидает. Проверила папку на диске С,
где установлен компилятор, может там есть папка для экзешников, в визуале так делается, но я там тоже ничего не нашла. Потом есть папка для открытия/сохранения файлом по умолчанию, она тоже пуста. pl -g <основная цель> -c <имя файла с программой> сделать не могу, в винде в компиляторе можно только запросы после ?- вводить. А что, в линуксе исполняемый файл создается? |
|||
|
||||
Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: 6 Всего: 49 |
||||
|
||||
Винитарх |
|
||||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 21.1.2007 Репутация: нет Всего: нет |
- непревзойдённая скорость исполнения программ - надёжность и безопасность кода - развитый GUI - возможность программирования с использованием современных парадигм функционального и императивного программирования - наличие огромной библиотеки, ставящей его на один уровень с такими монстрами, как С# и Delphi и проч. Это сообщение отредактировал(а) Винитарх - 16.2.2010, 13:12 |
||||
|
|||||
Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: 6 Всего: 49 |
Только при этом он стал слишком непохож на исходный язык, растеряв основную часть тех особенностей, которые отличают Пролог от других языков. При этом перечисленные достоинства, вообще говоря, либо не являются достоинствами, либо их наличие само по себе спорно: 1) Непревзойденная скорость исполнения программ - это, конечно, плюс. Правда, можно спорить о том, обладает ли им VP. 2) Надежность и безопасность кода - в чем именно она выражается? 3) Развитый GUI - да. Только любая внешняя библиотека сделает это не хуже, да и работает вся эта кухня (как, впрочем, и сам компилятор) только под одной ОС. 4) Возможность программирования с использованием современных парадигм функционального и императивного программирования - это не достоинство, это недостаток. Языков-солянок, в которых намешаны все концепции, о которых слышали их создатели, и так больше, чем требуется. 5) Наличие огромной библиотеки - это, конечно, тоже плюс. Но тут то же замечание, что и в п.3 - непереносимость ее сильно обесценивает. |
|||
|
||||
Грымзик |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 7.10.2009 Репутация: 6 Всего: 6 |
Винитарх, я считаю, что это недостаток, потому что я никак
не могу понять зачем это надо, если можно без этого. Я конечно особенности visual prolog не знаю, но я не могу себе представить, чтобы где-то вот эти лишние описания сыграли бы положительную роль. По поводу Си-шарп и Делфи особо ничего сказать не могу, я с каждым из них всего пару раз дело имела, но все-таки уже от этого опыта сложилось впечатление, что можно было бы поубавить. Зачем например в шарпе делать чтобы мейн был членом какого-то класса, почему как в С/С++ нельзя. |
|||
|
||||
Винитарх |
|
||||||||||||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 21.1.2007 Репутация: нет Всего: нет |
Итого счёт 5:1 в пользу Visual Prolog7.2. ![]()
|
||||||||||||
|
|||||||||||||
Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: 6 Всего: 49 |
А это разве задача для декларативного языка? Хотя бы для функционального - да. VIP действительно в этом отношении более универсален, но мы так и не определились, почему это следует считать достоинством. А на "родных" для Пролога задачах разница в быстродействии, пожалуй, невелика (хотя она, не буду возражать, действительно в пользу VIP). Заодно, кстати, не дадите ссылку на сравнение? Не поймите превратно, мне просто интересно посмотреть на более детальное описание результатов. Да, пожалуй, тут соглашусь. Хотя та же типизация (она в VIP, кстати, не слишком уж строгая, до какой-нибудь Ады ему очень далеко) - это существенно противоречащее исходной идее свойство. Получившийся результат, возможно, и лучше, но он не является Прологом. Скорее он заполняет экологическую нишу Хаскеля и т.п., но при этом, пожалуй, излишне громоздок.
А зачем? Это просто еще одна задача, которую не надо решать на Прологе. Да, если хочется все сразу сделать на одном языке, то в случае SWI это будет посложнее, но подобное желание не вполне естественно. Кхм... а что понимается под "моим форумом"? Знаете, то, что в языке есть нечто, чем я не хочу пользоваться, для меня не является достоинством. ![]() Я бы сказал, что он не шестой, а нулевой. Допустим, написал я некую программу на VIP в 1999 году (пример, кстати, совершенно реальный), и что я с ней сейчас буду делать? Инструмент импорта старых проектов, конечно, есть, но он, мягко говоря, кривоват. На нынешних версиях Windows все это дай бог если вообще как-то запустится. А программа и сейчас представляет ценность, причем вариант "выкинуть и написать заново" не стоит рассматривать - слишком сложно. В реальности, правда, и пришлось переписывать. Но в расчете на SWI и под Linux, с другими обертками. Но то, что получилось, и сейчас успешно крутится на разных платформах, и я не думаю о том, что завтра разработчик компилятора еще что-то поменяет и мне придется лихорадочно думать, что и где в коде более чем десятилетней давности при этом отвалится. Ну совсем уж по старинке не получится. А заманчивости неиспользования сторонних библиотек (если они есть и достаточно хорошо сделаны) я, откровенно говоря, не понимаю. Помимо всяких частных соображений, есть одно стандартное общее - универсальный комбайн умеет делать все, но, как правило, каждую конкретную вещь он делает хуже, чем специализированный инструмент. |
|||
|
||||
Винитарх |
|
||||||||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 21.1.2007 Репутация: нет Всего: нет |
![]()
|
||||||||
|
|||||||||
Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: 6 Всего: 49 |
Необходимость прототипирования предикатов - пожалуй, мешает. А в чем именно разница? В SWI посимвольная обработка - это те же "полстрочки". Ну, вкус фломастеров у каждого и в самом деле разный. На мой взгляд, механизм унификации является существенным для языка. |
|||
|
||||
Винитарх |
|
||||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 21.1.2007 Репутация: нет Всего: нет |
Кстати в Visual Prolog есть так называемые анонимные предикаты, которых в ISO Прологах нет. Поэтому в некоторых случаях писать весь предикат не надо, а только тело.
|
||||
|
|||||
Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: 6 Всего: 49 |
Знаете, написание всего кода на Аде повышает эту безопасность еще сильнее. Ада - это тоже разновидность Пролога? Только очень основательно обрезанный. Фактически допустима унификация только объектов с заранее гарантированной однотипной структурой, что резко снижает ее ценность. |
|||
|
||||
Винитарх |
|
||||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 21.1.2007 Репутация: нет Всего: нет |
|
||||
|
|||||
Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: 6 Всего: 49 |
Нет, просто довел Ваш аргумент до логического завершения. Любой язык программирования отличается от других каким-то набором характерных особенностей (вообще говоря, неважно, хороших или плохих). Если у некоторого языка поменять эти характерные особенности на другие (неважно, по каким причинам) - получится другой язык. Возможно, даже более хороший, но другой. В Прологе нет статической типизации и существенно ограничены императивные возможности. Можно долго и упорно выяснять, хорошо это или плохо, но это так. И если все эти элементы добавить в язык, то получится нечто другое. В конце концов, Erlang почему-то никто не пытается назвать Прологом, хотя его синтаксис, вообще говоря, ближе к Прологу, чем синтаксис VIP. |
|||
|
||||
Винитарх |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 21.1.2007 Репутация: нет Всего: нет |
|
||||||
|
|||||||
Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: 6 Всего: 49 |
Ладно, давайте закругляться. Признаться, этот спор слепого с глухим мне уже немного надоел, а поскольку мы придерживаемся разных представлений о том, где проходит граница между диалектом и другим языком, то спорить на эти темы мы можем бесконечно долго. |
|||
|
||||
![]() ![]() ![]() |
Правила форума Prolog | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Prolog | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |