LINUX.ORG.RU

bike 0.15.0 - кардинальное решение проблем с исключениями FPU

 , , ,


0

4

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

Лисп знает, но многие знания - многие печали.

Поэтому чтобы лучше работать с дотнетом, библиотека теперь отключает отлов всех исключений FPU лиспом.

https://github.com/Lovesan/bike/issues/10#issuecomment-2475022163

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

★★★

Последнее исправление: lovesan (всего исправлений: 1)

Дотнет, вобщем-то, предназначен для убогих недоязычков.

Можно узнать полный список актуальных «недоязычков» кроме вендорских ?

Для коллекции, уж очень они мне нравятся :) своей совместимостью .NET либами.

sanyo1234
()

Лисп знает, но многие знания - многие печали.

А что лисп делает с исключениями FPU?

Вот с каждым из этих?

    неточный результат: результат округляется в соответствии с битами RC (на самом деле это исключение происходит очень часто. Например: дробь 1/6 не может быть представлена точно десятичным вещественным числом любой точности и округляется). При этом флаг С1 показывает, в какую сторону произошло округление: 0 — вниз, 1 — вверх;
    антипереполнение: результат слишком мал, чтобы быть представленным обычным числом, — он преобразуется в денормализованное число;
    переполнение: результат преобразуется в бесконечность соответствующего знака;
    деление на ноль: результат преобразуется в бесконечность соответствующего знака (учитывается и знак нуля);
    денормализованный операнд: вычисление продолжается, как обычно;
    недействительная операция: результат определяется из таблицы 12.

Psilocybe ★★★★
()

Просто оставлю это здесь, может автор задумается.

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

предназначен для убогих недоязычков

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

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

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

А можно просто использовать Clojure ради богатства JVM-экосистемы которая на голову выше и обширнее .NET-экосистемы.

Ну и ещё Clojure очень хорошо оплачивается в последние года, в отличие от доширачного .NET-стека.

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

Но вот с такой манерой общения

Положение обязывает 😀

"It is often suggested that one of the SocialProblemsOfLisp is that LispUsersAreArrogant.

No, they’re just perceived as arrogant by lesser beings."

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

Мне не зашёл ни синтаксис Lisp, ни «юзабилити» Emacs.

Из функциональных ЯП не понравился даже F#.

Единственно терпимым показался Scala, но я не особо джавист.

Но ведь и даже C# и VB.NET тоже немного функциональные хотя бы наличием лямбд и LINQ?

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

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

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

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

Являются ли следующие языковые возможности элементами метапрограммирования?

Для NET только в одном языке - Nemerle есть серьезное, не хуже лиспа по сути, метапрограммирование.

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

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

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

Для NET только в одном языке - Nemerle есть серьезное, не хуже лиспа по сути, метапрограммирование.

Только он не развивается.

А есть сейчас хоть один активно развиваемый third-party ЯП на базе .NET кроме вендорских ?

Наверно, только IronScheme? Ещё один Lisp like: https://github.com/IronScheme/IronScheme Куда их столько понаделали ? :)

IMHO даже IronPython как-то подзаглох последнее время?

И если кто-нибудь знает, пожалуйста, подскажите по JVM:

  1. Какой-нибудь shell scripting максимально приближенный к Bash не в смысле синтаксиса, а интегрированности с шелом, ну или можно сравнить с Xonsh. В идеале, чтобы он генерил JVM сборки для последующей обфускации и даже для GraalVM AOT.

  2. Какой из нескольких JVM обфускаторов наиболее юзабелен и функционален в бесплатной редакции для временной защиты шел скриптинга или хотя бы небольших кастом библиотек для него?

sanyo1234
()
Последнее исправление: sanyo1234 (всего исправлений: 2)
Ответ на: комментарий от lovesan

лисп не про фп

про метапрограммирование

Императивная лапша, замешанная на (неконтролируемом) изменении состояния, от метапрограммирования лучше отнюдь не становится, скорее наоборот %)

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

Nervous ★★★★★
()
Последнее исправление: Nervous (всего исправлений: 2)
Ответ на: комментарий от lovesan

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

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

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

В итоге кложа теперь есть тупо везде: на бэке (жвм, дотнет, петон, …), на фронте, и даже в любимой соснольке.

Борщелисперы, сдавайтесь, вы окружены %)

Nervous ★★★★★
()
Последнее исправление: Nervous (всего исправлений: 1)
Ответ на: комментарий от Nervous

ФП это такой же Silver Bullet как и ООП, это все, еще раз, убогие игрушки для бедных и больных детей.

Если у вас язык не позволяет расширять компилятор и вообще, как в том же SBCL, и нет всяких eval-when, то это допотопная хренота для идиотов.

Вот посмотри код тут например, это я щас новую библиотеку делаю

https://github.com/Lovesan/nnp/blob/master/src/sbcl/types.lisp

https://github.com/Lovesan/nnp/blob/master/src/sbcl/defvop.lisp

https://github.com/Lovesan/nnp/blob/master/src/sbcl/constructors.lisp

https://github.com/Lovesan/nnp/blob/master/src/sbcl/load-store.lisp

Могут ли какие-то ФП-недоязычки или даже Clojure - настолько утилизировать boilerplate и имею ли они настолько сильные возможности оптимизации, как CL? Ответ - нет. По сравнению с лиспом, все эти языки это игрушки в песочнице.

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

А шо, на других реализациях не будет работать?

Пока нет, надо для каждого компилятора писать отдельное.

Возможно сделаю reference реализацию, как это в том же DirectXMath - типа когда SIMD-инструкций не обнаружено, но потом.

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

Могут ли какие-то ФП-недоязычки или даже Clojure - настолько утилизировать boilerplate

Господи, какой позор

(defoptype imm1 (unsigned-byte 1)
  :width 1
  :scs sb-vm::descriptor-reg
  :vop-type (:constant (unsigned-byte 1))
  :immediate t)

(defoptype imm2 (unsigned-byte 2)
  :width 2
  :scs sb-vm::descriptor-reg
  :vop-type (:constant (unsigned-byte 2))
  :immediate t)

(defoptype imm3 (unsigned-byte 3)
  :width 3
  :scs sb-vm::descriptor-reg
  :vop-type (:constant (unsigned-byte 3))
  :immediate t)

(defoptype imm4 (unsigned-byte 4)
  :width 4
  :scs sb-vm::descriptor-reg
  :vop-type (:constant (unsigned-byte 4))
  :immediate t)

(defoptype imm5 (unsigned-byte 5)
  :width 5
  :scs sb-vm::descriptor-reg
  :vop-type (:constant (unsigned-byte 5))
  :immediate t)

(defoptype imm6 (unsigned-byte 6)
  :width 6
  :scs sb-vm::descriptor-reg
  :vop-type (:constant (unsigned-byte 6))
  :immediate t)

(defoptype imm7 (unsigned-byte 7)
  :width 7
  :scs sb-vm::descriptor-reg
  :vop-type (:constant (unsigned-byte 7))
  :immediate t)

(defoptype imm8 (unsigned-byte 8)
  :width 8
  :scs sb-vm::descriptor-reg
  :vop-type (:constant (unsigned-byte 8))
  :immediate t)

,,,ещё 100500 одинаковых определений с как минимум одной копипаст ошибкой...
anonymous
()