#prog #julia #article
Why I no longer recommend Julia (перевод)
My conclusion after using Julia for many years is that there are too many correctness and composability bugs throughout the ecosystem to justify using it in just about any context where correctness matters.
In my experience, Julia and its packages have the highest rate of serious correctness bugs of any programming system I’ve used, and I started programming with Visual Basic 6 in the mid-2000s.
Why I no longer recommend Julia (перевод)
My conclusion after using Julia for many years is that there are too many correctness and composability bugs throughout the ecosystem to justify using it in just about any context where correctness matters.
In my experience, Julia and its packages have the highest rate of serious correctness bugs of any programming system I’ve used, and I started programming with Visual Basic 6 in the mid-2000s.
Хабр
Почему я больше не рекомендую Julia
Много лет я пользовался языком программирования Julia для преобразования, очистки, анализа и визуализации данных, расчёта статистики и выполнения симуляций. Я опубликовал несколько опенсорсных пакетов...
Блог*
#prog #rust #моё Если вы хоть когда-то писали на Rust код, который имеет дело с окрестностями на квадратной сетке, то вы знали, как с этим неудобно работать. Индексы в Rust беззнаковые — просто прибавить 1 и -1 нельзя (впрочем, можно на nightly), проверить…
Наконец-то дошли руки поправить код в гисте и на godbolt. Спасибо, @synrst
❤1👍1
Сова пишет…
Причина, почему ZigLang сразу летит в помойку
Далее в комментариях Серёжа ещё возмущается
🤯1
Forwarded from AlexTCH
Writing portable code is hard: https://www.chemistryworld.com/news/structures-in-more-than-150-papers-may-be-wrong-thanks-to-nmr-coding-glitch/4010413.article
Which meant the script worked fine on Windows while producing incorrect results on GNU/Linux. This jeopardizes some 150 chemistry papers.
The error is the result of a simple file sorting problem. On operating systems without default file name sorting, the script fails to match the files containing a conformer’s free energy with its chemical shift – leading to an overall wrong value.
Which meant the script worked fine on Windows while producing incorrect results on GNU/Linux. This jeopardizes some 150 chemistry papers.
Chemistry World
Structures in more than 150 papers may be wrong thanks to NMR coding glitch
Chemical shift-calculating bug casts doubt on studies ranging from natural product discovery to biosynthesis
😁3😢3
#politota
tass.ru/politika/14659127
Это буквально признание в том, что Россия не является правовым государством.
tass.ru/politika/14659127
Это буквально признание в том, что Россия не является правовым государством.
ТАСС
Госдума приняла в I чтении законопроект о неисполнении постановлений ЕСПЧ в России
Депутаты также приняли законопроект, согласно которому постановления ЕСПЧ больше не будут основанием для пересмотра решений, принимаемых российскими судами
💩19❤1👍1😁1😢1
#prog #rust #rustreleasenotes
Вышла новая версия Rust 1.61.0! Как всегда, я ограничусь только интересным мне, за остальным смотрите полные записи о релизе.
▪️Заметно расширены возможности const fn. Теперь в них можно, загибайте пальцы:
* создавать, передавать и кастовать fn-указатели, а также трейт-объекты;
* принимать и возвращать
* иметь ограничения в виде трейтов на типы в обобщённых const fn.
При всём этом вызывать методы трейтов всё ещё нельзя. Тем не менее, даже это весьма полезно, ибо в const fn теперь можно использовать ассоциированные типы и константы. В частности, в моём коде к статье "Как написать Fizzbuzz на собеседовании" (кстати, если вы её вдруг ещё не прочитали — рекомендую) теперь можно написать так:
А, и ещё целую пачку методов на сырых указателях теперь можно применить и в const-контексте.
▪️Функция с
▪️С версии Rust 1.26.0
▪️
▪️
▪️Наконец-то пофиксили более чем годовой старости баг с недостаточными проверками ограничений на ассоциированные типы в трейт-объектах, который позволял сделать свой
▪️Предикаты для
▪️Число хешей для ограничений сырых строковых литералов снизили с щедрых 65535 (
На этом всё, всё остальное по ссылке.
Вышла новая версия Rust 1.61.0! Как всегда, я ограничусь только интересным мне, за остальным смотрите полные записи о релизе.
▪️Заметно расширены возможности const fn. Теперь в них можно, загибайте пальцы:
* создавать, передавать и кастовать fn-указатели, а также трейт-объекты;
* принимать и возвращать
impl Trait
;* иметь ограничения в виде трейтов на типы в обобщённых const fn.
При всём этом вызывать методы трейтов всё ещё нельзя. Тем не менее, даже это весьма полезно, ибо в const fn теперь можно использовать ассоциированные типы и константы. В частности, в моём коде к статье "Как написать Fizzbuzz на собеседовании" (кстати, если вы её вдруг ещё не прочитали — рекомендую) теперь можно написать так:
const fn to_str_by_type<T: NumericValue, const N: usize>() -> Str<{ N }> {
to_str(T::VALUE)
}
И, соответственно, реализацию AsStr
написать немного иначе:impl<T, const N: usize> AsStr<{ N }> for T
where
T: NumericValue,
{
const VALUE: Str<{ N }> = to_str_by_type::<Self, { N }>();
}
(опустить значение константы, к сожалению, нельзя). Разумеется, с подобным инструментарием можно сделать и что-то более интересное, но более интересных примеров у меня нету.А, и ещё целую пачку методов на сырых указателях теперь можно применить и в const-контексте.
▪️Функция с
impl Trait
в возвращаемом типе теперь может быть рекурсивной, и внутри неё возвращаемый тип не будет непрозрачным (на самом деле это скорее побочный эффект сложного изменения, смотри PR)▪️С версии Rust 1.26.0
main
может возвращать также Result<(), E: Debug>
, при этом на ошибке она выводилась в stderr при помощи форматирования Debug
, и это поведение не подлежало кастомизации. Теперь же его можно настроить при помощи реализации трейта Termination для некоего своего типа — main
теперь должен возвращать значение некоторого типа, реализующего этот трейт.▪️
{Stdin, Stdout, Stderr}::lock
теперь возвращают соответствующие guard-ы, параметризованные не временем жизни ссылки на self
, а 'static
. Это безопасно, поскольку значения этих типов являются доступом к глобальным ресурсам. Данное изменение наконец позволяет писать просто:let mut stdin = std::io::stdin().lock();вместо
let stdin = std::io::stdin();
let mut stdin = stdin.lock();
▪️Вы когда-нибудь хотели удалить из вектора все элементы, удовлетворяющие некоторому предикату, но при этом модифицировать оставшиеся? Новодобавленные Vec::retain_mut (а также VecDeque::retain_mut) к вашим услугам.▪️
ManuallyDrop<T>
всегда должен был иметь такое же представление в памяти, как и T
. Теперь это прописали явно в документации.▪️Наконец-то пофиксили более чем годовой старости баг с недостаточными проверками ограничений на ассоциированные типы в трейт-объектах, который позволял сделать свой
transmute
в safe коде.▪️Предикаты для
all
и any
внутри cfg
теперь всегда вычисляются полностью, а не лениво. Это позволяет раньше ловить ошибки с ошибочной условной компиляцией.▪️Число хешей для ограничений сырых строковых литералов снизили с щедрых 65535 (
u16::MAX
) до абсолютно зверских 255. Кошмар! </sarcasm>На этом всё, всё остальное по ссылке.
blog.rust-lang.org
Announcing Rust 1.61.0 | Rust Blog
Empowering everyone to build reliable and efficient software.
👍7🔥1
Кресты на моей кукухе
Photo
На LinkedIn, кстати, та же фигня. Ещё и Ruby зачем-то подсовывает
#prog #rust #article
Rust: A Critical Retrospective
Still, after spending a couple years in the foxhole with Rust and reading countless glowing articles about the language, I felt like maybe a post that shared some critical perspectives about the language would be a refreshing change of pace.
Rust: A Critical Retrospective
Still, after spending a couple years in the foxhole with Rust and reading countless glowing articles about the language, I felt like maybe a post that shared some critical perspectives about the language would be a refreshing change of pace.
❤5👍1
Forwarded from Life of Tau
программирование на расте - боль
программирование на крестах - страдания
я мазохистка и предпочитаю боль
программирование на крестах - страдания
я мазохистка и предпочитаю боль
👎5👍3