هع!
داشتم خزانهداری رو میدیدم راجع به یه خبر عجیب در مورد رفع تحریمهای نرمافزاری بود رو بررسی میکردم که به جاش با این خبر مواجه شدم.
https://home.treasury.gov/news/press-releases/sb0576
یه خبری هم دست به دست میشه که وزارت خزانهداری آمریکا با حذف تحریمهای نرمافزاری موافقت کرده؛ از نظر من کذب است! عمراً در وضعیت فعلی اجرا بشه.
اون ابلاغیه مال سال ۲۰۲۳ بود که اجرا نشد الآن هم وسط جنگ معنایی نداره بیان همچین کاری کنن. اون بلاگرهای متوهم هم برای دیده شدن خبرها رو بازنشر میکنن. همش چرت است.
داشتم خزانهداری رو میدیدم راجع به یه خبر عجیب در مورد رفع تحریمهای نرمافزاری بود رو بررسی میکردم که به جاش با این خبر مواجه شدم.
https://home.treasury.gov/news/press-releases/sb0576
یه خبری هم دست به دست میشه که وزارت خزانهداری آمریکا با حذف تحریمهای نرمافزاری موافقت کرده؛ از نظر من کذب است! عمراً در وضعیت فعلی اجرا بشه.
اون ابلاغیه مال سال ۲۰۲۳ بود که اجرا نشد الآن هم وسط جنگ معنایی نداره بیان همچین کاری کنن. اون بلاگرهای متوهم هم برای دیده شدن خبرها رو بازنشر میکنن. همش چرت است.
U.S. Department of the Treasury
Treasury Further Dismantles Iranian Financier Zanjani’s Network
WASHINGTON—Today, the Department of the Treasury’s Office of Foreign Assets Control (OFAC) designatedfour individuals and nine entities that form key components of Babak Zanjani (Zanjani)’s broader Iranian sanctions evasion network. Zanjani has leveraged…
COMPΞZ 🧬
بهش میگم فلان کد رو بنویس برداشته هرچی رشته هست رو هاردکرده توی تابع محاسباتی که شمارنده داره! 😂😩 آخه مشنگ! توی کد پویا جاسازی رشته استاتیک دیگه چه سمیه! چقدر تو کم شعوری هنوز. همه چیرو باید یادت بدم من ... تچچچچچ تچچچچ 😏 ولی خیلی بهتر از ۵.۵ شده نه خوشم…
یک لایهٔ دانشی کامل برای مهندسی آیکون برنامه و هویت بصری چندسکویی اضافه شد به این مخزن. این تغییر یک «آیکونساز خودکار» نیست؛ بلکه عامل هوش مصنوعی را وادار میکند آیکون را مانند بخشی از معماری، بستهبندی و فرایند تأیید محصول مدیریت کند.
https://github.com/thecompez/ai-for-modern-cpp
https://github.com/thecompez/ai-for-modern-cpp
GitHub
GitHub - thecompez/ai-for-modern-cpp: A template repository for guiding AI coding agents to write safe, modern C++20/23/26 code…
A template repository for guiding AI coding agents to write safe, modern C++20/23/26 code using modules, concepts, modern CMake, Core Guidelines, tests, and repeatable build-test-review loops. - th...
دردناک است، زندگی در مملکتی که مردمش، تاوان نفهمیِ عدهای را میدهند که حتی حاضر نیستند حقیقت را ببینند.
این ارزشمنده که مخاطب به پستت توجه میکنه و بعد بدون اینکه به من بگه میره ۷۴ صفحه تحلیل میسازه و در قالب یک ساختاری از پروژه که توی مخزن آموزش داده بودم برای من گزارش تهیه میکنه.
حالا AI کارش بده؟ بده که باعث میشه کارآموزی مدرن شکل بگیره؟ طرف مخزنی که ساختم رو تحلیل کرده و بعد نشسته با آموزههایی که توش گذاشتم یه طرح ارائه داده.
خب چه چیزی بهتر از این؟! 😉 همه چیز با سرعت بسیار زیادی در حال تغییر هست؛ ساختن پیچیده و سخت نخواهد بود؛ فقط باید باهوش باشی و سریع.
حالا AI کارش بده؟ بده که باعث میشه کارآموزی مدرن شکل بگیره؟ طرف مخزنی که ساختم رو تحلیل کرده و بعد نشسته با آموزههایی که توش گذاشتم یه طرح ارائه داده.
خب چه چیزی بهتر از این؟! 😉 همه چیز با سرعت بسیار زیادی در حال تغییر هست؛ ساختن پیچیده و سخت نخواهد بود؛ فقط باید باهوش باشی و سریع.
COMPΞZ 🧬
این ارزشمنده که مخاطب به پستت توجه میکنه و بعد بدون اینکه به من بگه میره ۷۴ صفحه تحلیل میسازه و در قالب یک ساختاری از پروژه که توی مخزن آموزش داده بودم برای من گزارش تهیه میکنه. حالا AI کارش بده؟ بده که باعث میشه کارآموزی مدرن شکل بگیره؟ طرف مخزنی که…
من معتقدم خیلی طول نمیکشه افرادی که نا امید نیستن و شکست ناپذیرن حتی اگه در شرایط کنونی در وضعیت بحرانی اقتصادی قرار گرفتن؛ کسانی که تنبل هستن و به دنبال پول مفت در آوردن هستن رو حذف خواهند کرد.
اینها شما رو حذف خواهند کرد نه هوش مصنوعی شما رو.
زحمت کشیدن هزینه داره، باید هزینه کنی! یا از زمانت، یا از جیبت یا از دانشت بذاری! و اگرنه منم بلدم حرف مفت بزنم! هزینه نداره که! پولی هم بابتش نمیپردازم.
هیچ کس قرار نیست پول مفت بده به کسی اونم در قالب ایردراپ یا هر چیزی که خیلیها بهش عادت کردن؛ این سیستمیه که در انتظار همست دست من و شما هم نیست.
اینها شما رو حذف خواهند کرد نه هوش مصنوعی شما رو.
زحمت کشیدن هزینه داره، باید هزینه کنی! یا از زمانت، یا از جیبت یا از دانشت بذاری! و اگرنه منم بلدم حرف مفت بزنم! هزینه نداره که! پولی هم بابتش نمیپردازم.
هیچ کس قرار نیست پول مفت بده به کسی اونم در قالب ایردراپ یا هر چیزی که خیلیها بهش عادت کردن؛ این سیستمیه که در انتظار همست دست من و شما هم نیست.
Genyleap
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 🧬
فارسی عشق است! این حداقل کاریه که توسعهدهندههای ایرانی باید بهش بها بدن.
زبان فارسی، زبان ترکی، کردی و هر چیزی که در این کشور بهش صحبت میکنیم رو به محصولاتتون اضافه کنید چه اشکالی داره.
بذارید مخاطب حس بیگانگی نکنه! این چینیها همیشه هرچی میسازن اول زبون چینی رو میکنن توش حتی کامیتهاشون هم زبان چینیه توی گیتهاب بعد بعضیها همچین با فارسی غریبن.😐
بیا اینم جزئیات فایل راهنما به فارسی:
https://github.com/genyleap/GenyConnect/blob/main/readme/README.fa.md
زبان فارسی، زبان ترکی، کردی و هر چیزی که در این کشور بهش صحبت میکنیم رو به محصولاتتون اضافه کنید چه اشکالی داره.
بذارید مخاطب حس بیگانگی نکنه! این چینیها همیشه هرچی میسازن اول زبون چینی رو میکنن توش حتی کامیتهاشون هم زبان چینیه توی گیتهاب بعد بعضیها همچین با فارسی غریبن.
بیا اینم جزئیات فایل راهنما به فارسی:
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 این کارها دیگه خیلی راحتتره نباید بیاهمیت شمرده بشه.
درستش اینه که شما زبان علمی رو پیشفرض قرار بدی که میشه انگلیسی.
بعد زبانهای مهم دیگه رو بهش اضافه کنی و اگه خصومتی یا خورده شیشهای چیزی نداشته باشی فارسی رو بهش اضافه میکنی! چون من دیدم حتی ایرانیهای مقیم آمریکارو که معتقدن فارسی با این رسمالخط ربطی به ایران نداره! این غلطه! پس به چی ربط داره؟ تو دوست داری Persian ببینی ولی رسمش خط راست به چپ هست؛ طرف ۱۵۰ سال پیش گذاشته رفته از این مملکت هفت پشت با زبان فارسی غریبه دلیل نمیشه تو فارسی رو حذف کنی چون اون خوشش نمیاد! حال نمیکنه انگلیسی برای همین منظوره.
مستندات روی مخازن همیشه باید به صورت پیشفرض انگلیسی باشن و بعد به زبانهای مختلف توسعه پیدا کنن.
در محیط محصولات هم انگلیسی باید پیشفرض باشه و زبانهای دیگه گزینشی باشن.
اما اگه بخوای در سطح حرفهای تر حرکتی بزنی که در هر کشور یا موقعیت جغرافیایی (یا حتی متناسب با VPN) و آیپی مخاطب محتوا بر مبنای همون موقعیت رندر بشه؛ در این شرایط میتونی حرکات حرفهای تر بزنی یه ساختار مبتنی بر تشخیص وضعیت سیستم بدی که محصولات حرفهای بهش توجه ویژهای دارن.
مثلاً من میتونم بیام روی همین GenyConnect کاری کنم کسی که مثلاً توی چین هست، نرمافزار خودکار به زبان چینی رندر بشه! برای ایران فارسی و ب رای هرچیزی غیر اینها زبانهای انگلیسی و ...
پس شد این:
برای مخازن، چند زبانه پیشفرض همیشه انگلیسی.
برای محصولات، باز هم پیشفرض انگلیسی در صورت لزوم چند زبانه به صورت انتخابی یا در بهترین حالت مبتنی بر موقعیت IP و مکان.
همهٔ اینها زمانی مهم نمیشه که محصول و مخاطب هدف شما فقط داخل ایران باشه به زبان فارسی باشه و مهم هم نباشه یه کاربر خارجی میبینتش یا نه باز هم من باشم برای مخاطب ارزش میدم چند زبان رو میذارم با هر زبانی که دلش خواست استفاده میکنه.
این چیزها رو معمولاً طوری ایجاد میکنن که قابل توسعه و گسترش باشه. همکاری برای ترجمه توسط خود مخاطبین و علاقهمندان به توسعهٔ متنباز شکل میگیره. ولی الآن با AI این کارها دیگه خیلی راحتتره نباید بیاهمیت شمرده بشه.
COMPΞZ 🧬
۵/۵/۵ چیش خاصه؟ 😏 برای من که هیچیش خاص نیست.
با تمام احترامی که به عنوان کربلایی قائلم؛ این تقویم هیچ شباهتی به تقویم ایرانی نداره.
حتی از اسمش هم وحشت دارید بدبختای روانی؟! البته از امثال شما خلخالیون و تهفه انگلیسیها انتظاری هم نیست. خیلی زشته ایران رو فقط ۵۰ سال اخیر تعریف کنی! نشان از بدبختی و کم فهمی و وحشیگری شماها داره.
والا مغول اینطوری بود که با حضورش در هر جا هر اثری از اصالت اونجا بود رو حذف میکرد که مبادا آیندگان در مورد واقعیتها بدونن. از کتاب گرفته تا آثار هنری، فرهنگی و ...
ولی غافل از اینکه هر چیزی قابل حذف نیست؛ روحش آرام و یادش جاودان. 🫡
حتی از اسمش هم وحشت دارید بدبختای روانی؟! البته از امثال شما خلخالیون و تهفه انگلیسیها انتظاری هم نیست. خیلی زشته ایران رو فقط ۵۰ سال اخیر تعریف کنی! نشان از بدبختی و کم فهمی و وحشیگری شماها داره.
والا مغول اینطوری بود که با حضورش در هر جا هر اثری از اصالت اونجا بود رو حذف میکرد که مبادا آیندگان در مورد واقعیتها بدونن. از کتاب گرفته تا آثار هنری، فرهنگی و ...
ولی غافل از اینکه هر چیزی قابل حذف نیست؛ روحش آرام و یادش جاودان. 🫡
COMPΞZ 🧬
با تمام احترامی که به عنوان کربلایی قائلم؛ این تقویم هیچ شباهتی به تقویم ایرانی نداره. حتی از اسمش هم وحشت دارید بدبختای روانی؟! البته از امثال شما خلخالیون و تهفه انگلیسیها انتظاری هم نیست. خیلی زشته ایران رو فقط ۵۰ سال اخیر تعریف کنی! نشان از بدبختی و…
ما یه مثالی توی ترکی داریم میگیم؛ گَمیده اوتوروب، گمیچینین گوزون چیخاردیر.
این حال حکایت شما پر روهای دوهزاریه که به فارسی میشه: کسی که نشسته توی کشتی ناخدا و چشم ناخدارو در میاره. 😄
عجب! واقعاً فکر کردین صاحاب خونهاین نه؟ یعنی نشد یه بار یه نفر از شما با من بحث کنه توی کلهٔ پوکش نشانی از وجود مغز پیدا کنم همش پوچ، همش حرص، همش تنفر! همش کینه!!! بابا بشر اینهمه کینه اینهمه وحشیگری رو از کجا میاری تو یکم آروم باش یکم آدم باش دیگه چه خبرته! سرو تهش چقدر عمر میکنی مگه! کل ایران رو بارها دادن به امثال شما ولی آخرش برگشته شده همونی که بوده! صدها سال حتی زبان فارسی رو هم از این مملکت دریغ کردن ولی تهش شده اونی که باید میبوده! حالا هی عر عر کن ببینم چیرو میخوای حذف کنی. ممکن نیست! چون اینجا هر چیزی که باهاش نخونه رو یه روزی پس زده!
منطق شماها دقیقاً یک ابر باگه که هیچطوره اصلاح نمیشه؛ باز باگ رو میشه اصلاح کرد ولی شمارو نه! چون کد و منطق کد برای نفهمیدن تعریف شده! یک std::nullptr خالصه! هیچ راهی نداره وقتی برنامهنویس با همچین چیزی برخورد کنه یک معنا داره براش؛ یعنی هیچی! بیخیالش باش سعی هم نکن چیزی رو براش تعریف کنی چون قرار نیست منطقی پشتش باشه. خالیه! تهیه! پوچه!
این حال حکایت شما پر روهای دوهزاریه که به فارسی میشه: کسی که نشسته توی کشتی ناخدا و چشم ناخدارو در میاره. 😄
عجب! واقعاً فکر کردین صاحاب خونهاین نه؟ یعنی نشد یه بار یه نفر از شما با من بحث کنه توی کلهٔ پوکش نشانی از وجود مغز پیدا کنم همش پوچ، همش حرص، همش تنفر! همش کینه!!! بابا بشر اینهمه کینه اینهمه وحشیگری رو از کجا میاری تو یکم آروم باش یکم آدم باش دیگه چه خبرته! سرو تهش چقدر عمر میکنی مگه! کل ایران رو بارها دادن به امثال شما ولی آخرش برگشته شده همونی که بوده! صدها سال حتی زبان فارسی رو هم از این مملکت دریغ کردن ولی تهش شده اونی که باید میبوده! حالا هی عر عر کن ببینم چیرو میخوای حذف کنی. ممکن نیست! چون اینجا هر چیزی که باهاش نخونه رو یه روزی پس زده!
منطق شماها دقیقاً یک ابر باگه که هیچطوره اصلاح نمیشه؛ باز باگ رو میشه اصلاح کرد ولی شمارو نه! چون کد و منطق کد برای نفهمیدن تعریف شده! یک std::nullptr خالصه! هیچ راهی نداره وقتی برنامهنویس با همچین چیزی برخورد کنه یک معنا داره براش؛ یعنی هیچی! بیخیالش باش سعی هم نکن چیزی رو براش تعریف کنی چون قرار نیست منطقی پشتش باشه. خالیه! تهیه! پوچه!
تگرا تنها سیستم مدیریت محتوایی هست که قراره یک هستهٔ مشترک برای تولید خروجیهایی به شکل زیر داشته باشه:
- Web2, HTML/CSS/JS
- Web2 + Web3, Blockchain
- WASM (webassembly)
- QtQuick Renderer
سیستمهای مدیریت محتوا عموماً روی بالاترین لایه ممکن رندر میشن یعنی سطح وب و خودشون به سطوح پایینتر و نزدیک به سختافزار حرفی برای گفتن ندارن.
این یعنی سیستم مدیرتی تگرا، هم میتونه روی وب سنتی اجرا بشه، هم میتونه روی فناوریهای گستردهتری ادغام بشه و هم میتونه در لایه سیستمیتر مثل WASM اجرا بشه و هم میتونه روی محیطهای دسکتاپ و موبایل به صورت Native خروجی خودش رو هم تولید کنه هم ادغام کنه.
و این به معنای اینه که هسته محدود به فناوری وب نیست.
- 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 برای موبایل و دستگاههای مختلف تولید و طراحی بشه.
اینطور نیست وابسته به مرورگر باشه :)
حتی تمام افزونهها و ماژولهای این سیستم میتونه به صورت Native برای موبایل و دستگاههای مختلف تولید و طراحی بشه.
اینطور نیست وابسته به مرورگر باشه :)
COMPΞZ 🧬
تگرا تنها سیستم مدیریت محتوایی هست که قراره یک هستهٔ مشترک برای تولید خروجیهایی به شکل زیر داشته باشه: - Web2, HTML/CSS/JS - Web2 + Web3, Blockchain - WASM (webassembly) - QtQuick Renderer سیستمهای مدیریت محتوا عموماً روی بالاترین لایه ممکن رندر میشن یعنی…
و این یعنی یک ساختار منعطف در زمان اجرا.
یعنی اصلاً محدود به مرورگر نیست و ماژول، افزونه یا هرچیزی که ساخته بشه میتونه روی هر پلتفرمی اجرا بشه.
ساختار و معماری یکی هست اما خروجی به مقصد قابل سفارشیسازیست.
یعنی اصلاً محدود به مرورگر نیست و ماژول، افزونه یا هرچیزی که ساخته بشه میتونه روی هر پلتفرمی اجرا بشه.
ساختار و معماری یکی هست اما خروجی به مقصد قابل سفارشیسازیست.
COMPΞZ 🧬
و این یعنی یک ساختار منعطف در زمان اجرا. یعنی اصلاً محدود به مرورگر نیست و ماژول، افزونه یا هرچیزی که ساخته بشه میتونه روی هر پلتفرمی اجرا بشه. ساختار و معماری یکی هست اما خروجی به مقصد قابل سفارشیسازیست.
نصب و راهاندازی یک افزونه یا ماژول روی تگرا چنین مراحلی رو در پس زمینه داره.
در واقع نقشهای از کل زیرسیستم افزونه هستش:
ماژولها و افزونهها، مرزهای مالکیت آنها، جهت وابستگی و مدلها (چرخه عمر، نصب، میزبان زمان اجرا، پایداری) رو نشون میده.
معاری همین موضوع ۱ هفته فقط در موردش فکر کردم تحلیلش کردم که بخواد خیلی راحت از هر ماژول و ساختاری پشتیبانی کنه.
در واقع نقشهای از کل زیرسیستم افزونه هستش:
ماژولها و افزونهها، مرزهای مالکیت آنها، جهت وابستگی و مدلها (چرخه عمر، نصب، میزبان زمان اجرا، پایداری) رو نشون میده.
معاری همین موضوع ۱ هفته فقط در موردش فکر کردم تحلیلش کردم که بخواد خیلی راحت از هر ماژول و ساختاری پشتیبانی کنه.
چیزهای با اصالت واقعاً نیازی به تبلیغات ندارن نیازی به ثابت کردن چیزی هم ندارند.
https://isocpp.org/wiki/faq/big-picture
این فرق بزرگ دنیای ++C با دیگر زبانهاست.
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 همچنان برای طیف بسیار گستردهای از برنامهنویسان، سامانهها و زمینههای کاربردی، یکی از بهترین و توانمندترین انتخابهای موجود بهشمار میآید.
دست نگه دارید.
این پرسشها معمولاً بیش از آنکه روشنگر باشند، بحث، تعصب و هیاهو ایجاد میکنند. پیش از آنکه نسخهٔ دیگری از پرسش «کدام زبان برنامهنویسی بهتر است؟» را مطرح کنید، بهتر است نکات زیر را در نظر بگیرید.
در ۹۹ درصد موارد، انتخاب زبان برنامهنویسی بیش از آنکه زیر تأثیر ملاحظات فنی باشد، از نیازها و محدودیتهای کسبوکار پیروی میکند.
در عمل، موضوعاتی از این دست اهمیت بیشتری پیدا میکنند:
۱) آیا ابزارها و محیط توسعهٔ مناسب برای رایانههای برنامهنویسان در دسترس است؟
۲) آیا محیط اجرای موردنیاز روی سامانههای مقصد وجود دارد؟
۳) شرایط مجوز، مالکیت فکری و مسائل حقوقی ابزارها و محیط اجرا چیست؟
۴) آیا برنامهنویسان آموزشدیده و باتجربه برای آن زبان در دسترس هستند؟
۵) آیا خدمات آموزشی، پشتیبانی و مشاورهای مناسبی برای آن وجود دارد؟
۶) فرهنگ سازمانی، سیاستهای داخلی و ساختار تصمیمگیری شرکت چگونه است؟
این ملاحظات معمولاً بسیار بیشتر از موضوعاتی مانند سرعت ترجمهٔ برنامه، کارایی هنگام اجرا، نوعدهی ایستا یا پویا و پیونددهی ایستا یا پویا بر تصمیم نهایی اثر میگذارند.
کسانی که هنگام ارزیابی زبانهای برنامهنویسی، معیارهای اصلی کسبوکار را نادیده میگیرند، ممکن است بهدرستی به ضعف در داوری و تصمیمگیری متهم شوند.
فنی باشید، اما گرفتار فنیزدگی نشوید.
در دنیای واقعی، مسائل اقتصادی، سازمانی و تجاری اغلب بر مسائل فنی برتری دارند. کسی که این واقعیت را درک نکند، ممکن است تصمیمهایی بگیرد که پیامدهای سنگینی برای سازمان داشته باشند. چنین تصمیمگیرندهای حتی میتواند برای کارفرمای خود خطرآفرین باشد.
چرا بیشتر مقایسههای زبانها قابل اعتماد نیستند؟
بسیاری از مقایسههایی که بهطور گسترده منتشر میشوند، توسط هواداران یک زبان خاص نوشته شدهاند. فرض کنیم نام آن زبان «Z» باشد.
نویسندگان چنین مطالبی معمولاً میکوشند ثابت کنند که زبان Z از زبانهای دیگر بهتر است. از آنجا که CPP کاربرد گستردهای دارد، اغلب نخستین زبانی است که طرفداران Z تلاش میکنند آن را ضعیفتر، قدیمیتر یا ناکارآمدتر نشان دهند.
در بسیاری از موارد، این مقالهها توسط شرکتی منتشر یا پخش میشوند که زبان Z، ابزارهای آن یا خدمات وابسته به آن را میفروشد. چنین مطالبی در واقع بخشی از یک برنامهٔ بازاریابی هستند.
با این حال، شگفتآور است که بسیاری از افراد، مقالهای داورینشده را که کارکنان یک شرکت فروشندهٔ Z نوشتهاند و در آن «اثبات کردهاند» که Z بهترین زبان است، کاملاً جدی میگیرند.
مشکل اینجاست که در چنین مقایسههایی معمولاً بخشهایی از حقیقت نیز وجود دارد.
هیچ زبانی از همهٔ زبانهای دیگر، در تمام زمینهها و از هر نظر بهتر نیست. CPP نیز بینقص نیست. اما بیان گزینشی حقیقت میتواند بسیار فریبنده باشد و گاهی تصویری کاملاً نادرست ایجاد کند.
بنابراین هنگام مطالعهٔ یک مقایسهٔ زبانی، باید چند پرسش اساسی مطرح کنید:
۱) نویسندهٔ این مقایسه چه کسی است؟
۲) آیا نویسنده یا سازمان منتشرکننده از نتیجهٔ آن سود میبرد؟
۳) آیا ویژگیهای زبانها بهصورت دقیق، واقعی و منصفانه توصیف شدهاند؟
۴) آیا معیارهای مقایسه برای تمام زبانهای بررسیشده مناسب و یکسان هستند؟
۵) آیا نسخههای همدوره و همسطح زبانها با یکدیگر مقایسه شدهاند؟
۶) آیا نویسنده در همهٔ زبانهای مورد بررسی تجربهٔ عملی کافی دارد؟
پاسخدادن درست به این پرسشها آسان نیست.
بیارنه استروستروپ، طراح CPP، در کتاب «طراحی و فرگشت CPP» توضیح میدهد که چرا از مقایسهٔ مستقیم CPP با زبانهای دیگر خودداری میکند:
چندین بازبین از من خواستند CPP را با زبانهای دیگر مقایسه کنم. تصمیم گرفتم این کار را انجام ندهم. با این تصمیم، بار دیگر بر دیدگاهی قدیمی و ریشهدار تأکید میکنم: مقایسهٔ زبانها بهندرت معنادار است و حتی کمتر از آن، منصفانه انجام میشود.
انجام یک مقایسهٔ درست میان زبانهای مهم برنامهنویسی به تلاشی بسیار بیشتر از چیزی نیاز دارد که بیشتر افراد حاضرند صرف کنند. چنین کاری به تجربه در زمینههای کاربردی گوناگون، حفظ دیدگاهی مستقل و بیطرف و برخورداری از حس انصاف نیازمند است.
من زمان کافی برای انجام چنین کاری ندارم و بهعنوان طراح CPP، بیطرفی من هرگز بهطور کامل باورپذیر نخواهد بود.
همچنین دربارهٔ پدیدهای نگرانم که بارها در تلاشهای صادقانه برای مقایسهٔ زبانها مشاهده کردهام. نویسندگان بسیار تلاش میکنند بیطرف باشند، اما تمرکز بر یک کاربرد خاص، یک شیوهٔ برنامهنویسی یا یک فرهنگ مشخص میان برنامهنویسان، ناخواسته آنها را دچار سوگیری میکند.
مشکل بزرگتر زمانی رخ میدهد که نویسنده یکی از زبانها را بسیار بهتر از زبانهای دیگر میشناسد. در این حالت، تغییر ظریفی در زاویهٔ نگاه ایجاد میشود: ایرادهای زبان آشنا کوچک و کماهمیت شمرده میشوند و برای آنها راهحلهای ساده ارائه میشود؛ اما ایرادهای مشابه در زبانهای دیگر، مشکلاتی بنیادی معرفی میشوند.
اغلب کسانی که مقایسه را انجام میدهند، راهحلهای رایج در زبانهای کمتر شناختهشده را نمیشناسند. گاهی نیز آن راهحلها را نامناسب میدانند، زیرا همان روشها در زبان مورد علاقه و آشنای خودشان کارآمد نیستند.
به همین شکل، اطلاعات مربوط به زبان شناختهشده معمولاً کاملاً تازه و بهروز است، اما برای زبان کمتر شناختهشده از اطلاعات چند سال پیش استفاده میشود.
در مورد زبانهایی که ارزش مقایسه دارند، مقایسهٔ زبان X بر پایهٔ تعریف سه سال پیش آن با زبان Y بر پایهٔ تازهترین پیادهسازی آزمایشی، نه منصفانه است و نه آموزنده.
به همین دلیل، دیدگاههای خود دربارهٔ زبانهای دیگر را به نکات کلی یا موارد بسیار مشخص محدود میکنم.
نتیجهگیری
انتخاب زبان برنامهنویسی نباید به مسابقهٔ هواداری، تعصب شخصی یا تکرار شعارهای تبلیغاتی تبدیل شود.
پرسش درست این نیست که:
«بهترین زبان برنامهنویسی جهان کدام است؟»
پرسش درست این است:
«برای این مسئله، این گروه، این سازمان، این زیرساخت، این بودجه و این آیندهٔ کاری، کدام زبان انتخاب مناسبتری است؟»
با وجود همهٔ این ملاحظات، CPP همچنان برای طیف بسیار گستردهای از برنامهنویسان، سامانهها و زمینههای کاربردی، یکی از بهترین و توانمندترین انتخابهای موجود بهشمار میآید.
چرا باید اطرافیانتو با اینستا بشناسی؟
اصلا مهم نیست این موضوع! چرا باید به خاطر تاییدهای دیگران زندگی کنی!؟ چه انتظاریه! اعتماد به نفس چیز خوبیه…
روی اهدافت متمرکز شو بذار هرکی خوشحال میشه بشه هرکی ناراحت میشه بشه! صدها تفکر هست ممکن نیست همه راضی باشن ازت.😉
فقط آزارت به کسی نرسه، همین! بشین زندگی خودتو کن بابا همه درد و بدبختی دارن بیکارن مگه بشینن برا هر نمایشی واکنش بدن به به چه چه کنن واست.
اصلا مهم نیست این موضوع! چرا باید به خاطر تاییدهای دیگران زندگی کنی!؟ چه انتظاریه! اعتماد به نفس چیز خوبیه…
روی اهدافت متمرکز شو بذار هرکی خوشحال میشه بشه هرکی ناراحت میشه بشه! صدها تفکر هست ممکن نیست همه راضی باشن ازت.😉
فقط آزارت به کسی نرسه، همین! بشین زندگی خودتو کن بابا همه درد و بدبختی دارن بیکارن مگه بشینن برا هر نمایشی واکنش بدن به به چه چه کنن واست.
COMPΞZ 🧬
اگر Reflection (بازتاب) را فقط با چیزی که در زبانهای دیگر دیدهاید مقایسه میکنید، باید منتظر C++26 بمانید. چون قرار نیست فقط نوعها و اعضای یک کلاس را ببینیم؛ قرار است خودِ ساختار برنامه به مادهٔ اولیهای برای تولید کد، اعتبارسنجی، خودکارسازی و ساخت کتابخانههای…
ویژگی قراردادها (Contracts)، بعد از Reflection یکی از قدرتمندترین قابلیتهای استاندارد CPP26 است. 👌🔝
به زبان ساده، قراردادها باعث میشوند کد فقط «اجرا نشود»، بلکه قوانین خودش را هم بهصورت رسمی بیان کند. و چه چیزی بهتر از این؟!
یعنی یک تابع میتواند دقیقاً مشخص کند:
۱) با چه ورودیهایی اجازهٔ اجرا دارد؛
۲) فراخواننده چه تعهدی در برابر آن دارد؛
۳) تابع بعد از اجرا چه نتیجهای را تضمین میکند؛
۴) و چه شرایطی در منطق داخلی آن نباید هیچوقت شکسته شود.
برای مثال:
اینجا
سپس
بنابراین قانون تابع دیگر فقط داخل توضیحات، مستندات یا ذهن برنامهنویس نیست؛ بلکه به بخشی رسمی از خود زبان تبدیل میشود.
در واقع تابع به فراخواننده میگوید:
در اصل قراردادها، کد، محدودیتها، انتظارات و تضمینهای خودش را به شکلی قابلفهم برای برنامهنویس، کامپایلر، ابزارهای تحلیل و حتی عاملهای هوش مصنوعی بیان میکند.
#CPP26 #Contracts #Reflection #ModernCPP #SoftwareEngineering #Programming
به زبان ساده، قراردادها باعث میشوند کد فقط «اجرا نشود»، بلکه قوانین خودش را هم بهصورت رسمی بیان کند. و چه چیزی بهتر از این؟!
یعنی یک تابع میتواند دقیقاً مشخص کند:
۱) با چه ورودیهایی اجازهٔ اجرا دارد؛
۲) فراخواننده چه تعهدی در برابر آن دارد؛
۳) تابع بعد از اجرا چه نتیجهای را تضمین میکند؛
۴) و چه شرایطی در منطق داخلی آن نباید هیچوقت شکسته شود.
برای مثال:
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 کامپایل بشن شدیداً مشتاقم و از همین الآن از قوائد و ویژگیهای جدید پیروی خواهم کرد.
https://gcc.gnu.org/gcc-16/
https://gcc.gnu.org/gcc-16/changes.html
https://cppreference.com/cpp/compiler_support/26
هم ماژولها الآن در دسترس هستند، هم قراردادها و حتی رفلکشنها. 🫡 و این یعنی نسخههای بعدی محصولاتمون احتمالاً با GCC کامپایل بشن شدیداً مشتاقم و از همین الآن از قوائد و ویژگیهای جدید پیروی خواهم کرد.