Forwarded from 👾 Geek Engineers ([ Taha. Dostifam ])
این هم از زبان برنامه نویسی Cyrus که ما موفق به ساختش شدیم.
قدیمیای کانال از روند توسعه ش خبر دارن :)
منتها حقیقتا راه دور و درازی در پیش داریم که توسعه کامپایلر مصیبت های خودشو داره. منتها با کمک و همراهی شما دوستان پیشرفت خیلی زیادی داشتیم و امیدواریم که از پس جبران حمایت های شما بر بیایم.
در حال حاضر داریم type system رو تست میکنیم تا اینکه تا حدی stable بشه. هر موقع استیبل بشه به ادامه دولوپ فیچر های high level مثل error handling و macro ها و generic type ها خواهیم پرداخت انشالله.
#cyrus
@cyrus_lang
https://github.com/cyrus-lang/Cyrus
قدیمیای کانال از روند توسعه ش خبر دارن :)
منتها حقیقتا راه دور و درازی در پیش داریم که توسعه کامپایلر مصیبت های خودشو داره. منتها با کمک و همراهی شما دوستان پیشرفت خیلی زیادی داشتیم و امیدواریم که از پس جبران حمایت های شما بر بیایم.
در حال حاضر داریم type system رو تست میکنیم تا اینکه تا حدی stable بشه. هر موقع استیبل بشه به ادامه دولوپ فیچر های high level مثل error handling و macro ها و generic type ها خواهیم پرداخت انشالله.
#cyrus
@cyrus_lang
https://github.com/cyrus-lang/Cyrus
👏19❤5🔥1
👾 Geek Engineers
این هم از زبان برنامه نویسی Cyrus که ما موفق به ساختش شدیم. قدیمیای کانال از روند توسعه ش خبر دارن :) منتها حقیقتا راه دور و درازی در پیش داریم که توسعه کامپایلر مصیبت های خودشو داره. منتها با کمک و همراهی شما دوستان پیشرفت خیلی زیادی داشتیم و امیدواریم…
بالاخره یه زبان درست حسابی که یه ایرانی ساختتش خلق شد
👌10❤2
👾 Geek Engineers
این هم از زبان برنامه نویسی Cyrus که ما موفق به ساختش شدیم. قدیمیای کانال از روند توسعه ش خبر دارن :) منتها حقیقتا راه دور و درازی در پیش داریم که توسعه کامپایلر مصیبت های خودشو داره. منتها با کمک و همراهی شما دوستان پیشرفت خیلی زیادی داشتیم و امیدواریم…
تو فکر این رفتم منم یه حرکتایی بزنم برای کامیونیتی ایران
نظری یا ایده ای دارید ؟ 🤔
نظری یا ایده ای دارید ؟ 🤔
👍11
Ninja Learn | نینجا لرن
این GIL پایتون چقدر دردسر سازه 😬
یه پست بعدا راجبش میسازم که چرا دردسر سازه و چجوری میشه دورش زد :)
❤8
https://github.com/lolgg313/HPE
یه پروژه جالب پیدا کردم
با پایتون game engine ساختن :)
جالبه کارم میکنه و باحاله
یه پروژه جالب پیدا کردم
با پایتون game engine ساختن :)
جالبه کارم میکنه و باحاله
GitHub
GitHub - lolgg313/HPE: Hamid PY Engine
Hamid PY Engine. Contribute to lolgg313/HPE development by creating an account on GitHub.
❤5🔥3👍1
Ninja Learn | نینجا لرن
یه پست بعدا راجبش میسازم که چرا دردسر سازه و چجوری میشه دورش زد :)
خب همونجور که میدونید درمورد GIL یا همون Global Interpreter Lock بحث زیاده 🤯
مشکل ما با GIL چیه؟
اینه که نمیذاره مولتیتردینگ واقعی داشته باشیم.
یعنی چی؟
یعنی نمیتونیم چندتا تسک رو همزمان روی چندتا ترد اجرا کنیم.
چرا؟
چون GIL میگه:
«در هر لحظه فقط یه ترد حق داره اجرا بشه، بقیه باید وایسن نوبتشون بشه.»
حالا نکته بامزه اینجاست:
اگه بیای چندتا ترد ران کنی، این تردا میان سر GIL دعوا میکنن کلی context switching میخوره latency میره بالا یه عالمه overhead میاد رو برنامه.
نتیجه؟ مولتیتردینگ برای کارای CPU-bound نه تنها کمک نمیکنه، بدترم میکنه برای همین باید single-thread باشه 😅
(احتمالاً خودتونم وقتی async برای CPU-bound نوشتید دیدید چه وضعیه.)
حالا چرا اصلاً GIL وجود داره؟
سؤال خوبیه 👌
خیلی خلاصه بگم نذاشته پایتون به چوخ بره 😂
چطوری؟
میاد thread safety رو برات تضمین میکنه، نمیذاره race condition بیاد وسط و همه چی بترکه.
ولی خب GIL دردسرم کم درست نمیکنه:
نمیذاره مولتیتردینگ CPU-bound داشته باشیم.
بعدم بخوای حذفش کنی هزاران لایبری که با درنظر گرفتن gil نوشته شده باید اپدیت بشن :)
و....
کلاً محدودمون میکنه.
راهحل چیه؟
1. C Extension
یعنی توابع سنگینت رو تو C بنویسی، اونجا اجرا بشه، فقط از پایتون صدا بزنی. اینجوری GIL رو میتونی دور بزنی.
2. Multiprocessing
این یکی مطرح ترین راهه. به تعداد core های CPU پروسس بالا میاری. هر پروسس مفسر خودش و در نتیجه GIL خودش رو داره اینجا واقعاً موازی میشه.
ولی اینجا یه توهمه که «ایول مشکل حل شد»…
سخت در اشتباهید 😅
چرا؟
چون:
ـprocess خیلی سنگینه، هر کدوم کلی overhead دارن.
ارتباط بین processها (همون IPC) خودش یه هزینهی جداست.
دادهها باید بین processها جابهجا بشن (queue، pipe، shared memory و …) که اینم کندی و مصرف حافظه میاره.
گزینه اپشنال شدن گیل هم توی ۳.۱۳ کامل گیل رو حذف نمیکنه میتونیم مولتی پراسسینگ و موازی سازی کنیم ولی خب خودشون هنوز تایید نکرده و ازمایشیه و کلی مشکلات داره.
گزینه هاییم هست مثل استفاده از nogil که خب یکسری مشکلات دارن که توی این پست جا نمیشن بگم
📌 خلاصه: GIL هم ناجیه، هم قاتل. ناجی چون امنیت میده، قاتل چون مولتیتردینگ CPU-bound رو ازمون میگیره. ولی خب این مورد توی I/O bound process نیست چون وقتی یه پراسس io ران میشه گیل خاموش میشه و میتونی parallel processing داشته باشی :)
➖➖➖➖➖➖➖➖➖➖
مشکل ما با GIL چیه؟
اینه که نمیذاره مولتیتردینگ واقعی داشته باشیم.
یعنی چی؟
یعنی نمیتونیم چندتا تسک رو همزمان روی چندتا ترد اجرا کنیم.
چرا؟
چون GIL میگه:
«در هر لحظه فقط یه ترد حق داره اجرا بشه، بقیه باید وایسن نوبتشون بشه.»
حالا نکته بامزه اینجاست:
اگه بیای چندتا ترد ران کنی، این تردا میان سر GIL دعوا میکنن کلی context switching میخوره latency میره بالا یه عالمه overhead میاد رو برنامه.
نتیجه؟ مولتیتردینگ برای کارای CPU-bound نه تنها کمک نمیکنه، بدترم میکنه برای همین باید single-thread باشه 😅
(احتمالاً خودتونم وقتی async برای CPU-bound نوشتید دیدید چه وضعیه.)
حالا چرا اصلاً GIL وجود داره؟
سؤال خوبیه 👌
خیلی خلاصه بگم نذاشته پایتون به چوخ بره 😂
چطوری؟
میاد thread safety رو برات تضمین میکنه، نمیذاره race condition بیاد وسط و همه چی بترکه.
ولی خب GIL دردسرم کم درست نمیکنه:
نمیذاره مولتیتردینگ CPU-bound داشته باشیم.
بعدم بخوای حذفش کنی هزاران لایبری که با درنظر گرفتن gil نوشته شده باید اپدیت بشن :)
و....
کلاً محدودمون میکنه.
راهحل چیه؟
1. C Extension
یعنی توابع سنگینت رو تو C بنویسی، اونجا اجرا بشه، فقط از پایتون صدا بزنی. اینجوری GIL رو میتونی دور بزنی.
2. Multiprocessing
این یکی مطرح ترین راهه. به تعداد core های CPU پروسس بالا میاری. هر پروسس مفسر خودش و در نتیجه GIL خودش رو داره اینجا واقعاً موازی میشه.
ولی اینجا یه توهمه که «ایول مشکل حل شد»…
سخت در اشتباهید 😅
چرا؟
چون:
ـprocess خیلی سنگینه، هر کدوم کلی overhead دارن.
ارتباط بین processها (همون IPC) خودش یه هزینهی جداست.
دادهها باید بین processها جابهجا بشن (queue، pipe، shared memory و …) که اینم کندی و مصرف حافظه میاره.
گزینه اپشنال شدن گیل هم توی ۳.۱۳ کامل گیل رو حذف نمیکنه میتونیم مولتی پراسسینگ و موازی سازی کنیم ولی خب خودشون هنوز تایید نکرده و ازمایشیه و کلی مشکلات داره.
گزینه هاییم هست مثل استفاده از nogil که خب یکسری مشکلات دارن که توی این پست جا نمیشن بگم
📌 خلاصه: GIL هم ناجیه، هم قاتل. ناجی چون امنیت میده، قاتل چون مولتیتردینگ CPU-bound رو ازمون میگیره. ولی خب این مورد توی I/O bound process نیست چون وقتی یه پراسس io ران میشه گیل خاموش میشه و میتونی parallel processing داشته باشی :)
#️⃣ #web #programming
➖➖➖➖➖➖➖➖➖➖
🥷🏻 CHANNEL | GROUP
❤🔥12❤2👍2
هرخارجی که ویوش کم میشه یه ویدیو درمورد ایران میسازه یا فارسی حرف میزنه ویوهاش میلیونی میشه 😂😂
ماهم بیایم یه مدت محتوای انگلیسی بزاریم یهو فارسی صحبت کنیم 🗿
Yea man this a business
ماهم بیایم یه مدت محتوای انگلیسی بزاریم یهو فارسی صحبت کنیم 🗿
Yea man this a business
🤣20
This media is not supported in your browser
VIEW IN TELEGRAM
فقط اونجایی که گفت برادر c رو زبان سطح بالا صدا زد 😂
🤣17🔥4
Ninja Learn | نینجا لرن
فقط اونجایی که گفت برادر c رو زبان سطح بالا صدا زد 😂
میتونم به جرعت بگم یکی از اشخاصیه که ۲۰۰ سال دیگه هم هوش مصنوعی نمیتونه جاشو بگیره🗿
❤10
Forwarded from LearnPOV
با اعضای تیم لرن پی او وی آشنا شید 🥇
🔗 مشاهده تیم ما
🏫 @LearnPOV | اولین شبکه اجتماعی آموزشی
توی صفحه تیم ما میتونید اعضای تیم LearnPOV آشنا بشید😉
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4
LearnPOV
با اعضای تیم لرن پی او وی آشنا شید 🥇 توی صفحه تیم ما میتونید اعضای تیم LearnPOV آشنا بشید 😉 🔗 مشاهده تیم ما 🏫 @LearnPOV | اولین شبکه اجتماعی آموزشی
محمد حسین خیلی خوشحالم که بعد کلی زحمتی که کشیدی تونستی پلتفرم خفنتو بیاری بالا :)❤️
ارزوی بهترینا رو برات داریم 😉
ارزوی بهترینا رو برات داریم 😉
🔥8❤1👌1
Ninja Learn | نینجا لرن
خب همونجور که میدونید درمورد GIL یا همون Global Interpreter Lock بحث زیاده 🤯 مشکل ما با GIL چیه؟ اینه که نمیذاره مولتیتردینگ واقعی داشته باشیم. یعنی چی؟ یعنی نمیتونیم چندتا تسک رو همزمان روی چندتا ترد اجرا کنیم. چرا؟ چون GIL میگه: «در هر لحظه فقط یه ترد…
میخوام توی پست بعدی interperter رو معرفی کنم به نام nogil که یه فورک از cpython هست که ادعا میکنه گیل رو حذف کرده
و خب موفق هم شده ولی یکسری مشکلات هست که بهش میپردازیم
و خب موفق هم شده ولی یکسری مشکلات هست که بهش میپردازیم
❤1