1.83K subscribers
3.23K photos
127 videos
15 files
3.52K links
Блог со звёздочкой.

Много репостов, немножко программирования.

Небольшое прикольное комьюнити: @decltype_chat_ptr_t
Автор: @insert_reference_here
Download Telegram
Раз уж тут так много новых людей — и особенно много тех, с кем я совершенно не знаком — пожалуй, стоит рассказать немного о себе и об этом канале.

Меня зовут Антон, я студент человек студенческого возраста и в настоящий момент я работаю программистом, по работе пишу в основном... Да, на Rust, а как вы догадались? Я люблю Rust и ненавижу примерно все остальные языки программирования. Круг моих интересов относительно широк, но на канал изливается в основном программирование (серьёзно, около половины постов с хештегом #prog). Этот канал изначально планировался как удобная свалка ссылок, материалов и #meme-ов, и... Он таковым, в сущности, и остался. В своё оправдание я могу сказать, что все статьи (выкладываемые с хештегом #article) я всегда читаю перед тем, как выложить, так что делюсь я тем, что считаю сто‌ящим своей аудитории.

Также ведение своего канала сподвигнуло меня на написание своих постов (и иногда даже перевод чужих статей), которые я выкладываю под хештегом #моё (как, впрочем, и созданные мною мемы). В их числе я хотел бы отметить:
- написание трейта, гарантирующего нулевой размер типа
- оптимизация размера итератора из стандартной библиотеки Rust (увы, не принятая)
- реализация zero-cost форматировщиков даты
- разбор различных способ реализации полиморфизма, с их достоинствами и недостатками
- эпические "Хроники замыканий" в 3 (пока что) частях: раз, два, три
- деликатный и глубокий анализ недостатков регулярных выражений

Для удобства привожу список всех хештегов на канале (может быть пополнен в будущем):

#3dcg
#abnormalprogramming
#algo
#amazingopensource
#anime
#art
#article
#bash
#bio
#blogrecommendation
#c
#cinema
#clojure
#cpp
#csharp
#db
#demoscene
#design
#dotnet
#erlang
#game
#go
#idris
#itsec
#haskell
#js
#java
#julia
#justrustaceanthings
#kbd
#life
#math
#mechanics
#meme
#menacingopensource
#ml
#mood
#music
#outoflinestorage
#parsing
#performancetrap
#php
#pixelart
#politota
#postgresql
#prog
#psy
#puzzle
#python
#quotes
#regex
#retroit
#r
#rust
#rustasync
#rustforlinux
#rustreleasenotes
#rustlib
#scala
#science
#serde
#shell
#soc
#softskills
#sql
#successstory
#suckassstory
#tips
#typescript
#video
#web
#zig

#бомбёжкипост
#культурнаяпрограмма
#лингво
#моё
#право
#трудовыебудни

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

Добро пожаловать на канал!
👍8🤮1💩1🤡1
#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.
#prog #julia #rust #rustlib #article

Первая статья — Shelling Out Sucks — рассказывает, что не так с языковыми средствами для запуска шелла (такими, как в Perl и в Ruby с backtick-строками, например). Тезисно:

1. Для интерполяции переменных используется обычная строковая интерполяция, которая не экранирует символы со специальным значением для шелла — что ломает пайплайны, если туда затёсывается, скажем, пробел или кавычка.
2. Для исполнения команды запускается шелл, который, в свою очередь, уже запускает переданную команду — что не слишком эффективно и, вообще говоря, избыточно.
3. Ошибки по умолчанию проглатываются (из-за посредника в виде процесса шелла), а при использовании средств вроде set pipefail ошибки недостаточно подробны, так как не говорят, какая именно команда завершилась ошибкой.
3.1. Некоторые команды оболочки и программы используют код завершения не для передачи статуса ошибки, а для передачи полезной информации (grep, например), что плохо сочетается с set pipefail.

В статье Put This In Your Pipe рассказывается, как эта проблема была решена в Julia. В языке также присутствует синтаксис backtick-строк, но он реализует другой функционал. А именно:

* вместо немедленного запуска команды строка формирует объект, который представляет собой команду. В частности, на этом этапе строка делится на имя запускаемой программы и её аргументы.
* синтаксис для интерполяции значений (не только переменных, но и выражений) уже делает необходимое экранирование.
* интерполяция массивов работает аналогично shell expansion вместо вставки разделённых пробелами строк.
* функции для запуска команд порождают процессы и собирает их коды возврата самостоятельно, без делегации командной оболочке.

В Rust есть библиотеки для запуска команд, основанные на похожих принципах: xshell (от Алексея Кладова) и более продвинутая duct, позволяющая пайпить команды. Документация xshell прямо отсылает к "Shelling out sucks" и "Put this in your pipe", а документация duct дополнительно рассказывает о том, какие ловушки закрывает.

P. S.: тот факт, что в Unix-like системах до сих пор нет вменяемого способа завершить дерево процессов более чем единичной глубины — это охренеть как странно.
👍6
#prog #rust #julia #article

Rust vs Julia in scientific computing

One of the main objectives of Julia is solving the two-language problem. This means that by using Julia, you don't have to prototype in a dynamic language like Python for flexibility and later rewrite the code in a compiled language like C/C++ for performance.

This goal did catch me while picking a programming language for my bachelor's thesis in physics. But after regularly using and even teaching
Julia, do I still think that Julia solves that two-language problem?

TL;DR: нет.

Но автор также указывает на сильные стороны Julia и на то, в каких ситуациях её применение более осмысленно.
Блог*
#prog #rust #julia #article Rust vs Julia in scientific computing One of the main objectives of Julia is solving the two-language problem. This means that by using Julia, you don't have to prototype in a dynamic language like Python for flexibility and later…
#prog #julia

Из статьи узнал про Pluto.jl. Лично не щупал, но, судя по всему, эта штука решает одни из самых больших претензий к Jupiter-ноутбукам: автоматический перезапуск зависимых ячеек (т. е. никакого неявного мутабельного стейта) и нормальное управление зависимостями с записываемыми версиями. То есть значительно более воспроизводимая вещь.
🔥41