Последние годы часто хвалят язык программирования Rust. Однако, без изучения синтаксиса и особенностей языка в нём сложно разобраться. Честно говоря, при первом просмотре дальше простых примеров я продвинуться не смог. Вроде догадываешься, что тут указываем тип переменных, амперсанд – это вроде “я только посмотреть”, но всё равно код складывался в некую мешанину иероглифов с кучей скобок и, на первый взгляд, случайно проставленных точек с запятыми. То ли дело Python, минимализм синтаксиса которого так привлекателен для неокрепших душ. Однако, так ли сложен Rust на самом деле или это миф?
Я предположил, что те базовые знания по программированию, которые предлагают распространенные курсы можно дать и с помощью Rust.
Учебные материалы по Rust
На сегодняшний день в интернете есть много высококачественных, причем, даже бесплатных материалов по изучению языков программирования (это про вводные курсы начального уровня). Заметно, что каждый автор хочет признания своих усилий и старается быть лучшим. Но в отличии от того же Питона, по Расту материалов на несколько порядков меньше. Растовцы хвастаются хорошей документацией к языку и Rustbook`ом. Но его нельзя назвать понятным пособием для начинающих. Лично мне книга “не зашла”. И не мне одному, парни не дадут соврать: ссылка, ссылка . Оказалось проще начать изучение с бесплатного курса Learn Rust from Scratch. Но вот как эффективно двигаться дальше человеку без значительного багажа знаний и опыта программирования непонятно. Разрозненные статьи в Интернете дают отрывочные знания, серьезные книги чересчур заумны.
Некоторые считают, что Rust это язык для опытных специалистов, но ведь нет объективных препятствий к тому, чтобы он стал первым языком программирования.
Не существует сложных вещей, есть сложные объяснения
Сложность создания доступных обучающих материалов проистекает, по моему мнению, от избытка знаний, интеллектуальных способностей, но, прежде всего, опыта авторов. Человеку, который беглым взглядом считывает весь листинг кода, сложно представить себе какие-то проблемы, возникающие у новичка. Сложности добавляет объем знаний, который нужно передать. Непросто выстроить подачу материала, чтобы она опиралась исключительно на ранее пройденные темы.
Однако, автор учебного материала как-то получил свои знания и опыт. Как-то же складывалось по кирпичикам общее понимание. Соответственно, этот хаотичный путь получения знаний можно повторить. Более того, этот путь можно оптимизировать. Нужно, чтобы следующее поколение программистов имело больше возможностей двигаться дальше, к новым открытиям и свершениям. Как, кто и что должен для этого делать – это тема отдельной статьи, здесь я расскажу о своем хоббийном микро-проекте.
Проба пера
При изучении Rust я начал писать себе короткую шпаргалку пройденного материала, но тут знакомый заинтересовался программированием и возникла идея подготовить для него нормальный учебный материал, чтобы он шел по моим следам и не тратил время. Эта работа, кстати, была ну очень полезной для самообучения. Когда кто-то наивно полагает, что ты лучше в чем-то разбираешься, не хочется “ударить в грязь лицом”, приходится чуть глубже вникать и меньше откладывать на потом. Очень рекомендую такой подход для самообучения.
Мои потуги не остались без критики со стороны более опытных товарищей. Вот такую остроумную рецензию я получил:
Надеюсь, что это просто дружеская гипербола и двигаюсь дальше.
При подготовке обучающего материала я вспоминал свой опыт обучения и сформулировал несколько правил правил :
Выдавать информацию дозированно. По одной небольшой теме за раз. А потом, когда базовый материал уляжется в голове, когда появится некоторая уверенность и способность считывать простой код, тогда давать следующую порцию информации.
По возможности плавно переходить от темы к теме. Одно следует за другим и подводит к следующему, как в рассказе, поэтому учащийся не перенапрягается.
Наращивать знания последовательно. Давать задачи строго в рамках пройденного материала.
Чисто академическое изложение скучно. Изложение на практических жизненных примерах, может где-то, не показать общеприменимость примера, но зато даёт четкое осознание практической полезности программирования и включает образное мышление. Поэтому материал лучше усваивается и легче вспоминается в какой-то реальной жизненной ситуации.
Не делать избыточных упрощений. Иногда хочется знать как именно нечто устроено внутри, а тебе дают упрощенную модель и её сложнее понять, следовательно запомнить и использовать.
В общем старался делать материал понятный среднему и даже слабому ученику. Пробовал, смотрел, что получается, потом упрощал, переделывал, переделывал, пока самому не становилось более менее понятно что же я хочу донести. Пытался добиться последовательности в изложении, приводил примеры прикладного характера, добавлял щепотку юмора.
Сначала я просто писал в документах гугла, но потом захотелось выложить материалы на сайт. Потом захотелось добавить подсветку кода, затем потребовалась навигация, далее возникла идея сделать более приятную для глаз темную тему. После даже зарегистрировал отдельный домен rusteon.ru. Однако, важно вовремя остановиться, поэтому показываю альфа-версию курсов по Rust.
Не обращайте внимание на декларативные разделы, там сейчас более-менее готов Курс I и выложено самое начало Курса II.
Рождение и смерть проектов
Основная проблема у курсов и прочих полезных начинаний в том, что у авторов хватает запала только чтобы начать свой проект. А потом, сталкиваясь со сложностями, с невостребованностью или нехваткой средств, автор забрасывает свою идею. Это приводит к тому, что в интернете очень много информации начального уровня, а уже среднего уровня сложности, не говоря уже о высших материях, почти не найти в связном последовательном цельном изложении. У меня такая же история. Поэтому и я здесь рассказываю о своем проекте, чтобы получить некие оценки текущего результата и понять нужно ли это кому-нибудь вообще.
Приглашение попробовать
Приглашаю тех, кто до сих пор не знаком с языком программирования Rust ознакомиться с материалами: Курс I. Rust для начинающих https://rusteon.ru/course/rust-I и некоторыми лекциями Курса II. Погружение в Rust https://rusteon.ru/course/rust-II
Очень хотелось-бы получить от вас обратную связь. Интересует насколько понятно изложен материал, где возникли трудности. Контакты на сайте.
Если вы опытный специалист, и у вас есть немного времени и желания, то посмотрите нет ли там серьезных ошибок. Прошу писать в личку или по контактам, указанным на сайте.
Вопросы для обсуждения
Чтобы этот материал был полезен всем, кто создает курсы, видеоуроки или пишет книги, поделитесь, пожалуйста, в комментариях своим мнением:
Что именно вам понравилось в тех курсах или учебных материалах, которые оставили у вас положительные впечатления?
Что вы можете посоветовать создателям обучающих материалов, чтобы учащиеся могли качественнее и быстрее усваивать материал?
Комментарии (85)
md_backend_binance
20.07.2022 19:25-11Мой опыт с растом на виндовс: Дальше установки не ушел :)))
1) не было для powershell сертификатов c доступом уровня "секюрити" для успешного окончания установки rust (версия виндовс - энтерпрайз 10)
2) после этого, в конце rust установка падал из за какого то "mvc" от новой "VSC"
на этом плюнул
IvanKlut Автор
20.07.2022 19:26+8А у меня наоборот всё как-то просто прошло, а до этого с питоном было больше телодвижений. Попробуйте ещё разок или на крайний случай в их песочнице можно с кодом поиграться (ссылка в какой-то из первых лекций есть).
aegoroff
20.07.2022 19:47+5C сертификатами ни на Windows 10 Pro ни на 11 Pro проблем не испытывал. А зачем вы вообще powershell пользуетесь для этого? загрузили https://static.rust-lang.org/rustup/dist/i686-pc-windows-gnu/rustup-init.exe и запускаете из обычной командной строки
По хорошему, лучше иметь VS Studio установленным на машине - редакции Community будет вполне достаточно. Наверно можно какой-то отдельный маленький рантайм поставить - но я лично так не пробовал, у меня есть студия (и 2019 и 2022)
Vest
20.07.2022 19:56+2Я даже не ставил себе Community версию, там достаточно иметь VS Build Tools. Вообще, у меня нет трудностей ставить тулчейн под Windows, единственное, кто мне палки в колёса вставляет, так это антивирус.
aegoroff
20.07.2022 20:02+1а точно VS Build Tools должно хватить - спасибо за уточнение! А антивирус очень странно - ни виндос Дефендер ни Касперский мне ни разу не мешали, причем последний стоит в достаточно злой конфигурации (рабочий копм)
delaklo
20.07.2022 20:05-3а меня установщик заставил скачивать вижуал студио плюс windows11sdk(не убрал галочку). Короче минус 10 гигов памяти
md_backend_binance
21.07.2022 10:34-1не понимаю почему люди минусуют за факты. Лучше бы шли на гитхаб и решали проблемы и зависимости с установщиком )
DirectoriX
20.07.2022 21:09+14Rust вообще и Rust Book в частности гораздо легче «заходят» если есть опыт программирования на
нормальныхкомпилируемых языках со статической типизацией, особенно с C-подобным синтаксисом. Тогда и не будет «случайно проставленных точек с запятыми», и многие куски документации будут просто как напоминалочка, что такое вообще бывает.mapron
20.07.2022 21:26+2Ну как сказать, у меня вот обширный опыт на С++, хелоуворлды на rust с циклами и арифметикой без проблем, но как только попытался что-то более сложное — наследования нет, виртуальных методов нет, вместо коллбеков и каррирования — делай вася агрегирование доп. классов с методами и тд и тп.
Эксперименты с Java/C# чет у меня такого дискомфорта не вызывали, там все плюс минус такое же имеется (ну иногда многословнее, а иногда и поудобнее).
Изучать я Rust однозначно буду и дальше. Но больна.lain8dono
20.07.2022 23:27+1наследования нет, виртуальных методов нет
И то и другое есть. Чего нет, так это классов. Вместо этого ООП представленно через трейты. Сходство только внешнее.
mayorovp
20.07.2022 23:54+2Как раз-таки классы есть (структуры их успешно заменяют), как и интерфейсы (трейты). Нету именно наследования классов.
lain8dono
21.07.2022 00:49+1Структуры безусловно чуточку похожи на классы и вместе с тем ими не являются. Это более простая и более низкоуровневая абстракция.
sashagil
20.07.2022 22:12+3Начал читать, имея только шапочное знакомство с Rust - глаза зацепились за фрагмент в "Плюсы Rust", "... и без сборщика мусора" (как будто это что-то хорошее :) ). Тут вероятно было бы уместно упомнятуть "строгий контроль использования памяти, не опирающийся на сборщик мусора". В C++ нет сборщика мусора (кстати, часть языка, позволявшая интеграцию сборщика мусора, существовала некоторое время в стандарте - убрали), но нет и строго контроля, легко выстрелить в ногу. В D есть строгий контороль, но есть и сборщик мусора. В дизайне Rust сознательно отказались от сборщика мусора, что имеет далекоидущие последствия из-за более сложных мер по обеспечению строгого контроля.
IvanKlut Автор
21.07.2022 09:23Спасибо за информацию. Про сборщик мусора, предположу, что идут параллели с Go.
MikeLP
21.07.2022 05:04+2Было бы классно иметь возможность скачать курс в виде PDF файла и читать офлайн в дороге и тд..
IvanKlut Автор
21.07.2022 09:27Идея интересная. Пока перед поездкой можно делать скриншот экрана, например, с помощью расширения для хрома fireshot. Все равно более одной темы за раз нет смысла загружать в память. И самое важное в обучении - это сразу кодить самому, пробовать, а что, если я по своему сделаю, ругнется ли компилятор?
MUTbKA98
21.07.2022 09:52+7Rust Book аболютно адекватен. Просто сам язык немного необычен. Он очень сильно заточен на борьбу с проблемами предыдущих поколений языков, и, если читатель не налетал многократно на все те грабли, вполне возможно, что ему такой фокус будет плохо заходить.
Ну а у тех, у кого ноги все сплошь в старых ранах от стрельбы по ногам в старые добрые времена (и все равно встречаются и свежие шрамы) - для таких это все просто музыка для ушей, и падает в подсознание очень легко.
IvanKlut Автор
21.07.2022 10:21Не спорю, адекватен, но для новичков не самый лучший старт. Глава вторая:
use std::io; fn main() { println!("Guess the number!"); println!("Please input your guess."); let mut guess = String::new(); io::stdin() .read_line(&mut guess) .expect("Failed to read line"); println!("You guessed: {guess}"); }
Тут сразу на новичка вываливается: использование библиотек, мутабельность, объект строки, заимствование, result.
Знания приносят страх.
MUTbKA98
21.07.2022 10:27+5Ну, тут от бэкграунда зависит. Те, кто хоть немного знаком c С++, или даже Java - ЭТОТ код сразу поймут даже без объяснений.
use std::io сразу ассоциируется с using namespace std; #include "<iostream>, к примеру, ну и так далее.
Вот попытка "слегка" это модифицировать - тут да, могут уже возникнуть вопросы. Но далее уже и объясняется по тексту, что и как.
mayorovp
21.07.2022 10:32+2Напротив, именно такой подход новичкам и нужен. Сначала даётся программа, потом объясняется каждая её строчка, со ссылками на будущие главы. Можно начать с готового примера и "играться" с ним — менять часть строк, смотреть что получилось...
Альтернативный подход, когда даётся 15 глав теории, без возможности опробовать это всё на практике пока не дочитаешь до конца, попросту глуп.
IvanKlut Автор
21.07.2022 11:25+1Вы описали две крайне противоположные ситуации. Истина где-то посередине. Нужно давать последовательную теоретическую базу одновременно закрепляя её практикой.
mayorovp
21.07.2022 11:42Не для любого языка это возможно.
IvanKlut Автор
21.07.2022 11:46Не соглашусь, этот подход предпочтителен не только к языкам программирования, а к любой отрасли знания. Так лучше изучается и математика и шитьё одежды.
mayorovp
21.07.2022 11:55+2Он может быть сколь угодно предпочтительным, но если язык требует чтобы код был написан в функции main — вам придётся либо начинать объяснять его с понятия функции (что странно), либо дать изучающему язык "заготовку" с этой функцией и обещанием вернуться к функциям позже.
У вас просто нет варианта "ничего не говорить про main".
ReadOnlySadUser
22.07.2022 18:01Я может быть какой-то невероятный гений, но почему такие простые концепции как функция, переменная и даже, о ужас, указатель вызывают у людей хоть какие-то проблемы с пониманием? Чёт когда я учился программировать я понял суть секунды эдак за 4, а сложность всех проблем с этими вещами - она раскрылась уже позже с опытом и решаемыми задачами.
mayorovp
22.07.2022 19:14Вопрос-то не с пониманием функции, а с тем в каком порядке что рассказывать.
ReadOnlySadUser
22.07.2022 19:17Да никак не рассказывать. Функция - понятно из математики за 5-й класс. Переменные - тем более. Просто провести аналогию и не упарываться по объяснениям пока не придёт время)
mayorovp
22.07.2022 19:49В математике функции возвращают значение. В программировании они что-то делают (особенно main). Тяжело тут аналогию провести, особенно просто…
Опять-таки, переменные в математике неизменяемые, а в программировании изменяемые придумали. И ведь этого не умолчать, не оставить на потом — это ж самые азы, если только вы не ФП рассказываете.
ShaggyCat2
21.07.2022 20:01На Хабре есть статья про то, в какой последовательности читать растбук по главам:
IvanKlut Автор
21.07.2022 20:03Да, я на неё сослался в статье. Именно в том и суть, что человек потерял кучу времени и нервов, только из-за текущей последовательности материала. Поэтому есть куда стремиться при создании обучающих материалов.
orekh
21.07.2022 10:44+2Ну, мне например не нравится как там подается инфа о разбиении на модули.
Рассказ идёт с тех модулей, которые практически никому не нужны - которые внутри того же файла, не знаю как они точно называются.
А как происходит объявление и доступ к файлам модулей - почти вскользь. Реально полезная инфа может быть подчерпнута только из пары примеров кода про файловую иерархию в конце той главы или методом тыка.
И то придется дополнительно гуглить как раньше указывались пути к модулям и как сейчас.
MUTbKA98
21.07.2022 10:51Ну самое важное в модулях - это рассказать об областях видимости и что и как с этим делать. А где это лежит - это одна строчка объяснений, что можно mod { } заменить на mod "имя", и тогда все будет искаться в файле "имя". И все (по крайней мере, в актуальной версии Rust).
orekh
21.07.2022 19:08upd: я сейчас нагуглил растбук: и либо это другой растбук; либо, с того времени как я его смотрел раньше, эта часть значительно улучшилась.
mikhanoid
22.07.2022 10:28Ваша реплика читается так: если человек не способен учиться на своих ошибках (иначе, откуда многочисленные самострелы?), то Rust легко попадёт ему в подсознание. Странное утверждение, мне кажется.
Мне кажется, наоборот, Rust надо учить одним из первых языков, пока человек не освоил алгоритмы. Иначе Rust вызывает недоумение, потому что не позволяет писать привычные алгоритмы без unsafe. Это лично для меня источник постоянного дискофорта. Никак не привыкну к идее, что простейшая биномиальная куча - это небезопасная структура данных.
mayorovp
22.07.2022 10:48+1Хм, а где в биноминальной куче нужен unsafe?
mikhanoid
22.07.2022 11:59В той реализации, которую я знаю, использован
replace
mayorovp
22.07.2022 12:07+1Но ведь replace — это безопасная функция?
mikhanoid
22.07.2022 12:20Не знаю ????????♂️: внутри у неё unsafe.
mayorovp
22.07.2022 12:22+1Но снаружи-то unsafe нет!
mikhanoid
22.07.2022 15:12То есть, если unsafe спрятать внутрь, то как бы и не считается?
DarkEld3r
22.07.2022 15:26+2То есть, если unsafe спрятать внутрь, то как бы и не считается?
Никого ведь не беспокоит, что где-то внутри условной JVM есть нативный код, который всякого натворить может?.. На джаве пишут принимая как факт, что сборка мусора работает корректно и всяких сишных UB не случится.
Мне кажется, что и ансейф надо примерно так же воспринимать. Разве что с поправкой, что авторы произвольных библиотек могут быть менее аккуратны, чем авторы самого языка и стандартной библиотеки.
DirectoriX
22.07.2022 20:56+1Да вообще вся std так или иначе обращается к ОС (память выделить, тред запустить, файл открыть-прочитать-записать) — выходит, по вашей логике на Rust ничего нельзя написать без unsafe?
Siemargl
23.07.2022 01:28-1для точного ответа стоит просто почитать исходники std и популярных либ =)
DarkEld3r
22.07.2022 14:51Мне кажется, наоборот, Rust надо учить одним из первых языков, пока человек не освоил алгоритмы.
Это тоже спорно. (:
Ограничения раста проще понять вдоволь потоптавшись по граблям С или С++. Иначе может быть непонятно ради чего это всё.
mikhanoid
22.07.2022 15:16+1Мало кто учил тот же Си, начав с Ассемблера, чтобы потоптаться по граблям Ассемблера, и понять, ради чего это всё. Проблема в том, что у опытного программиста возникают вопросы к выразительности Rust. Точно так же, как у программистов на Ассесблере возникли вопросы к Си. А новичок воспримет это всё как данность.
DarkEld3r
22.07.2022 15:22Это, конечно, исключительно мой личный опыт, но с С++ на раст переключился относительно легко. Был, конечно, период привыкания, но без особых страданий.
amarao
21.07.2022 11:05+3Rust - очень сложный для изучения и очень простой для использования язык. Связано это не с сложностью языка, а с тем, что под ковёр GC не заметаются множество понятий, которые требуют внимания от программистов. Освоив их и научившись в рамках этих понятий размышлять о коде, программист становится лучше. А компилятор ему в этом помогает, отлавливая мелкие отклонения в логике и ошибки.
В целом, стримы Jon Gjengset'а на ютубе - пока лучшее, что я видел. А Fault Lore (блог автора Rustonomicon'а) - самое жутко-прекрасное, что я читал.
IvanKlut Автор
21.07.2022 11:28+1Хочу заметить, что сложный для изучения не потому, что сложный, а потому, что мало кто уделяет внимания базовым вещам в обучении языка. Я приводил в статье ссылку на курс на educative.io, там всё достаточно просто изложено, почти на уровне обычных курсов по Питону.
amarao
21.07.2022 11:58Вы знаете, я несколько лет учу Раст, при весьма хорошем бэкграунде как в Си так и в Питоне, и я могу сказать, что Rust - очень сложный для изучения язык. При том, что есть иллюзия простоты (которая потом хорошо поддерживается компилятором для человека, который знает эту сложность), но попытка понять что такое place expression и кто является владельцем place expression начинает взрывать мозг по мере попыток думать об этом. Неявные заимствования, сравнение unsized значений, появление эфимерных ссылок в момент создания указателей...
Siemargl
21.07.2022 14:13-5Вы знаете, я несколько лет учу Раст, при весьма хорошем бэкграунде как в Си так и в Питоне
потерянные годы. зачем?
для абстрактных, но малоприменяемых знаний был же универ
amarao
21.07.2022 14:28+6Ну, я мог вместо изучения Rust'а пройти все части Ведьмака и Киберпанк. Это было бы засчитано за потерянные годы?
Rust - это отдушина здравого смысла и манифестация Касталии (из игры в биссер). Наконец-таки в индустрии кто-то что-то делает на совесть не срезая углы.
А ещё бонусом открывается возможность написать любую программу, которую хочешь. Даже если это рендеринг шрифтов в opengl в реальном времени 144 раза в секунду. Этой возможности мне очень сильно не хватает в питоне, где "нарисовать картинку" просто, а показать её на экране - big deal, с нюансами.
А ещё вдумчивое чтение документации по Расту открывает многие аспекты современных компьютеров. Например, если бы не Rust, я бы никогда не разобрался с linux memory model, потому что оно слишком странно написано; а в рамках примитивов Rust (окей, окей, С++ с фэнсервисом) - куда разумнее и лучше.
При этом копание в Rust не оставляет PTSD как, например, ходьба по сишным граблям с type aliasing.
Siemargl
21.07.2022 15:01-2Вот подмена понятий не нужна. Все написано на С, и если ты эту модель понимаешь, то понимаешь мир, иначе никакой язык тебя не спасет (ассемблер как второй вариант).
Раст это всего лишь реализация привязывания одной руки, чтобы ты второй не выстрелил в ногу.
Этакий черный квадрат Малевича. Идеал ничего.
amarao
21.07.2022 15:54+3У современного Си модель памяти соответствует С++.
Речь про https://en.cppreference.com/w/cpp/atomic/memory_order
Старинный "обычный" C никакого acquire/release не поддерживает.
Siemargl
21.07.2022 17:01-3Какой то странный дерейл.
С эмбедщиками пить не советую.
amarao
21.07.2022 17:06+5При чём тут эмбеддщики? Вы когда последний раз видели компьютер с одним процессором? Уже давно 2-4-6-8-12-24-32-48-64-128-256 ядер. И вот там-то модель памяти становится критически важной, потому что ошибка с режимом доступа к памяти приводит к фантастическим глюкам, включая прыжки в будущее (потому что спекулятивное исполнение).
А "sequential на всё" превращает ваш компьютер в тыкву по производительности.
Siemargl
21.07.2022 17:14-3Дерейл на какой то невиданный "режим доступа к памяти" и ирония в том, что раст то как раз "sequential на всё". Удачи.
Siemargl
23.07.2022 01:32-2я не зря упомянул эмбедщиков - они точно знают, какие у них операции атомарные, а какие - нет.
а это все из очередной попытки писать
АБСОЛЮТНУЮ МАШИНУабсолютно переносимый коди да, про бэкграунд в питоне, лучше в приличном обществе не заикаться...
Siemargl
23.07.2022 12:27-1Это недостижимый идеал, в погоне за которым появляется куча избыточных абстракций.
mayorovp
23.07.2022 12:53+1А чего это он недостижимый-то?
И даже если так, почему приближение к нему рассматривается как что-то плохое?
amarao
23.07.2022 11:18+2да, я только что собрал виндовый бинарь из ровно того же сырца, как и линуксовый, и это было круто.
А про бэкграунд в питоне - why not? Есть жирнючие ценные проекты на нём написанные, которые нужно сопровождать. Если же учесть, что у меня основная работа вообще вокруг ансибла с testinfra строится, то что мне использовать, кроме питона? Писать модули на перле, маме на зло?
Siemargl
23.07.2022 12:29-2писать то можно, хвастаться не стоит =)
получается как в резюме писать про успешное окончание дет.сада
amarao
23.07.2022 13:13+2Моё резюме касается только меня и людей, которые мне будут деньги платить. Вы, вероятнее всего, считаете, что питон - это детский сад, и все благородные доны должны писать на coq (haskell, whatever). Но я подозреваю, что тщательно написанный на самом вами любимом языке программирования код окажется в большой неприятной заднице, потому что вендор железки, с которой вы хотите работать, срал на стандарты и обновления, и надо использовать netmiko, которую (увы, увы!) на coq никто не портировал. Либо лично изобретать тайминги слипов после отправки команд по устаревшей версии ssh, отсутствующей во всех современных ОС.
mikhanoid
22.07.2022 10:55До Rust были языки, спроектированные "по науке". Поэтому высказывание "наконец-то" выглядит странным. Примеры: Haskell, ML, Scheme, Oberon, Algol и так далее.
Модель памяти Linux описана в терминах работы железа. Не очень понятно, что именно в этом описании "странно".
Ну, и, наконец, рендеринг шрифтов 144 раза в секунду на OpenGL от языка не зависит: шейдеры будут с одинаковой сокростью работать. От языка зависит сложность составлерия и загрузки этих шейдеров. Но, вроде, на Python это не сложно сделать. Не уверен, что сложнее, чем в Rust.
Siemargl
23.07.2022 01:35-2До Rust были языки, спроектированные "по науке". Поэтому высказывание "наконец-то" выглядит странным. Примеры: Haskell, ML, Scheme, Oberon, Algol и так далее.
И они всем практически мертвы, на практике не используются (еще Эйфелль). Экстраполяция очевидна
amarao
23.07.2022 11:15+1Эта наука учитывает модель вычислителя, не совсем соответствующую реальному компьютеру, что создаёт значительный оверхед (а то и глупости, типа i30 и u31 в OCaml).
Шрифты рендерятся в процессоре, а не в видеокарте, видеокарта их отображает.
И я очень хочу посмотреть как вы это будете делать на питоне без массивной коллекции so-файлов, выполняющих реальную работу.
IvanKlut Автор
22.07.2022 17:18+1Спасибо большое, что пишете про опечатки, я это ценю и сразу исправляю.
Ales_Nim
Добрый день, а на чем делали сам сайт? Самописный или какой-то движок готовый?
IvanKlut Автор
Айтинити, ядро Друпала + обвес, чтобы можно было нормально работать обычным людям и верстальщикам. Давнишняя история.
Ales_Nim
Спасибо, я уж грешным делом подумал что-то опенсорсное
IvanKlut Автор
Опенсорсное, но не раскрученное, если будет интерес, предоставлю исходники.
pfr46
Как по мне так ужасно не удобно справа листинг глав.
IvanKlut Автор
Просто он не сильно важен (внизу есть ссылки на следующую, предыдущую лекции), а если слева, то много на себя внимания берет. Если окно браузера сузить, то меню вообще сложится, чтобы никак не отвлекать от основного текста.
pfr46
В том и дело, что как раз он и отвлекает. Уже как бы стандарт де-факто о расположение списка страниц слева. Какое бы online мануал не взять. Будь то pdf, документация на API или список классов к какой-нибудь библиотеки. Или даже список файлов в проекте хоть IDE хоть приложения типа CAD.
nikolas78
К списку справа я уже привык, а то, что основной текст прижимается к левому краю экрана, пока привыкнуть не могу)
И еще, я бы при регистрации спрашивал бы только ник и почту. А опросник можно оставить на потом.