Автор | Сообщение |
misha![]()
1275 сообщений |
#2704 2010-08-09 19:09 GMT+3 часа(ов) |
Можете опубликовать. Только одна просьба: предоставьте мне статью на рецензирование.
|
|
utkin
21 сообщений |
#2709 2010-08-10 11:01 GMT+3 часа(ов) |
Обязательно. Еще вопрос, как это проверить? То есть как мне запустить выполнение на моем компе? Просто мне нужно посмотреть как это выглядит, сделать скриншоты и т.д.
отредактировал(а) utkin: 2010-08-10 11:13 GMT+3 часа(ов) |
|
misha![]()
1275 сообщений |
#2711 2010-08-10 17:08 GMT+3 часа(ов) |
1) Установите MySQL. Запустите(если он остановлен) MySQL-сервер. Создайте базу данных для гостевой книги.
2) Удалите у исходника лишнее расширение(.scm), измените пользовательские настройки гостевой, и затем скопируйте исходник в папку htdocs plt-web-server'а. Запустите plt-web-server. Вообще-то сервер необходимо настроить, а также установить режимы доступа к файлам и каталогам сервера, но для первого запуска и так сойдет. Посмотреть на гостевую можно перейдя по ссылке http://localhost/guestbook.rkt отредактировал(а) misha: 2010-08-15 01:46 GMT+3 часа(ов) |
|
vkhomyakov
6 сообщений |
#4187 2011-04-14 11:11 GMT+3 часа(ов) |
to misha
Racket - интересный проект! Даже взять то, что устанавливаешь DrRacket запускаешь его, пишешь программы и компилируешь, без танцев с бубном. Мне показалось, что Racket и прост и сложен одновременно. Чем больше в него погружаюсь, тем больше нравится. Странно, что пока не встречались прикладные программы, написанные на нем. Мне, по крайней мере. Может ссылку дадите. Интересно. Вообще, планировался ли он для прикладных программ? Может только в академических целях? Ведь, как только на нем станут серьезно писать программы, менять его уже будет трудно. А сейчас он очень быстро развивается. Такие вот мысли. |
|
misha![]()
1275 сообщений |
#4191 2011-04-15 01:18 GMT+3 часа(ов) |
> Даже взять то, что устанавливаешь DrRacket запускаешь его,
пишешь программы и компилируешь, без танцев с бубном. К сожалению, в DrRacket отсутствует менеджер проектов, поэтому приходится писать специальные скрипты для сборки сложного проекта. Но это несложно, ведь Рэкет поставляется с довольно юзабельными библиотеками, в которых реализовано все необходимое для написания собственного компилятора. > Мне показалось, что Racket и прост и сложен одновременно. Racket, как язык программирования, довольно сложен, отчасти из-за того, что осилить почти 900 страниц "Reference: Racket" довольно тяжело. Да к тому же еще, там хорошо описаны только примитивы, а все финты остались за кадром. Но ведь не забывайте, "Reference: Racket" всего лишь вершина айсберга ![]() ![]() > Странно, что пока не встречались прикладные программы, написанные на нем. Мне, по крайней мере. Может ссылку дадите. Я этот вопрос не изучал. Racket появился относительно недавно(ему скоро исполнится годик), поэтому если они и есть, то необходимо искать MzScheme. Хотя с другой стороны, интерпретаторов, трансляторов, препроцессоров и т.д. написано предостаточно. Ведь для этого и разрабатывался Лисп ![]() > Вообще, планировался ли он для прикладных программ? Необходимость написания прикладных программ послужила причиной по которой умер PLT Scheme и возродился как Racket. |
|
misha![]()
1275 сообщений |
#4192 2011-04-16 14:49 GMT+3 часа(ов) |
Я рекомендую попробовать связку emacs + geiser. Правда компилировать Вам придется в REPL.
|
|
misha![]()
1275 сообщений |
#4193 2011-04-16 23:45 GMT+3 часа(ов) |
Скриптовый движок у игры Uncharted 2: Among Thieves реализован на Racket(точнее на устаревшем MzScheme).
|
|
vkhomyakov
6 сообщений |
#4197 2011-04-18 12:19 GMT+3 часа(ов) |
Цитата Судя по описаниям - хороший инструмент, только не заработал с первого раза. Не видит экзешника Racket.exe для REPL. Подскажите, как к нему путь в Emacs прописать? |
|
misha![]()
1275 сообщений |
#4198 2011-04-18 17:17 GMT+3 часа(ов) |
> Не видит экзешника Racket.exe для REPL.
Подскажите, как к нему путь в Emacs прописать? Я знаю два способа: 1) Меню Geiser -> Customize -> Racket. Прописываете полные пути к исполняемым файлам в Unix-стиле(см. пункт 2). Обязательно сохраняетесь! ![]() 2) Добавляете в файл .emacs, после строки загрузки Geiser, следующие строки (custom-set-variablesВаши пути могут отличаться. Если у Вас XP или более ранняя версия, то Вам придется также исправить функцию enter! в модуле "путь до geiser"/scheme/racket/geiser/user.rkt, либо не использовать локализованных имен. (define (enter! mod stx) отредактировал(а) misha: 2011-04-18 17:34 GMT+3 часа(ов) |
|
vkhomyakov
6 сообщений |
#4202 2011-04-19 17:29 GMT+3 часа(ов) |
Спасибо! Сделал. Работает.
Как раз у меня XP. Только, программа пока маленькая, мне удобнее в DrRacket - до ограничений пока не дошел. Когда почувствую, что DrRacket уже не тянет - буду разбираться с emacs + geiser. |
|
rv82
46 сообщений |
#4286 2011-05-16 10:43 GMT+3 часа(ов) |
Цитата Здравствуйте! Своё знакомство со Scheme начинал именно с PLT-Scheme. Но потом забросил, перейдя на Common Lisp (Clozure CL под Win и SBCL под Linux). Недавно, благодаря как раз этой теме, решил снова посмотреть на Scheme, и тем более на Racket. Если честно, посмотрел и ужаснулся (без наезда)! Показались ужасными макросы, не понравилось отсутствие параметров &rest, &key и &optional в функциях, а также, отсутствие поддержки параметрических списков вида '(:a 1 :b 2 :c 3). Но, недавно я обнаружил всё это богатство в Gambit-C, включая даже макросы в стиле CL. Так вот, хочется спросить, как с этим всем обстоят дела в Racket'е? Может быть я плохо смотрел? Хотя, макросы в стиле CL мне уже не нужны. Разобрался с R5RS-макросами и мне они показались гораздо удобнее. Другое дело, что запись их несколько длиннее, чем в CL. Ещё, в Racket'е не нравится 3 момента: 1) Очень долго собирается из исходников. 2) Любит подтормаживать и кушать память, подобно Java. 3) Нужно тащить за собой весь дистрибутив, который немало весит (в отличии от Gambit, Chicken и Bigloo). В принципе, на современных машинах с этим всем можно ужиться, но на старых это конечно не радует (особенно задумчивость). И ещё, вопрос к людям, знающим CLOS: Есть ли в ОО-механизме Racket'а поддержка generic functions? Знаю, что есть swindle, про который говорят, что это аналог CLOS, но документации по нему, можно сказать, ноль. Всё поглядываю в сторону этого языка, но постоянно гложет мысль, а нужен ли он мне? Может быть и вправду, хватит Gambit'а? |
|
misha![]()
1275 сообщений |
#4287 2011-05-16 14:37 GMT+3 часа(ов) |
Цитата Изучение макросистемы Рэкета нужно начинать с синтаксического объекта, без умения с ним работать изучение дальнейшего материала подобно прохождению болота вслепую. А вообще, макросы у Рэкета довольно гибкие и юзабельные: можно использовать шаблоны, сопоставление с образцом, либо парсить их как в классическом Лиспе(я это уже не раз доказывал! ![]() От использования ключевых слов #:key, #:optional, #:rest, #:other-keys, #:forbid-other-keys и др. отказались немного усложнив синтаксис определения параметров функции, но при необходимости ими всегда можно воспользоваться. Новый синтаксис определения параметров функции позволяет(почти всегда) избежать их использования. Не "параметрический список", а "список, содержащий ключевые слова". > (keyword? '#:v) Цитата Хочу предупредить сразу, модуль - это "лямбда", а не пакет или юнит. Поэтому аналогии с CL здесь неуместны. Конечно, Вы всегда можете работать с AST через синтаксический объект, поэтому нет необходимости в использовании дополнительных "вещей"(defmacro, define-macros и т.п.). Цитата 1) Вы количество библиотек видели? А теперь представьте, что необходимо для каждого из модулей создать fasl. 2) Не используйте DrRacket(да и под линуксом его постоянно глючит), т.к. он использует "графическую трассировку", которая ужасно сильно жрет системные ресурсы. Выходом является использование emacs + geiser. А также не забывайте создавать fasl'ы для уже отлаженных модулей(для этого используется функция managed-compile-zo). 3) Это не обязательно ![]() |
|
misha![]()
1275 сообщений |
#4289 2011-05-16 15:03 GMT+3 часа(ов) |
Цитата ООП для Рэкета ещё довольно сырое, о чем свидетельствует довольно скудная документация по этой теме. generic "механизмы" для методов присутствуют, но о какой либо значимой аналогии с CLOS говорить пока рано, все ещё может поменяться. Да и нет никакой необходимости в совместимости с CLOS. Предупрежу заранее, класс и его объект нужно рассматривать как "лямбды специального вида", тогда многие вещи становятся понятными. Цитата Рэкет(как и CL) ориентирован на создание больших проектов, а для хелловордов или написания маленьких плагинов достаточно и Gambit'а. |
|
rv82
46 сообщений |
#4295 2011-05-16 17:57 GMT+3 часа(ов) |
Бегло ознакомился с библиотекой Ракетки. Действительно круто в сравнении с gambit/chicken/bigloo. Хотя, есть непонятные моменты с модульной системой, но об этом позже. Misha, хотелось бы узнать Ваше личное мнение на предмет места Ракетки среди прочих языков программирования. На Ваш взгляд, он ближе к скриптовым, или языкам типа Java/.Net?
|
|
misha![]()
1275 сообщений |
#4297 2011-05-16 20:30 GMT+3 часа(ов) |
> Хотя, есть непонятные моменты с модульной системой, но об этом позже.
Лучше не используйте аналогий, между Racket и CL мало общего. Модуль - это не пакет, у него своя специфика. Модули необходимы для применения объектного подхода (не путать с ООП). > На Ваш взгляд, он ближе к скриптовым, или языкам типа Java/.Net? Все зависит от того, как Вы его настроите. Рэкетом называется ведь не только язык программирования, а также еще и виртуальная машина. |
|
rv82
46 сообщений |
#4298 2011-05-16 22:54 GMT+3 часа(ов) |
> Лучше не используйте аналогий, между Racket и CL мало общего. Модуль - это не пакет, у него своя специфика. Модули необходимы для применения объектного подхода (не путать с ООП).
Как раз с CL я и не сравниваю. Мне ближе модули в том виде, в каком они присутствуют в Паскаль-подобных языках (ну или в Питоне). В общем, меня модули интересуют только как пространства имён. Но, пока я с ними не разобрался, ничего спрашивать и, тем более, заявлять не буду. Когда точно появятся вопросы, то спрошу. Сейчас единственное, что бросилось в глаза, так это наличие двух типов модулей: собственно модули и юниты (units). Если я правильно понял, на модулях построена вся библиотека Racket'а. А юниты - это нечто аналогичное структурам (модулям) в Standard ML. В свободное время буду копаться и разбираться со всем этим богатством. |
|
rv82
46 сообщений |
#4305 2011-05-17 11:23 GMT+3 часа(ов) |
Всё, вопрос оформился. Есть ли в Racket переменная, подобная load-path в Emacs, которая бы указывала на каталог с коллекциями модулей? Мне это надо для того, чтобы указать, что коллекция модулей находится в текущем каталоге с программой. А всё это мне нужно затем, чтобы загружать модули, не указывая конкретного имени файла (т.е., не (require "funcs.rkt"), а (require my/funcs)), чтобы интерпретатор, при наличии откомпилированных файлов, выбирал именно их.
Почему-то мне думается, что такая возможность точно есть. Но, я не нашёл ничего в документации. Может быть, как всегда, от нехватки времени плохо искал? |
|
misha![]()
1275 сообщений |
#4308 2011-05-17 15:22 GMT+3 часа(ов) |
> Есть ли в Racket переменная, подобная load-path в Emacs, которая бы указывала на каталог с коллекциями модулей?
См. описание параметра current-library-collection-paths. > Мне это надо для того, чтобы указать, что коллекция модулей находится в текущем каталоге с программой. Проще всего добавить Вашу коллекцию в одну из существующих директорий предназначенных для хранения коллекций модулей. > А всё это мне нужно затем, чтобы загружать модули, не указывая конкретного имени файла (т.е., не (require "funcs.rkt"), а (require my/funcs)), чтобы интерпретатор, при наличии откомпилированных файлов, выбирал именно их. Откомпилированные файлы загружаются по умолчанию, при этом проверяются штамп времени, хеш-сумма и др. параметры исходника на наличие изменений. И если несоответствия обнаружены, то выдается сообщение об ошибке. > Может быть, как всегда, от нехватки времени плохо искал? Однозначно ![]() |
|
rv82
46 сообщений |
#4322 2011-05-18 14:42 GMT+3 часа(ов) |
misha Спасибо за консультацию. Теперь тёмных пятен не осталось. К тому же, сегодня попробовал написать модуль на Си с использованием C API. Оказалось очень легко (очень похоже на C API в Tcl). Как будет время, напишу статейку в своём блоге о создании расширений для Racket. PS. До этого, всегда и везде, где только можно, использовал Tcl (а где нельзя, писал к нему расширения на Си). Также, хотел изучить Python и Ruby, но так и не смог себя переломить. Есть что-то отталкивающее в этих языках. Теперь же, плюс к Tcl, планирую так же широко использовать и Racket. |
|
misha![]()
1275 сообщений |
#4331 2011-05-19 23:22 GMT+3 часа(ов) |
> К тому же, сегодня попробовал написать модуль на Си с использованием C API.
Кстати, под виндой придется немного Рэкетовскую либу править. |
|
rv82
46 сообщений |
#4401 2011-05-29 20:38 GMT+3 часа(ов) |
Написал статью. Но есть проблема: сделал в Emacs'е html из всех исходников, а blogger не хочет брать этот html. Как будет время, сделаю сайт на narod.ru и выложу статью на него.
> Кстати, под виндой придется немного Рэкетовскую либу править. Да, столкнулся с этим. Единственное, что утешает, что лично я в Windows не сижу. Кстати, когда-то давно, ещё на PLT Scheme, у меня получалось загружать dll в Windows с помощью FFI. |
|
misha![]()
1275 сообщений |
#4436 2011-06-06 02:04 GMT+3 часа(ов) |
> Да, столкнулся с этим. Единственное, что утешает, что лично я в Windows не сижу.
За всем не уследишь) Некоторые библиотеки просто не успевают править, но в этом отчасти и наша вина. Баг репорты необходимо почаще писать. |
|
kitoran
5 сообщений |
#6314 2012-07-20 15:16 GMT+3 часа(ов) |
Я начал читать сикп, там написано, что есть слово nil, которое обозначает нулевой список, но предлагается вместо него использовать '(). В рэкете это слово совсем не используется, или пишется по-другому? Используется #lang scheme , рэкет говорит - не знаю слова nil.
И ещё вопрос - про рэкет на русском ничего нет, ни книжек, ни документации, ни руководства, правильно? (Извиняюсь, если вопрос не в тот топик, я не нашёл темы, где можно было бы задавать мелкие глупые вопросы) отредактировал(а) kitoran: 2012-07-20 16:31 GMT+3 часа(ов) |
|
misha![]()
1275 сообщений |
#6329 2012-07-21 20:05 GMT+3 часа(ов) |
Цитата (define nil '()) ЦитатаУчите английский ![]() |
|
stolzen![]()
16 сообщений |
#6333 2012-07-21 23:35 GMT+3 часа(ов) |
Racket знает null, то же самое, что nil. Ну и да, (define nil '()) вам в помощь
|
|
kitoran
5 сообщений |
#6451 2012-08-10 22:13 GMT+3 часа(ов) |
Скопировал код из гайда, отсюда: http://docs.racket-lang.org/guide/define-struct.html
вот этот:
DrRacket говорит: struct: unrecognized struct-specification keyword in: #:methods Ключевое слово #:transparent он отлично признаёт, почему он не признаёт #:methods? Используется #lang racket |
|
misha![]()
1275 сообщений |
#6453 2012-08-10 22:27 GMT+3 часа(ов) |
ЦитатаЭта фича появилась с новой версией. |
|
kitoran
5 сообщений |
#6486 2012-08-27 20:56 GMT+3 часа(ов) |
Чем отличаются в использовании классы и структуры? Зачем структурам методы?
Можно ли обновить рэкет до текущей версии одной кнопочкой, или только удалять-переустанавливать? А ещё как вы считаете, правду пишут, что scheme - более чистый и функиональный диалект, чем cl? |
|
kitoran
5 сообщений |
#6487 2012-08-29 20:10 GMT+3 часа(ов) |
А ещё: Чем отличаются в использовании пакеты и модули?
|
|
misha![]()
1275 сообщений |
#6617 2012-09-25 15:50 GMT+3 часа(ов) |
ЦитатаВам стоит ознакомиться с основами ООП. ЦитатаПока только переустанавливать. ЦитатаДа, я тоже так считаю ![]() |
|