اینکه js و html و css و sql و (در آینده معلوم نیست چی...)، با چند پاردایم و شیوهی کد نویسی مختلف، با نیم نگاه به سرور و نیم نگاه به کلاینت، همه رو در یک فایل بریزیم، شاید الان براتون مایه سرگرمی یا شاید هم تعجب شده باشه، ولی متاسفانه باید عرض کنم که این روش توسعه بخاطر اکوسیستم و جامعهی عجیب اون زبان نه تنها مورد قبول واقع میشه، بلکه بخاطر شیوع گستردهاش به زودی به یک امر کاملا نرمال و استاندارد در این حرفه در میاد.
@DevTwitter | <Amirreza Gh/>
@DevTwitter | <Amirreza Gh/>
👎33👍9🤣5🤬1
#به_سوی_گا
جدیدا ثبت نام تو سایت ها برای ما ایرانیها داره هی سخت تر و سخت تر میشه
الان اکثر سایت های خدماتی که حتی خدمات رایگانشون رو میخوای، اینطورین که باید اطلاعات کردیت کارتت رو بدی، حدود یک دلار کسر میکنن، بعد از یه هفته و پس از تایید هویتتون یک دلار رو برمیگردونن.
نمونه ی بارزش AWS و DigitalOcean، کلی امکانات رایگان داره، ولی برای همونا هم کردیت کارت میخواد :")))
@DevTwitter
جدیدا ثبت نام تو سایت ها برای ما ایرانیها داره هی سخت تر و سخت تر میشه
الان اکثر سایت های خدماتی که حتی خدمات رایگانشون رو میخوای، اینطورین که باید اطلاعات کردیت کارتت رو بدی، حدود یک دلار کسر میکنن، بعد از یه هفته و پس از تایید هویتتون یک دلار رو برمیگردونن.
نمونه ی بارزش AWS و DigitalOcean، کلی امکانات رایگان داره، ولی برای همونا هم کردیت کارت میخواد :")))
@DevTwitter
🤬62👍12🤯5🤣1
از این پس Gmail هم تیک آبی داره
چهارشنبه گوگل اعلام کرد کنار اسم بعضی از ایمیلها تیک آبی رو نشون میده تا وقتی تصمیم دارید به شرکت معروفی ایمیل بزنید یا ایمیلی براتون ارسال بشه ، شما از رسمی بودنش مطمئن باشید.
البته شرایط گرفتنش آسون نیست و چیزهایی مثل برند ثبت شده و اتصالش به جیمیل و ... لازم داره.
https://workspaceupdates.googleblog.com/2023/05/expanding-gmail-security-BIMI.html?m=1
@DevTwitter | <Soroush Ahmadi/>
چهارشنبه گوگل اعلام کرد کنار اسم بعضی از ایمیلها تیک آبی رو نشون میده تا وقتی تصمیم دارید به شرکت معروفی ایمیل بزنید یا ایمیلی براتون ارسال بشه ، شما از رسمی بودنش مطمئن باشید.
البته شرایط گرفتنش آسون نیست و چیزهایی مثل برند ثبت شده و اتصالش به جیمیل و ... لازم داره.
https://workspaceupdates.googleblog.com/2023/05/expanding-gmail-security-BIMI.html?m=1
@DevTwitter | <Soroush Ahmadi/>
👍36🤬2
صابر راستی کردار، خالق فونت وزیرمتن (همون فونت زیبایی که روی تلگرام دسکتاپ و گوگلداکز و...) و کلی فونت دیگه به سرطان مبتلا شده و طبق نوشتههای وبلاگش تو شرایط بدی به سر میبره.
این آدم انقدر بلند نظره که از کسی درخواست کمک مالی نداشته. اما همه میدونیم سرطان هزینه داره. بهترین راه برای کمک به ایشون donation تو سایت خودشه
پست بلاگش
صفحه ی فونت و امکان دونیشن با تومان یا کریپتو:
https://rastikerdar.github.io/vazirmatn/
@DevTwitter | <Mehdi Moshtaghi/>
این آدم انقدر بلند نظره که از کسی درخواست کمک مالی نداشته. اما همه میدونیم سرطان هزینه داره. بهترین راه برای کمک به ایشون donation تو سایت خودشه
پست بلاگش
صفحه ی فونت و امکان دونیشن با تومان یا کریپتو:
https://rastikerdar.github.io/vazirmatn/
@DevTwitter | <Mehdi Moshtaghi/>
🔥62👍25🤯8❤2
فریمورک های محبوب بک اند با بیشترین Star در گیتهاب:
1. Laravel - 73.3K
2. Django - 70.3K
3. Spring Boot - 67K
4. Flask - 62.8K
5. Express - 60.8K
6. Nest - 56.4K
7. Ruby on Rails - 52.8K
8. Meteor - 43.4K
9. Koa - 34K
@DevTwitter
1. Laravel - 73.3K
2. Django - 70.3K
3. Spring Boot - 67K
4. Flask - 62.8K
5. Express - 60.8K
6. Nest - 56.4K
7. Ruby on Rails - 52.8K
8. Meteor - 43.4K
9. Koa - 34K
@DevTwitter
👍63👎9🔥5🤣4
یک ابزار باحال برای فرانت وجود داره که شما میتونید ولیدیت laravel رو برای js داشته باشید
میتونه خیلی کاربردی باشه
https://github.com/proengsoft/laravel-jsvalidation
@DevTwitter
میتونه خیلی کاربردی باشه
https://github.com/proengsoft/laravel-jsvalidation
@DevTwitter
👍12👎8🔥2🤣1
روحالله دهقانی فیروزآبادی، معاون علمی ریاست جمهوری در نشست خبری درباره اختصاص اینترنت مخصوص به برخی کسبوکارها گفت: اسم این اینترنت، اینترنت طبقاتی نیست بلکه اینترنت حرفهای است. معاونت علمی یکی از پیشنهاددهندگان این طرح بوده و فکر میکنم تا دو، سه ماه دیگر این طرح اجرایی شود.
@DevTwitter | <ماهنامه پیوست/>
@DevTwitter | <ماهنامه پیوست/>
🤬89🤣8👍2👎1
یک مسالهی فراگیر در بازار فناوری ایران، حوزههای به طرز عجیبی «باریک» است که آدمها برای خودشون تعریف میکنن؛ مثلا «BI کار»؛ «php کار». این رویکرد به یک سرعتگیر برای شرکتها تبدیل شده - و جلوی رشد خود آدمها رو هم میگیره و اصلا مفهوم مهندس ارشد (senior) عوض شده.
متوجه تخصصی شدن کارها و این که همه چیز در «مهندس نرمافزار» جا نمیشه هستم، ولی بحث افراط در این امره. مهندس نرمافزار قراره بتونه SQL query بنویسه و داده تحلیل کنه، گراف بکشه و داشبورد بسازه، release و production بفهمه. نه از پیش، بلکه یعنی هر وقت لازم شد بتونه یاد بگیره.
فرض کنید یکی قراره یه داده رو در قالب xml تبادل کنه ولی بگه «من json کارم و xml کارِ من نیست». عجیبه، نه؟ اگر یکی بگه «من php کارم و پایتون کارِ من نیست» هم همینطور والا. بسیاری از این حوزههای باریکی که مد شده («دیتاساینتیست»، «دیتا آنالیست»، «دیتا انجینییر») هم همینطور.
بحث «کارِ من نیست» نادرسته. همهی اینها (شاید حالت عمیقشون نه، ولی دراین سطحی که اینجا رایجه) در یک دایره هستن: مهندسی نرمافزار. بحث «هزینهی یادگیری» است: اگر من برم SQL یا پایتون یا مقدمات ML یاد بگیرم، یک ماه عقب میافتم. میصرفه؟ حالا یا آره یا نه. همه در یک دایرهان.
یادگرفتن مهارتها/تکنولوژیهای لازم از شاخصههای مهندس متوسط/intermediate و نه حتی ارشده - بر اساس نردبان تعاریف سطحِ گوگل که در بازار معروفه و در شرکتها زیاد استفاده میشه. حتی مهندسهای تازهکار/junior هم هرچند ازشون انتظار نمیره، در عمل چنینان چون میخوان رشد کنن.
نفرمایید «اونجا گوگله فرق میکنه». اولا از نظر کیفیت افراد، اون تصویری که فکر میکنید نیست. دوما اتفاقا باید گفت «حتی» گوگل هم که حوزه آدمها درش بسیار محدوده (سال تا سال فقط یک پیچ مشخص سفت میکنی) آچار فرانسه میخواد؛ در شرکت کوچکتر که انتظار گستره/breadth بیشتر هم میره.
خلاصه اگر به رشد خودتون و شرکتتون علاقمندید، در این تعاریف «باریک» از تخصصهای دمِ دستی بازبینی کنید - و برای کارهای ساده که هر کس باید بتونه خودش یاد بگیره و انجام بده پشت صف ticket تیم data/BI/SRE/… معطل نشید. امیدوارم این پیام رو بدون گارد بخونید.
@DevTwitter | <Kian/>
متوجه تخصصی شدن کارها و این که همه چیز در «مهندس نرمافزار» جا نمیشه هستم، ولی بحث افراط در این امره. مهندس نرمافزار قراره بتونه SQL query بنویسه و داده تحلیل کنه، گراف بکشه و داشبورد بسازه، release و production بفهمه. نه از پیش، بلکه یعنی هر وقت لازم شد بتونه یاد بگیره.
فرض کنید یکی قراره یه داده رو در قالب xml تبادل کنه ولی بگه «من json کارم و xml کارِ من نیست». عجیبه، نه؟ اگر یکی بگه «من php کارم و پایتون کارِ من نیست» هم همینطور والا. بسیاری از این حوزههای باریکی که مد شده («دیتاساینتیست»، «دیتا آنالیست»، «دیتا انجینییر») هم همینطور.
بحث «کارِ من نیست» نادرسته. همهی اینها (شاید حالت عمیقشون نه، ولی دراین سطحی که اینجا رایجه) در یک دایره هستن: مهندسی نرمافزار. بحث «هزینهی یادگیری» است: اگر من برم SQL یا پایتون یا مقدمات ML یاد بگیرم، یک ماه عقب میافتم. میصرفه؟ حالا یا آره یا نه. همه در یک دایرهان.
یادگرفتن مهارتها/تکنولوژیهای لازم از شاخصههای مهندس متوسط/intermediate و نه حتی ارشده - بر اساس نردبان تعاریف سطحِ گوگل که در بازار معروفه و در شرکتها زیاد استفاده میشه. حتی مهندسهای تازهکار/junior هم هرچند ازشون انتظار نمیره، در عمل چنینان چون میخوان رشد کنن.
نفرمایید «اونجا گوگله فرق میکنه». اولا از نظر کیفیت افراد، اون تصویری که فکر میکنید نیست. دوما اتفاقا باید گفت «حتی» گوگل هم که حوزه آدمها درش بسیار محدوده (سال تا سال فقط یک پیچ مشخص سفت میکنی) آچار فرانسه میخواد؛ در شرکت کوچکتر که انتظار گستره/breadth بیشتر هم میره.
خلاصه اگر به رشد خودتون و شرکتتون علاقمندید، در این تعاریف «باریک» از تخصصهای دمِ دستی بازبینی کنید - و برای کارهای ساده که هر کس باید بتونه خودش یاد بگیره و انجام بده پشت صف ticket تیم data/BI/SRE/… معطل نشید. امیدوارم این پیام رو بدون گارد بخونید.
@DevTwitter | <Kian/>
👍59👎22🤬1🤣1
#کدنمک
معماری Serverless همونطور که از اسمش پیداست یعنی معماری بدون سرور. در این معماری سرور وجود نداره. سرویسهای وب به طور معجزه آسایی ساخته میشن و کار میکنن. بزرگترین مزیتاش هم بحث هزینههاست. مثلا ساخت سایتی مثل دیجیکالا اگر قبلا ۴۰۰ هزار تومن بود، الان فقط پول فرانتاش حساب میشه.
@DevTwitter | <Amirreza Gh/>
معماری Serverless همونطور که از اسمش پیداست یعنی معماری بدون سرور. در این معماری سرور وجود نداره. سرویسهای وب به طور معجزه آسایی ساخته میشن و کار میکنن. بزرگترین مزیتاش هم بحث هزینههاست. مثلا ساخت سایتی مثل دیجیکالا اگر قبلا ۴۰۰ هزار تومن بود، الان فقط پول فرانتاش حساب میشه.
@DevTwitter | <Amirreza Gh/>
🤣62👍4🔥4🤯2
این گوگل ۱۹۹۸ هست
تقریبا همه اعتقاد دارن تا امروز تغییر زیادی نداشته. ولی حالا وال استریت میگه گوگل تصمیم داره خونه تکونی کنه
مثلا دیگه لینک سایت هارو نشون نمیده و احتمالا به اسم سایت و آیکون کفایت میکنه.
ویدیوهای بیشتری از یوتیوب داخل نتایج نمایش داده میشه و اصل کار یعنی پروژه Magi که قراره یه AI به نتایج گوگل اضافه بشه «شاید Bard باشه» رو هم توی این تغییرات داریم.
بیشتر این تغییرات قراره همین امسال یعنی ۲۰۲۳ اتفاق بیفته و ایده کلی پشت این کار افزایش محبوبیت گوگل برای نسل جدید هست.
البته گوگل توی استفاده از AI برای نتایج جست جو مثل بینگ تازه کار نیست
تقریبا از سال ۲۰۲۱ داره خیلی جدی از هوش مصنوعی استفاده میکنه
طبق تجربهای که از بینگ AI داریم یعنی استفاده بیشتر از سایتهایی که جزو ۲۰ جایگاه اول هستن برای منابع، پس میشه گفت احتمال زیاد تغییرات جدید گوگل بازدهی نتایج صفحه ۳ به بعد رو کاهش میده، یعنی اهمیت قرار گرفتن در صفحه یک و بعد دو گوگل برای صاحبان سایتها بیشتر میشه.
@DevTwitter | <Soroush Ahmadi/>
تقریبا همه اعتقاد دارن تا امروز تغییر زیادی نداشته. ولی حالا وال استریت میگه گوگل تصمیم داره خونه تکونی کنه
مثلا دیگه لینک سایت هارو نشون نمیده و احتمالا به اسم سایت و آیکون کفایت میکنه.
ویدیوهای بیشتری از یوتیوب داخل نتایج نمایش داده میشه و اصل کار یعنی پروژه Magi که قراره یه AI به نتایج گوگل اضافه بشه «شاید Bard باشه» رو هم توی این تغییرات داریم.
بیشتر این تغییرات قراره همین امسال یعنی ۲۰۲۳ اتفاق بیفته و ایده کلی پشت این کار افزایش محبوبیت گوگل برای نسل جدید هست.
البته گوگل توی استفاده از AI برای نتایج جست جو مثل بینگ تازه کار نیست
تقریبا از سال ۲۰۲۱ داره خیلی جدی از هوش مصنوعی استفاده میکنه
طبق تجربهای که از بینگ AI داریم یعنی استفاده بیشتر از سایتهایی که جزو ۲۰ جایگاه اول هستن برای منابع، پس میشه گفت احتمال زیاد تغییرات جدید گوگل بازدهی نتایج صفحه ۳ به بعد رو کاهش میده، یعنی اهمیت قرار گرفتن در صفحه یک و بعد دو گوگل برای صاحبان سایتها بیشتر میشه.
@DevTwitter | <Soroush Ahmadi/>
👍41👎6🔥1🤣1
ساکنین سیستان بلوچستان، خراسان جنوبی و شهر های اطراف تهران میتونن بورسیه ی دیجیکالا بشن و آموزش رایگان برنامه نویسی ببینن.
حتی سیستم هم در اختیارشون قرار میدن
جزئیات بیشتر:
https://about.digikala.com/education-ta-code/
@DevTwitter
حتی سیستم هم در اختیارشون قرار میدن
جزئیات بیشتر:
https://about.digikala.com/education-ta-code/
@DevTwitter
👍73🔥5🤯5🤣3
این حرکتی که آمازون پرایم زده هم باحاله.
تو ذهن بعضی ها اینجوریه که مونولیثیک یه پترنی عه که نباید ازش استفاده کرد و همه چی باید بشکنه به ریز ترین فانکشنالیتی و سرویس مستقل بشه. تبلیغ سنگین این csp ها هم بی تاثیر نیست.
بیا، الان نود درصد سیو کردن با ماگریت کردن به مونولیثیک
https://www.primevideotech.com/video-streaming/scaling-up-the-prime-video-audio-video-monitoring-service-and-reducing-costs-by-90
@DevTwitter | <Sina/>
تو ذهن بعضی ها اینجوریه که مونولیثیک یه پترنی عه که نباید ازش استفاده کرد و همه چی باید بشکنه به ریز ترین فانکشنالیتی و سرویس مستقل بشه. تبلیغ سنگین این csp ها هم بی تاثیر نیست.
بیا، الان نود درصد سیو کردن با ماگریت کردن به مونولیثیک
https://www.primevideotech.com/video-streaming/scaling-up-the-prime-video-audio-video-monitoring-service-and-reducing-costs-by-90
@DevTwitter | <Sina/>
👍13🤣2🤬1
اگر زبان انگلیسی بلد نباشید، احتمال اینکه در برنامهنویسی پیشرفت کنید کم هست.
اگر هم زبان انگلیسی بلد باشید تضمینی برای این پیشرفت نیست، ولی حداقل به انبوهی از منابع آموزشی رایگان (در هر موضوعی، نه فقط برنامهنویسی) دسترسی پیدا میکنید.
از یاد گرفتن یک زبان دوم ضرر نمیکنید.
@DevTwitter | <Amirreza Gh/>
اگر هم زبان انگلیسی بلد باشید تضمینی برای این پیشرفت نیست، ولی حداقل به انبوهی از منابع آموزشی رایگان (در هر موضوعی، نه فقط برنامهنویسی) دسترسی پیدا میکنید.
از یاد گرفتن یک زبان دوم ضرر نمیکنید.
@DevTwitter | <Amirreza Gh/>
👍111🤣3❤1👎1
DevTwitter | توییت برنامه نویسی
یک مسالهی فراگیر در بازار فناوری ایران، حوزههای به طرز عجیبی «باریک» است که آدمها برای خودشون تعریف میکنن؛ مثلا «BI کار»؛ «php کار». این رویکرد به یک سرعتگیر برای شرکتها تبدیل شده - و جلوی رشد خود آدمها رو هم میگیره و اصلا مفهوم مهندس ارشد (senior)…
من چند سال پیش داشتم با جمعای از بچههای این شرکت گندهها صحبت میکردم. ما همه تازهکار بودیم. یکی که گوگل بود، خیلی پسر خوبی بود، میگفت که پروژه که داره روش کار میکنه، اضافه کردن یه تابع به کتابخونه firebase swift بود. این پسر هیچی غیر از swift بلد نبود.
بعدش من گفتم روی چی کار میکردم.
من اون ماه، داشتم پشتیبانی از پروتکل QUIC و HTTP3 رو در سیستم پخش بار (load balancer) لایه ۴ کلودفلر پیاده میکردم. که این با کد Go و به شکلی distributed پیاده میشه برای control plane، و با کد C eBPF که در کرنل اجرا میشه برای data plane.
اون فرد توی گوگل نیاز نداشت خیلی دیتا بررسی کنه، یا کار خاصی کنه غیر از پیادهسازی خود کد. کار من نیاز داشت که کلی دیتا اینترنت جهانی، و دیتا جزئی مربوط به پکتها رو بررسی کنم، و طبق اون یه چیزی رو پیاده کنم و deploy کنم که هیچ کانکشن، تو کل دیتاسنترها، قطع نشه. بله.
اون کارمند گوگل که فقط swift بلد بود، کارش این بود و نیاز نبود چیزی فراتر از اون انجام بده. منم کارم متفاوت بود و نیاز بود کلی با دیتا بازی کنم و چیزهای دیگه.
خلاصه: کاری با گوگل نداشته باشید، کرمنداشون خیلی دوست دارن برای همه بگن که چجوری باشید.
طبق محیط که توش هستید عمل کنید، اگه بهت خیلی پول نمیدن و فرصت زیادی نیست توی شرکتت، زیاد خودتو اذیت نکن. به جای اینکه فکر کنی چجوری میتونی مهندس بهتری باشی، فکر کن چجوری میتونی بری توی یه محیط بهتری کار کنی که نیازاش خیلی جالبه و فرصت یاد گرفتن بیشتره.
و همه جا دنیا این داستان باریک رو داریم، شاید سیلیکون ولی نباشه چون واقعاً اون جور آدم نمیتونه اونجا کار گیر بیاره و نمیتونه اونجا زنده بمونه!
@DevTwitter | <Mark Pashmfouroush/>
بعدش من گفتم روی چی کار میکردم.
من اون ماه، داشتم پشتیبانی از پروتکل QUIC و HTTP3 رو در سیستم پخش بار (load balancer) لایه ۴ کلودفلر پیاده میکردم. که این با کد Go و به شکلی distributed پیاده میشه برای control plane، و با کد C eBPF که در کرنل اجرا میشه برای data plane.
اون فرد توی گوگل نیاز نداشت خیلی دیتا بررسی کنه، یا کار خاصی کنه غیر از پیادهسازی خود کد. کار من نیاز داشت که کلی دیتا اینترنت جهانی، و دیتا جزئی مربوط به پکتها رو بررسی کنم، و طبق اون یه چیزی رو پیاده کنم و deploy کنم که هیچ کانکشن، تو کل دیتاسنترها، قطع نشه. بله.
اون کارمند گوگل که فقط swift بلد بود، کارش این بود و نیاز نبود چیزی فراتر از اون انجام بده. منم کارم متفاوت بود و نیاز بود کلی با دیتا بازی کنم و چیزهای دیگه.
خلاصه: کاری با گوگل نداشته باشید، کرمنداشون خیلی دوست دارن برای همه بگن که چجوری باشید.
طبق محیط که توش هستید عمل کنید، اگه بهت خیلی پول نمیدن و فرصت زیادی نیست توی شرکتت، زیاد خودتو اذیت نکن. به جای اینکه فکر کنی چجوری میتونی مهندس بهتری باشی، فکر کن چجوری میتونی بری توی یه محیط بهتری کار کنی که نیازاش خیلی جالبه و فرصت یاد گرفتن بیشتره.
و همه جا دنیا این داستان باریک رو داریم، شاید سیلیکون ولی نباشه چون واقعاً اون جور آدم نمیتونه اونجا کار گیر بیاره و نمیتونه اونجا زنده بمونه!
@DevTwitter | <Mark Pashmfouroush/>
👍57👎2🤣2🤬1
🤣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