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

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

We create because the world deserves better code.

https://linktr.ee/compez
Download Telegram
COMPΞZ 🧬
اینجا داره یک اعتراض احتمالی به حرف قبلی خودش رو بررسی می‌کنه. اسلاید قبلی می‌گفت: هوش مصنوعی احتمالاً برنامه‌نویس‌ها رو به‌صورت گسترده حذف نمی‌کنه؛ بلکه باعث میشه آدم‌ها با ابزارهای بهتر، نرم‌افزار بیشتر و بهتر بسازن. حالا این اسلاید میگه: But wait! Disconfirming…
خب این هم تقریباً بخش نهایی صحبت‌ها که می‌گه:
ما بی‌دلیل با این سرعت رشد نمی‌کنیم.

We’re growing gangbusters for a reason


آینده برای زبان‌هایی که به performance per Watt اهمیت می‌دن، و برای توسعه‌دهنده‌های انسانی، همچنان روشنه.

اون بخش، Performance per Watt یعنی چقدر کار مفید به ازای هر وات انرژی انجام می‌دی.

در دنیای AI، دیتاسنتر، موبایل، GPU، سرور و embedded، فقط سریع‌بودن کافی نیست؛ باید با مصرف انرژی کمتر، خروجی بیشتری بگیری.

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

یعنی هرچقدر سخت‌افزار قوی‌تر شده، مسئله‌ها هم بزرگ‌تر شدن.

هرچقدر ابزارها بهتر شدن، باز نیاز به نرم‌افزار بیشتر شده.
پس AI و ابزارهای جدید هم احتمالاً نیاز به برنامه‌نویس رو حذف نمی‌کنن؛ بلکه حجم نرم‌افزار و نیاز به کارآیی (پرفرمنس) رو بیشتر می‌کنن.

لیست زبان‌های general-purpose مهمی که واقعاً روی performance/Watt تمرکز دارند هم کوتاهه چون فقط این سه گزینه رو داریم:

C, C++, Rust

یعنی از نظر هرب، زبان‌هایی مثل JavaScript، Python، Java و غیره کاربردهای عظیم دارن، ولی وقتی بحث مصرف انرژی، کارایی، کنترل منابع و نزدیکی به سخت‌افزار جدی می‌شه، انتخاب‌های اصلی خیلی محدود می‌شن: C و ++C و Rust.

بخش آخر توضیح، DSLها، ASICها و FPGAها همیشه در لبهٔ تکنولوژی استفاده می‌شن.

خلاصهٔ داستان:

دنیا به سمت محاسبات سنگین‌تر، AI بزرگ‌تر، دیتاسنترهای پرمصرف‌تر و مسئله‌های پیچیده‌تر میره؛ بنابراین زبان‌هایی که کارآیی (پرفرمنس) و مصرف انرژی رو جدی می‌گیرن، مخصوصاً++C آیندهٔ قوی دارن!

وسلام علیکم و رحمت‌الله برکاته... 😆👊🏼 بای

https://farcaster.xyz/compez.eth/0xf264d24c
من می‌گم اینا دزدن شما بگو نه! از خدمات رایگان دارن میلیاردی پول می‌کشن بالا!
بله... هزینه‌های جنگه از جیب ملت باید در بیارن به هر حال...
پاسخ رو قبلاً بین پست‌های چند ماه پیشم داده بودم. این ابزار برای کسانی که خلاق باشن، داتاً تنبل نباشن و به جزئیات اهمیت بدن و در واقع کیفیت براشون مهم باشه بسیار هم مناسبه.

هوش مصنوعی رو به عنوان یک همکار یا کارآموز به کار بگیرید! باید تعلیم بدین بهش! اگه چیزی فاقد مرجع و منبع علمی باشه لزوماً درست و صحیح نیست، حتی اگر بهترین محصول رو بسازید.

هرچی به خوردش بدی همون میشه! من هیچ کدی رو چشم بسته ازش قبول نمی‌کنم مگر اینکه خودم به خوبی درکش کنم و چیزی باشه که خودم حتی بهتر از اون رو قبلاً می‌نویسم یا می‌فهمم.

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

آموزشش بدین!

یک الگو که قراره خودتون تکرار کنید رو براش طراحی کنید، بنویسید و بعد گسترشش رو با AI تسریع کنید.

اینکه روی کدی که تولید می‌کنه کامل اعتماد کنی اشتباهه! باید بدونی داری چیکار می‌کنی! به خصوص در حوزهٔ low level programming بسیار حساس هست و پیش‌فرضیات خودش رو منتقل می‌کنه.

باید به صورت تأکیدی به این ماشین بی‌شعور یاد بدی که چه کاری رو نباید انجام بده! اینکه هر کسی بتونه باهاش کد بنویسه یا حتی برنامه کامپایل و اجرا کنه مهم نیست!

مهم اینه بتونی از AI ایراد بگیری و به نفع خروجی استفاده کنی؛ در این سطح اگه باهاش پیش بری رام میشه تبدیل به چیزی میشه که خودت می‌خوای!

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

خارج از این باشه ذهنت تنبل میشه، چیز‌هایی که بلدی رو هم از یاد میبری! اما اگه مدام کد‌ها رو ارزیابی کنی مثل یک استاد (منتور) خودت کارهای اصلی رو انجام بدی و صرفاً برای تسریع کردن روند توسعه و اشکال‌زدائی ازش کمک بگیری اینطوری کم کم مزایاش رو خواهی دید.

من اصلاً توصیه نمی‌کنم همه چیرو بسپارید به هوش مصنوعی! به هیچ عنوان روی یک خروجی آماده اعتماد نمی‌کنم!

مثل اینه که بعد از ۲۰ سال عمل جراحی رو بسپاری به یه کارآموز که تا به حال هیچ شناختی بهش نداشتی!

به خصوص وب ۳ یا سیستمی! مهم اینه که به مرور زمان باید دانش خودت هم به کمک هوش مصنوعی ارتقاء پیدا کنه نه اینکه راکت بمونه.

سخن نهایی اینه که، آیندهٔ برنامه‌نویسی به دو دسته افراد تقسیم خواهد شد:

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

خروجی به مراتب رقابتی و به وضوح متماز خواهد بود.

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

انتخاب با خودته! مسیر تنبلی و کودن شدن یا مسیر شکوفایی و ارتقاء. 👋🏼
👍3
COMPΞZ 🧬
پس AI و ابزارهای جدید هم احتمالاً نیاز به برنامه‌نویس رو حذف نمی‌کنن؛ بلکه حجم نرم‌افزار و نیاز به کارآیی (پرفرمنس) رو بیشتر می‌کنن.
به نظر ساتر هم توجه کنید در این خصوص!

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

مثلِ همین نیاز به کارآیی برای مصرف انرژی بهینه‌تر! نیاز به متخصصات سطح سیستمی رو به شدت افزایش میده؛ چیزی که با اکتفا به هوش مصنوعی کامل نمی‌شه و شما باید بهش اهمیت بدین.

تنها کیفیت هست که باقی خواهد ماند.

کیفیت رو چطور می‌شه ساخت؟ با توجه به جزئیات و مهندسی واقعی مبتنی بر تجربیات و داده‌هایی که مدام به دست میارید.
COMPΞZ 🧬
به نظر ساتر هم توجه کنید در این خصوص! با این فناوری تنوع و حجم محصولات نرم‌افزاری افزایش پیدا می‌کنه و از نظر من در نهایت هر چیزی عینِ یه چارت معاملاتیه. وقتی به یک نقطهٔ اشباع برسه؛ دیگه بعدش قانون عرضه و تقاضا حرف خواهد زد! ممکنه حالا روی موج عرضهٔ هزاران…
بخوام دسته‌بندی کنم، اگه به بعضی‌ها بر نخوره (بدون اینکه قصدم توهین به کسی باشه یا جسارتی کنم) میشه اینطوری تقسیم بندی می‌کنم:

۱. برنامه‌نویس واقعی / مهندس نرم‌افزار

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

برای این آدم، ابزار فقط ابزار است؛
دیروز کامپایلر و دیباگر بود، امروز AI و Codex و Copilot و Claude هم بهش اضافه شده. نباید فرقی در چرا یا چگونگی ماجرا باشه!

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

۲. کدنویس / برنامه‌نویس مهارتی
خب من بارها گفتم برنامه‌نویسی یک مهارته! فاقد اینکه بخشی از مهندسی کامپیوتر هست ولی واقعاً یک مهارته و همه می‌تونن یاد بگیرن و ازش لذت ببرن.

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

این دسته با AI خیلی می‌تونه رشد کنه.
چون اگر کمی کنجکاو باشه، سؤال درست بپرسه، خروجی رو کورکورانه قبول نکنه، و کم‌کم بفهمه پشت هر تصمیم چی هست، می‌تونه خودش رو به سطح بالاتری برسونه.
برای این‌ها AI مثل یک استاد خصوصی همیشه‌حاضر می‌تونه عمل کنه؛
به شرطی که فقط دنبال «کد بده» نباشن، دنبال «چرا اینطوری؟» هم باشن.

۳. کد کپی‌کن / خروجی‌چسبان
قبلاً از Stack Overflow و GitHub کد برمی‌داشت یا توی گروه‌ها از ماها می‌پرسد بدون اینکه بفهمه چی به چیه.
امروز هم همون کار رو می‌کنه، فقط منبعش عوض شده:

به جای جستجوی گوگل، از AI خروجی می‌گیره و می‌چسبونه داخل پروژه.
ظاهر کارش بهتر شده، سرعتش بیشتر شده، حتی ممکنه چندتا پروژه هم تحویل بده؛

اما مشکل اصلی هنوز همونه:

درک نداره.
نمی‌دونه کد چرا کار می‌کنه.
نمی‌دونه کجا خراب می‌شه.
نمی‌دونه امنیتش چیه.
نمی‌دونه مقیاس‌پذیره یا نه.
نمی‌دونه معماریش از پایه اشتباهه یا نه.
این دسته با AI شاید موقتاً شبیه کدنویس‌ها دیده بشه، ولی در پروژه‌های جدی، پیچیده، بلندمدت یا محصول واقعی، خیلی زود تفاوتش مشخص می‌شه.
پس در واقع AI همه رو یکسان نکرده؛
فقط فاصله‌ها رو مدرن‌تر کرده.

برنامه‌نویس واقعی با AI تبدیل می‌شه به یک نیروی چندبرابر قدرتمندتر.
کدنویس خوب با AI می‌تونه رشد کنه و حرفه‌ای‌تر بشه.
کد کپی‌کن فقط از «کپی از اینترنت» رسیده به «کپی از هوش مصنوعی».

ابزار عوض شده، ولی ماهیت آدم‌ها نه.

فرق اصلی هنوز هم همونه:

یکی می‌فهمه و می‌سازه.
یکی یاد گرفته و اجرا می‌کنه.
یکی هم فقط می‌چسبونه و امیدوار می‌مونه کار کنه.
👍33
COMPΞZ 🧬
بخوام دسته‌بندی کنم، اگه به بعضی‌ها بر نخوره (بدون اینکه قصدم توهین به کسی باشه یا جسارتی کنم) میشه اینطوری تقسیم بندی می‌کنم: ۱. برنامه‌نویس واقعی / مهندس نرم‌افزار کسی که فقط کد نمی‌نویسه؛ مسئله رو می‌فهمه، معماری می‌چینه، انتخاب فنی می‌کنه، هزینهٔ تصمیم‌ها…
ولی یه دسته‌ای هم هستن که خیلی متفاوت‌ترن! البته طبعییه شاید به خاطر عدم علاقه یا صرفاً از روی اجبار وارد چنین حوزه‌هایی می‌شن.

اون‌هایی که با وجود AI هنوز هم در نحوهٔ سوأل پرسی موندن! اینا باید یاد بگیرن چطور باید سوأل بپرسن؛ باید یاد بگیرن با هوش مصنوعی چطور باید کار بکنن.

همون دسته‌ای که با وجود گوگل زحمت نمیدادن به خودشون یه جستجو بکنن؛ بارها بوده توی گروه‌هامون دیدم و خیلی هم زود ناراحت میشن چون دیگران یا حوصلشونو ندارن یا اعصابشون در این سطح از همراهی نمی‌رسه.

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

خلاصهٔ کلام که، برنامه‌نویسی واقعاً هنره! من همیشه بخشی از آرتیست بازی به شمار میارمش کافیه استعداد‌هاتو کشف کنی و کمی کنجکاو باشی.
3👍2
Audio
عشق کنید. 🔼🎶
Please open Telegram to view this post
VIEW IN TELEGRAM
6🔥1
COMPΞZ 🧬
بعضیا اوقات می‌بینم می‌گن ای آقا سامسونگ و گوشی‌هاش تحریم نیستن و فلان! صد می‌ارزه به آیفون! ولی خب مردم که اطلاعات ندارن! همون سامسونگ یا هر گوشی اندرویدی دیگه مگه سیستم‌عاملش عنننن‌دروید نیست؟ خب اون لامصب هم مال گوگلِ و این گوگل مگه آمریکایی نیست؟ پس چطوری…
خب رسیدیم به هشتاد و یکمین روز قطعی و همه جا پر شده از خبر‌های اینکه قطعی اینترنت به خاطر حفظ امنیت کاربران دروغی بیش نیست! خب معلومه گه دروغه! شک داشتین؟

وقتی گوشی‌های ما همه چیزش آمریکاییه، وقتی همین کامپیوتری که جلوم هست و نشستم باهاش برنامه می‌نویسم آمریکایه، وقتی اون گوشی که دست پدر مادرامونه اونم آمریکاییه، وقتی هر چیزی که یه سرش مربوط به آمریکاست همشون آمریکایی هستن شما چیرو داری به چی سرپوش می‌ذاری آخه! 😪 همون لحظه باید بدون هیچ تردیدی بگی بابا جمع کن این خزعبلات رو کم چرند تحویل ملت بدین!

بعضی‌ها می‌گن بابا اندروید متن بازه فلانه لینوکسه ایمنه فلانه... خب نادان سازندش کیه؟ گوگل نیست مگه؟ گوگل مال کجاست؟ 😄 بخواد نمی‌تونه آفتابه برداره به هیکل ایمنی کاربراش!؟

اینا انقدر وقیحن که اسلحه میدن دست بچه چند ساله جلو دوربین آموزش میده بهش بعد تو انتظار داری مغز درست حسابی داشته باشن و چیزی که می‌گن واقعاً درست باشه! پهع! ای دل غافل...

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

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

بعضی اوقات می‌شینم فکر می‌کنم که این که کاش هیچی حالیمون نبود... هرچقدر جزئیات بیشتری بدونی به ضررته و تو همچین کشوری بیشتر عذاب می‌کشی چون عوام دقیقاً بر خلاف آگاهی تو حرکت می‌کنن و داری به وضوح می‌بینی که به خاطر عدم آگاهی چطور دارن سواری میدن و این یجورایی برعکس می‌شه!

حتی خودِ اینترنت هم ریشش از آمریکا شروع شده... خندتون نمی‌گیره به این همه پخمگی آخه!

حتی شک می‌کنی به خودت که بابا شاید من واقعاً هیچی حالیم نیست! ولی من که هرچقدر زور زدم دیدم نه واقعاً دارم دیونه می‌شم و کاری هم ازم بر نمیاد جز اهمیت ندادن و گذر از حماقت این جامعه...
👍5
COMPΞZ 🧬
حتی خودِ اینترنت هم ریشش از آمریکا شروع شده... خندتون نمی‌گیره به این همه پخمگی آخه!
مثل اینه که من یه فناوری رو ساخته باشم، متن‌باز هم بذارمش توی گیت‌هاب بگم آی ملت دنیا بیایید استفاده کنید.

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

اینجا من همچین خبری بشنوم خندم می‌گیره! چون من سازندهٔ نسخهٔ اصلی و اون فناوری هستم بعد من نمی‌تونم چیزی که نوشتم رو طوری روش تغییرات بدم یا چیزایی که از قبل توش نوشتم رو طوری فعال کنم که دهنتو سرویس کنه؟

یعنی این همون تفکره که می‌گن طرف خدارو هم بنده نیست همونه! واقعاً فکر می‌کنن خلیفت‌الله قاطع خدا اینا هستن!

جمع کنید بابا کم آبرو ریزی کنید تو دنیا کاری کردین که هرکس می‌گه تو ایرانی هستی مجبوریم سه ساعت توضیح بدیم که نه ما از اونایی که می‌بینی نیستیم اشتباه شده!
👍4
دهنت سرویس کسیییییی! من اینترنتم قطع نبود ثابت می‌کردم کی فعالیتش بیشتره 😁
😴1
COMPΞZ 🧬
دهنت سرویس کسیییییی! من اینترنتم قطع نبود ثابت می‌کردم کی فعالیتش بیشتره 😁
هرچی که می‌بینی اینجا چیزی ثبت نشده یا نتم قطع بوده یا در یه بدبختی گیر کردم که باعث بانیش هم ستار جون بوده 😡😊
اگه خدا بخواد برنامه‌هامون به ترتیب این شکل هست که به دو سوی هم‌زمان روشون وقت می‌ذاریم، یکیش در حوزهٔ وب ۳ هست و یکیش خارج از حوزهٔ وب ۳ ولی در نهایت هر دو نوع محصولات باهم ادغام می‌شن که همشون هم تأخیر خوردن هم برنامه‌هامون کمی بهم ریخته دلیلش هم که مشخصه چرا...

پس دو مسیر به صورت هم‌زمان پیگیر هستیم:

برای حوزهٔ غیر وب ۳ (با امکان ادغام)

۱) انتشار کامل GenyConnect برای اندروید به همراه به‌روز رسانی بری هر سه پلتفرم دسکتاپ
۲) به‌روز رسانی و حل مسائل گزارش شده در GenyDL IDM و انتشار کامل برای هر سه پلتفرم مک، لینوکس و ویندوز
۳) ادامهٔ روند توسعه برای Reactor Engine به عنوان موتور توسعهٔ محصولات آینده
۴) ساخت و توسعهٔ محصولات جنی‌لیپ کاربردی، هم داخلی و هم خارجی بر مبنای ایده‌های کاربردی‌تر بر پایهٔ موتور سیمرغ
۵) به‌روز رسانی وب‌سایت رسمی و مستند‌سازی توسعه


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

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

بعضی موارد خاص هم هستن که توی فهرست نمیارم، سورپرایز خواهند بود! و بعضی موارد که به جزئیات بیشتری نیاز داره به این فهرست اضافه خواهد شد.

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

پروژه‌ٔ جنی‌کانکت هم اصلاً تو برنامم نبود! شرایط شخمی اینترنت و مشکلاتی که کلاینت‌های آشغال چینی دارند مجبورم کرده روش وقت بذارم.
33
همیشه خطر از درون زبان ساطع نمیشه! در طرز پیاده‌سازی ما و نحوهٔ بیان به وجود میاد:

https://www.youtube.com/watch?v=PcerWZRm_eA

در ++C خودِ bool خطرناک نیست؛ خطر اصلی اینه که bool خیلی راحت و بی‌صدا وارد جاهایی می‌شه که معنی کد رو مبهم، شکننده و اشتباه‌پذیر می‌کنه. عنوان ویدیو هم همین را می‌گوید: Bool - Implicitly Dangerous؛ یعنی «بولین، به‌خاطر ضمنی بودنش خطرناک است». ویدیو جزو Lightning Talkهای CppCon 2025 است و مدت کوتاهی دارد.

به این کد دقت کنید:
createUser("Kambiz", true, false, true);

این کد از نظر کامپایلر کاملاً درست است، ولی برای انسان فاجعه است.
true یعنی چی؟ ادمین است؟ فعال است؟ ایمیل تأیید شده؟ لاگ بگیرد؟ رونویسی کند؟ چه کار کند؟

مشکل وقتی بدتر می‌شود که جای true و false را اشتباه بزنی و کامپایلر هیچ چیزی نگوید:

setWindow(true, false);

پس یکی از پیام‌های اصلی این است: bool در API عمومی، مخصوصاً به‌عنوان پارامتر تابع، اغلب بوی بد طراحی است.

راه بهتر این است که معنی را داخل نوع بیاوریم:
enum class Fullscreen : bool { no, yes };
enum class Resizable : bool { no, yes };

void setWindow(Fullscreen fullscreen, Resizable resizable);

setWindow(Fullscreen::yes, Resizable::no);

اینجا دیگر کد خودش توضیح می‌دهد چه می‌کند و اشتباه جابه‌جا کردن پارامترها هم سخت‌تر می‌شود.

یا مثلاً به‌جای این:
save(file, true);

بهتر است این باشد:
enum class Overwrite {
no,
yes
};

save(file, Overwrite::yes);

یک خطر دیگر bool در ++C، تبدیل‌های ضمنی است. چیزهای مختلف می‌توانند به bool تبدیل شوند: pointerها، عددها، بعضی objectها با operator bool و غیره. این گاهی مفید است:

if (ptr) {
// pointer is not null
}

ولی در طراحی API می‌تواند باعث رفتارهای ناخواسته شود؛ مخصوصاً وقتی overloadها یا constructorها درگیر شوند.

جمع‌بندی ساده‌اش:

از bool برای state داخلی ساده مشکلی نیست.

برای مثال:

bool isConnected = false;

ولی برای APIهایی که خوانایی و امنیت مهم است، مخصوصاً وقتی تابع چند تا bool می‌گیرد، بهتر است از enum class، type wrapper، یا option struct استفاده کنی.

مثلاً این:

connect(server, true, false, true);

بهتر است اینگونه باشد:

struct ConnectionOptions {
bool enableTls = true;
bool allowReconnect = false;
bool verboseLogging = true;
};

connect(server, ConnectionOptions{
.enableTls = true,
.allowReconnect = false,
.verboseLogging = true
});

حرف نهایی Jeff Garland این است:
نوع bool ساده‌ترین type به نظر می‌رسد، اما چون معنی را حمل نمی‌کند، در طراحی API می‌تواند یکی از مبهم‌ترین و خطرناک‌ترین انتخاب‌ها باشد.

#cpp #cplusplus #notes #api #design
👍6
Reflection + Contracts + Modules are effectively building the foundation of the next generation of C++ architectures — not just adding new syntax.
🫡4👍2
COMPΞZ 🧬
Reflection + Contracts + Modules are effectively building the foundation of the next generation of C++ architectures — not just adding new syntax.
چرا اینو می‌گم؟
چون… خفن‌ترین محصولات مثل آنریل انجین حتی که همچین ساختار‌هایی رو مجبور شده به خاطر پیچیدگی زبان پیداده کنه:

UCLASS()
UPROPERTY()
UFUNCTION()


یا حتی کیوت مواردی مثل:

Q_OBJECT
signals:
slots:
Q_PROPERTY


این‌ها عملاً reflection مصنوعی هستن که Epic مجبور شده خودش بسازه چون زبان نداشته.

در کیوت هم، کل moc برای همین کمبود ساخته شده.

وقتی ویژگی رفلکشن (انعکاس) روی استاندارد ۲۶ فعال می‌شه، عملا شما وارد یک معماری نوین خواهید شد.

برای همین خیلی‌ها میگن Reflection در C++26 شاید از مهم‌ترین ویژگی‌های چند دهه اخیر باشه.

واسه همین خیلی از توسعه‌دهنده‌ها از جمله خودم انقدر برای Reflection هیجان‌زده‌ایم.

چون تا قبلش برای ساختن سیستم‌های “هوشمند” توی ++C مجبور بودی بری سمت ماکرو‌ها یا شونصد‌تا روش پیچیده.

شاید بگیم خب تا حالا چرا برای سی‌++ همچین چیزی نداشتیم در حالی که خیلی از زبان‌ها این ویژگی رو دارن!

دلیلش اینه که در بسیاری از زبان‌ها reflection یعنی:

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

یعنی بدون GC بدون Runtime و همه چیز در حالت زمان کامپایل پردازش خواهد شد.

حتی تصورش هم برام هیجان‌انگیزه که چه تحول عظیمی در صنعت آینده نرم‌افزار در حال شکل‌گیریه. 😎🥁🫡
🫡5👍3😍2🔥1