LINUX.ORG.RU

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

Вы выиграли :) Не знаю о чем мы с вами спорили, но вы победили. Я отказываюсь просматривать эту простыню, там вроде нормальные ссылки, а внизу под катом прям густо хабр, хабр, хабр…

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

Спор - «не моё».
Диалог - приветствуется (но не всегда).

В блогах на habr бывают хорошие ссылки, а иногда и блоги бывают полезными.

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

JNBridgePro — какая-то насквозь коммерческая приблуда. И, судя по рекламе, она создаёт что-то вроде REST-сервера для доступа снаружи (наличие TCP в списке вариантов доступа на это намекает).

Java и .NET в одном процессе несовместимы, даже на винде, я думаю - Java просто считает весь процесс своим собственным, она не рассчитана на интероперабельность вообще. В VEH каком-нибудь будут конфликты. На линуксе же это сразу упрется в сигналы и падение в корку к херам. И никто это исправлять не будет, потому что в говне которым является рантайм Java разобраться практически нереально.

И там аналогичные проблемы: https://github.com/azurefx/DotNET.jl/issues/17

Там хуже. Они вон даже не понимают, че происходит. Краши. И так будет с большинством рантаймов. Потому что уровень разработчиков как бы на пару порядков пониже чем у мейнтейнеров SBCL того же, или каких известных лисперов, которые вон в FFI шарят.

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

А взаимодействие проблематично именно в SBCL по той же причине, по которой сложно сделать интерфейс к Java: due to SBCL’s inability to handle Unix signals properly in the presence of foreign threads.

Да проблема не в SBCL, а в сигналах вообще. Потому что сигналы это кривое говно by design. Эта херня всплывает и при использовании Java + ImageMagick например.

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

Да проблема не в SBCL, а в сигналах вообще.

Тогда проблема была бы у всех. MKCL же как-то стабильно работает с JNI. Кстати, можешь попробовать на нём свой bike запустить.

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

Речь о float?

Вы профи в 1С и знаете, что в ней не поддержаны все «базовые типы данных» https://learn.microsoft.com/ru-ru/windows/win32/winrt/base-data-types,
Но иногда в 1С использую «свои» переменные и объекты, которые малого того, что могут быть любого «базового типа», так ещё быть ссылкой на объекты типа struct.
Так что скорее всего как-то и в Лисп можно использовать float.

В чём проблема?

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

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

Впрочем, в 1С это как раз в полный рост. «ВЫБРАТЬ Поле1 / Поле2 ИЗ Таблица» и «ВЫБРАТЬ Поле1, Поле2 ИЗ Таблица» + Выборка.Поле1 / Выборка.Поле2 легко могут дать разные результаты, потому что в первом случае делит SQL, а во втором 1С. Более того, даже поиск по равенству строки в SQL без учёта регистра, а в языке 1С с учётом регистра.

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

В SQL СВОЯ арифметика и она лишь местами похожа на «обычную».
Поэтому проблема «потеряной/лишней копейки» может возникнуть в алгоритмах, которые не знают правил арифметики SQL.

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

И я про то же. Но это не мешает писать программы, очень тесно интегрированные с SQL.

Так и float. Если интерфейс к внешней системе умеет конвертировать из внутреннего представления лиспа и обратно, то абсолютно несущественно, насколько арифметика лиспа соответствует арифметике внешней системы.

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

при чем тут компилятор вообще?

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

Арифметику компилятор часто оптимизирует. Строгое соответствие IEEE большую часть оптимизаций запрещает.

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

При том же, при чём он к многопоточности, например.

То есть, особо не при чем.

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

Форк это вообще плохая идея, если че, в любом контексте. Я бы за его использование даже в Си, выдавал бы warning

Арифметику компилятор часто оптимизирует.

А пока оптимизирует, он каким местом с флоатами работает? Софтварной реализацией FPU чтоли? (inb4 в кросскомпиляторах иногда да, но это редкость)

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

monk ранее в постах сказал, что Лисп «прекрутил» к 1С и даже разработал своего клиента для 1С.

РЕСПЕКТ monk!

Также «прекрутил», к 1С свой run-time API, но он ничего не знает о 1С и ему по барабану «премудрости» 1С.

Вообщем-то API можно использовать в run-time любого ЯП.

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

Не мне, а компилятору.

Чтобы видя:

(sb-int:set-floating-point-modes :rounding-mode :zero)
(let ((a (/ 1.0 3))) ...)

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

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

База бухгалтерская. Чтобы по слову «иванов» находился «Иванов» надо часто. Альтернативы: либо удвоить объём базы продублировав все текстовые поля, либо искать по базе без индексов.

Решили, что проще сделать, чтоб СУБД не различала регистр. А если кому-то очень надо, в запросе есть условие ПОДОБНО (которое LIKE в англоязычном).

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

В твоем представлении индексы - это что-то типа НЁХ. А на деле - это просто файл, где все значения этого самого индекса, он полностью читается в оперативу и там какие-то операции над ним происходят.

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

Вы понимаете о чем говорите. И про 1С и про Лисп и проблему чисел с плавающей точки в общем. Рад что тут есть люди которые понимают проблему с обеих сторон так сказать.

Вообще, забавно, что родоначальником современных чисел с плавающей точкой является тот самый IBM 704 под который и создали Lisp. Он первый использовал «смещенные экспоненты» для записи таких чисел.

Но когда появился IEEE-754 IBM игнорировала его до талого, добавив поддержку численных вычислений с плавающей точкой по IEEE в свои мейнфреймы только в 2005 году. До этого она морозилась, т.к. свои стандарты и своя экосистема, а тут какие-то выскочки на 30 лет позже придумали какой-то несовместимый с нами стандарт.

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

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

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

Да на это уже срать, что там линейный поиск. Можно смело утверждать что в оперативу загружено постоянно до 25% размера таблиц. Там нет никаких проблем в регистронезависимом сравнении строк: A - это 41 (в ASCII), a - 61, те чиселки сравниваются x == 41 or x == 61 (41 + 20), там внутреняя какая-то кодировка для репрезентации всех возможных символов юникода. У меня есть база данных одного топового сайта, там всего-навсего 20+ гигабайт данных за 15 лет скопилось. Даже по самой большой таблице с миллионами записей линейный поиск происходит за доли секунды

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

В шарагах никогда не будет баз по 20 гигов

Фирма по продаже комп комплектующих со своим сервисным центром спокойно набирала 20Гб за год. Приходилось писать обработки и обрезать остатки в последние рабочие дни года.

Причем вообще 20 млн посещений в месяц? это же не 20 млн продаж которые занесли заказы в БД.

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

В смысле? Для учёта в столовой необходимо на каждое блюдо списать ингредиенты с учётом партий прихода. Таким образом на одну продажу товаров будет около сотни записей по десятку полей каждая. Человек покупает полдюжины товаров. За день проходит по крайней мере сотня человек. Получается порядка миллиона полей ежедневно. На каждое надо порядка десятка байтов. Десять мегабайт. Сто дней — гигабайт. Год три гигабайта. Пять лет — пятнадцать гигабайт. И это только бухгалтерский учёт продаж. Без учёта закупок, ежемесячных регламентных перерасчётов себестоимости, расчёта калькуляций и прочего.

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

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

OLTP? не слышали

Лавсан, Лавсанище, ну хватит уже писать о том о чем вообще не понимаете. 1С как раз реализует и OLTP и OLAP (ROLAP), причем это работает быстро. Вы таких архитектур и не видели. Например, такая схема используется в ДИТ г. Москва.

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

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

Тебе нужен отдельный OLTP на 100 транзакций в день? Зачем???

А хранить надо, иначе когда к тебе придёт ИФНС с проверкой и потребует обосновать, почему ты пять лет назад на расходы поставил именно эту сумму, то эти данные тебе понадобятся.

monk ★★★★★
()
Ответ на: комментарий от Obezyan
Процедура ПриветМир()
    Сообщить("Здравствуй, Мир!");
КонецПроцедуры

У этого языка низкий порог вхождения.

Более того, после этого очень низкого порога сразу идут ступеньки в полуподвальное помещение.

Нельзя использовать букву «ё».

Запрещено административным кодексом с внесением в реестр нарушителей и алиментщиков.

Программный код 1C расположен в конфигурации. Сама конфигурация состоит из объектов, а объекты — из модулей. Именно здесь хранится код.

Именно там.

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