Задать вопрос
  • Как безболезненно перейти с Python на Rust?

    Как безболезненно перейти с Python на Rust?

    Учиться, учиться, учиться.
    1) Python медленный

    Питон на удивление быстрый, особенно если использовать PyPy, а сильные тормоза возникают только в особых случаях.
    2) В python нет адекватного управления памятью

    Автоматический GC - это один из самых адекватных способов управления памятью, который только придумывало человечество.
    3) В python мне приходится испльзовать кучу мегабайт библиотек (я чувствую себя тупым и бесполезным при импортировании библеотек)

    А вы импортируйте их с мыслью "я не хочу тратить кучу времени на реализацию этого всего с нуля"
    В расте вам точно также придётся импортировать кучу библиотек, как и в любом другом языке, где есть библиотеки.
    4) Python кажется игрушечным языком

    Зря так думаете. Python очень мощный.
    5) Python не подходит род микроконтроллеры (micropython - просто игрушка)

    Раст+МК для новичков тоже очень страшная вещь - посмотрите на вопросы от товарища eegmak, например, чтобы в этом убедиться.
    Micropython - вполне себе production ready инструмент для тех случаев, когда его хватает, и не нужно ужиматься в очень дешёвые чипы.
    6) Проблемы из-за GIL'а

    С какими именно проблемами вы столкнулись на практике?)
    Скорее всего, их можно решить и менее радикальными методами.

    ИМХО: вы услышали от кого-то что Rust-топ язык, а Python - игрушечный, а настоящие программисты используют ручное управление памятью и сами реализовывают всякие сложные алгоритмы и протоколы.
    Хотя обычно ещё пишут, что настоящие программисты пишут только на C, только в виме, и никогда не ищут ответы на русскоязычных форумах.

    Если я прав - задумайтесь ещё раз, какую именно вашу проблему может решить раст, которую не может решить Python.

    Если я вас не отговорил - берите rustbook (лучше способа не придумали ещё).

    Если хочется перейти на другой язык, не обязательно раст - посмотрите в сторону других языков со сборкой мусора - например C#, Go, или D. Их все можно использовать в том числе и на МК, с разной степенью извращений.
    Ответ написан
    13 комментариев
  • Есть ли аналог ad для linux?

    @Drno
    ldap не подходит?
    можно попробовать сервак на Zentyal...
    Ответ написан
    Комментировать
  • Как сделать скрипт на удаление всех людей из канала в тг?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Надо убрать лишнюю строку

    with app:
    Ответ написан
    Комментировать
  • Многопоточность vs асинхронность?

    @rPman
    Различия в подходах работы соответствующих методов, чья работа должна выполняться долго и чего то ждать (например сетевое взаимодействие но не обязательно само собой).

    Синхронное выполнение - это значит все ваши методы, выполняющие какую то задачу работают до тех пор пока эта задача не завершится, например отправка данных в сеть, запись на диск (с оговорками, существует режим записи файлов, при котором запись данных в файл происходит в буфер в памяти, а реальная запись происходит параллельно потом). В этом способе невозможно запустить два одновременных метода, например запись на диск и чтение из сети - что очень неэффективно расходует ресурсы, так как пока тут идет запись на диск - сеть не нагружена и наоборот.

    Асинхронное выполнение - это значит вызов начала действия завершается в тот же миг как был вызван, запуская процесс загрузки каким-либо способом (зачастую в другом потоке но не обязательно) и дает вам какие то инструменты получения информации о том, завершилась ли работа или нет, например callback методы, которые вызываются по завершению работы или ошибки, в параметрах которых будет выдан результат (либо для его получения будут другие методы). Т.е. вы можете запустить несколько асинхронных действий одновременно, эффективно расходуя ресурсы.

    Многопоточное - в разрезе выше описанной задачи, это подход запуска одновременно нескольких синхронных методов, которые готовы к такому запуску (эта оговорка требует примечаний километра на два текста) в отдельных потоках (треды и/или процессы) - специальных сущностях операционной системы, работающих независимо и одновременно (точнее псевдоодновременно, к примеру у вас 16 ядер процессора а у вас 100 одновременно работающих потоков, чтобы они работали одновременно система сама периодически перекидывает активные потоки между ядрами на короткое время - миллисекунды, замораживая остальные, создавая иллюзию одновременной работы), таким образом ваши методы работают одновременно, но приходится тратить силы на синхронизацию.
    Ответ написан
    Комментировать