COMPΞZ 🧬
395 subscribers
1.87K photos
52 videos
24 files
738 links
متخصص کامپیوتر و نرم‌افزار • سازنده • هنرمند و طراح • مجموعه‌دار • نویسنده • تحلیل‌گر • مشاور استارتاپی و ایده‌پرداز

𐎲𐎴𐎠𐎼𐎴𐎫𐎹 𐏃𐎢𐎶𐎠𐎫𐎹

We create because the world deserves better code.

https://linktr.ee/compez
Download Telegram
دردناک است، زندگی در مملکتی که مردمش، تاوان نفهمیِ عده‌ای را می‌دهند که حتی حاضر نیستند حقیقت را ببینند.
این ارزشمنده که مخاطب به پستت توجه می‌کنه و بعد بدون اینکه به من بگه میره ۷۴ صفحه تحلیل می‌سازه و در قالب یک ساختاری از پروژه که توی مخزن آموزش داده بودم برای من گزارش تهیه می‌کنه.

حالا AI کارش بده؟ بده که باعث می‌شه کارآموزی مدرن شکل بگیره؟ طرف مخزنی که ساختم رو تحلیل کرده و بعد نشسته با آموزه‌هایی که توش گذاشتم یه طرح ارائه داده.

خب چه چیزی بهتر از این؟! 😉 همه چیز با سرعت بسیار زیادی در حال تغییر هست؛ ساختن پیچیده و سخت نخواهد بود؛ فقط باید باهوش باشی و سریع.
COMPΞZ 🧬
این ارزشمنده که مخاطب به پستت توجه می‌کنه و بعد بدون اینکه به من بگه میره ۷۴ صفحه تحلیل می‌سازه و در قالب یک ساختاری از پروژه که توی مخزن آموزش داده بودم برای من گزارش تهیه می‌کنه. حالا AI کارش بده؟ بده که باعث می‌شه کارآموزی مدرن شکل بگیره؟ طرف مخزنی که…
من معتقدم خیلی طول نمی‌کشه افرادی که نا امید نیستن و شکست ناپذیرن حتی اگه در شرایط کنونی در وضعیت بحرانی اقتصادی قرار گرفتن؛ کسانی که تنبل هستن و به دنبال پول مفت در آوردن هستن رو حذف خواهند کرد.

این‌ها شما رو حذف خواهند کرد نه هوش مصنوعی شما رو.

زحمت کشیدن هزینه داره، باید هزینه کنی! یا از زمانت، یا از جیبت یا از دانشت بذاری! و اگرنه منم بلدم حرف مفت بزنم! هزینه نداره که! پولی هم بابتش نمی‌پردازم.

هیچ کس قرار نیست پول مفت بده به کسی اونم در قالب ایردراپ یا هر چیزی که خیلی‌ها بهش عادت کردن؛ این سیستمیه که در انتظار همست دست من و شما هم نیست.
Genyleap
🎉 GenyConnect v1.4.880 has been released! This update includes fixes for several reported issues, improved stability. Thank you to everyone who reported bugs, tested builds, and helped improve GenyConnect. ❤️ https://github.com/genyleap/GenyConnect/r…
🎉GenyConnect v1.4.894 released! 🔼

This update brings UI improvements, enhanced multilingual support (including Persian), and fixes for several reported issues to provide a smoother and more reliable experience.

Thanks to everyone who shared feedback, reported bugs, and helped us improve GenyConnect. ❤️

https://github.com/genyleap/GenyConnect/releases/tag/v1.4.894
Please open Telegram to view this post
VIEW IN TELEGRAM
COMPΞZ 🧬
🎉GenyConnect v1.4.894 released! 🔼 This update brings UI improvements, enhanced multilingual support (including Persian), and fixes for several reported issues to provide a smoother and more reliable experience. Thanks to everyone who shared feedback, reported…
فارسی عشق است! این حداقل کاریه که توسعه‌دهنده‌های ایرانی باید بهش بها بدن.

زبان فارسی، زبان ترکی، کردی و هر چیزی که در این کشور بهش صحبت می‌کنیم رو به محصولاتتون اضافه کنید چه اشکالی داره.

بذارید مخاطب حس بی‌گانگی نکنه! این چینی‌ها همیشه هرچی می‌سازن اول زبون چینی رو می‌کنن توش حتی کامیت‌هاشون هم زبان چینیه توی گیت‌هاب بعد بعضی‌ها همچین با فارسی غریبن. 😐

بیا اینم جزئیات فایل راهنما به فارسی:

https://github.com/genyleap/GenyConnect/blob/main/readme/README.fa.md
Please open Telegram to view this post
VIEW IN TELEGRAM
COMPΞZ 🧬
فارسی عشق است! این حداقل کاریه که توسعه‌دهنده‌های ایرانی باید بهش بها بدن. زبان فارسی، زبان ترکی، کردی و هر چیزی که در این کشور بهش صحبت می‌کنیم رو به محصولاتتون اضافه کنید چه اشکالی داره. بذارید مخاطب حس بی‌گانگی نکنه! این چینی‌ها همیشه هرچی می‌سازن اول…
صحبت سر این که واقعاً پروژه‌ها باید به چه زبانی باشن خیلی زیاده. من بعد از سال‌ها کار کردن روی پروژه‌های مختلف به پروژه‌های زیادی برخوردم که یا عموماً انگلیسی خالص بودن یا عموماً چینی یا روسی! حتی بوده طرف توضیحات کد رو هم خالص به روسی نوشته! این دیگه چه مسخره‌بازیه؟! تعصب به زبان داخل یک پروژهٔ جهانی؟ جهان روسی رو نمی‌فهمه! فارسی رو ترکی رو نمی‌فهمه! زبان علمی مهمه.

درستش اینه که شما زبان علمی رو پیش‌فرض قرار بدی که می‌شه انگلیسی.

بعد زبان‌های مهم دیگه رو بهش اضافه کنی و اگه خصومتی یا خورده شیشه‌ای چیزی نداشته باشی فارسی رو بهش اضافه می‌کنی! چون من دیدم حتی ایرانی‌های مقیم آمریکارو که معتقدن فارسی با این رسم‌الخط ربطی به ایران نداره! این غلطه! پس به چی ربط داره؟ تو دوست داری Persian ببینی ولی رسمش خط راست به چپ هست؛ طرف ۱۵۰ سال پیش گذاشته رفته از این مملکت هفت پشت با زبان فارسی غریبه دلیل نمیشه تو فارسی رو حذف کنی چون اون خوشش نمیاد! حال نمی‌کنه انگلیسی برای همین منظوره.

مستندات روی مخازن همیشه باید به صورت پیش‌فرض انگلیسی باشن و بعد به زبان‌های مختلف توسعه پیدا کنن.

در محیط محصولات هم انگلیسی باید پیش‌فرض باشه و زبان‌های دیگه گزینشی باشن.

اما اگه بخوای در سطح حرفه‌ای تر حرکتی بزنی که در هر کشور یا موقعیت جغرافیایی (یا حتی متناسب با VPN) و آی‌پی مخاطب محتوا بر مبنای همون موقعیت رندر بشه؛ در این شرایط می‌تونی حرکات حرفه‌ای تر بزنی یه ساختار مبتنی بر تشخیص وضعیت سیستم بدی که محصولات حرفه‌ای بهش توجه ویژه‌ای دارن.

مثلاً من می‌تونم بیام روی همین GenyConnect کاری کنم کسی که مثلاً توی چین هست، نرم‌افزار خودکار به زبان چینی رندر بشه! برای ایران فارسی و ب رای هرچیزی غیر این‌ها زبان‌های انگلیسی و ...

پس شد این:
برای مخازن، چند زبانه پیش‌فرض همیشه انگلیسی.

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

همهٔ این‌ها زمانی مهم نمی‌شه که محصول و مخاطب هدف شما فقط داخل ایران باشه به زبان فارسی باشه و مهم هم نباشه یه کاربر خارجی می‌بینتش یا نه باز هم من باشم برای مخاطب ارزش میدم چند زبان رو می‌ذارم با هر زبانی که دلش خواست استفاده می‌کنه.

این چیز‌ها رو معمولاً طوری ایجاد می‌کنن که قابل توسعه و گسترش باشه. همکاری برای ترجمه توسط خود مخاطبین و علاقه‌مندان به توسعهٔ متن‌باز شکل می‌گیره. ولی الآن با AI این کارها دیگه خیلی راحت‌تره نباید بی‌اهمیت شمرده بشه.
۵/۵/۵ چیش خاصه؟ 😏 برای من که هیچیش خاص نیست.
COMPΞZ 🧬
۵/۵/۵ چیش خاصه؟ 😏 برای من که هیچیش خاص نیست.
با تمام احترامی که به عنوان کربلایی قائلم؛ این تقویم هیچ شباهتی به تقویم ایرانی نداره.

حتی از اسمش هم وحشت دارید بدبختای روانی؟! البته از امثال شما خلخالیون و تهفه انگلیسی‌ها انتظاری هم نیست. خیلی زشته ایران رو فقط ۵۰ سال اخیر تعریف کنی! نشان از بدبختی و کم فهمی و وحشی‌گری شماها داره.

والا مغول اینطوری بود که با حضورش در هر جا هر اثری از اصالت اونجا بود رو حذف می‌کرد که مبادا آیندگان در مورد واقعیت‌ها بدونن. از کتاب گرفته تا آثار هنری، فرهنگی و ...

ولی غافل از اینکه هر چیزی قابل حذف نیست؛ روحش آرام و یادش جاودان. 🫡
COMPΞZ 🧬
با تمام احترامی که به عنوان کربلایی قائلم؛ این تقویم هیچ شباهتی به تقویم ایرانی نداره. حتی از اسمش هم وحشت دارید بدبختای روانی؟! البته از امثال شما خلخالیون و تهفه انگلیسی‌ها انتظاری هم نیست. خیلی زشته ایران رو فقط ۵۰ سال اخیر تعریف کنی! نشان از بدبختی و…
ما یه مثالی توی ترکی داریم می‌گیم؛ گَمیده اوتوروب، گمیچینین گوزون چیخاردیر.

این حال حکایت شما پر رو‌های دوهزاریه که به فارسی میشه: کسی که نشسته توی کشتی ناخدا و چشم ناخدارو در میاره. 😄

عجب! واقعاً فکر کردین صاحاب خونه‌این نه؟ یعنی نشد یه بار یه نفر از شما با من بحث کنه توی کلهٔ پوکش نشانی از وجود مغز پیدا کنم همش پوچ، همش حرص، همش تنفر! همش کینه!!! بابا بشر اینهمه کینه اینهمه وحشی‌گری رو از کجا میاری تو یکم آروم باش یکم آدم باش دیگه چه خبرته! سرو تهش چقدر عمر می‌کنی مگه! کل ایران رو بارها دادن به امثال شما ولی آخرش برگشته شده همونی که بوده! صد‌ها سال حتی زبان فارسی رو هم از این مملکت دریغ کردن ولی تهش شده اونی که باید می‌بوده! حالا هی عر عر کن ببینم چیرو می‌خوای حذف کنی. ممکن نیست! چون اینجا هر چیزی که باهاش نخونه رو یه روزی پس زده!

منطق شماها دقیقاً یک ابر باگه که هیچ‌طوره اصلاح نمیشه؛ باز باگ رو می‌شه اصلاح کرد ولی شمارو نه! چون کد و منطق کد برای نفهمیدن تعریف شده! یک std::nullptr خالصه! هیچ راهی نداره وقتی برنامه‌نویس با همچین چیزی برخورد کنه یک معنا داره براش؛ یعنی هیچی! بیخیالش باش سعی هم نکن چیزی رو براش تعریف کنی چون قرار نیست منطقی پشتش باشه. خالیه! تهیه! پوچه!
تگرا تنها سیستم مدیریت محتوایی هست که قراره یک هستهٔ مشترک برای تولید خروجی‌هایی به شکل زیر داشته باشه:

- Web2, HTML/CSS/JS
- Web2 + Web3, Blockchain
- WASM (webassembly)
- QtQuick Renderer

سیستم‌های مدیریت محتوا عموماً روی بالاترین لایه ممکن رندر میشن یعنی سطح وب و خودشون به سطوح پایین‌تر و نزدیک به سخت‌افزار حرفی برای گفتن ندارن.

این یعنی سیستم مدیرتی تگرا، هم می‌تونه روی وب سنتی اجرا بشه، هم می‌تونه روی فناوری‌های گسترده‌تری ادغام بشه و هم می‌تونه در لایه سیستمی‌تر مثل WASM اجرا بشه و هم می‌تونه روی محیط‌های دسکتاپ و موبایل به صورت Native خروجی خودش رو هم تولید کنه هم ادغام کنه.

و این به معنای اینه که هسته محدود به فناوری وب نیست.
COMPΞZ 🧬
تگرا تنها سیستم مدیریت محتوایی هست که قراره یک هستهٔ مشترک برای تولید خروجی‌هایی به شکل زیر داشته باشه: - Web2, HTML/CSS/JS - Web2 + Web3, Blockchain - WASM (webassembly) - QtQuick Renderer سیستم‌های مدیریت محتوا عموماً روی بالاترین لایه ممکن رندر میشن یعنی…
تنها دلیلش چیه؟ وجود ابر زبان برنامه‌نویسی که هستش کامل با ++C ساخته شده.
حتی تمام افزونه‌ها و ماژول‌های این سیستم می‌تونه به صورت Native برای موبایل و دستگاه‌های مختلف تولید و طراحی بشه.

اینطور نیست وابسته به مرورگر باشه :)
COMPΞZ 🧬
تگرا تنها سیستم مدیریت محتوایی هست که قراره یک هستهٔ مشترک برای تولید خروجی‌هایی به شکل زیر داشته باشه: - Web2, HTML/CSS/JS - Web2 + Web3, Blockchain - WASM (webassembly) - QtQuick Renderer سیستم‌های مدیریت محتوا عموماً روی بالاترین لایه ممکن رندر میشن یعنی…
و این یعنی یک ساختار منعطف در زمان اجرا.
یعنی اصلاً محدود به مرورگر نیست و ماژول، افزونه یا هرچیزی که ساخته بشه می‌تونه روی هر پلتفرمی اجرا بشه.

ساختار و معماری یکی هست اما خروجی به مقصد قابل سفارشی‌سازیست.
COMPΞZ 🧬
و این یعنی یک ساختار منعطف در زمان اجرا. یعنی اصلاً محدود به مرورگر نیست و ماژول، افزونه یا هرچیزی که ساخته بشه می‌تونه روی هر پلتفرمی اجرا بشه. ساختار و معماری یکی هست اما خروجی به مقصد قابل سفارشی‌سازیست.
نصب و راه‌اندازی یک افزونه یا ماژول روی تگرا چنین مراحلی رو در پس زمینه داره.

در واقع نقشه‌ای از کل زیرسیستم افزونه هستش:

ماژول‌ها و افزونه‌ها، مرزهای مالکیت آنها، جهت وابستگی و مدل‌ها (چرخه عمر، نصب، میزبان زمان اجرا، پایداری) رو نشون میده.

معاری همین موضوع ۱ هفته فقط در موردش فکر کردم تحلیلش کردم که بخواد خیلی راحت از هر ماژول و ساختاری پشتیبانی کنه.
منظورش پرامپتلی هست؛

اندکی زمان نیاز دارم تا به یک نسخهٔ قابل استفاده برسونمش. حتماً منتشرش خواهم کرد برای عموم هنوز کار داره دل و رودهٔ پروژه بیرونه. 😝
چیز‌های با اصالت واقعاً نیازی به تبلیغات ندارن نیازی به ثابت کردن چیزی هم ندارند.

https://isocpp.org/wiki/faq/big-picture

این فرق بزرگ دنیای ++C با دیگر زبان‌هاست.
COMPΞZ 🧬
چیز‌های با اصالت واقعاً نیازی به تبلیغات ندارن نیازی به ثابت کردن چیزی هم ندارند. https://isocpp.org/wiki/faq/big-picture این فرق بزرگ دنیای ++C با دیگر زبان‌هاست.
پیش از مقایسهٔ زبان‌های برنامه‌نویسی، کمی درنگ کنید

دست نگه دارید.

این پرسش‌ها معمولاً بیش از آنکه روشنگر باشند، بحث، تعصب و هیاهو ایجاد می‌کنند. پیش از آنکه نسخهٔ دیگری از پرسش «کدام زبان برنامه‌نویسی بهتر است؟» را مطرح کنید، بهتر است نکات زیر را در نظر بگیرید.

در ۹۹ درصد موارد، انتخاب زبان برنامه‌نویسی بیش از آنکه زیر تأثیر ملاحظات فنی باشد، از نیازها و محدودیت‌های کسب‌وکار پیروی می‌کند.

در عمل، موضوعاتی از این دست اهمیت بیشتری پیدا می‌کنند:

۱) آیا ابزارها و محیط توسعهٔ مناسب برای رایانه‌های برنامه‌نویسان در دسترس است؟
۲) آیا محیط اجرای موردنیاز روی سامانه‌های مقصد وجود دارد؟
۳) شرایط مجوز، مالکیت فکری و مسائل حقوقی ابزارها و محیط اجرا چیست؟
۴) آیا برنامه‌نویسان آموزش‌دیده و باتجربه برای آن زبان در دسترس هستند؟
۵) آیا خدمات آموزشی، پشتیبانی و مشاوره‌ای مناسبی برای آن وجود دارد؟
۶) فرهنگ سازمانی، سیاست‌های داخلی و ساختار تصمیم‌گیری شرکت چگونه است؟

این ملاحظات معمولاً بسیار بیشتر از موضوعاتی مانند سرعت ترجمهٔ برنامه، کارایی هنگام اجرا، نوع‌دهی ایستا یا پویا و پیونددهی ایستا یا پویا بر تصمیم نهایی اثر می‌گذارند.

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

فنی باشید، اما گرفتار فنی‌زدگی نشوید.

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

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

نویسندگان چنین مطالبی معمولاً می‌کوشند ثابت کنند که زبان Z از زبان‌های دیگر بهتر است. از آنجا که CPP کاربرد گسترده‌ای دارد، اغلب نخستین زبانی است که طرفداران Z تلاش می‌کنند آن را ضعیف‌تر، قدیمی‌تر یا ناکارآمدتر نشان دهند.

در بسیاری از موارد، این مقاله‌ها توسط شرکتی منتشر یا پخش می‌شوند که زبان Z، ابزارهای آن یا خدمات وابسته به آن را می‌فروشد. چنین مطالبی در واقع بخشی از یک برنامهٔ بازاریابی هستند.

با این حال، شگفت‌آور است که بسیاری از افراد، مقاله‌ای داوری‌نشده را که کارکنان یک شرکت فروشندهٔ Z نوشته‌اند و در آن «اثبات کرده‌اند» که Z بهترین زبان است، کاملاً جدی می‌گیرند.

مشکل اینجاست که در چنین مقایسه‌هایی معمولاً بخش‌هایی از حقیقت نیز وجود دارد.
هیچ زبانی از همهٔ زبان‌های دیگر، در تمام زمینه‌ها و از هر نظر بهتر نیست. CPP نیز بی‌نقص نیست. اما بیان گزینشی حقیقت می‌تواند بسیار فریبنده باشد و گاهی تصویری کاملاً نادرست ایجاد کند.

بنابراین هنگام مطالعهٔ یک مقایسهٔ زبانی، باید چند پرسش اساسی مطرح کنید:

۱) نویسندهٔ این مقایسه چه کسی است؟
۲) آیا نویسنده یا سازمان منتشرکننده از نتیجهٔ آن سود می‌برد؟
۳) آیا ویژگی‌های زبان‌ها به‌صورت دقیق، واقعی و منصفانه توصیف شده‌اند؟
۴) آیا معیارهای مقایسه برای تمام زبان‌های بررسی‌شده مناسب و یکسان هستند؟
۵) آیا نسخه‌های هم‌دوره و هم‌سطح زبان‌ها با یکدیگر مقایسه شده‌اند؟
۶) آیا نویسنده در همهٔ زبان‌های مورد بررسی تجربهٔ عملی کافی دارد؟

پاسخ‌دادن درست به این پرسش‌ها آسان نیست.

بیارنه استروستروپ، طراح CPP، در کتاب «طراحی و فرگشت CPP» توضیح می‌دهد که چرا از مقایسهٔ مستقیم CPP با زبان‌های دیگر خودداری می‌کند:

چندین بازبین از من خواستند CPP را با زبان‌های دیگر مقایسه کنم. تصمیم گرفتم این کار را انجام ندهم. با این تصمیم، بار دیگر بر دیدگاهی قدیمی و ریشه‌دار تأکید می‌کنم: مقایسهٔ زبان‌ها به‌ندرت معنادار است و حتی کمتر از آن، منصفانه انجام می‌شود.

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

من زمان کافی برای انجام چنین کاری ندارم و به‌عنوان طراح CPP، بی‌طرفی من هرگز به‌طور کامل باورپذیر نخواهد بود.

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

مشکل بزرگ‌تر زمانی رخ می‌دهد که نویسنده یکی از زبان‌ها را بسیار بهتر از زبان‌های دیگر می‌شناسد. در این حالت، تغییر ظریفی در زاویهٔ نگاه ایجاد می‌شود: ایرادهای زبان آشنا کوچک و کم‌اهمیت شمرده می‌شوند و برای آن‌ها راه‌حل‌های ساده ارائه می‌شود؛ اما ایرادهای مشابه در زبان‌های دیگر، مشکلاتی بنیادی معرفی می‌شوند.

اغلب کسانی که مقایسه را انجام می‌دهند، راه‌حل‌های رایج در زبان‌های کمتر شناخته‌شده را نمی‌شناسند. گاهی نیز آن راه‌حل‌ها را نامناسب می‌دانند، زیرا همان روش‌ها در زبان مورد علاقه و آشنای خودشان کارآمد نیستند.

به همین شکل، اطلاعات مربوط به زبان شناخته‌شده معمولاً کاملاً تازه و به‌روز است، اما برای زبان کمتر شناخته‌شده از اطلاعات چند سال پیش استفاده می‌شود.

در مورد زبان‌هایی که ارزش مقایسه دارند، مقایسهٔ زبان X بر پایهٔ تعریف سه سال پیش آن با زبان Y بر پایهٔ تازه‌ترین پیاده‌سازی آزمایشی، نه منصفانه است و نه آموزنده.

به همین دلیل، دیدگاه‌های خود دربارهٔ زبان‌های دیگر را به نکات کلی یا موارد بسیار مشخص محدود می‌کنم.

نتیجه‌گیری

انتخاب زبان برنامه‌نویسی نباید به مسابقهٔ هواداری، تعصب شخصی یا تکرار شعارهای تبلیغاتی تبدیل شود.
پرسش درست این نیست که:

«بهترین زبان برنامه‌نویسی جهان کدام است؟»

پرسش درست این است:
«برای این مسئله، این گروه، این سازمان، این زیرساخت، این بودجه و این آیندهٔ کاری، کدام زبان انتخاب مناسب‌تری است؟»


با وجود همهٔ این ملاحظات، CPP همچنان برای طیف بسیار گسترده‌ای از برنامه‌نویسان، سامانه‌ها و زمینه‌های کاربردی، یکی از بهترین و توانمندترین انتخاب‌های موجود به‌شمار می‌آید.
چرا باید اطرافیانتو با اینستا بشناسی؟

اصلا مهم نیست این موضوع! چرا باید به خاطر تایید‌های دیگران زندگی کنی!؟ چه انتظاریه! اعتماد به نفس چیز خوبیه…

روی اهدافت متمرکز شو بذار هرکی خوشحال می‌شه بشه هرکی ناراحت می‌شه بشه! صد‌ها تفکر هست ممکن نیست همه راضی باشن ازت.😉

فقط آزارت به کسی نرسه، همین! بشین زندگی خودتو کن بابا همه درد و بدبختی دارن بیکارن مگه بشینن برا هر نمایشی واکنش بدن به به چه چه کنن واست.
COMPΞZ 🧬
اگر Reflection (بازتاب) را فقط با چیزی که در زبان‌های دیگر دیده‌اید مقایسه می‌کنید، باید منتظر C++26 بمانید. چون قرار نیست فقط نوع‌ها و اعضای یک کلاس را ببینیم؛ قرار است خودِ ساختار برنامه به مادهٔ اولیه‌ای برای تولید کد، اعتبارسنجی، خودکار‌سازی و ساخت کتابخانه‌های…
ویژگی قرارداد‌ها (Contracts)، بعد از Reflection یکی از قدرتمندترین قابلیت‌های استاندارد CPP26 است. 👌🔝

به زبان ساده، قراردادها باعث می‌شوند کد فقط «اجرا نشود»، بلکه قوانین خودش را هم به‌صورت رسمی بیان کند. و چه چیزی بهتر از این؟!

یعنی یک تابع می‌تواند دقیقاً مشخص کند:

۱) با چه ورودی‌هایی اجازهٔ اجرا دارد؛
۲) فراخواننده چه تعهدی در برابر آن دارد؛
۳) تابع بعد از اجرا چه نتیجه‌ای را تضمین می‌کند؛
۴) و چه شرایطی در منطق داخلی آن نباید هیچ‌وقت شکسته شود.

برای مثال:
auto apply_discount(
const int price,
const int discount
) -> int
pre(price >= 0)
pre(discount >= 0)
pre(discount <= 100)
post(result: result >= 0)
post(result: result <= price)
{
return price - (price * discount / 100);
}

اینجا pre می‌گوید تابع فقط زمانی معتبر است که قیمت منفی نباشد و درصد تخفیف نیز بین صفر تا صد قرار داشته باشد.

سپس post نیز تضمین می‌کند نتیجهٔ نهایی نه منفی شود و نه از قیمت اولیه بیشتر باشد.
بنابراین قانون تابع دیگر فقط داخل توضیحات، مستندات یا ذهن برنامه‌نویس نیست؛ بلکه به بخشی رسمی از خود زبان تبدیل می‌شود.

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

در اصل قرارداد‌ها، کد، محدودیت‌ها، انتظارات و تضمین‌های خودش را به شکلی قابل‌فهم برای برنامه‌نویس، کامپایلر، ابزارهای تحلیل و حتی عامل‌های هوش مصنوعی بیان می‌کند.

#CPP26 #Contracts #Reflection #ModernCPP #SoftwareEngineering #Programming
Please open Telegram to view this post
VIEW IN TELEGRAM
COMPΞZ 🧬
پیش‌نویس نهایی C++26 تا مارس ۲۰۲۶ آماده خواهد شد و کامپایلرهای اصلی مثل GCC و Clang در حال پیاده‌سازی آن هستند.
با توجه به بررسی‌هایی که انجام شد؛ در حال حاضر GCC جدید یعنی نسخهٔ ۱۶ از بالاترین پوشش پشتیبانی از ویژگی‌های استاندارد جدید بهره می‌بره. 👌 با این نسخه به یک‌باره به طرز عجیبی از Clang پیشی گرفت.

https://gcc.gnu.org/gcc-16/
https://gcc.gnu.org/gcc-16/changes.html
https://cppreference.com/cpp/compiler_support/26

هم ماژول‌ها الآن در دسترس هستند، هم قرارداد‌ها و حتی رفلکشن‌ها. 🫡 و این یعنی نسخه‌های بعدی محصولاتمون احتمالاً با GCC کامپایل بشن شدیداً مشتاقم و از همین الآن از قوائد و ویژگی‌های جدید پیروی خواهم کرد.
هیچ مادری فرزندش رو برای بدرقه کردن تا چوبهٔ دار بزرگ نمی‌کنه!
مسبب همهٔ این شرایط شمایید.
COMPΞZ 🧬
هیچ مادری فرزندش رو برای بدرقه کردن تا چوبهٔ دار بزرگ نمی‌کنه! مسبب همهٔ این شرایط شمایید.
من یادم نمیره شاید ۷..۸ سالم بود، یه روز از میدان انقلاب شهر خودمون رد می‌شدیم وسط فلکه یه طناب دار دیدم داشتن آمادش می‌کردن واسهٔ اجرای حکم... اون موقع مامانم چشامو گرفت که نبینم... هنوز هم که هنوزه وقتی یادم می‌افته وحشت می‌کنم! یعنی تا بوده تجربیات تلخ توی جامعه دیدم.

توی زندگی هم که بدترین نوعش رو تجربه کردم! همین چند سال پیش پدر مادر بزرگم رو به قتل رسوندن و حتی آتیششون زدن :) بعد ۵ سال هنوز نتونستیم رضایت برای اجرای حکم اعدامش بدیم! خشم و نفرت تو دل و ذهنمون وجود داره اما تصمیم گیری به این راحتی نیست! شماها چطور به این راحتی عین آب خوردن دارید اجراش می‌کنید؟ بابا این چه قانونیه... چه وضعیه؟ چه استدلالیه؟! یعنی هیچ تقصیری گردن شماها نیست دیگه نه؟ همینطوری یهو یکی از دل سیری و خوشی میاد جنایت می‌کنه؟

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

ظرفیت‌های هر کس متفاوته، تحمل و صبر هرکسی متفاوته! اینارو شما باید توی جامعه بهش فکر کنی نه اینکه با این سیستم شخمی و شرایط وحشتناک اقتصاد و تورم انتظار داشته باشی همه چه چه کنن! مگه با ترس و سرکوب مملکت اصلاح می‌کنن؟ اعتراض نکن، صدات در نیاد، می‌کنمت تو گونی... اصلاً شده دکون بازار برای همه کل روش اصلاح شما اینه که یا تهدید کنی یا بزنی بکشی! حل شد مشکلات مملکت همه چیز حل شد رفت پی کارش و ما چقدر خوشبختیم!

چطور ممکنه اینهمه فساد کنی عامل همهٔ این رفتار‌های عجیب غریب توی مملکت باشی بعد به جای حل عامل فساد با شادی آدمارو دار بزنی بگی حقش بود! خیلی خب حقش بود مجرم باید مجازات بشه! اما اگه طرف روانی شده، اگه طرف قاتل درجه یک شده مسببش شرایطی هست که شما به بار آوردی! به این هم فکر می‌کنی یا گوش و چشمت کره؟ تا کی قراره جامعه به همین روش انتظار اصلاح داشته باشه؟ چطور ممکنه اینهمه آدم ۲۰ ساله بشن جنایت‌کار؟ یکیش جانی بود دو تاش جانی بود همشون جانی شدن؟! اون باید بشینه پلی‌استیشنشو بزنه چرا باید سیاسی بشه؟ من ۲۰ سالم بود نمی‌فهمیدم خبر چیه سیاست چیه... چون وضعیت مملکت نسبت به الآن اینهمه درب داغون نبود! من شخصاً کلی برای خودم آرزو و اهداف نوشته بودم که به همشون برسم و براشون تلاش کنم! اما الآن چی؟ چرا باید اینهمه خشم و نفرت توی یه جوون ۲۰ ساله شکل بگیره؟ چرا دنبال دلیلش نیستید؟ همچین کسی چی می‌فهمه از دنیا؟ مگه چی می‌خواد؟ تا کی می‌خوای دار بزنی؟ مشکلات مملکت با دار زدن حل خواهد شد؟ اصلاً همه رو بیا دار بزن ببینم چیرو می‌خوای حل کنی با این منطق؟! بابا شماها دیگه کی هستین خدایی من کلاً مغزم قیر پاچ کرده!

این چیزی که من فهمیدم از نظر شماها همه روانی جانی و یک مجرم هفت خط روزگارن! همه مملکت فروشن، همه خائنن، همه دشمنن! یعنی مثل همون فیلمای آمریکایی هست یکی میره برای لذت بردن توی زندگی فقط آدم می‌کشه... نه قانون می‌تونه جلوشو بگیره نه جامعه... از دیدگاه شما همهٔ جوونای این مملکت این مدلی هستن! :-/

آخر عاقبت هیچ‌کس جالب نخواهد بود با این شرایط...