defun flatten-operation (op lyst)
"Return a list, but flatten by one level any list element beginning with op."
cond
not(consp(lyst))
lyst
{not(consp(car(lyst))) or not(eq(caar(lyst) op))}
cons car(lyst) flatten-operation(op cdr(lyst))
null(cdr(car(lyst))) ; Defensive programming, should not be needed.
flatten-operation(op cdr(lyst))
t
append cdr(car(lyst)) flatten-operation(op cdr(lyst))
Ну STL это имхо часть языка. Сделал с помощью mmap и на базе указателей. Указатели использовал в качестве итераторов плюс написал свой маленький функтор для подсчета значений. Вывод значение в std::cout.
А лупше разработать кодовую страницу в которой все символы невидимы.
Для форумов было бы «самое то».
Тогда никакие правила форума будут не страшны.
А ежели немного подумать, то можно создать универсальную шифрованную кодовую страницу (и тут Остапа понесло).
А то одни эмодзи придумали - «ни ума, ни фантазии».
Он же не соображает вообще о чем он говорит. То есть вообще от слова совсем. На каждый его высер можно только отвечать, «че за бред ты несешь, иди прими таблетки». Он просто настолько шизоидный бред несет, что тут лень даже какие-то отдельные аргументы разбирать.
Он флоаты приплел потому, что увидел что в моей библиотеке с ними на линуксе, типа, проблема, и начал «рассуждать»(нести абсолютную хероту на самом деле). Хотя даже примерно не представляет себе что там на самом деле происходит, и где проблема на самом деле(в дотнете, лол).
Теперь он пустился в еще большую дичь, и рассказывает что в CL не поддерживается IEEE-флоты, лол, хотя они ВООБЩЕ ВЕЗДЕ поддерживаются, где есть аппаратная их поддержка, и где для работы с флоатами соответственно используются аппаратные возможности, то есть примерно, нахер, везде.
Я не понял, ты что там пытался сделать, но не осилил? Бинарно чтоли, флоаты читать? Ну так в ANSI CL, в самом стандарте, по-моему, вообще нет нихера на эту тему, т.е. грубо говоря, функции encode-float тупо нет. Средствами конкретных реализаций, или каким-нибудь CFFI, это естественно, все делается вообще спокойно.
Касательно тормозило - так ты еще поди писал на каком-нибудь CLISP, и поди оперировал списками направо и налево вместо массивов, и прочей херней страдал. Зато тормозило у него.
На крестах тормозилово написать ничуть не сложнее.
Т.е. остальные языки нормально используют .Net CLR под Linux, а Лисп - нет. Но проблема не в Лиспе, а в дотнете. И ошибки которые фиксят в компиляторе SBCL тоже не ошибки. Это тоже проблема в дотнете.
Мы вас услышали, не нервничайте, проходите - присаживайтесь на кушетку.
Ну так в ANSI CL, в самом стандарте, по-моему, вообще нет нихера на эту тему, т.е. грубо говоря, функции encode-float тупо нет
ну вот я сделаль в 2005м как раз этот encode-float, то что криво косо тут спорить не буду - бремя молодости :)
Касательно тормозило - так ты еще поди писал на каком-нибудь CLISP, и поди оперировал списками направо и налево вместо массивов, и прочей херней страдал. Зато тормозило у него.
Теперь он пустился в еще большую дичь, и рассказывает что в CL не поддерживается IEEE-флоты, лол, хотя они ВООБЩЕ ВЕЗДЕ поддерживаются, где есть аппаратная их поддержка
Понятие «поддерживаются IEEE-флоты» очень растяжимо. Примерно как «поддержка юникода». Везде поддерживаются в том же смысле, в котором UTF-8 везде поддерживается. А дальше начинаются нюансы.
Например, смену режима округления для IEEE-флотов поддерживают немногие.
лол, сишную функцию из ОС, которая это ставит, ты можешь вызвать на любом языке, это не значит что она является частью языка и в языке это предусмотрено вообще (ну в жабке разве что есть, да)
Есть библиотека для работы с дотнетом из Питона, Джавы, Перла? Или «остальные языки» = Си++?
Навскидку, Java: JNBridgePro, в Xamarin точно было. Python: так и называется Python.NET, Perl: не знаю текущего статуса, помню только что они с COM объектами баловались да SOAP обмазывались.
В С++, R, Julia тоже есть. Даже в JS есть jint. Для большинства остальных думаю тоже найдется, помню что был бум iron*-имя-языка библиотек. Другой вопрос - насколько этим языкам это сейчас актуально.
Обидно, что анонимусов вернули в тех.разделы только сейчас, и Вам пришлось зарегистрироваться, чтобы вступить в полемику с Лавсаном. Если бы Вы действовали из-под анонимуса, ваш срач бы выиграл в остроте ☺️.
Мне кажется - без разницы. Просто выдалось больше времени, дай думаю зарегистрируюсь - пообщаюсь с умными людьми. И в первый же день встречаю поток безапелляционного снобизма Лавсана, а еще через пару дней - луддита vaddd-a. И их люди слушают раскрыв рты. После этого заставлять относиться к этому форуму серьезно у меня не получается.
ИМХО, в этом и состоит преимущество общения с регистрантами: за каждым регистрантом сохраняется история, по которой можно вычислить коэффициент доверия к его словам (либо вообще, либо касательно отдельных областей). Вплоть до того, что каких-то регистрантов можно отправить в черный список (что многие совершенно правильно делают по отношению ко мне).
Было бы хуже, когда одно и то же заново повторяли анонимы: хз, клоун ли это очередной, или вменяемый форумчанин.
После этого заставлять относиться к этому форуму серьезно у меня не получается.
Как раз длительное отсутствие анонимов в development лично мне позволило относиться к этому форуму гораздо серьезнее.
Ты путаешь библиотеки для работы с дотнетом и реализацию на дотнете.
Python.NET, jint и прочие Iron — это языки на CLR. Xamarin - это С# на андроидовской Java. От COM до dotNet’а достаточно далеко.
В C++, разумеется, есть.
JNBridgePro — какая-то насквозь коммерческая приблуда. И, судя по рекламе, она создаёт что-то вроде REST-сервера для доступа снаружи (наличие TCP в списке вариантов доступа на это намекает).
Было бы хуже, когда одно и то же заново повторяли анонимы: хз, клоун ли это очередной, или вменяемый форумчанин.
Ещё хуже, когда анонимы не повторяют… Был тут как-то флейм с пятью разными анонимами. Без идентификации собеседников ощущение, что беседуешь с одним шизофреником.
Java.Interop is a binding of the Java Native Interface for use from managed languages such as C#, and an associated set of code generators to allow Java code to invoke managed code.
Я уже начал терять нить беседы, что вы мне пытаетесь доказать? Что .Net CLR нигде не работает?
Вернись выше по ветке: «Есть библиотека для работы с дотнетом из Питона, Джавы, Перла?».
А ты пишешь «Java Native Interface for use from managed languages such as C#».
«and an associated set of code generators to allow Java code to invoke managed code» - похоже, что это только для переданного через JNI кода. По крайней мере в тестах не нашёл ни одного вызова CLR со стороны Java.
Я уже начал терять нить беседы, что вы мне пытаетесь доказать? Что .Net CLR нигде не работает?
Что его очень сложно использовать из любого языка с виртуальной машиной. В 1С, например, сделали обёртку NetObjectToIDispatch45, которая даёт стандартные COM-объекты. Но, понятно, в Linux этот вариант не проходит.
Я писал об том что в других языках это легче сделать по сравнению с Lisp из-за «IEEE совместимости».
Нет. Из-за «IEEE совместимости» проблематично сделать «IronLisp» на CLR.
А взаимодействие проблематично именно в SBCL по той же причине, по которой сложно сделать интерфейс к Java: due to SBCL’s inability to handle Unix signals properly in the presence of foreign threads.
Можно взять тот же MKCL, работать будет стабильнее, несмотря на то, что поддержка IEEE там меньше.
Ещё хуже, когда анонимы не повторяют… Был тут как-то флейм с пятью разными анонимами. Без идентификации собеседников ощущение, что беседуешь с одним шизофреником
Возможно, мы говорим об одном и том же. Я про то, что одни и те же аргументы повторяются снова и снова, а ты не в курсе – это один человек повторяется или же разные люди пытаются тебе доказать одно и то же.
Из меня плохой объяснятор, но я попытаюсь донести свою мысль: вот есть ANSI стандарт для Lisp и IEEE 754 стандарт для всех остальных. Оба стандарта несовместимы друг с другом выше определенного порога, более того оба стандарта не совместимы с реальной арифметикой нашего мира выше определенного порога и в некоторых местах этот порог довольно невысокий.
Если вы немного поразмыслите, то поймете что уже начинаете подтверждать мои же тезисы :)
Вообще, вся боль и несовершенство IEEE-754 описаны вот тут, советую почитать, если не видели. Подозреваю что не видели, иначе бы мне такие примеры не давали.
Я мог бы «включить Лавсана» и начать разглагольствовать об «ублюдочной реализации float-ов», но мне если честно уже лень.
http://en.wikipedia.org/wiki/IA-32
wiki IA-32
http://ru.wikipedia.org/wiki/Расширения архитектуры x86
http://ru.wikipedia.org/wiki/Предсказатель переходов
http://ru.wikipedia.org/wiki/Вычислительный конвейер
http://ru.wikipedia.org/wiki/Сортировка вставками
http://software.intel.com/en-us/
http://ark.intel.com/ База знаний по продуктам Intel
https://en.wikipedia.org/wiki/Time_Stamp_Counter The Time Stamp Counter (TSC) is a 64-bit register present on all x86 processors since the Pentium. It counts the number of cycles since reset.
The instruction RDTSC returns the TSC in EDX:EAX. In x86-64 mode, RDTSC also clears the higher 32 bits of RAX and RDX.
Its opcode is 0F 31.[1] Pentium competitors such as the Cyrix 6x86 did not always have a TSC and may consider RDTSC an illegal instruction.
Cyrix included a Time Stamp Counter in their MII.
The Time Stamp Counter was once an excellent high-resolution, low-overhead way for a program to get CPU timing information.
With the advent of multi-core/hyper-threaded CPUs, systems with multiple CPUs, and hibernating operating systems, the TSC cannot be relied upon to provide accurate
results — unless great care is taken to correct the possible flaws: rate of tick and whether all cores (processors) have identical values in their time-keeping registers.
There is no promise that the timestamp counters of multiple CPUs on a single motherboard will be synchronized.
Therefore, a program can get reliable results only by limiting itself to run on one specific CPU.
Even then, the CPU speed may change because of power-saving measures taken by the OS or BIOS, or the system may be hibernated and later resumed, resetting the TSC.
In those latter cases, to stay relevant, the program must re-calibrate the counter periodically.
https://habrahabr.ru/company/stss/blog/323016/ Сравнение производительности процессоров Intel разных поколений
https://valid.x86.fr/bench/1 CPU-Z Benchmark (x64 - 2017.1)
https://habrahabr.ru/company/otus/blog/343566/ Стоимость операций в тактах ЦП
http://ithare.com/infographics-operation-costs-in-cpu-clock-cycles/
https://habrahabr.ru/company/infopulse/blog/347394/ Выравнивание инструкций кода
https://dendibakh.github.io/blog/2018/01/18/Code_alignment_issues
https://www.ixbt.com/cpu/cpu_errata.html Исправление ошибок в CPU
https://www.ixbt.com/cpu/utils/pupdt501.exe Утилита, исправляющую микрокод
http://www.opennet.ru/opennews/ Неверная трактовка документации Intel привела к уязвимости в большинстве ОС
https://habr.com/company/badoo/blog/420407/ С — не низкоуровневый язык https://queue.acm.org/detail.cfm?id=3212479
https://habr.com/post/425905/ Как написать на ассемблере программу с перекрываемыми инструкциями (ещё одна техника обфускации байт-кода)
https://habr.com/post/426497/ Ядра процессора или что такое SMP и с чем его едят
https://habr.com/post/427757/ Бэкдоры в микрокоде ассемблерных инструкций процессоров x86
https://habr.com/ru/company/1cloud/blog/451356/ Как работает сжатие в объектно-ориентированной архитектуре памяти
https://habr.com/ru/company/badoo/blog/420407/ С — не низкоуровневый язык
https://habr.com/ru/company/intel/blog/466521/ C for Metal — драгоценный металл для вычислений на графических картах Intel
https://habr.com/ru/post/462385/ Новый подход может помочь нам избавиться от вычислений с плавающей запятой
https://habr.com/ru/post/465723/ Posit-арифметика: победа над floating point на его собственном поле. Часть 1
https://habr.com/ru/post/466813/ Posit-арифметика: победа над floating point на его собственном поле. Часть 2
https://habr.com/ru/post/467735/ Испытания Posit по-взрослому
https://habr.com/ru/post/467933/ И все-таки, почему Posit являются достойной альтернативой IEEE 754
https://habr.com/ru/post/468077/ Испытания Posit по-взрослому. Спектральный анализ
https://habr.com/ru/post/475370/ Алгоритм Кэхэна: как получить точную разность произведений
https://stackoverflow.com/questions/48979861/numerically-stable-method-for-solving-quadratic-equations/50065711#50065711 Numerically stable method for solving quadratic equations
https://habr.com/ru/post/507598/ Анализ кристалла сдвигового регистра у математического сопроцессора 8087
https://habr.com/ru/post/523654/ Сложение двух чисел с плавающей запятой без потери точности
https://habr.com/ru/company/vdsina/blog/525048/ Браузер и числа с плавающей запятой
https://habr.com/ru/post/525090/ Можно ли сложить N чисел типа double наиболее точно
https://habr.com/ru/post/526000/#habracut Точные и быстрые вычисления для чисел с плавающей точкой на примере функции синуса. Введение и часть 1
https://habr.com/ru/post/527226/ Точные и быстрые вычисления для чисел с плавающей точкой на примере функции синуса Часть 3_ fixed-point
https://habr.com/ru/post/531358/ Учебный видео-курс по арифметике с плавающей запятой в формате IEEE-754 Часть I
https://habr.com/ru/post/537636/ Перевод числа в строку с помощью FPU
https://habr.com/ru/post/542270/ Перевод числа в строку с помощью SIMD + FPU
https://github.com/rust-lang/rust/pull/86761 Update Rust Float-Parsing Algorithms to use the Eisel-Lemire algorithm. #86761
Более быстрый, более корректный разбор чисел с плавающей точкой
Реализация разбора чисел с плавающей точкой в стандартной библиотеке была обновлена с использованием алгоритма Эйзеля-Лемира (Eisel-Lemire), который обеспечивает как
более высокую скорость, так и лучшую корректность.
Раньше некоторые граничные случаи разобрать было нельзя, теперь это исправлено.
Более подробную информацию о новой реализации можно прочитать в описании пул-запроса.
https://habr.com/ru/company/oleg-bunin/blog/595085/ Как напечатать float