У меня были одинокие выходные, и я решил частично посвятить их изучению Rust. Это была моя давняя цель, так как у этого языка чрезвычайно блестящая и хорошая карма: он создан некоммерческой организацией, призван заменить C, имеет монады, но не само слово (что пугает ИТ-специалистов), управление памятью без GC, хорошую безопасность типов и революционная модель с заимствованием/своей памятью. Он хорошо упакован в Debian, и похоже, что в языковом сообществе уважают хорошие инженерные методы. (Я пишу все это, не зная самого языка, так что это компиляция сплетен и случайных кусков информации, которые я читал до сих пор).

У меня есть опыт работы с C, немного низкоуровневого кодирования для ZX-80 и раннего 8086 (80286, если быть точным). Мой текущий основной язык — Python, и у меня был опыт функционального программирования на предыдущих работах (haskell, ocaml, erlang). Я не изучал эти языки как таковые, но прослушал достаточно разговоров о них, чтобы иметь смутное представление об их ключевых понятиях.

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

С практической стороны: я чувствую себя крайне неполноценным с python, когда дело доходит до того, чтобы «сделать меня бинарным». Python — это первоклассный интерпретируемый язык в Debian (почти превосходит perl), но с точки зрения ОС он остается «просто скриптом». Когда вы пишете «обычное приложение» (скомпилированное в собственный код), вы можете увидеть его двоичное имя в psoutput, ldd уважать его, можно установить SUID бит, и можно использовать ассемблер или напрямую вызывать системные вызовы. В Python этого нет, как и в любом другом изолированном (несистемном) языке. Я хочу восполнить этот пробел. (И мне нужен язык, который я мог бы использовать без аскезы в исполнении!).

Итак, начнем.