🤣14🔥3🤬1
احتمالا در این چند روز اسم Mojo که زبان جدید ساخت شده توسط Chris Lattner (سازندهی LLVM) و همکارانش هست رو شنیدید.
این زبان یک سوپرسِت برای پایتون به حساب میاد (مشابه TS و JS) و در واقع از سینتکس پایتون به عنوان یک فرانت برای MLIR استفاده کرده:
به این صورت که شما هم سینتکس معمول پایتون رو دارید وهم رانتایم معمول پایتون رو، ولی این وسط یک سری چیزهای اضافه تری هم وجود داره.
قابلیت struct رو به پایتون اضافه کردند که کدهای شما در این اسکوپ، میتونن مثل یک زبان سیستمی حافظه رو به شکل دستی مدیریت کنند (allocation). همچنین مدیریت حافظه در این زبان مثل Rust دارای یک سیستم Ownership مخصوص هست. و توابع هم مثل Rust در struct ها با fn به جای def تعریف میشن.
در حقیقت یک DSL ارايه کردند که لازم نباشه برای سرعت بهتر کدهای C بنویسید و همزمان هم از امکانات MLIR بهرهمند بشید.
زبانها و کتابخانههای دیگری هم وجود دارند که از MLIR استفاده میکنند این چیز جدیدی نیست.
دلیل اینکه امکان موفقیت این زبان میتونه بالا باشه اینه که همون پایتون معمول هست، و فقط یه چند بخش اضافه تر رو باید یاد بگیرید که خیلی بزرگ هم نیست.
دلیل اینکه ممکن هست موفق نشه هم اینه که این بخش جدید، یه DSL برای شبیه سازی یک زبان سیستمی و استاتیک تایپ هست و این یک شکاف بین حالت سطح بالا و داینامیک پایتون بوجود میاره که برنامهنویسهاش بهش عادت ندارن. یعنی استفاده از اون بخش از Mojo، به همون اندازه Rust سخت خواهد بود!
اگر این وسط یه API راحتتر برای کار با MLIR به شکل یه کتابخونه جانبی برای پایتون پیدا بشه، ممکن هست Mojo با استقبال کافی روبرو نشه. مخصوصا که نه جامعهی کاربری پایتون و نه اکوسیستم اش، با هدف سیستمی بودن زبان ساخته نشدن.
بهرحال باید منتظر موند و دید.
modular.com/mojo
@DevTwitter | <Amirreza Gh/>
این زبان یک سوپرسِت برای پایتون به حساب میاد (مشابه TS و JS) و در واقع از سینتکس پایتون به عنوان یک فرانت برای MLIR استفاده کرده:
به این صورت که شما هم سینتکس معمول پایتون رو دارید وهم رانتایم معمول پایتون رو، ولی این وسط یک سری چیزهای اضافه تری هم وجود داره.
قابلیت struct رو به پایتون اضافه کردند که کدهای شما در این اسکوپ، میتونن مثل یک زبان سیستمی حافظه رو به شکل دستی مدیریت کنند (allocation). همچنین مدیریت حافظه در این زبان مثل Rust دارای یک سیستم Ownership مخصوص هست. و توابع هم مثل Rust در struct ها با fn به جای def تعریف میشن.
در حقیقت یک DSL ارايه کردند که لازم نباشه برای سرعت بهتر کدهای C بنویسید و همزمان هم از امکانات MLIR بهرهمند بشید.
زبانها و کتابخانههای دیگری هم وجود دارند که از MLIR استفاده میکنند این چیز جدیدی نیست.
دلیل اینکه امکان موفقیت این زبان میتونه بالا باشه اینه که همون پایتون معمول هست، و فقط یه چند بخش اضافه تر رو باید یاد بگیرید که خیلی بزرگ هم نیست.
دلیل اینکه ممکن هست موفق نشه هم اینه که این بخش جدید، یه DSL برای شبیه سازی یک زبان سیستمی و استاتیک تایپ هست و این یک شکاف بین حالت سطح بالا و داینامیک پایتون بوجود میاره که برنامهنویسهاش بهش عادت ندارن. یعنی استفاده از اون بخش از Mojo، به همون اندازه Rust سخت خواهد بود!
اگر این وسط یه API راحتتر برای کار با MLIR به شکل یه کتابخونه جانبی برای پایتون پیدا بشه، ممکن هست Mojo با استقبال کافی روبرو نشه. مخصوصا که نه جامعهی کاربری پایتون و نه اکوسیستم اش، با هدف سیستمی بودن زبان ساخته نشدن.
بهرحال باید منتظر موند و دید.
modular.com/mojo
@DevTwitter | <Amirreza Gh/>
👍28🤬2🤣1
#کدبوک
اگر دنبال یک منبع خوب برای مطالعه هستید این ریپو رو از دست ندید
کلی کتاب حوزه ی برنامه نویسی به زبان های مختلف
کلی هم کتاب فارسی داره برای تکنولوژی های مختلف
https://github.com/EbookFoundation/free-programming-books
@DevTwitter
اگر دنبال یک منبع خوب برای مطالعه هستید این ریپو رو از دست ندید
کلی کتاب حوزه ی برنامه نویسی به زبان های مختلف
کلی هم کتاب فارسی داره برای تکنولوژی های مختلف
https://github.com/EbookFoundation/free-programming-books
@DevTwitter
🔥11👍6🤬1
تاحالا به این فکر کردید که یک class دقیقا چی هست؟
چرا اسم سازندهها هم اسم class هستند (یا اسم خاصی دارند)؟
چرا موقع نمونه سازی از یک کلاس، مثل یک تابع صداش میزنن؟
زبانهای برنامهنویسی امروزی تقریبا همگی یا از Algol الهام گرفتهاند یا از Lisp. (و یا هردو)اولین زبان شیگرا، Simula، به شکل یک اکستنشن برای زبان Algol طراحی شده بود. Algol زبانی هست که مفهوم block و اسکوپ و برنامهنویسی Procedural با اون معروف شد.
در Algol وقتی یک بلاک اجرا میشد، میگفتند که «یک نمونه (Instance) از آن بلاک در حافظه ساخته شده» (تا بتونه اجرایی بشه)
یک خصوصیت دیگر Algol این بود که پروسیجرها مثل Rust یا زبانهای FP نیاز نبود مشخصا از return استفاده کنند. نتیجهی آخرین پردازش منطقی در بلاک به عنوان خروجی اون بلاک در نظر گرفته میشد.
همچنین هر بلاک وقتی برای اجرا به حافظه میاد، بعد از اتمام اجرا نیز از حافظه خارج میشه.
حالا، class چیه؟
یک پروسیجر که بتواند نمونهای از یک بلاک ایجاد کند، به حالتی که آن نمونه بعد از فراخانی پروسیجر به حیات خود ادامه دهد، class نام دارد. نمونههای ایجاد شده از آن بلاک، object نام دارند.
(کتاب Structured Programming بخش ۳.۳ - به اسم نویسندهها توجه کنید!)
در حقیقت class یک پروسیجر است! برای همین مثل یک تابع فراخانی میشود. بدنهی کلاس، همان بلاکای است که از آن یک نمونه (object) در حافظه ایجاد میشد.
اسم class از classification آمده. به معنی طبقهبندی. دستهبندی.
منظور از دستهبندی چی بوده؟
هدف این بوده که نمونهها قابل دستهبندی باشند. یعنی مثلا میگفتند که این نمونههای ساخته شده جزو کدام دستهبندی هستند؟ یا بهتر بگوییم، نمونهها از روی کدام class ساخته شدهاند؟
طبق این تعریف به مفهوم دیگری میرسیم که آن هم یک پروسیجر است و عملکرد مشابهی دارد: closure هر بلاک در Algol میتوانست شامل تعدادی متغیر یا یک سری از دستورات باشد. جالبتر اینکه در Algol میتوانستیم ساب-پروسیجر داشته باشیم. یعنی هر پروسیجر، می توانست شامل تعدادی متغیر و تعدادی ساب-پروسیجر باشد. این در حقیقت همان حالتی است که امروزه class رو نگارش میکنید!
یعنی class حتی از نظر نوع نگارش هم مثل یک پروسیجر معمولی بوده. اما نکتهای اصلی اینجاست: نمونه بلاک یک پروسیجر بعد از اجرا از حافظه خارج میشد!
تفاوت class و closure در این بوده که نمونه بلاک، بعد از فراخانی تابع میتوانست به حیات خود در حافظه ادامه دهد و کماکان در دسترس باشد.
اگر زبانهایی مثل Algol یا Lisp را مطالعه کنید، مغزتان سوت میکشد از حجم مفاهیم و قابلیتهایی که ما فکر میکنیم جدید هستند، ولی در واقع از دهه ۵۰ و ۶۰ برای ما باقی ماندهاند. همچنین درک بهتری از روند پیشرفت این قابلیتها خواهیم داشت.
(مثلا فکر میکنید اولین بار int از کجا آمد؟)
@DevTwitter | <Amirreza Gh/>
چرا اسم سازندهها هم اسم class هستند (یا اسم خاصی دارند)؟
چرا موقع نمونه سازی از یک کلاس، مثل یک تابع صداش میزنن؟
زبانهای برنامهنویسی امروزی تقریبا همگی یا از Algol الهام گرفتهاند یا از Lisp. (و یا هردو)اولین زبان شیگرا، Simula، به شکل یک اکستنشن برای زبان Algol طراحی شده بود. Algol زبانی هست که مفهوم block و اسکوپ و برنامهنویسی Procedural با اون معروف شد.
در Algol وقتی یک بلاک اجرا میشد، میگفتند که «یک نمونه (Instance) از آن بلاک در حافظه ساخته شده» (تا بتونه اجرایی بشه)
یک خصوصیت دیگر Algol این بود که پروسیجرها مثل Rust یا زبانهای FP نیاز نبود مشخصا از return استفاده کنند. نتیجهی آخرین پردازش منطقی در بلاک به عنوان خروجی اون بلاک در نظر گرفته میشد.
همچنین هر بلاک وقتی برای اجرا به حافظه میاد، بعد از اتمام اجرا نیز از حافظه خارج میشه.
حالا، class چیه؟
یک پروسیجر که بتواند نمونهای از یک بلاک ایجاد کند، به حالتی که آن نمونه بعد از فراخانی پروسیجر به حیات خود ادامه دهد، class نام دارد. نمونههای ایجاد شده از آن بلاک، object نام دارند.
(کتاب Structured Programming بخش ۳.۳ - به اسم نویسندهها توجه کنید!)
در حقیقت class یک پروسیجر است! برای همین مثل یک تابع فراخانی میشود. بدنهی کلاس، همان بلاکای است که از آن یک نمونه (object) در حافظه ایجاد میشد.
اسم class از classification آمده. به معنی طبقهبندی. دستهبندی.
منظور از دستهبندی چی بوده؟
هدف این بوده که نمونهها قابل دستهبندی باشند. یعنی مثلا میگفتند که این نمونههای ساخته شده جزو کدام دستهبندی هستند؟ یا بهتر بگوییم، نمونهها از روی کدام class ساخته شدهاند؟
طبق این تعریف به مفهوم دیگری میرسیم که آن هم یک پروسیجر است و عملکرد مشابهی دارد: closure هر بلاک در Algol میتوانست شامل تعدادی متغیر یا یک سری از دستورات باشد. جالبتر اینکه در Algol میتوانستیم ساب-پروسیجر داشته باشیم. یعنی هر پروسیجر، می توانست شامل تعدادی متغیر و تعدادی ساب-پروسیجر باشد. این در حقیقت همان حالتی است که امروزه class رو نگارش میکنید!
یعنی class حتی از نظر نوع نگارش هم مثل یک پروسیجر معمولی بوده. اما نکتهای اصلی اینجاست: نمونه بلاک یک پروسیجر بعد از اجرا از حافظه خارج میشد!
تفاوت class و closure در این بوده که نمونه بلاک، بعد از فراخانی تابع میتوانست به حیات خود در حافظه ادامه دهد و کماکان در دسترس باشد.
اگر زبانهایی مثل Algol یا Lisp را مطالعه کنید، مغزتان سوت میکشد از حجم مفاهیم و قابلیتهایی که ما فکر میکنیم جدید هستند، ولی در واقع از دهه ۵۰ و ۶۰ برای ما باقی ماندهاند. همچنین درک بهتری از روند پیشرفت این قابلیتها خواهیم داشت.
(مثلا فکر میکنید اولین بار int از کجا آمد؟)
@DevTwitter | <Amirreza Gh/>
👍38🔥3🤬1
دوستان وب سایت Alpha3cloud یک ساعت ویپیاس لینوکس رایگان میده با ثبت نام تا یک هفته. برای تست و دم دستی خوبه.
https://alpha3cloud.com/get-started/
@DevTwitter | <Matthew/>
https://alpha3cloud.com/get-started/
@DevTwitter | <Matthew/>
👍16🔥1🤬1
هر شغلی یک پیش نیازهایی داره ، برنامه نویسی روحیه حل مسئله و پشتکار میخواد ،اگه این دو مورد در کسی نباشه به این راحتی ها به دست نمیاد و احتمال قریب به یقین برنامهنویس خوبی نمیشه!
@DevTwitter | <Unique/>
@DevTwitter | <Unique/>
👍46🤯1🤬1
#کدبوک
اگه برنامه نویسید و رشته دانشگاهیتون کامپیوتر نبوده یا اگه کامپیوتر خوندین ولی درس ها رو خوب پاس نکردین، با خوندن این ۲ تا کتاب میتونید به دید خیلی خوبی از مدار منطقی، معماری کامپیوتر، سیستم عامل، کامپایلر، شبکه، دیتا استراکچر و الگوریتم برسین.
* فایل PDF این کتاب رو میتونید از کانال DevBooks که لینکش توی بیو هست دانلود کنید.
@DevTwitter | <Mohammad Sianaki/>
اگه برنامه نویسید و رشته دانشگاهیتون کامپیوتر نبوده یا اگه کامپیوتر خوندین ولی درس ها رو خوب پاس نکردین، با خوندن این ۲ تا کتاب میتونید به دید خیلی خوبی از مدار منطقی، معماری کامپیوتر، سیستم عامل، کامپایلر، شبکه، دیتا استراکچر و الگوریتم برسین.
* فایل PDF این کتاب رو میتونید از کانال DevBooks که لینکش توی بیو هست دانلود کنید.
@DevTwitter | <Mohammad Sianaki/>
👍43🤣4👎2🔥1
ریدمان جدید واتساپ، حتی وقتی از گوشی استفاده نمیکنید، واتساپ صداهای اطراف شما رو میشنوه.
یک کاربر با بررسی دسترسی های واتساپ و زمان استفاده از این دسترسی ها متوجه شد که وقتی خواب بوده واتساپ بارها میکروفون رو فعال کرده
ایلان ماسک در واکنش به این توییت گفته که واتساپ قابل اعتماد نیست
@DevTwitter
یک کاربر با بررسی دسترسی های واتساپ و زمان استفاده از این دسترسی ها متوجه شد که وقتی خواب بوده واتساپ بارها میکروفون رو فعال کرده
ایلان ماسک در واکنش به این توییت گفته که واتساپ قابل اعتماد نیست
@DevTwitter
👍61🤬6🤣5🤯4
نمی دونم تا حالا با فریمورک Quasar کار کردید یا نه ولی به نظرم حتما یکبار هم شده ازش استفاده کنید واقعا بین فریمورک های فرانت جزو قوی ترین ها پشتیبانی فوق العاده ای از زبان فارسی داره و مجموعه ای از UI component ها که خیلی کامله واقعا
@DevTwitter | <ghost/>
@DevTwitter | <ghost/>
👍27🤬4👎2🔥1
من هنوز نمیفهمم چرا واتساپ فیلتر شد
این بنده خدا که کلا دیتا ذخیره نمیکنه، کل ارتباطش هم که end to end هست. کانال و ... هم نداره
یعنی مثلا یه جلسه گذاشتید، توی جلسه چی بههم گفتید که خروجیش شده فیلتر کردن واتساپ
@DevTwitter | <Sourosh Ahmadi/>
این بنده خدا که کلا دیتا ذخیره نمیکنه، کل ارتباطش هم که end to end هست. کانال و ... هم نداره
یعنی مثلا یه جلسه گذاشتید، توی جلسه چی بههم گفتید که خروجیش شده فیلتر کردن واتساپ
@DevTwitter | <Sourosh Ahmadi/>
👍49🤣17👎8🤬2
یک سوال هست که خوبه چندتا چیز رو همزمان یادگرفت؟ یعنی چندتا مطلب همزمان پیش برد.
این موضوع داخل برنامه نویسی خیلی زیاد دیده میشه، ادما یکهو چندتا مطلب باهم پیش میبرن در طول روز
مثلا همزمان دارن یک فریمورک وب یاد میگیرن، و بلافاصله بعد از اون میرن سراغ یک موضوع دیگه، مثلا ساختار داده میخونن :)
این سوال من قبلا زمانی که داخل یک استارتاپ سمی مشغول به کار بودم به جوابش رسیدم :).
تو اون استارتاپ من همه کار میکردم، دواپس، بکاند، ci/cd وب اسکرپینگ و تقریبا هرچیزی که بود. چون تنها بکاند اونجا بودم
اون روزا خیلی کلافه شده بودم از موضوع، روزی ۱۰ ساعت کار میکردم و هیچاحترامی هم نبود.
خلاصه تو همون روزها درحال جستوجو داخل نت بودم که یک مقاله درباره چند وظيفه شدن کارمندای تِک خوندم.
اونجا یک مثال خیلی قشنگ زده بود، گفته بود بیایید یک cpu رو فرض کنیم، شما میتونید به یک cpu چند کار رو بدید که همزمان انجام بده، مثلا اگر ۴ تا تسک بهش بدید شاد تمام این تسکها رو به صورت همزمان پیش ببره و درنهایت در ۴ دقیقه همرو کامل تموم کنه.
اما اگه به همون cpu، همین تسکها رو به شکل دیگه ای بدید بیایید بعد از تموم شدن هر تسک، تسک بعدی بهش بدید احتمالا اون ۴ تسک رو در ۲ تا ۳ دقیقه انجام بده :)
چرا؟ چون درحالت اول باید منابع بین تسکها تقسیم شه، در حالت دوم میشه تمام منابع رو رو یک تسک متمرکز کرد :).
این دقیقا دلیلی که اگه کسی از من بپرسه میگم همیشه لحظه یک چیز رو یادبگیر و بعد از تموم شدنش برو بعدی.
داخل محیط کار هم همینه، مدیر یا منیجیر شما اگر میخاد بهرهوری بهتری داشته باشه باید همزمان یک تسک به شما بده.
@DevTwitter | <Torham/>
این موضوع داخل برنامه نویسی خیلی زیاد دیده میشه، ادما یکهو چندتا مطلب باهم پیش میبرن در طول روز
مثلا همزمان دارن یک فریمورک وب یاد میگیرن، و بلافاصله بعد از اون میرن سراغ یک موضوع دیگه، مثلا ساختار داده میخونن :)
این سوال من قبلا زمانی که داخل یک استارتاپ سمی مشغول به کار بودم به جوابش رسیدم :).
تو اون استارتاپ من همه کار میکردم، دواپس، بکاند، ci/cd وب اسکرپینگ و تقریبا هرچیزی که بود. چون تنها بکاند اونجا بودم
اون روزا خیلی کلافه شده بودم از موضوع، روزی ۱۰ ساعت کار میکردم و هیچاحترامی هم نبود.
خلاصه تو همون روزها درحال جستوجو داخل نت بودم که یک مقاله درباره چند وظيفه شدن کارمندای تِک خوندم.
اونجا یک مثال خیلی قشنگ زده بود، گفته بود بیایید یک cpu رو فرض کنیم، شما میتونید به یک cpu چند کار رو بدید که همزمان انجام بده، مثلا اگر ۴ تا تسک بهش بدید شاد تمام این تسکها رو به صورت همزمان پیش ببره و درنهایت در ۴ دقیقه همرو کامل تموم کنه.
اما اگه به همون cpu، همین تسکها رو به شکل دیگه ای بدید بیایید بعد از تموم شدن هر تسک، تسک بعدی بهش بدید احتمالا اون ۴ تسک رو در ۲ تا ۳ دقیقه انجام بده :)
چرا؟ چون درحالت اول باید منابع بین تسکها تقسیم شه، در حالت دوم میشه تمام منابع رو رو یک تسک متمرکز کرد :).
این دقیقا دلیلی که اگه کسی از من بپرسه میگم همیشه لحظه یک چیز رو یادبگیر و بعد از تموم شدنش برو بعدی.
داخل محیط کار هم همینه، مدیر یا منیجیر شما اگر میخاد بهرهوری بهتری داشته باشه باید همزمان یک تسک به شما بده.
@DevTwitter | <Torham/>
👍53👎8🤣3
توی چند تا پست بعدی قراره یه خلاصه ای از مراسم گوگل I/O رو بگیم
🔥15👍1
ویژگی جدید جیمیل به اسم Help Me Write که دستیار Ai هست برای اینکه توی نوشتن ایمیل بهتون کمک بکنه
اگه براتون سوال بود توی Gmail ابزار AI کجا قراره اضافه بشه همون قلم هست که پس زمینه مربعی آبی رنگ داره، البته الان نیست
میتونید مشخص کنید که ایمیل رو با حالتهای مختلف مثلا رسمی یا خودمونی و ... براتون ارسال کنه
@DevTwitter | <Soroush Ahmadi/>
اگه براتون سوال بود توی Gmail ابزار AI کجا قراره اضافه بشه همون قلم هست که پس زمینه مربعی آبی رنگ داره، البته الان نیست
میتونید مشخص کنید که ایمیل رو با حالتهای مختلف مثلا رسمی یا خودمونی و ... براتون ارسال کنه
@DevTwitter | <Soroush Ahmadi/>
👍14🔥1
یه سری از ویژگیهای فتوشاپ رو گوگل به صورت AI به برنامه Photos اضافه میکنه، که در واقع هدف این کار اینه کاربرای مبتدی هم بتونن ویرایش راحتی داشته باشن
@DevTwitter | <Sourosh Ahmadi/>
@DevTwitter | <Sourosh Ahmadi/>
👍20
خب PaLM ۲ به صورت رسمی رونمایی شد
برای مثال اینجا یک کد بهش میده و ازش میخواد اشکالاتش رو بررسی کنه، یا اینکه گفتن یه نسخش رو با اطلاعات پزشکی ترین کردن و تونسته تستهای پزشکی رو پاس کنه
@DevTwitter | <Soroush Ahmadi/>
برای مثال اینجا یک کد بهش میده و ازش میخواد اشکالاتش رو بررسی کنه، یا اینکه گفتن یه نسخش رو با اطلاعات پزشکی ترین کردن و تونسته تستهای پزشکی رو پاس کنه
@DevTwitter | <Soroush Ahmadi/>
👍12
خب Bard که بیشتر اخبارش هست تا خودش حالا به PaLM نسخه ۲ آپدیت شده و میتونه به ۲۰ زبان برنامهنویسی براتون کد بزنه یا کدهاتون رو دیباگ کنه و حتی توضیح بده اصن چه کدی نوشتید
به زودی زبان فارسی هم به Bard اضافه میشه
@DevTwitter | <Soroush Ahmadi/>
به زودی زبان فارسی هم به Bard اضافه میشه
@DevTwitter | <Soroush Ahmadi/>
👍21🔥3
اگر از بارد سوال کنید جوابهای کاملا بهروز همراه عکس بهتون میده، مثلا ایجا ازش در مورد جاهای دیدنی سوال شده، این دیتاهارو از موتور جستجو گوگل میگیره
@DevTwitter | <Soroush Ahmadi/>
@DevTwitter | <Soroush Ahmadi/>
👍23👎1🤬1
ویدئوی مراسم Google I/O 23 به صورت کامل
https://www.youtube.com/live/cNfINi5CNbY?feature=share
@DevTwitter
https://www.youtube.com/live/cNfINi5CNbY?feature=share
@DevTwitter
👍14🤬3
آپولو ۱۱ با هدایت یک پردازنده با کلاک 2MHz و حافظه ۴ کیلو بایت رفت ماه و برگشت.
در عصر ابتذال framework، دوستان برای کارهای ابتدایی کد مینویسند که سوپرکامپیوتر هنگ میکنه.
ازش میپرسم که چقدر حافظه استفاده کردی؟هیچ ایدهای نداره!
کد نویس باید حداقلی از سختافزار هم بدونه به خدا
@DevTwitter | <بهزاد خنجریان/>
در عصر ابتذال framework، دوستان برای کارهای ابتدایی کد مینویسند که سوپرکامپیوتر هنگ میکنه.
ازش میپرسم که چقدر حافظه استفاده کردی؟هیچ ایدهای نداره!
کد نویس باید حداقلی از سختافزار هم بدونه به خدا
@DevTwitter | <بهزاد خنجریان/>
👍63👎5🤬1