Форум программистов, компьютерный форум, киберфорум
Священные войны
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.83/29: Рейтинг темы: голосов - 29, средняя оценка - 4.83
 Аватар для nullxdth
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987

C++ vs Common Lisp: кодогенерация, метапрограммирование

25.03.2017, 11:14. Показов 7021. Ответов 64

Студворк — интернет-сервис помощи студентам
Дано описание произвольного математических выражений на XML вида:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<calc>
  <mul>
    <var>k</var>
    <plus>
      <var>foo</var>
      <var>bar</var>
      <var>baz</var>
      <mul>
        <raw>100</raw>
        <var>xyz</var>
      </mul>
    </plus>
  </mul>
</calc>
Для простоты положим, что у нас есть только сложение и умножение. var - символьное название переменной, raw - литерал целого числа.

Задача: в compile time сгенерировать функцию, аргументами которой будут все var имена переменных из xml. Функция должна вычислять выражение описанное в xml.
Такой простой eDSL.

У нас есть 2 стула: Common Lisp и "всемогущий" C++. Я сажусь на первый стул.

Беру первый попавшийся xml parser - xmls.
Долблю на коленке кодогенератор.
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
(eval-when (:compile-toplevel :load-toplevel :execute)
  (defparameter *op-table*
    '(("mul"  . *)
      ("plus" . +)
      ("raw"  . raw)
      ("var"  . var)))
 
  (defparameter *var-names* nil)
  
  (defun genexpr (x)
    (typecase x
      (cons
       (let ((op (cdr (assoc (car x) *op-table* :test 'string=))))
         (case op
           (raw (parse-integer (third x)))
           (var (let ((s (intern (string-upcase (third x)))))
                  (push s *var-names*)
                  s))
           (otherwise `(,op ,@(mapcar #'genexpr (cddr x)))))))
      (string
       (parse-integer x)))))
Пишу макрос define-xml-function на вход принимающий xml строчный литерал.
Lisp
1
2
3
4
5
(defmacro define-xml-function (name xml-string)
  (let (*var-names*)
    (let ((body (genexpr (third (xmls:parse xml-string)))))
      `(defun ,name (&key ,@*var-names*)
         ,body))))
Всё. Десяток строк, пол часа времени с перекурами - eDSL готов.

Использую.
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
(define-xml-function foo
 "
<calc>
  <mul>
    <var>k</var>
    <plus>
      <var>foo</var>
      <var>bar</var>
      <var>baz</var>
      <mul>
        <raw>100</raw>
        <var>xyz</var>
      </mul>
    </plus>
  </mul>
</calc>
 ")
 
(foo :k 2 :foo 100 :bar 200 :baz 300 :xyz 4)
;; 2000
Приведеный пример define-xml-function раскрывается в:
Lisp
1
2
(DEFUN FOO (&KEY XYZ BAZ BAR FOO K)
  (* K (+ FOO BAR BAZ (* 100 XYZ))))
define-xml-function в compile time генерирует lisp функцию, которая в свою очередь компилируется в native.

Но подождите? Ведь есть второй кошерный стул - кресты. Темплейты, туда сюда. Что же мне делать? Как решить задачу?

Добавлено через 2 минуты
hoggy, есть чё на лурке по этому поводу?

Добавлено через 5 часов 28 минут
Цитата Сообщение от nullxdth Посмотреть сообщение
Долблю на коленке кодогенератор
Фикс. Лишка написал.
Lisp
1
2
3
4
5
6
7
8
9
(defun genexpr (x)
  (when x
    (let ((op (cdr (assoc (car x) *op-table* :test 'string=))))
      (case op
        (raw (parse-integer (third x)))
        (var (let ((s (intern (string-upcase (third x)))))
               (push s *var-names*)
               s))
        (otherwise `(,op ,@(mapcar #'genexpr (cddr x))))))))
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.03.2017, 11:14
Ответы с готовыми решениями:

Common Lisp vs D
Может быть, попробуем затеять холиварчик. Чтобы было менее честно, можно противопоставлять языку D все языки семейства лисп. Чтобы было...

Common Lisp vs D (2)
Продолжение темы.

Книги или другой источник, где описана история версий Lisp и Common Lisp
Доброго времени суток.Такой вопрос,знаете какой-нибудь источник,где описана история версий Lisp и Common Lisp.Только не всякие...

64
 Аватар для nullxdth
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
01.05.2017, 18:05  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от ct0r Посмотреть сообщение
Я смотрю эта либа очень популярна, аж 9 звезд, 2 наблюдателя, 1 форк!
Community CL в сравнении с крестами, на порядки меньше. Если мы будем смотреть по лайкосам, то конечно CL проиграет. Но я повторюсь, речь не о community, а о качестве и фичах языков.

Добавлено через 5 минут
Цитата Сообщение от ct0r Посмотреть сообщение
Действительно, это же такие второстепенные вещи.
Да конечно не второстепенные. Но частенько бывает, что какой-нибудь крестоплебей выскакивает с проповедями о том, какой же С++ всемогущий и высокоуровневый. И какая благодать метапрограммировать на темплейтах И новый стандарт подъехал - теперь всё можно. А когда начинаешь спрашивать за конкретные примеры - крестоплебей сразу сливается и начинает мычать про лайкосы и "ручное управление памятью".

Добавлено через 4 минуты
Цитата Сообщение от ct0r Посмотреть сообщение
Это не бд, если что. Кто-то говорил про увеличение производительности труда с лиспом?
Ох, ну лол. rmq - просто транспорт. Даже если библиотека, скажем, cl-bony не подойдёт, а, скажем, для написания некого consumer-а действительно хочется использовать CL, то это не будет является большой проблемой. Или гонять сообщения туда сюда - это твоя основная работа?

Добавлено через 2 минуты
Цитата Сообщение от ct0r Посмотреть сообщение
В примере не вижу как минимум таймаута для логина, поддержки хертбитов и реконнекта.
А в примере они должны быть? Какого-же черта ты тогда говорил про "просто прочитать сообщение"? Я покажу, как это сделать, ты снова подвинешь ворота. Мне не очень хочется дискутировать в таком ключе.
0
Игогошка!
 Аватар для ct0r
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
01.05.2017, 18:13
Цитата Сообщение от nullxdth Посмотреть сообщение
Но я повторюсь, речь не о community, а о качестве и фичах языков.
Фичи ради фич? Язык нужен для того, чтобы решать проблемы. Есть проблема - в распределенной микросервисной системе доставать сообщение из очереди самого популярного брокера сообщений - RabbitMQ. Если лисп такой классный во всем и жутко продуктивный, то почему на нем не могут быстренько дружно запилить адекватную либу с классными абстракциями и клевой апи? Видимо, это не нужно никому.

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

Цитата Сообщение от nullxdth Посмотреть сообщение
то это не будет является большой проблемой
Тогда для тебя не будет проблемы привести пример другой либы?

Цитата Сообщение от nullxdth Посмотреть сообщение
Или гонять сообщения туда сюда - это твоя основная работа?
Пока не увидел, что лисп годен даже для этого.

Цитата Сообщение от nullxdth Посмотреть сообщение
А в примере они должны быть?
Я написал что должно выглядеть так, как будто это продакшен. Если ты так пишешь продакшен, то печаль.
0
 Аватар для nullxdth
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
02.05.2017, 00:26  [ТС]
Цитата Сообщение от ct0r Посмотреть сообщение
Фичи ради фич? Язык нужен для того, чтобы решать проблемы.
Цитата Сообщение от ct0r Посмотреть сообщение
Есть проблема - в распределенной микросервисной системе доставать сообщение из очереди самого популярного брокера сообщений - RabbitMQ.
Это не проблема. Это транспорт Понятно, что amqp, а в частности RabbitMQ, штука не тривиальная и имеет ряд интересных и полезных особенностей. Но тем не менее это просто транспорт. Никакого отношения к языку не имеет. Совсем. Это вопрос библиотеки. Написана она или нет и какого качества. Эта библиотека может быть написана на любом языке и api будет выглядеть везде приблизительно одинаково.
По наличию или отсутствию какой либо библиотеки нельзя судить о языке.

Добавлено через 5 минут
Цитата Сообщение от ct0r Посмотреть сообщение
Тогда для тебя не будет проблемы привести пример другой либы?
Зачем тебе другая либа, с твоими потребностями справляется и эта.
А вообще я не отрицаю того, что качество, скажем, pika или какой-нибудь популярной плюсовой либы будет выше, чем какой-то там cl-bunny написанный одним человеком. Только это не говорит о качестве языков. Совершенно. Конкретно мне, если кровь из носа, понадобиться разговаривать с RabbitMQ средствами CL, я решу этот вопрос без особой боли. Допишу что будет необходимо, я же не калека.

Добавлено через 5 минут
Цитата Сообщение от ct0r Посмотреть сообщение
Пока не увидел, что лисп годен даже для этого.
Пистон бери, если твоя задача сообщения гонять Тут Lisp явно не так удобен, дописывать ещё чего придётся.

Добавлено через 14 минут
Цитата Сообщение от ct0r Посмотреть сообщение
Нормальным люди есть из чего выбрать - питон, эликсир, го, джулия и тд и тп. И такое ощущение, что только лисперы упарываются лиспом и им ничего не интересно
Напротив, по опыту известно, что типичный лиспер интересуется всем подряд и имеет широкий кругозор. Примечательно, что elixir, приведенный тобой в пример, весьма известен killer feature-ей, которая напрямую взята из Lisp - http://elixir-lang.org/getting... acros.html. Парни даже запариваться не стали, так конструкцию и назвали - defmacro. Фактически, elixir - очередной проект языка - Lisp без скобок. И как обычно, получается не очень.

Добавлено через 15 минут
Цитата Сообщение от ct0r Посмотреть сообщение
Если лисп такой классный во всем и жутко продуктивный, то почему на нем не могут быстренько дружно запилить адекватную либу с классными абстракциями и клевой апи? Видимо, это не нужно никому.
Я же говорю, community не большое, оно соизмеримо где-то с Haskell-евским. Понятное дело, что есть масса не написанных вещей. К тому же amqp протокол - потный и нудный.
0
Игогошка!
 Аватар для ct0r
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
02.05.2017, 01:40
Цитата Сообщение от nullxdth Посмотреть сообщение
По наличию или отсутствию какой либо библиотеки нельзя судить о языке.
Зато по экосистеме можно судить, стоит ли его использовать. Я получу больше боли от постоянного отсутствия вменяемой экосистемы, чем нерегулярных преимуществ от фич языка.

Цитата Сообщение от nullxdth Посмотреть сообщение
я решу этот вопрос без особой боли. Допишу что будет необходимо, я же не калека.
Вначале ты решаешь сам эту проблему (совершенно рутинную и тривиальную для распределенной системы), потом еще одну, потом все это сам поддерживаешь... Отличный бизнес-план. Какое уж тут внимание самой задаче, если на всякие мелочи типа транспорта приходится отвлекаться. П - продуктивность.

Цитата Сообщение от nullxdth Посмотреть сообщение
Примечательно, что elixir, приведенный тобой в пример, весьма известен killer feature-ей, которая напрямую взята из Lisp
Это не единственная фича эликсира, тут смотря с чем сравнивать.

Цитата Сообщение от nullxdth Посмотреть сообщение
И как обычно, получается не очень.
Что именно получается не очень? А LFE впереди планеты всей что-ли?
0
331 / 200 / 9
Регистрация: 12.05.2015
Сообщений: 334
02.05.2017, 05:29
Цитата Сообщение от ct0r Посмотреть сообщение
Ты серьезно? Я смотрю эта либа очень популярна, аж 9 звезд, 2 наблюдателя, 1 форк! Последний коммит год назад.
de.setf.amq в качетве не-rabbit с неудобной AGPL - 35 звезд. STMX взятый другую область для маштаба - 129 звезд. Пытается переиспользовать фишки новых процессоров для STM. Проще говоря в экосистеме CL нет интереса к конкретному Rabbit.

Добавлено через 51 минуту
Цитата Сообщение от ct0r Посмотреть сообщение
Если лисп такой классный во всем и жутко продуктивный, то почему на нем не могут быстренько дружно запилить адекватную либу с классными абстракциями и клевой апи? Видимо, это не нужно никому.
Есть такой оцененный в американских тугриках лисповый энтерпрайз - ITA. Который кроме всего прочего еще и коммитит плюшки в SBCL, то есть в лиспе немножко понимает когда они описывали свою архитектуру в начале нулевых, получалось что ввод-вывод они сделали целиком на С, а прикладной код который собствено деньги зарабатывает на лиспе и увязано это с помощью FFI/MMAP. Который они попутно тоже применительно к лиспу хвалили. Это я все я к чему Когда ты говоришь что на лиспе только xml-ки компилировать, а вот у тебя реальный "уровня предприятия" c mq(!). А тебе в ответ что библиотека для твоего MQ пишется на коленке по потребности. И вот вы вторую страницу выясняете кто из вас блаб Дословно и в лицах пересказвая байку о слепцах вокруг слона
P.S. Да и спустя 10 лет все так же. ITA коммитит в SBCL плюшки для компилятора, а не IO.

Добавлено через 20 минут
Цитата Сообщение от ct0r Посмотреть сообщение
В лиспе нельзя по полной рулить памятью. Не нужно? Блаб парадокс он такой.
Какой памятью? ЗаMMAPленой системой? Берешь FFI и в стиле С но макросами лиспа. Лет 10-20 как не новость. В стандарт не вписывали, но само по себе знание не секретное. Нарезать мегабайт памяти собствено внури образа в стиле mallic и таскать туда по смещению. Это часть стандарта как ни странно. Можно даже о прямой компиляции com-вызовов говорить и о конструкторах/деструкторах хотя они более завязаные на реализации. Лисп он потому и не с+blub потому что в нем есть и другие возможности кроме указателей. И отказ от прямой работы с памятью это осознаный выбор.
0
Игогошка!
 Аватар для ct0r
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
18.05.2017, 04:30
Цитата Сообщение от antares0 Посмотреть сообщение
Проще говоря в экосистеме CL нет интереса к конкретному Rabbit.
Насколько это эквивалентно "в экосистеме CL нет интереса к distributed computing/systems"?

Цитата Сообщение от antares0 Посмотреть сообщение
Когда ты говоришь что на лиспе только xml-ки компилировать
Естественно это был в первую очередь просто вброс Тут просто такой "полезный" кейс привели, в котором лисп сильно упрощает жизнь, что не удержался.

Цитата Сообщение от antares0 Посмотреть сообщение
прикладной код который собствено деньги зарабатывает
Сколько бы они заработали без чистых сей?

Цитата Сообщение от antares0 Посмотреть сообщение
А тебе в ответ что библиотека для твоего MQ пишется на коленке по потребности.
Отлично, давайте добавим еще рутины в нашу жизнь. На коленке написать, на коленке потом поддерживать еще наверное? А работать значит оно будет через одно место.
А внезапно еще есть всякие grpc, базы типа Cassandra, и прочая-прочая. Удачи там.

Цитата Сообщение от antares0 Посмотреть сообщение
И вот вы вторую страницу выясняете кто из вас блаб
Лисперы обычно скатываются к цитатам грэма про блаб, когда сказать уже не знают что. Причем параллельно еще рассказывают, почему статическая типизация как в Haskell или Idris это "ненужно". Звучит забавно.

Цитата Сообщение от antares0 Посмотреть сообщение
ITA коммитит в SBCL плюшки для компилятора, а не IO.
Видать сишка беспроблемно фурычит? Делает хорошо то, для чего предназначена.

Цитата Сообщение от antares0 Посмотреть сообщение
Какой памятью? ЗаMMAPленой системой? Берешь FFI и в стиле С но макросами лиспа. Лет 10-20 как не новость. В стандарт не вписывали, но само по себе знание не секретное. Нарезать мегабайт памяти собствено внури образа в стиле mallic и таскать туда по смещению
А на С++ можно пытаться метапрограммировать во все поля. Может лучше адекватно выбирать инструмент-то? А не упарываться.

Цитата Сообщение от antares0 Посмотреть сообщение
И отказ от прямой работы с памятью это осознаный выбор.
А в плюсах ручная работа с памятью - это неосознанный что-ли?
0
 Аватар для nullxdth
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
18.05.2017, 09:03  [ТС]
Цитата Сообщение от ct0r Посмотреть сообщение
Тут просто такой "полезный" кейс привели, в котором лисп сильно упрощает жизнь, что не удержался.
Ну да, доступ в compile time ко всем возможностям языка и кодогенерация - возможность так себе. Не то что перелить по API данные из одной базы в другую, вот это deal А пример намерено простой, что бы могли попробовать справиться не только на Lisp. Но ты, как любитель переливать по API, понял, что дело гиблое и даже не попытался, а забатхёртил на тему: "На Lisp переливать не так удобно, либ меньше, а если вдруг какой-то либы нет - то всё, тушите свет"

Добавлено через 5 минут
Цитата Сообщение от ct0r Посмотреть сообщение
Сколько бы они заработали без чистых сей?
ИМХО, дебильноватый вопрос. Уровня: "Сколько бы заработали Cи, не будь ассемблера и микропроцессоров?"

Добавлено через 4 минуты
Цитата Сообщение от ct0r Посмотреть сообщение
А внезапно еще есть всякие grpc, базы типа Cassandra, и прочая-прочая. Удачи там.
А то, а знаешь ещё сколько базёнок с которых можно переливать туда-сюда!? С ума сойдёшь! И ко многим нет binding-а на Lisp. А переливать-то надо Весёлая у тебя работка, нечего сказать...

Добавлено через 9 минут
Цитата Сообщение от ct0r Посмотреть сообщение
Это не единственная фича эликсира, тут смотря с чем сравнивать.
Единственно значимая, без неё Elixir был бы не нужен совсем - Erlang-а достаточно.

Добавлено через 3 минуты
Цитата Сообщение от ct0r Посмотреть сообщение
почему статическая типизация как в Haskell
Ну попробуй взять и написать на Template Haskell задачу. Ведь она такая "смешная" и наверняка на Haskell будет проще простого. Статическая типизация тебе как раз очень сильно поможет

Добавлено через 2 минуты
Цитата Сообщение от ct0r Посмотреть сообщение
Idris
А depentent types вообще самое оно. Переводит задачу в плоскость - "тривиально"
0
Игогошка!
 Аватар для ct0r
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
18.05.2017, 09:32
Цитата Сообщение от nullxdth Посмотреть сообщение
Не то что перелить по API данные из одной базы в другую, вот это deal
Но лисп не осилил. Зато лисперы могут заметапрограммировать себя до смерти Куда уж важнее то.

Цитата Сообщение от nullxdth Посмотреть сообщение
Ну да, доступ в compile time ко всем возможностям языка и кодогенерация
Цитата Сообщение от nullxdth Посмотреть сообщение
понял, что дело гиблое и даже не попытался
Ну конечно, написать утилиту (внезапно пользуясь всеми возможностями языка), преобразующую xml в код, и добавить ее вызов в этап сборки, - это же так интересно и просто неподъемно

Цитата Сообщение от nullxdth Посмотреть сообщение
ИМХО, дебильноватый вопрос. Уровня: "Сколько бы заработали Cи, не будь ассемблера и микропроцессоров?"
Ты не въехал. Или в ITA еще и асм и микропроцессоры запилили?

Цитата Сообщение от nullxdth Посмотреть сообщение
Весёлая у тебя работка, нечего сказать...
Лол, у меня работка как раз не просто переливать, потому что это делается на раз-два. Вот будь я лиспером, только бы и переливал, до остального так и не добрался

Добавлено через 10 минут
Цитата Сообщение от nullxdth Посмотреть сообщение
Статическая типизация тебе как раз очень сильно поможет
Она не для этого нужна. А для более полезных вещей. Как и зависимые типы в частности.

Добавлено через 9 минут
Цитата Сообщение от nullxdth Посмотреть сообщение
А переливать-то надо
У программ должны быть входные данные и выходные. Внезапно. У лиспа это xml файлы что-ли?
0
 Аватар для nullxdth
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
18.05.2017, 12:02  [ТС]
Цитата Сообщение от ct0r Посмотреть сообщение
Но лисп не осилил.
Что не осилил? AMQP? Осилил.

Добавлено через 48 секунд
Цитата Сообщение от ct0r Посмотреть сообщение
Ну конечно, написать утилиту (внезапно пользуясь всеми возможностями языка), преобразующую xml в код, и добавить ее вызов в этап сборки, - это же так интересно и просто неподъемно
Так просто, что ты, вместо того, чтобы показать как надо делать в стиле П - продакшн, решил просто побатхёртить.

Добавлено через 3 минуты
Цитата Сообщение от ct0r Посмотреть сообщение
Вот будь я лиспером
Но ты не лиспер, если бы ты был им, понимал бы, что транспорт - абсолютно второстепенная вещь.
0
Игогошка!
 Аватар для ct0r
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
18.05.2017, 13:29
nullxdth, не заметил, куда он там осилил. Сообщения из очереди забирать это лишь полдела. Главное - отказоустойчивость, обнаружение проблем, умение нормально в кластера и всякое такое. Сишный клиент кстати не может нормально в хертбиты и даже таймаут на логин появился совсем недавно. В питоне, эрланге, эликсире, го проблем не заметил.

Если бы я был лиспер, то был бы безработный. Или кодил в одиночку в стол или за еду. Так что спасибо, но нет.
0
 Аватар для nullxdth
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
18.05.2017, 13:59  [ТС]
Цитата Сообщение от ct0r Посмотреть сообщение
не заметил, куда он там осилил
Это ты не заметил. А он умеет.
Цитата Сообщение от ct0r Посмотреть сообщение
Главное - отказоустойчивость, обнаружение проблем, умение нормально в кластера и всякое такое.
Обнаружение проблем к клиенту отношения особо не имеют. Что касается кластера, то RabbitMQ не может в него. Единственное что можно сделать, это изобразить костыль с shovel-ом и опять же это к клиенту не имеет никакого отношения.

Добавлено через 57 секунд
Цитата Сообщение от ct0r Посмотреть сообщение
Сишный клиент кстати не может нормально в хертбиты и даже таймаут на логин появился совсем недавно.
Клиент к CL может и то и другое.

Добавлено через 1 минуту
Цитата Сообщение от ct0r Посмотреть сообщение
Если бы я был лиспер, то был бы безработный. Или кодил в одиночку в стол или за еду. Так что спасибо, но нет.
Быть лиспером - не означает знать один Lisp. Лиспер - человек, как правило, умеющий во многие языки и технологии.

Добавлено через 1 минуту
Цитата Сообщение от ct0r Посмотреть сообщение
Или кодил в одиночку в стол
"Кодить в стол" - термин, обычно относящийся к обезьянам, уровня - перелить данные из одной базы в другую. Обезьяны обычно рассуждают в терминах наличия тех или иных библиотек, или даже наличия удобной, с их точки зрения. IDE. Для них это первостепенно. И ваши рассуждения о качестве языка на основе наличия и/или качестве binding-а к конкретно выбранному транспорту - следуют этой конве.
0
Игогошка!
 Аватар для ct0r
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
18.05.2017, 16:51
nullxdth, да что там вообще можно заметить - ни доки, ни примеров. Ты сам-то как заметил, поделись.

RabbitMQ умеет в кластер, но не умеет нормально при этом в wan. Не надо мне по этой теме заливать.

Да я вообще понял, что суть лисперов - писать 8 часов на java или go, а в свободное время балаболить про лисп и называть всех вне секты обезьянами Тут ничего нового.
0
 Аватар для nullxdth
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
18.05.2017, 18:58  [ТС]
Цитата Сообщение от ct0r Посмотреть сообщение
да что там вообще можно заметить - ни доки, ни примеров.
Дока никакая, да. Примеры есть.
Цитата Сообщение от ct0r Посмотреть сообщение
Ты сам-то как заметил, поделись.
Исходники посмотрел.

Добавлено через 5 минут
Цитата Сообщение от ct0r Посмотреть сообщение
Да я вообще понял, что суть лисперов - писать 8 часов на java или go, а в свободное время балаболить про лисп и называть всех вне секты обезьянами Тут ничего нового.
Лисперы тут ни при чём. Нет ничего постыдного в том, чтоб называть обезьянам в программировании тех, кто по сути является обезьяной, оценивая технологию по наличию/количеству binding-ов. Касательно же конкретно этой темы, обсуждение драйверов к RabbitMQ является оффтопом, ибо тема о метапрограммировании в C++ и CL.

Добавлено через 42 секунды
Цитата Сообщение от ct0r Посмотреть сообщение
писать 8 часов на java или go
Я не пишу на Java или Go. И Common Lisp является основным средством разработки.

Добавлено через 5 минут
Цитата Сообщение от ct0r Посмотреть сообщение
RabbitMQ умеет в кластер, но не умеет нормально при этом в wan. Не надо мне по этой теме заливать.
Ну бог с ним. В любом случае - к драйверу это не имеет никакого отношения.

Добавлено через 2 минуты
Цитата Сообщение от ct0r Посмотреть сообщение
Она не для этого нужна. А для более полезных вещей
Это подгузники. Цели ясны.

Добавлено через 1 минуту
Цитата Сообщение от ct0r Посмотреть сообщение
или за еду
Ты так говоришь, будто сейчас кодишь не за еду
0
Игогошка!
 Аватар для ct0r
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
18.05.2017, 19:22
Цитата Сообщение от nullxdth Посмотреть сообщение
Нет ничего постыдного в том, чтоб называть обезьянам в программировании тех, кто по сути является обезьяной
Кроме отсутствия хороших манер.

Цитата Сообщение от nullxdth Посмотреть сообщение
оценивая технологию по наличию/количеству binding-ов
Как и по наличию "правильного" метапрограммирования заявлять, что лисп круче всего. Такая же примитивно-обезьянная логика.

Цитата Сообщение от nullxdth Посмотреть сообщение
тема о метапрограммировании в C++ и CL.
То есть ни о чем. И так известно, что плюсы мало кого тут могут удивить.

Цитата Сообщение от nullxdth Посмотреть сообщение
Common Lisp является основным средством разработки
В офисе в Росии?

Добавлено через 3 минуты
Цитата Сообщение от nullxdth Посмотреть сообщение
Это подгузники. Цели ясны.
Очевидно кто-то предпочитает прямо в кровать.
Цитата Сообщение от nullxdth Посмотреть сообщение
Ты так говоришь, будто сейчас кодишь не за еду
Конечно нет, я же не на лиспе пишу.
0
 Аватар для nullxdth
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
18.05.2017, 19:39  [ТС]
Цитата Сообщение от ct0r Посмотреть сообщение
Как и по наличию "правильного" метапрограммирования заявлять, что лисп круче всего. Такая же примитивно-обезьянная логика.
Нет.
Цитата Сообщение от ct0r Посмотреть сообщение
В офисе в Росии?
Да.
Цитата Сообщение от ct0r Посмотреть сообщение
Конечно нет, я же не на лиспе пишу.
Ты уверен, что ты работаешь не за еду?

Добавлено через 42 секунды
Цитата Сообщение от ct0r Посмотреть сообщение
Очевидно кто-то предпочитает прямо в кровать.
Носишь подгузники?

Добавлено через 44 секунды
Цитата Сообщение от ct0r Посмотреть сообщение
Кроме отсутствия хороших манер.
Называть вещи своими именами - вполне себе хорошая манера.

Добавлено через 46 секунд
Цитата Сообщение от ct0r Посмотреть сообщение
"правильного" метапрограммирования заявлять
А что такое правильное (без ковычек) метапрограммирование? Где оно реализовано?
0
Игогошка!
 Аватар для ct0r
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
18.05.2017, 20:05
nullxdth, ты со мной в игры словесные не играй. Мне это не сильно интересно на самом деле. Если есть что по делу сказать - то окей. По делу - это когда есть такая-то система, я беру лисп, потому что он дает решающий выигрыш вот тут и вот поэтому. А не по делу - я беру лисп, потому что у меня от его фич глазки горят.
0
 Аватар для nullxdth
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
18.05.2017, 20:12  [ТС]
Цитата Сообщение от ct0r Посмотреть сообщение
По делу - это когда есть такая-то система, я беру лисп
Берёшь? Не верю.

Добавлено через 2 минуты
Цитата Сообщение от ct0r Посмотреть сообщение
Если есть что по делу сказать - то окей.
Да всё уже сказано. Эта же тема возникла не просто так, а на основании заявления о том, что, дескать, с метапрограммированием в C++ всё отлично.
0
Игогошка!
 Аватар для ct0r
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
18.05.2017, 20:26
Цитата Сообщение от nullxdth Посмотреть сообщение
Не верю.
Во что? Что я могу взять лисп? У меня были серьезные мысли о кложэ, когда я выбирал между системами мониторинга сервисов (есть такая штука rienmann), пусть это не прям такой уж каноничный лисп. Так что если CL есть чем меня удивить полезным, то вообще не вопрос.
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
19.05.2017, 17:35
Испытываю редкое чувство понимания обоих дискутирующих, что последнее время у меня не часто случается (в связи с сезонно возросшей категоричностью ). Радикально потребительский подход имеет право на жизнь, но кто-то все же меняет воду в аквариуме пишет все эти биндинги и либы, чтобы потом можно было взять условный Питон и фигачить сразу с готовыми батарейками.
0
Игогошка!
 Аватар для ct0r
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
20.05.2017, 00:37
Цитата Сообщение от _Ivana Посмотреть сообщение
пишет все эти биндинги и либы
Писать биндинги скучно и уныло. Если язык позволяет, то клиентская либа обычно пишется с нуля. Либо генерится автоматически по сишным хедерам (такое есть даже у Go и Rust).
Тут еще такое дело. Нельзя так просто взять и что-то зафигачить в проекте на лиспе, если даже очень хочется. Потому что расширяется технологический стэк. Это значит, что что-то придется менять в налаженном процессе от разработки до деплоя. Это значит, что должны быть еще люди, понимающие лисп, чтобы ты мог с ними вести разработку и спокойно уходить в отпуск. Это значит, что если потребуются еще люди, то требования в вакансии возрастут, а значит их дольше искать. Да и вообще изначально должен быть как минимум 1 человек с нормальным опытом лиспа в проде.
Плюс всякие разные либы нужно будет написать, а потом еще и поддерживать. Окупится ли это время тем, что в проде лисп? Непонятно и зависит от проекта.
В итоге, если в команде уже есть люди с лисповым опытом, а с либами, нужными для данного проекта все окей, - то внедрение лиспа можно рассматривать.
Но обычно ситуация не такая.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.05.2017, 00:37

Common Lisp
Подскажите пожалуйста, а может Common Lisp формировать списки из функций, и (если вдруг может) как?

Common lisp
Есть фрагмент программы: (defun game(x y) (cond (( &lt; x y)(print &quot;menshe&quot;)(setq y (read))) (( &gt; x y)(print &quot;bolshe&quot;)(setq y...

Common lisp
кто поможет решить эти задачи? Перечитайте правила форума. Один вопрос - одна тема. Заголовок темы должен быть осмысленным и...

ООП Common Lisp
Помогите пожалуйста! Реализовать класс: Программа (название, тип, сфера применения, язык программирования, ...) Класс должен иметь...

Вопрос по common lisp
Подскажите пожалуйста как выполнить лисп-программу из txt или какого другого файла?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Жара жесть.
kumehtar 18.08.2026
Пролетают летом дни Тридцать пять жары в тени. Каждый август год от года Дарит жаркую погоду.
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru