LINUX.ORG.RU

Ответ на: комментарий от ero-sennin

> А кроме шуток, я люблю Лисп, и сам на нём иногда пишу, и мне всегда казалось, что его синтаксис - очень небольшая плата за гибкость, но вот заявлять, что S-выражения читаются ЛЕГЧЕ, чем традиционная математическая нотация это блин уже фонатство и красноглазие. Или таки вы хотите сказать, что математическая запись - отстой, и надо её срочно привести к однородному виду: префиксная нотация, скобочки и ASCII-символы? :P

Не, ну нет конечно, записывать 3-этажные мат. формулы в лисп-нотации - лучше застрелиться сразу :) Но как вы будете в мат. нотации записывать макры? ;)

А на данный момент я не видел синтаксиса, более пригодного для "макропрограммирования", чем лисповый :)

yyk ★★★★★
()
Ответ на: комментарий от tailgunner

> Да не злись ты так. Мы знаем, что ты дотачиваешь.

Да я не злюсь - несколько удручает количество работы впереди и недостаточно колиество активных членов "комьюнити" для решения этих задач несколько быстрее, чем ещё в течение десятков лет :( Ибо, имхо, по сравнению с тем, что есть, осталось добавить совсем не много, чтобы и я (а может и ещё кто ;) с чистой совестью смог толкать лисп в свой "продакшн" :)

yyk ★★★★★
()
Ответ на: комментарий от tailgunner

> Если читаешь в нормальных условиях - глаза не портятся. Ты еще скажи, что человек не устроен пить воду - если выпить слишком много _чистой_ воды, можно отравиться (или просто лопнуть).

Если к условиям относятся и перерывы и гимнастика для глаз - да, не портятся :) Кто-нибудь доказал тёте Клаве (или девчёнке) за соседним компьютером, что регулярные перерывы и гимнастика сделают гораздо больше, чем крутейший монитор с таким-же фильтром? (я понимаю, что лучше - и то, и другое и третье :)

При хождении/питье человек "портится" равномерно. При неправильном чтении глаза "садятся" гораздо быстрее

> Слушай, а жить человек устроен? А то он же умирает... 8)

Человек устроен жить, чтобы умереть... :)

yyk ★★★★★
()
Ответ на: комментарий от yyk

> Но как вы будете в мат. нотации записывать макры? ;)

Я, может, крамольную вещь скажу, но по-моему, само различие между функциями и макросами - костыль. Пусть компилятор во время компиляции сам сворачивает те функции, которые можно свернуть.

ero-sennin ★★
()
Ответ на: комментарий от ero-sennin

> Я, может, крамольную вещь скажу, но по-моему, само различие между функциями и макросами - костыль. Пусть компилятор во время компиляции сам сворачивает те функции, которые можно свернуть.

Неа, не догоняю... Давай по-порядку: "различие между функциями и макросами - костыль" - ты предлагаешь отказать от макр? Или где? :) "Пусть компилятор во время компиляции сам сворачивает те функции, которые можно свернуть" - или я тебя не понял, или компилятор в sbcl и так с некоторыми функциями так и поступает (набивший аскомину add).

Или ты всё-таки что-то другое имел в виду?

yyk ★★★★★
()
Ответ на: комментарий от ero-sennin

>> Но как вы будете в мат. нотации записывать макры? ;)

>Я, может, крамольную вещь скажу, но по-моему, само различие между функциями и макросами - костыль. Пусть компилятор во время компиляции сам сворачивает те функции, которые можно свернуть.

Аминь, брат. Были экспериментальные языки и компиляторы, которые _примерно_ так и делали. Там был такой тип данных "тип", и средства в языке для манипуляции значениями этого типа. Такие выражения вычислялись транслятором, и результаты вычислений им же использовались для дальнейшей обработки входной программы.

К сожалению, в практически используемые языки эти технологии не пошли, а текущий тренд - вообще делать такие вещи в динамике на runtime :(

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

> Аминь, брат. Были экспериментальные языки и компиляторы, которые _примерно_ так и делали. Там был такой тип данных "тип", и средства в языке для манипуляции значениями этого типа. Такие выражения вычислялись транслятором, и результаты вычислений им же использовались для дальнейшей обработки входной программы.

Опять боюсь показаться тупым, но это описание очень "смахивает" на форт и на инкрементальную компиляцию (если несколько абстрагироваться от "тип данных "тип"" :)

yyk ★★★★★
()
Ответ на: комментарий от yyk

Кажется он хочет отказаться от функций. Типа это сильно вырожденные макры, с нулевым expand'ом.

ugoday ★★★★★
()
Ответ на: комментарий от yyk

Ну то есть, чтоб компилятор сам хитрым образом догадывался, когда именно вычислять аргументы функции. :) На худой конец использовать что-то вроде Hold/HoldAll из Математики. Правда это немногим лучше лисповых макр. Блин. :(

ero-sennin ★★
()
Ответ на: комментарий от yyk

> это описание очень "смахивает" на форт и на инкрементальную компиляцию

Даже и близко не похоже

> если несколько абстрагироваться от "тип данных "тип"" :)

В нем вся суть

Есть такая старая книга: А.Замулин "Языки программирования баз данных и знаний". То, о чем я говорю - это его язык Атлант.

tailgunner ★★★★★
()
Ответ на: комментарий от ero-sennin

> Ну то есть, чтоб компилятор сам хитрым образом догадывался, когда именно вычислять аргументы функции. :) На худой конец использовать что-то вроде Hold/HoldAll из Математики. Правда это немногим лучше лисповых макр. Блин. :(

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

yyk ★★★★★
()
Ответ на: комментарий от yyk

> Смайлик где, умник?

==> ;-)

> Таки нет, сидишь и "точишь" эти самые "недостающие возможности"

В каком из двух правильных диалектов одного самого правильного языка?

> Не хотите помочь? Или гениальные кодеры на мэйнстриме привыкли всё получать из коробки, а если чего нет, то "в противогазе стоя в гамаке на лыжах"?

С удовольствием. Только я так думаю, что лучше таки подождать, пока лисперы не определятся, какой из лиспов самый правильный. И только после этого присоединиться к процессу доточки недоработок.

eugine_kosenko ★★★
()
Ответ на: комментарий от yyk

> Ну, одного времени вычисления аргументов недостаточно. Макра же сама по себе - функция, упорно ворочающая списками для постройки "выхода"...

Почему-то мне кажется, что не обязательно обращаться с кодом, как со списками, и того же результата можно достичь обычными условными выражениями и рекурсией. Поправьте меня, если я не прав.

ero-sennin ★★
()
Ответ на: комментарий от eugine_kosenko

> Только я так думаю, что лучше таки подождать, пока лисперы не определятся, какой из лиспов самый правильный.

Отмазки ;) Никогда они не определятся. Даже специалисты по операционкам никак не определятся - Linux или *BSD (и какая именно из них), что уж говорить о лисперах.

tailgunner ★★★★★
()
Ответ на: комментарий от eugine_kosenko

> В каком из двух правильных диалектов одного самого правильного языка?

sbcl по той простой причине, что он а) портирован под офтопик (частично); б) проще собирается (по слухам).

> Только я так думаю, что лучше таки подождать, пока лисперы не определятся, какой из лиспов самый правильный. И только после этого присоединиться к процессу доточки недоработок.

Никогда не определятся :) Что-то впоследнее время лиспы множаться как сорняки ;) В этом есть и минусы, есть и плюсы. Выбирайте тот, который вам по-душе. Или несколько. Мне ещё cLisp очень нравится :)

yyk ★★★★★
()
Ответ на: комментарий от ero-sennin

> Почему-то мне кажется, что не обязательно обращаться с кодом, как со списками, и того же результата можно достичь обычными условными выражениями и рекурсией. Поправьте меня, если я не прав.

Не получится. Вам надо его (код, список, параметры макры - как угодно) расчленять, перемешивать, анализировать части, склеивать, и, возможно, опять по кругу, а то и не один раз ;)

yyk ★★★★★
()
Ответ на: комментарий от yyk

> а) портирован под офтопик (частично);

Просил же -- дайте ссылку на скачать.

> В этом есть и минусы, есть и плюсы. Выбирайте тот, который вам по-душе.

Угу. Шоб меня потом быдлосбцлкодером назвали?

eugine_kosenko ★★★
()
Ответ на: комментарий от tailgunner

> Даже специалисты по операционкам никак не определятся - Linux или *BSD (и какая именно из них)

Я не занимаюсь доточкой операционок. А свой самый правильный лисп я уже выбрал :-).

eugine_kosenko ★★★
()
Ответ на: комментарий от eugine_kosenko

> "...но при этом такая фигня получается..." :-)

аха, нащёт разницы в качестве результата я отметил.

> Дело не в зряплате. Дело в том, чтобы найти адекватную замену лисперу, который, начав проект, внезапно

Это несурьёзно. Много народу знает лисп, сделай поиск хотябы по резюмам на какомнть фрилансерном сайте, да и выучить ево при желании тож непроблема.

> Ибо есть подозрение, что если один лиспер не способен за один присест написать всю систему, то на лиспе эта задача вообще неразрешима.

странно, почему так? Есть ведь ужо модули кемто зделаные я юзаю, и ниразу не слыхал чёбы переписывали. Вобщем, лисопедостроение имеет место, конешно, но не больше чем в других.

> Так что, быдлокодеры тоже нужны. Без них пока никак.

нету никаких причин, по которым быдлокодер не смог бы быдлокодить на лиспе. Тут этот вопрос ужо обсуждался, да и я сам лично - жывое докозательство этому.

bugmaker ★★★★☆
()
Ответ на: комментарий от eugine_kosenko

> Просил же -- дайте ссылку на скачать.

Вы таки меня удивляете... ;)

http://prdownloads.sourceforge.net/sbcl/sbcl-0.9.17-x86-windows-binary.msi?do...

Но я этой не пользуюсь - подверсий 10 назад был простой архив под офтопик - распаковал в каталог с mingw и с тех пор сам собираю из cvs.

> Угу. Шоб меня потом быдлосбцлкодером назвали?

Ну, это вряд-ли. Лисперы могут поцапаться по линии "лисп-схема", или "CL - прочее фуфло", но на конкретные реализации не переходят. Хотя... ;)

yyk ★★★★★
()
Ответ на: комментарий от yyk

> Вы таки меня удивляете... ;)

А, вспомнил -- пару страниц назад пробегало. Но все-равно спасибо. За демонстрацию человеческого лица :-).

eugine_kosenko ★★★
()
Ответ на: комментарий от eugine_kosenko

> Но все-равно спасибо. За демонстрацию человеческого лица :-).

Ха, а что я до этого "демонтсрировал"? 8-О

yyk ★★★★★
()
Ответ на: комментарий от ero-sennin

> Но в математике такая запись используется не просто так.

по большей чясти это исторически сложившееся. Другими словами, всякий попало добавлял символ такой, какой ево левая пятка захотит.

> Она удобна для человека.

Ты незавершил. Она удобна для человека, работающево с малым количеством понятий на бумаге, где может как угодно расположить любые символы. В текстовом редакторе есть ограничения, и попытка заюзать подобный подход привёдёт вопервых к теховскому виду формул. Ты ведь не станеш утверждать чё формулы в теховской записи преотлично читабельны? Вовторых, даже на бумаге скопище формул из разных разделов математики на одной странице будет выглядеть потрясающе и нечитабельно. А в программёже встречяются учястки кода на одном и том же наречии, выражающие разные сучности: гуй, вычисления, преобразования текста, тупое перелопачивание данных итд. И всё на одном наречии. В математике по сути этих нотаций много, какая юзаецо - зависит от контекста. Например скоко смыслев имеет математическая запис: "A x B" ? Лисп предлагает средства к решению этой проблемы.

bugmaker ★★★★☆
()
Ответ на: комментарий от eugine_kosenko

> Мнэ. Хреновато он таки под офтоп собран. Не запускается...

Может быть. Не запускается msi или сам лисп после установки? Что говорит?

yyk ★★★★★
()
Ответ на: комментарий от yyk

Могу закинуть архив своего на googlepages

yyk ★★★★★
()
Ответ на: комментарий от redvasily

> Меньше шума чем в

передёргивать изволите? :D (push...) никто не запрещает при желании разместить в функцию только вот ненужно, ибо в реальной проге вызываецо один раз, в цикле перебора файлов. А как поюзать находящееся внутре class... без образования отдельново?

> Теперь ждём лисповую версию с БД.

Дык ты определился ужо, чё она должна делать?

> А БД мне понадобилась за тем, что я точно знаю что на моём винте, без БД не разберёшься :-)

потомушто питон

bugmaker ★★★★☆
()
Ответ на: комментарий от bugmaker

>> А БД мне понадобилась за тем, что я точно знаю что на моём винте, без БД не разберёшься :-)

>потомушто питон

Ха! И эти люди говорят о "предергивании" 8)

Так как насчет результатов соревнования?

tailgunner ★★★★★
()
Ответ на: комментарий от Darkman

>Тут всё может зависеть от того какие библиотеки могут использоваться. Например OpenGL из cl-sdl у меня в SBCL не завёлся вообще а CMU пошёл влёт. Не сомневаюсь, что есть ситуации и наоборот - SBCL вроде Unicode лучше держит.

А-а-а, вспомнил я твой скрин! http://www.linux.org.ru/view-message.jsp?msgid=1461083

Zubok ★★★★★
()
Ответ на: комментарий от bugmaker

> Ты незавершил. Она удобна для человека, работающево с малым количеством понятий на бумаге, где может как угодно расположить любые символы. В текстовом редакторе есть ограничения, и попытка заюзать подобный подход привёдёт вопервых к теховскому виду формул.

Посмотри, как Математика разворачивает привычную математическую запись в M-выражения. :) Думаю, ты не будешь спорить, что верхняя строчка читается легче, чем нижняя. :P

http://img132.imageshack.us/img132/3600/mathematicaws7.png

ero-sennin ★★
()
Ответ на: комментарий от tailgunner

> Я бы назвал это "ничья :-E".

бугога

> Лисп-версия существенного преимущества перед Питоном не показала

Ой, ну как же...

(setq (hash (make-hash-table :test #'equal))
(push "/foo" (gethash (list "file.txt" 777) hash))

в питоньем варианте превращяецо в 

class FileDb(dict):
    def push(self, name, size, dir):
        try:
            self[(name, size)].append(dir)
        except KeyError:
            self[(name, size)] = [dir]

filedb = FileDb()
filedb.push('file.txt', 777, '/foo')

в котором, по сравнению с лисповым количественные излишества: 
ненужный класс, внутри ненужная функция, внутри четыре переменных,
ветвление из двух веток, константа, дважды вызов функции self
и по одному вызову append и присвоения

лисповое 

(defun find-and-get (h &key (count 0) (cmp #'>))
  (let ((r nil))
    (maphash (lambda (k v)
      (when (funcall cmp (length v) count)(push (list k v) r))) h)
  r))

превращаецо в:

def find_and_get(cond=lambda n: n > 0):
    for (f, s), dirs in filedb.iteritems():
        if cond(len(dirs)):
            for d in dirs:
                yield (f, s, d)

в котором три (!) управляющих конструкции которые в лисповой версии
заменены на функции и макросы

качественные излишества:
(gethash ) служит для обращения к сохранённому списку 
и для добавления в нево новово элемента, и для извлечения результата
а в притоне на каждую мелодию свой оркестр...
Бесполезное образование структуры данных. Всяк, независимо 
от знания питона, встретив это в тексте, должен будет найти 
её определение, чёбы понять чё оно делает. Это по вашему 
делает прогу более читабельной, а?

Так что до ничьей тут далёко. У питона никаких шансов.

bugmaker ★★★★☆
()
Ответ на: комментарий от tailgunner

> А я много раз слышал и читал в логах слово "рефакторинг" по отношению к коду на Си. И Питон, конечно.

хм, рефакторинг к коду не применяецо вообще, а только к помойке. По определению.

bugmaker ★★★★☆
()
Ответ на: комментарий от ero-sennin

> Или таки вы хотите сказать, что математическая запись - отстой, и надо её срочно привести к однородному виду: префиксная нотация, скобочки и ASCII-символы? :P

нет, мы хотим скозать чё математическая запись рулед в своей области, а программерская в своей. Последняя правда ещё не выработана, но лисп ближе к идеалу чем остальное.

bugmaker ★★★★☆
()
Ответ на: Предлагаю соревнование от ugoday

> Есть такая пошаговая стратегия с веб-интерфейсом --- Разделяй и властвуй (the-game.ru)

> Пусть лисперы, змеефилы и сиплюсплюсовцы напишут для неё по боту. Чей бот выиграет, того язык и лучший.

бесполезно, тут выйграет не йазыг а алгоритм. На чём этот алгоритм луче записать - вопрос важный но не принципиальный.

bugmaker ★★★★☆
()
Ответ на: комментарий от ero-sennin

>> Но как вы будете в мат. нотации записывать макры? ;)

> Я, может, крамольную вещь скажу, но по-моему, само различие между функциями и макросами - костыль. Пусть компилятор во время компиляции сам сворачивает те функции, которые можно свернуть.

+1, несомненно когданть так и будет. Только на современном этапе развития ни один компилер ниасиливает :(

bugmaker ★★★★☆
()
Ответ на: комментарий от bugmaker

>> Теперь ждём лисповую версию с БД.

> Дык ты определился ужо, чё она должна делать?

Да. В точности то же самое что и запощенная выше питоновская программа. Ждём.

redvasily
()
Ответ на: комментарий от yyk

>> Ну то есть, чтоб компилятор сам хитрым образом догадывался, когда именно вычислять аргументы функции. :) На худой конец использовать что-то вроде Hold/HoldAll из Математики. Правда это немногим лучше лисповых макр. Блин. :(

> Ну, одного времени вычисления аргументов недостаточно. Макра же сама по себе - функция, упорно ворочающая списками для постройки "выхода"... Неа, не догоняю :( Имхо - ничуть не лучше, а получится очередное ограничение...

ну, типо если есь информация, которая позволит построить код и пощитать значения в время компиляции - делает, а если нет, например чясь данных извлекается из устройства ввода - оставляет на рантайм.

bugmaker ★★★★☆
()
Ответ на: комментарий от eugine_kosenko

> лучше таки подождать, пока лисперы не определятся, какой из лиспов самый правильный

а змеееды не ждут, оне свой питон всёвремя мутируют, иззачево он один но очень изменчивый

bugmaker ★★★★☆
()
Ответ на: комментарий от eugine_kosenko

> Мнэ. Хреновато он таки под офтоп собран. Не запускается...

Это охтоп хреново собратый, на ём ничё не запускаецо. Я пару раз пробовал.

bugmaker ★★★★☆
()
Ответ на: комментарий от bugmaker

> ну, типо если есь информация, которая позволит построить код и пощитать значения в время компиляции - делает, а если нет, например чясь данных извлекается из устройства ввода - оставляет на рантайм.

Рефал? (что-то у меня в последнее время навязчивое ощущение "дежавю" :)

yyk ★★★★★
()
Ответ на: комментарий от ero-sennin

>> Например скоко смыслев имеет математическая запис: "A x B"?

> Обычный перегруженный оператор. :)

и всёвремя ево прегружать перед использованием? Ведь в мотематике ево смысл понятен из контекста книшки, где он. А в коде?

bugmaker ★★★★☆
()
Ответ на: комментарий от tailgunner

>>> А БД мне понадобилась за тем, что я точно знаю что на моём винте, без БД не разберёшься :-)

>> потомушто питон

> Ха! И эти люди говорят о "предергивании" 8)

аха, потомушто лисп.

> Так как насчет результатов соревнования?

Ну взял бы и поанализировал коды пока я дрыхъ

bugmaker ★★★★☆
()
Ответ на: комментарий от yyk

>> ну, типо если есь информация, которая позволит построить код и пощитать значения в время компиляции - делает, а если нет, например чясь данных извлекается из устройства ввода - оставляет на рантайм.

> Рефал? (что-то у меня в последнее время навязчивое ощущение "дежавю" :)

Ништо не ново под луною, увы. И только наивные юношы питоноеды продолжают изобретать и изобретать...

bugmaker ★★★★☆
()
Ответ на: комментарий от redvasily

>>> Теперь ждём лисповую версию с БД.

>> Дык ты определился ужо, чё она должна делать?

> Да. В точности то же самое что и запощенная выше питоновская программа. Ждём.

ладно, пожжее зделаю. Если сёдне неуспею - завтре.

bugmaker ★★★★☆
()
Ответ на: комментарий от ero-sennin

>> Ты незавершил. Она удобна для человека, работающево с малым количеством понятий на бумаге, где может как угодно расположить любые символы. В текстовом редакторе есть ограничения, и попытка заюзать подобный подход привёдёт вопервых к теховскому виду формул.

> Посмотри, как Математика разворачивает привычную математическую запись в M-выражения. :) Думаю, ты не будешь спорить, что верхняя строчка читается легче, чем нижняя. :P

В этом чёто есь, да. Но дело не в том, что лехче читаецо, а что лехче _пишецо_, ибо читать прогу всёодно по большей чясти комп будет.

bugmaker ★★★★☆
()
Ответ на: комментарий от bugmaker

> ибо читать прогу всёодно по большей чясти комп будет.

Ну если бы комп за меня читал все чужие проги и как надо их модифицировал по моему хотению, я б тогда на работу не ходил. :) Увы блин, такое счастье нам только снится.

ero-sennin ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.