LINUX.ORG.RU

Common Lisp и деньги


0

2

Ищется либа для вычислений над денежными суммами. Требования:
1. Денежная сумма должна быть представлена типом, с возможностью ввода-вывода через print/read.
2. Должна быть возможность вычислений сразу с округлением.
Можно написать самому, конечно, но интереснее использовать готовое.
Ваши советы.

★★★★★
Ответ на: комментарий от anonymous

Когда ты видишь в языке много правил, исключений, мало способов организовать новые понятия из старых

Ты прям прогрессивные джаву с плюсами расписал.

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

где лисп машины до уровня которых писюки дотянули ближе к середине 90?

кстати, жду римейков и рестаров проектов лисп-машин на мемристорах. Должно получится вкусно, когда и если сами мемристоры пойдут в массовом порядке.

Римейк и перезапуск транспьютеров, на мой взгляд, получился неплохой:
http://en.wikipedia.org/wiki/XMOS
http://www.xmos.com/technology/xcore — у них даже есть репозиторий с проекктами

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

Докажи это.

слушай а сам почитать про лисп машины и тупо сравнить когда столько мег памяти, дискового пространства и графика появились на писюках?

Так поставь себе init=/usr/bin/emacs, а мы на тебя посмотрим

чего смотреть вон выше клон для этого заточенный указали

Кому очевидно? Мне не очевидно. Докажи это! Что-то я не вижу толп желающих монетизировать поделия того же Ловсанчега, например.

ну какому то же финансово одаренному идиоту переписать CAD с лиспа на С пришло в голову? или у Яхо нашлись бодрые задорные кадры переписавшие купленный стартап с инет магазинами на педальный привод? тут уже 50 раз все обсуждалось если этих двух примеров мало.

признать истинную причину его провала

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

для интеграции с «гребцами» сейчас сделали лисп на ява машине, посмотрим какой будет выхлоп.

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

Фактически рецепт счастья --- не травите чистым лиспом и схемой, дайте хомячкам когда интегрируете в продукт гуиле (или репл лиспа) возможность писать на засахаренном с умом варианте языка.

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

Что-то я не вижу толп желающих монетизировать поделия того же Ловсанчега, например.

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

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

Часто говорят о «греко-римской цивилизации», не сильно отделяя их друг от друга. Хотя греки, конечно, были более самодостаточными.

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

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

ты это, не надо голословно насчёт технических изъянов. Давай конкретно со схемами, графиками, таблицами на 20 страницах — где там изъяны, по каким направлениям и критериям, параметрам провалы, важность этих критериев,параметров и т.п.

Например, такие параметры. Более-менее технические и объективные.
1. Интеграция с существующей инфраструктурой, библиотеками мира С. Проблема есть, была, решена, да, нет, почему. Решена ли она в современных LW, SBCL, ECL, Corman Lisp, EuLisp, как решена и чего не устраивает.
2. Наличие собственной инфраструктуры. Сюда входит как «хрупкость» системы сборки референс компилятора (например, прочитайте про причину форкинга CMUCLа на SBCL aka Sanely Bootstrapped Common Lisp — очень интересно), так и наличие библиотек. Фактически требуется средства управления репозиторием библиотек (вроде quicklisp), сборки систем (вроде quicklisp, asdf, xcvb).
3. Сложность и нужность создания standalone exe, различия exe + so libs vs. image. Сложность в том, что нам не нужен компилятор и вся стандартная библиотека внутри «целевого» образа, достаточно если он будет в «девелоперском» и запуска целевого софта кагбы в дебаг варианте, под отладчиком. Ну эти вопросы как-то решаются, по своему, что в LW, что в Corman Lisp, что в Dylan.
4. Одна-единственная референс реализации языка, стандарта, стандартной библиотеки. Да, с единственностью проблемы.

Нетехнические и субъективные.
4. Архаичность. — Ну фортран и алгол тоже архаичны, ну и что?
5. запредельную маргинальность, — это хорошо или плохо? По-моему, J, K, и Brainfuck — маргинальнее.
6. агрессивное невменяемое коммьюнити,  — да ну
7. напускной элитизм, — «причина провала — в элитизме. Быдлотехнологии не проваливаются» — я тебя правильно понимаю?

С моей колокольни, эти 4.-7. можно смело умножать на ноль, потому что я его так не ощущаю.

С другой стороны, эти нетехнические субъективные факторы даже важнее.

Дело не в каком-то отдельном из них, а во всех вместе в совокупности. В терминах «Дилеммы инноватора», есть disruptive technology / разрушающие технологии и supportive technology / поддерживающие. Первые приносят качественные скачки, но требуют перекраивания всей инфраструктуры, поэтому для бизнеса это no-go theorem, и бузинесы их не любят. Не любят обоснованно, из-за хреновой масштабируемости и нехилых вложений, требуемых для запуска этой технологии. Вторые технологии наоборот, «стоят на плечах гигантов», но как ни подпрыгивают, качественные скачки осиливают с большим трудом. Например, С++ как С-совместимая технология.
Вообще жизненный цикл развития технологии напоминает S-образную кривую вроде петли гистерезиса, смещённой вправо-вверх. Качественные скачки — после полочки в середине, после определённых вливаний в виде ресурсов и инфраструктуры, и обратной связи от готовых, работающих решений.

anonymous
()
Ответ на: комментарий от archimag

на момент поражения

продолжаем исторический тред. А когда этот момент поражения случился?

напускной элитизм

См. пункт выше. Хотя мне вообще трудно понять о чём речь.

<элитизъм> мне тоже это трудно понять. Наверное, чтобы это понять, требуется IQ<180. </элитизъм>

;; OH SHI~, палимся

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

Никакие варвары в принципе не могут затоптать ничего «цывылизованного». Потому что они варвары, а оно цивилизованное. А раз кто-то кого-то затоптал, то значит затоптанная империя уже не была

+1. Один врач на тему порнографии и культурки похоже сказал, «если голой жопой можно разрушить культуру и цивилизацию, то грош цена этой культуре и цивилизации».

Хотя, если бы цивилизации строили, как пишут программы, то первый залетевший дятел разрушил бы цивилизацию :-)

Здесь виноват не дятел, виновата ненадёжная архитектура культурки с изъянами.

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

О чём речь? Огласите, пожалуйста, весь список.

- Плохо устроена модульность - класс не создаёт пространства имён, как в Java и C++.

наоборот, это — хорошо устроенная модульность. Потому что модуль (или пакет) — это логическая единица времени компиляции, а компонент — это физическая единица времени выполнения. И что тогда такое пространство имён? Лишняя, искусственная сущность второго порядка над модулями.

Кстати, в Java и в С++ принципиально разные подходы, «единица компиляции — класс» и «единица компиляции — namespace».

- статической типизации по сути нет,

по сути есть, declare, declaim аннотации и вывод типа из аннотаций. Другое дело, чтобы этим удобно пользоваться нужно либо писать много макросов либо генерировать лисп-код из чего-то более высокоуровнего, например, как Shen и Qi II.

из-за этого ООП несколько тормозит (хотя я думаю, всё ещё в разы быстрее того же питона)

ага. А вот насколько важно, что оно немного тормозит — это у каждого свои проекты, и единой линейки нет

- ООП плохо масштабируется, поскольку функции не принадлежат классам.

именно поэтому оно масштабирутся хорошо. В C++ этому мешает FBC: http://en.wikipedia.org/wiki/Fragile_base_class

В С++ можно иметь foo::add(один аргумент) и bar::add(два аргумента) а в лиспе сигнатура функции фиксирована и не зависит от типов

В лиспе, Dylan, ooc, Tart, Crack, nimrod, ЕМНИП можно иметь integer::foobar(x,y) постфактум. То есть, для расширения типа добавлением нового метода не нужно его делать суперклассом. То же самое в Objective C называется «протокол».

То есть, теперь нам не нужен FBC класс Object, в котором реализован например ::toString, потому что такой метод мы можем прицепить постфактум к любому объекту, включая тот, на который нет исходников и нельзя перекомпилировать (где-то глубоко в стандартной библиотеке)

- во многих конструкциях действительно есть лишние скобки

ну есть. Это проблема стандарта Common Lisp, который явился сборной солянкой из нескольких разных диалектов лиспа

- компилятор редко показывает конкретную строчку с ошибкой

какой компилятор, какая реализация. Но да, и тут причина либо в реализации, либо в том, что в процессе раскрутки макросов исходная нумерация строчек может потеряться.

- вообще, со сборкой плоховато

пример, что собирал, как собирал, почему плоховато, что не нравится

- лисперы - в основном теоретики и редко доводят хорошие идеи до полного и полезного воплощения

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

anonymous
()
Ответ на: комментарий от mv

mv, спасибо, лучше, чем ничего. Хочется именно готовую либу с оттестированными арифметическими операциями, а не намётки. Там есть ещё ссылка на тред на лиспер.ру.

А лиспосрач развели. Блин, мне работать надо, а вы чем заняты?

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

Тем, кому надо работать, вопросы задают не на лоре. Для этого есть другие форумы со злобными модераторами, жёстко преследущими любые отклонения от темы.

anonymous
()
Ответ на: комментарий от ttnl

А чо, недавно в JOBS проскакивала вакансия аж на 35 тыс. руб.

Я что-то вообще не помню, чтобы в jobs проскакивало что-то жирное в .ru. Какое .ru, такие и jobs.

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

Благодаря византийцам началась эпоха Возрождения в Западной Европе.

Византия вообще не при делах. Не обижайте арабов и Западную Европу. Возрождения в Европе, потерявшей в научном плане тыщу лет, начались на её западе, с появлением ремесленников, буржуазии, торговли, включая морскую. Все эти европейские возрождения питались во многом с арабских направлений, включая арабские переводы античных ученых. Слова алгоритм, алгебра, химия, алкоголь, чек с тарифом, кабель, бакалавр + куча других + названия множества звёзд на небе — это арабско-персидские слова.

anonymous
()
Ответ на: комментарий от mv

Я что-то вообще не помню, чтобы в jobs проскакивало что-то жирное в .ru. Какое .ru, такие и jobs.

А что, в !.ru голые программисты на языке без предметной области ценятся кардинально противоположным образом?

Программировать на любом языке можно обучить даже обезьяну. И все эти сказочки про схожесть программирования на функциональных языков с неврот.бенной математикой поддерживают те, кто эту самую невроте.енную математику в жизни не видел. Любая более-менее стоящая вакансия в первую очередь оценивается по порогу вхождения в предметную область, сколько для этого нужно мозгов. И уж потом опыт программирования на языке, набитость руки — отсутствие детских ошибок при написании кода и т.д.

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

Лисп — это направление в (относительно современной) технологии. А технологии отправляются на свалку истории по совсем другим законам, нежели древние цивилизации.

И законы эти предельно чёткие и предсказуемые.

Пиджаки в клеточку — это направление в (относительно современной) моде. А мода отправляется на свалку истории по совсем другим законам, нежели древние цивилизации. И законы эти предельно чёткие и предсказуемые.

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

Ключевое слово «апатриды», что в переводе с греческого значит «лишенные отечества». Здесь две логические цепочки влияния Византии на европейское Возрождение. Трудно сказать, какое значимее:

1. Крестоносцы - 1204 год - Константинополь - грабеж - Италия - профит.

2. Турки - 1453 год - Константинополь - бегство апатридов - Италия - профит.

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

//another anonymous inclined

Отличие от С++ вряд ли можно отнести к «фатальным изъянам» чего-либо.

да это скорее преимущество. Потому что какие были у этого С++, извиняюсь, design decisions? Никаких, смешать все «фиатуры» в кучу, не рискуя выкинуть совместимость с С, и выехать на сишечных библиотечках. К чему это привело, мы прекрасно знаем — такого сонма кодогенераторов, которые генерят write-only хрупкий код под С++, который сложно понять, модифицировать и как-то с ним в дальнейшем работать, кроме как под С++ в истории мало случаев будет.

CLOS не был первой и единственной реализацией ООП для лиспа, предыдущие реализации как раз старались следовать модели С++ (точнее, модели Smalltalk). Но CLOS просто оказался на порядки удобнее.

вообще это 3 разных человека, да (или, даже 4).
1. С++ модель ООП — VTable для диспетчеризации, фича «указатель на метод» и сложности типа FBC «by design», и friend доступа. Умные люди спорили, что это virtual в С++ должно быть в лучшем случае прагмой, как (declare ... ) (declaim ...). И компилятор сам их выводить должен. Основана на Simula 60x годов.
2. модель смоллтока (-80 — стандарт, ~76 год — прототипы) — класс как объект (метакласс), общий словарь методов, диспетчеризация по словарю. Если метод не найден в словаре — посылается сообщение метаклассу :doesNotUnderstand, которое можно перехватить, и реализовать прокси-методы, (дальнейшее развитие идеи — протоколы и категории в Objective C, расширяемые интерфейсы) и любую произвольную диспетчеризацию (например, оптимизации вроде статической типизации и диспетчеризации, но тут уже будет сильно завязано на классы компилятора, что вкупе с отсутствием деления на фазы доставляет).
Тривиально переносится на С (Objective C), Lisp (FLAVORS из лисп-машин, посылка сообщения методом send), схему (объекты как замыкания, хеш таблица со словарём символов методов).
2а. Прототипное ООП, как в Self или JavaScript.
3. CLOS. Явно выделено API для рефлексии по метаклассам, MOP.


со сборкой плоховато

Как предлагаете это понимать?

да, интересно. Вот «сборка системы» в образе, в рантайме что defsystem, что asdf и т.п. позволяет делать. Наверное он имеет в виду генерацию целевой системы как минимально самодостаточного standalone exe без лишних зависимостей, вроде компилятора в целевой системе и прозрачную линковку полученного с сишечными библиотеками.

Как это так, линкера нет. Непорядок.

anonymous
()
Ответ на: комментарий от archimag

Кстати, вы с mv дружно проигнорировали тезис об отсутствии

системы в лиспе системы типов

Типы в CL, естественно, есть.

Типы есть, системы нету.

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

Краткое изложение: если направление в науке или технике изживает себя, и находятся более современные направления, превосходящие исходное по всем параметрам, то исходное направление безусловно направляется на свалку.

а почему тогда на свалку истории не отправились: архитектура x86, язык С++, ос Unix?

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

теория флогистона
теория теплорода

а где теория эфира, гравитационное взаимодействие и тёмная энергия?

anonymous
()
Ответ на: комментарий от archimag

и находятся

более современные направления, превосходящие исходное по всем
параметрам

Рассмотреть пример триумфального распространения архитектуру x86 как очевидное опровержение Ваших теорий в качестве домашнего задания.

по всем параметрам

включая дешивизну, которая есть следствие массовости, отдачи от масштаба

вот игрушки например на чём запускать? готовый синдикат, DirectX + x86.

(правда, Unix был в итоге спасён стараниями одного финского программиста).

уж лучше бы он так не делал. If it dies, just let it die. А то не могут вовремя закопать и скачут на этой дохлой лошади, а потом пионэры берут с них пример, и думают что в этом был какой-то другой глубинный смысел.

В итоге карго-культ выхолащивает всю идею, всю системность своим неправильным применением. В итоге имеем много поделок just good enough, и ни одной по настоящему perfect fit.

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

Теория эфира не на свалке. Теоретическая физика в тупике, но боится сказать слово «эфир», выдумывая всякие глупости типа «физический вакуум», «поле — особый вид материи» и т.п.

anonymous
()
Ответ на: комментарий от ttnl

Я что-то вообще не помню, чтобы в jobs проскакивало что-то жирное в .ru. Какое .ru, такие и jobs.

А что, в !.ru голые программисты на языке без предметной области ценятся кардинально противоположным образом?

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

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

и что не так с «этими людьми»?

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

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

правильно, когда одни про*б*вали знания и жгли библиотеки, что не сожгли то заныкали, а потом разобрав нычку и открыв выжимку из переводов компиляторщиков этих знаний сочли их за нечто очень особенное (не из-за врождённого скудоумия, а из-за отсутствия общей информированности и преемственности, отравлены после того как культ карго рулил во все поля, хорошо хоть недолго), другие не забывали оригиналов, раз, и делали что-то своё, два. За что им и спасибо.

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

то грош цена этой культуре и цивилизации

ага ага, значит «не убий и прочее» побоку -> мля все рассыпалось -> всему грошь цена, гуано эта ваша мораль?

ну ну :)

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

Типы есть, системы нету.

А что должно быть, чтоб была система? Как по-вашему это должно выглядеть, как декларирование типов переменных a la C/C++?

no-such-file ★★★★★
()
Ответ на: комментарий от psv1967

если Бога нет, то не всё позволено всё равно. Не важно, гуано эта мораль или нет — адекватный человек не будет е6@ть гусей, воровать и т.п. только потому что у него предоставится такая возможность. Потому что ему это не нужно, хотя такая возможность безусловно есть . Потому что свобода это ответственность, в том числе и за возможность всё проё*сти. Потому что эта культура и цивилизация — это фикция и иллюзия, но иллюзия коллективная, совместная и тащем-то привычная — посему пускай будет, мешают ведь не иллюзии сами по себе, а неправильное их употребление.

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

Речь же о том, что гуманитарии не видят системного эффекта, а заслышав словеса «культура» «цывылизация» делают стойку и падают на 5ю точку с криком, Oh, exploitable! как тот цыплёнок, который бегает кругами и боится, что небо падает, упадёт на голову и всех раздавит. Тщательнее надо, тщательнее.

anonymous
()
Ответ на: комментарий от no-such-file

А что должно быть, чтоб была система типов?

ну как обычно задаётся система типов. Задаётся операционная семантика и вперёд. В чём цель и предназначение этой системы? Задать множество допустимых объектов в виде алгебры, и доказывать на этой алгебре свойства объектов. То есть, не важно, как это выглядит, важно что эта система позволяет доказывать.

anonymous
()

Зачем отдельный класс денег в языке с неограниченными рациональными дробями?

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

этим карго культом к месту и не к месту задрали, ну какой карго культ например на почве учебника геометрии может быть? или понимаешь и используешь или не понимаешь и все равно используешь :)

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

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

Интересно, какие языки ты называешь маргинальными. C++, SQL, например, - это по-твоему маргинальные языки?

Предметная область, или как ты ее называешь «список требований», это то, в рамках чего обычный программист вырастает до главного по направлению, а в дальнейшем, возможно, и до системного архитектора.

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

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

Интересно, какие языки ты называешь маргинальными. C++, SQL, например, - это по-твоему маргинальные языки?

А какой язык указан в вакансии, которую ты подразумевал в: «А чо, недавно в JOBS проскакивала вакансия аж на 35 тыс. руб.»?

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

в AutoLISP от лиспа только название, скобочки и немножко синтаксиса

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

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

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

Краткое изложение: если направление в науке или технике изживает себя, и находятся более современные направления, превосходящие исходное по всем параметрам, то исходное направление безусловно направляется на свалку.

а почему тогда на свалку истории не отправились: архитектура x86, язык С++, ос Unix?

ещё не изжили себя / не нашлось ничего лучше?

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

А какой язык указан в вакансии, которую ты подразумевал в: «А чо, недавно в JOBS проскакивала вакансия аж на 35 тыс. руб.»?

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

Лисп+предметная область - это совсем другое дело.

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

А какой язык указан в вакансии, которую ты подразумевал в: «А чо, недавно в JOBS проскакивала вакансия аж на 35 тыс. руб.»?

Lisp-программист

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

Предметная область, или как ты ее называешь «список требований»,
это то, в рамках чего обычный программист вырастает до главного по
направлению, а в дальнейшем, возможно, и до системного архитектора.

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

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

Куда по-твоему растет скачущий по разным предметным
областям программист?

Хм, куда хочет - туда и растет. Например, в сторону помянутого грешным делом архитектора, для них вроде всегда считалось важным иметь широкий кругозор?

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

Хм, куда хочет - туда и растет. Например, в сторону помянутого грешным делом архитектора, для них вроде всегда считалось важным иметь широкий кругозор?

Нормально, а. Спрашиваешь у меня - значит не уверен в том, что говоришь. Зачем тогда споришь?

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

Спрашиваешь у меня - значит не уверен в том, что говоришь.

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

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

Типы есть, системы нету.

Есть. В лиспе (в том числе в CL) обычно лямбда-P с подтипированием.

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

ну примерно тем же чем электро-движущая сила от напряжения :)

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

Задать множество допустимых объектов в виде алгебры, и доказывать на этой алгебре свойства объектов.

И в чем проблема в смысле реализации этого на лиспе?

То есть, не важно, как это выглядит, важно что эта система позволяет доказывать

Вот именно. Подумаешь, скобочки.

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