Rust for Python developers – Telegram
Rust for Python developers
2.22K subscribers
23 photos
1 video
2 files
84 links
Rust programming language for python developers

یک توسعه دهنده پایتون هستم که سعی میکنم rust یاد بگیرم.
تو این مسیر منابع و نظرات شخصی خودم رو با آیندگان هم به اشتراک میذارم

اگر به هوش مصنوعی و پایتون علاقه دارید به کانال :
@pytens
@pyhints
سر بزنید.
Download Telegram
Rust for Python developers
یک پروژه بهم داده شده که بعد از سال‌های بسیار (شاید ۸ سال) برای اولین بار پروژه رو از روز اولش هستم. کدها رو باید توی پایتون انجام بدم؛ معمار سیستم اینطوری فکر می‌کنه که پایتون توی اسکیل هم جواب میده برای این پروژه خاص. (قطعا جواب میده اما سخت هست یا سخت‌افزار…
هنوز روی ۳-۴ هستم
امروز تا عصر تقریبا نتونستم کار کنم و چندتا ویدئو رو بیشتر ندیدم
فصل ۱۰ تمام شد.

می‌دونم از برنامه عقب هستم؛ اما از عصر نشستم هم تمرینات رو کد زدم هم بخش زیادی از منطق کدهای Python رو آوردم توی Rust و بهم انگیزه داد که با این حال و اوضاع و احوالی که دارم ادامه بدم داستان رو.

یکسری بخش‌ها رو البته دست نزدم و با todo! فعلا ازش گذشتم؛ مثل database connection , ...

تصمیم بدی نبود؛ باعث شد خستگی و حال بدی کسالت ازم دور بشه ولی یک اشتباهی که کردم این بود که صبر نکردم؛ چون بعد از فصل ۱۰ ویدئوهای لایو هم میره روی تمرینات ( یک پلی‌لیست دیگه هم روی یوتبوب هست که فقط همین تمرینات رو انجام میده و با این تمرینات Rust رو میخواد آموزش بده؛ البته برای یک شخص دیگری هست)

اینم خلاصه وضعیت امروز بود؛ با توجه به کمبود زمان احتمالا از کتاب
Rust in a month of launch
میگذرم و مستقیم میرم سراغ
Zero to production in Rust

توقع هم دارم بعد از خوندن کتاب اصلی سایت نهایتا ۴-۵ ساعته این کتاب رو بخونم ولی خب فعلا از ذهنم بیرونش می‌کنم و تمرکز روی کتاب اصلی و ویدئوها هست.

در نهایت
ترجیح میدم تو مسیری که پیش میرم اشتباه کنم و درس بگیرم؛ تا اینکه از ترس اشتباه کردن هیچوقت شروع نکنم.

برای همین زودتر شروع کردم کدها رو به Rust تبدیل کردن.

توی گروه‌های pyhints نگید؛ ولی بیش از حد جذب Rust شدم.
15👍4🔥1👏1
Rust for Python developers
یک پروژه بهم داده شده که بعد از سال‌های بسیار (شاید ۸ سال) برای اولین بار پروژه رو از روز اولش هستم. کدها رو باید توی پایتون انجام بدم؛ معمار سیستم اینطوری فکر می‌کنه که پایتون توی اسکیل هم جواب میده برای این پروژه خاص. (قطعا جواب میده اما سخت هست یا سخت‌افزار…
فصل ۱۲ کتاب هم تموم شد + ویدئو‌های تا این بخش

همزمان یکسری هم به باقی کدها زدم و چندتا تمرین دیگه‌ای که دیده بودم رو انجام دادم.

بطور کلی امروز هم خوب پیشرفت.
تا قبل از فصل ۱۰ همه چیز خوب بود و سرعت بالایی داشت ولی بعد از فصل ۱۰ کتاب فقط خوندن کافی نیست بلکه تمرین مهمتر هست.

یک مشکل دیگه که دارم اینه که برای خیلی از کارها Rust چندین روش رو ارائه میده و نه فقط ۱ روش که خیلی خوبه؛ اما الان میفهمم وقتی می‌گفتند learning curve داره و سخت میشه و ... منظورشون چی هست.
مسئله اینه که خیلی وقتا نمی‌تونی تصمیم بگیری کاری که کردی روش درست هست یا نه (مخصوصا وقتی صحبت بهینه کد زدن میشه) و هر دو روش هم جواب میده.

استفاده از cargo clippy رو هم به کارهام اضافه کردم تا از همین ابتدا استاندارد کامیونیتی رو رعایت کنم.

البته اضافه کنم من سختی توی یادگیری Rust نمی‌بینم؛ شاید چون توی رزومه‌ام در گذشته با C, C++ و از همه بدتر کد زدن با Assembly X86-64 تقریبا عادت داشتم.

سعی کردم یک فروم معروف رو پیدا کنم تا یک عکس به پیوست بفرستم که متاسفانه جمع شده بود؛ خیلی سال پیش نوشته بودم:

این احمقانه‌اس که بیشتر از اینکه وقت کد زدن داشته باشم؛ باید کدهام رو دیباگ کنم.
خداحافظ C

و خب اون زمان خیلی جوان بودم و برای تست ایده‌هام نیاز داشتم سرعت توسعه بیشتری داشته باشم؛ این قدم اول من به سمت Perl بود که باعث شد بعدش با Python آشنا بشم و ...

ولی بنظرم Rust این مسئله رو نداره؛ چون قبل از تحویل کد باگ رو تو صورت آدم می‌کوبه و البته منی که بزرگتر و صبورتر شدم.

به هرحال هرچی جلوتر میرم به این نتیجه میرسم؛ که بیشتر باید با Rust کد زد و تجربه کرد. کتاب اصلی به تنهایی نمی‌تونه بهت بگه که چی رو توی چه شرایطی باید استفاده کنی و تو چه شرایطی نباید که اگر اینطوری بود قطعا ۳-۴ برابر این حجم داشت و هیچکس هم سراغ Rust نمی‌رفت.

با این همه حتی یادگیری همین مقدار هم برای کد زدن کفایت می‌کنه ولی من شخصا کد optimize رو سمتش کشش دارم حتی اگر اینطوری کد نزنم باید بلدش باشم.
16👍4🔥1
یک نکته دیگه وقتی روی چندزبان برنامه نویسی و چندین پروژه تو در تو کار می‌کنیم فقط نصب rust-analyzer روی vscode کافی نیست و ممکنه گیج بزنه

توی این شرایط بهتره این تنظیمات رو هم به settings.json اضافه کنید.

"[rust]": {
"editor.defaultFormatter": "rust-lang.rust-analyzer",
"editor.formatOnSave": true,
"editor.tabSize": 4
},
👍133🔥3
بیشترین سوالی که ازم شده راجب سرعت خوندن هست؛

روی ویدئو‌ها به سرعت 2x-3x عادت دارم و کندتر ازین نه تنها باعث یادگیری بهترم نمی‌شه که بی‌حوصله‌ام می‌کنه و تمرکزم رو از دست میدم (توی سخت‌ترین مباحث سرعت رو تا 1.75 نهایتا پایین میارم یه مدت انجام بدید عادت می‌کنید)

برای خوندن کتاب و متن سایت و ... هم اگر سرعت خوندن برام مهم باشه (بعضی کتاب‌ها خوندنش لذت بخش هست اونارو اینکارو نمی‌کنم) مثل همین کتابی که روی سایت هست.
از extension های مربوط به fast read استفاده می‌کنم مثلا
Sprint Reader
یا مواردی که برای متن رو بلند می‌خونه Text to speech شماهم اگر ابزار یا تکنیک بهتری میشناسید خوشحال میشم باهام به اشتراک بذارید.
17👍5🔥4
Rust for Python developers
یک پروژه بهم داده شده که بعد از سال‌های بسیار (شاید ۸ سال) برای اولین بار پروژه رو از روز اولش هستم. کدها رو باید توی پایتون انجام بدم؛ معمار سیستم اینطوری فکر می‌کنه که پایتون توی اسکیل هم جواب میده برای این پروژه خاص. (قطعا جواب میده اما سخت هست یا سخت‌افزار…
تا اواسط فصل ۱۵ رو پیش رفتم و فکر نمی‌کنم بیشتر ازین بتونم ادامه بدم امشب.
یک چندساعتی هم وقت گذاشتم و باقی کدهایی که برای پروژه توی پایتون مونده بود رو هم منتقل کردم.

خوبیش اینه که وقتی کدهای پایتون رو تحویل میدم تا تیم QA, Test, ... هم کارهاش رو بکنه وقت دارم و توی زمانبندی این تایم رو بهم دادند و ازونجایی که کدها به همدیگر وابسته هست و نمی‌تونم روی پروژه ادامه بدم شرکت ازم خواسته توی این تایم‌ها یکسری پروژه دیگه رو بررسی کنم و پیش ببرم.

این بخش خوب و خبر خوبش بود؛ بخش بد این قضیه این هست که بکند پروژه هم به خودم سپرده شده بخش زیادی از قضیه و خب قطعا توی پایتون به Async, Concurrency, ... نیاز داریم و با توجه به پیچیدگی‌های پروژه درحال حاضر هم MongoDB و هم PostgresSql رو داریم بعد از این مرحله دیتابیس گراف و یک Vector DB هم اضافه خواهد شد که احتمالا pgvector باشه.

نگران آینده‌اش نیستم ولی توی همین بخش کارم پیچیده‌تر شده و این یعنی باید بکند دولوپ با Rust رو هم یاد بگیرم که سخت‌ترین بخشش تا جایی که شنیدم درک و کار با Async هست.

بگذریم از کتاب و ویدئو‌ها مورد ۶ ماند متاسفانه
و کتاب هم تا اواسط فصل ۱۵ پیش رفت فصل‌های بعدی ۲ موردش برام واجب هست خوندن دقیقش و باقیش رو باز با سرعت می‌تونم پیش برم.

امروز متاسفانه ۲ ساعت وقتم سر جندمورد lifetime رفت و چون این ارورها رو ندیده بودم درکی از پیام compiler و نحوه تفسیرش نداشتم (به سادگی باقی مباحث نبود)
ولی چون سرم خلوت شده (کدها رو رسوندم تا ۲ هفته دیگه هم که QA , ... درگیر میشه احتمالا ۵-۶ روز هم اونجا سرم خلوت باشه) از فردا با اولویت استفاده از وقت‌های خالی
شبی ۲ ساعت توسعه کد و ۱ ساعت ادامه آموزش برای خودم در نظر گرفتم؛ بازم تو ادامه این مسیر اگر چیز جذاب و نکاتی بود حتما به اشتراک میذارم


ولی حتما Rust رو با کد زدن یاد بگیرید؛ برخلاف پایتون و ... با خوندن و درک کد متوجه جزئیات نمی‌شید؛ حتما به ارور بخورید و حتما قبل از سرچ سعی کنید به کمک کامپایلر حلش کنید.


پ.ن (پینوشت) :
نیم نگاهی هم به تعطیلات شهریور دارم برای یادگیری کار با دیتابیس‌ها و ...
👍25🔥3👎1👏1
از امروز سعی می‌کنم گزارش هفتگی بدم؛ مگر اینکه سورس یا مطلب جذابی پیدا کنم چون بخش زیادی از اندک وقتی که امروز داشتم سر کد زدن رفت

فقط فرصت کردم؛ نیمی از فصل ۱۵ رو بخونم.
موقع کد زدن برای درک بهتر بعضی مفاهیم بسیار سرچ داشتم ولی خب هدف اصلی کتاب هست.
👍132
توضیحات مدل :
The error is because &'static str has a static lifetime, which means the string must be valid at compile time. However, when you return an error, you're trying to store a string that's owned by myfunc and will go out of scope as soon as that function returns.
و راه حلش :
You can fix this by changing return Err(&'static ex) to return Err(ex.into_string().as_str()). This will create a new string from the error message using into_string() and then return it with a lifetime that's tied to the current function, which is what you want.

توضیحات دقیق و درست هست و اگر شبی که کد رو داشتم می‌نوشتم این توضیحات رو داشتم قطعا درجا درستش می‌کردم.
اما
چون ازش خواستم که کد کامل رو بهم برگردونه؛ توی این مرحله fail کرد؛ کد رو نوشت و بخشی که توضیح داده بود رو هم درست کرد ولی باقی بخش‌های وابسته کد رو اینکارو نکرد.

ولی با همه اینها GPT4o بعد از ۵ بار فرستادن ارورهای کامپایل خروجی بهم داد و این مدل فقط بعد از ۲ بار فرستادن ارورها.
نکته مهمتر توضیحات خیلی دقیق و درستی می‌داد که این بیشتر باعث تعجب من شده.

و من فقط دارم از Llama3.1 8b quantize 4 استفاده می‌کنم برای اینکار.

بنظرم لایق trophy هست. 🏆
12
اگر خواستید یکی رو آزار بدید
بهش بگید
Red-Black Tree

رو توی Rust پیاده سازی کنه


فکر کنم این عذاب برنامه‌نویس‌های جهنمی باشه 😂😂
🤣13👍2🤯1
Rust for Python developers
بخش سایبری کاخ سفید یا همون : Office of the National Cyber Director (ONCD) توی یک مقاله که هفته قبل منتشر شده گفته که نرم‌افزارهای آینده باید به سمت memory safe بودن حرکت کنند (لینک مقاله رو میذارم) که همین نکته بازم به نفع جامعه توسعه دهنده Rust شده و خیلی…
DARPA ( Defence Advanced Research Project Agency)

گزارشی رو منتشر کرده و در مورد پروژه‌ای به اسم TRACTOR صحبت کرده حالا داستان چیه

گفتن که مشکلات مربوط به مموری C, C++ ما و برنامه‌نویس‌ها رو پیر کرده با TRACTOR که خلاصه شده
Translating All C to Rust

هدف اینه که بصورت اتومات کدهای C رو به Rust تبدیل کنیم (کیفیت رو از دست ندیم، که احتمال زیاد LLM ها هم نقش خواهند داشت)

https://www.darpa.mil/program/translating-all-c-to-rust
👍16🔥7👏3
Rust for Python developers
از امروز سعی می‌کنم گزارش هفتگی بدم؛ مگر اینکه سورس یا مطلب جذابی پیدا کنم چون بخش زیادی از اندک وقتی که امروز داشتم سر کد زدن رفت فقط فرصت کردم؛ نیمی از فصل ۱۵ رو بخونم. موقع کد زدن برای درک بهتر بعضی مفاهیم بسیار سرچ داشتم ولی خب هدف اصلی کتاب هست.
قرار بود گزارش هفتگی بدم که بسیار بسیار درگیر شدم روی پروژه
بطوری که حتی تایم خود پروژه رو هم نداشتم (۲ تا پروژه با اولویت بالاتر بهم سپرده شد)
شرکتی هم که توی ایران باهاش کار می‌کنم یک سری مشکلات داشتیم که مجبور شدیم چندروز تا ۱۱-۱۲ شب توی شرکت بمونیم.

کتاب اصلی رو تموم کردم؛ فصل ۲۰ مونده که باید پیاده‌سازیش کنم.
پروژه هم تا جایی که پیش رفت نسخه Rust رو هم پیش بردم؛ ولی چون خیلی اون پروژه داره کند پیش میره (سمت‌ها دیگر) و البته با توجه به ماهیت فعلی پروژه تمرین جدی مثل concurrency, async, ... نداره تصمیم گرفتم ۱-۲ تا پروژه دیگه هم اضافه کنم به کارهام

اولیش تمرینی خواهد بود برای کار با لایبراری‌های ترمینال که crate.io بهم میده چون خیلی از مواردی که تو ذهنم هست حتی اگر API هم بزنم باید نسخه ترمینال هم داشته باشه.
و خب چی بهتر از یک task manager تحت ترمینال برای اینکار ؟ تسک‌های شرکت‌های مختلف priority, deadline و از همه مهمتر notification رو بهش بدم.
این پروژه علاوه بر کار با ترمینال؛ database, .... رو هم بهم یاد میده و می‌تونم تمرین کنم باهاش

دوم؛ برای یک ایده که توی ذهنم هست؛ نیاز دارم یک crawler بنویسم (البته این ۲-۳ ماه زمان داره) که خب اینم هدف گذاری کردم روی Rust اگر امکانش باشه بنویسم تا با مفاهیم مربوط به concurrency, caching, parallelization, async, .... دست و پنجه نرم کنم.
علاوه بر اون کار با دیتابیس و ... هم توی اسکیل بالاتر تست میشه
اگر بتونم کار با headless browser , ... هم توش یاد بگیرم که گل رو زدم.

پروژه سوم هم بماند چیه چون اگر بتونم دیزاین و .. اش رو انجام بدم و منطقی باشه برای پیاده‌سازی حتما بصورت open-source منتشرش می‌کنم.
ولی از طرف شرکت که چندتا bonus بگیرم روش.


اگر خواستید شما هم تمرین کنید؛ یا پروژه تمرینی با داکیومنت خوبی دارید.
زیر همین پست گیت‌هاب پروژه خودتون رو به اشتراک بذارید؛ بعضی وقتا حتی یک ابزار کوچیک هم کار خیلی‌هارو راه می‌ندازه

یادتون نره iPadOS تا همین امثال ماشین حساب نداشت.
👍174
Rust for Python developers pinned «یک پروژه بهم داده شده که بعد از سال‌های بسیار (شاید ۸ سال) برای اولین بار پروژه رو از روز اولش هستم. کدها رو باید توی پایتون انجام بدم؛ معمار سیستم اینطوری فکر می‌کنه که پایتون توی اسکیل هم جواب میده برای این پروژه خاص. (قطعا جواب میده اما سخت هست یا سخت‌افزار…»
بوقت استعفا

باید از بعضی کارهام استعفا بدم، که قویتر Rust رو دنبال کنم
بخصوص کارهایی که دیگه چیزی برای یادگیری نداره و فقط دارم به شرکت سود می‌رسونم بدون اینکه خودمم سودی ببرم.


من خیلی از پیشرفت‌هام رو مدیون وقت‌هایی هستم که به درستی تصمیم به استعفا گرفتم‌.
👍51🔥7👎5🤔2🌭2👏1🙉1
با قدرت و سرعتی که دنیای Rust داره پیشرفت می‌کنه
بنظرم خیلی اتفاقات عجیب و غریب و شاید غیر قابل باوری رخ خواهد داد.

اینو با توجه به تعداد افرادی که دارند می‌کوبندش میگم؛ البته شخصا فکر می‌کنند درکش نکردند.
مثل پایتون که وقتی من شروع کردم خیلی‌ها می‌گفتن تهش می‌تونی باهاش todo لیست‌های خودت رو بنویسی و نگهداری البته که الان Rust خیلی بهتر از اون زمان Python هست.

https://github.com/tracel-ai/cubecl
10👍2🎉1🤣1
واقعاً بعد از حداقل ۳-۴ سال Rust اولین زبانی هست که دارم میگم :

۱- خب الان باید این کد رو بزنم؛
۲- کد رو زدم
۳- اوکی چندتا باگ با کامپایلر
۴- درست شد
۵- کار می‌کنه
۶- اوکی حالا چرا کار می‌کنه ؟
۷- چرا اینجوری کد زدم ؟
۸- اصن چیکار می‌خواستم بکنم ؟
۹- هیچی از Rust نمی‌فهمم

عصبی کننده‌ شاید باشه ولی، واقعاً عاشقشم
32😁5👎3
Rust for Python developers
بوقت استعفا باید از بعضی کارهام استعفا بدم، که قویتر Rust رو دنبال کنم بخصوص کارهایی که دیگه چیزی برای یادگیری نداره و فقط دارم به شرکت سود می‌رسونم بدون اینکه خودمم سودی ببرم. من خیلی از پیشرفت‌هام رو مدیون وقت‌هایی هستم که به درستی تصمیم به استعفا گرفتم‌.
امروز ۲ تا استعفا رو تقدیم مدیریت
۲ تا شرکت کردم.

قطعاً این فشار بیشتری روی من خواهد بود برای بهبود خودم،
بخصوص پیشرفت در زمینه Rust، البته که تا جدا شدن از شرکت‌ها توی بهترین حالت ۱ ماه زمان لازم هست.

علاوه بر این حداقل ۸ موقعیت شغلی جدید هم باز می‌شه؛ چون فکر نمی‌کنم کسی مثل من توی یک شرکت همزمان :

ML engineer
Backend Developer
Linux Server Admin
DevOps

کار باشه اونم وقتی قراردادش فقط AI بوده‌.

خلاصه که خوش بینم به پیشرفت بیشتر.
46👍21👏10👎4
کسی دوره ویدئو Axum چیز خوبی می‌شناسه ؟

قبلاً هم گفتم، تکنیک کتاب خوندن من برای مباحث جدید اینطوری هست:
۱- اول بشینم یک ویدئو با آرامش ببینم (بصورت فیلم وار)
۲-در مرحله بعد شروع به خوندن کتاب کنم
۳- کد زدن و تمرین با پروژه

تو این مدت روی Axum یک مقدار این تکنیک رو دور زدم، که الان به این نتیجه رسیدم از اینجا به بعد اشتباه هست.
باید جزئیات بیشتری رو کار کنم.


البته وقت رو تلف نمی‌کنم؛ منتظر دوره خوبی که شاید هیچوقت وجود نداشته باشه و با :

Axum Introduction Youtube

دوره برای ۱ سال قبل هست، عالی نیست ازین منظر که ورژن 0.7.5 تغییرات زیادی داشته ولی خب بهتر از هیچی هست.
👍73🆒3👎1🤔1
Rust for Python developers
کسی دوره ویدئو Axum چیز خوبی می‌شناسه ؟ قبلاً هم گفتم، تکنیک کتاب خوندن من برای مباحث جدید اینطوری هست: ۱- اول بشینم یک ویدئو با آرامش ببینم (بصورت فیلم وار) ۲-در مرحله بعد شروع به خوندن کتاب کنم ۳- کد زدن و تمرین با پروژه تو این مدت روی Axum یک مقدار…
دوره ای که توی پست بالا گذاشتم از چیزی که فکر می‌کردم بهتر بود.
مخصوصا اگر مفاهیم وب رو بلد هستید.

یک مقدار سرچ و حوصله برای خوندن داکیومنت و البته اسناندارد سازی آنچه که در این دوره گفته می‌شه بکند رو براتون در میاره.
تعدادی از ویدئوهارو دیدم و قبل از اینگه بیشتر پیشرفته بشه (دیتابیس و ... چون اون موارد فارغ از Axum هست) دارم روی استاندارد سازی کدها کار می‌کنم و تمرین آنچه یادگرفتم.


اضافه کنم؛ من آدم با تمرکز یادگرفتن هستم؛ یعنی الان که هدف Axum هست؛ ترجیح میدم تمام آنچه بعنوان استاندارد بکند باهاش آشنا هستم و الان به ذهنم میرسه رو با این کتاب خونه یاد بگیرم.

برای همین روی دیتابیس و ... کار نکردم هنوز و دارم دیتای hard code جابجا می‌کنم و ...
7👍3
خب خب خب؛

جذاب شد، از امروز روزی ۲-۳ ساعت روی بکند و Rust خواهم بود با Axum البته.

دلایل انتخاب Axum رو توی گروه گفتم، موردی که باید اضافه کنم؛
من خیلی از این سال‌ها روی Django, FastApi کد میزنم (با وجود اینکه با node, Express بکند رو یاد گرفتم)
برای همین Axum رو انتخاب کردم، چون شباهت زیادی به syntax پایتون داره تا Actix و شاید همین رو بتونم پیشنهاد بدم به بچه‌هایی که از سمت node دارن میان Actix برای اون‌ها ممکنه راحت تر و آشناتر باشه.
👍14🔥4👎1