Software Engineer Labdon
601 subscribers
43 photos
4 videos
2 files
754 links
👑 Software Labdon

حمایت مالی:
https://www.coffeete.ir/mrbardia72

ادمین:
@mrbardia72
Download Telegram
🔵 عنوان مقاله
Why You Should Write More Context Tests and Fewer Unit Tests

🟢 خلاصه مقاله:
این مقاله با نقد تکیه‌ی پیش‌فرض بر «هرم تست» می‌گوید همیشه بهترین راه، نوشتنِ انبوه تست‌های واحد نیست. لوکاس فرناندس پیشنهاد می‌کند تمرکز بیشتری بر تست‌های «کانتکست» یا سطح بالاتر داشته باشیم؛ تست‌هایی که تعامل چند مؤلفه را با هم می‌سنجند و رفتار واقعی سیستم را می‌آزمایند. به‌گفته‌ی او، اتکای زیاد به تست‌های واحدِ مبتنی بر ماک می‌تواند اطمینان کاذب بدهد و با هر تغییر اجرای بی‌ضرر بشکند، در حالی که بسیاری از خطاهای واقعی در ادغام و پیکربندی را پوشش نمی‌دهد. راهکار، ایجاد توازنی تازه است: برای منطقِ خالص و لبه‌ها هنوز تست واحد بنویسید، اما اولویت را به تعداد کم‌تری تست سطح‌بالا بدهید که سناریوهای مهم و جریان‌های کاربری را می‌پوشانند و در عمل کیفیت سیستم را دقیق‌تر تضمین می‌کنند.

🟣لینک مقاله:
https://cur.at/2gikXOU?m=web


👑 @software_Labdon
بروزرسانی امنیتی جدید مایکروسافت کابوس کاربران شد...!

▪️آپدیت امنیتی آگوست 2025 برای ویندوز 10 و 11 باعث مشکلات جدی شده؛ تا جایی که بعضی کاربرا حتی نمی‌تونن برنامه‌ها رو نصب کنن.

▪️این آپدیت بخش UAC (کنترل حساب کاربری) رو خیلی سخت‌گیر کرده و کاربرای غیرادمین برای نصب یا اجرای بعضی برنامه‌ها مجبور به وارد کردن پسورد ادمین می‌شن.

+ در بعضی موارد هم برنامه‌ها اصلاً اجرا نمی‌شن ؛ مایکروسافت این مشکل رو تأیید کرده و احتمالاً به‌زودی یک پچ اصلاحی منتشر می‌کنه.
🔵 عنوان مقاله
From Chaos to Clarity: My Journey with QA Test Documentation

🟢 خلاصه مقاله:
** این مقاله با روایت تجربه مدهومینی کُدیتوواکّو نشان می‌دهد برای مقدار مستندسازی تست، قاعده ثابتی وجود ندارد؛ میزان و جزئیات اسناد باید متناسب با زمینه تعیین شود. معیارهای اصلی تصمیم‌گیری عبارت‌اند از هدف سند (ارتباط، هم‌راستاسازی، مدیریت ریسک)، سطح ریسک و پیچیدگی سیستم، الزامات انطباقی، و نیازهای تیم. رویکرد پیشنهادی «به‌اندازه کافی» است: در محیط‌های چابک از دارایی‌های سبک مثل چک‌لیست و چارتر استفاده کنید و در حوزه‌های پرریسک یا مقرراتی به سراغ اسناد رسمی‌تر و ردیابی‌پذیر بروید. اسناد باید زنده، نسخه‌دار، مرتبط با داستان‌ها و باگ‌ها، و به‌طور منظم بازبینی شوند. پرهیز از دام کاغذبازی، تکرار غیرضروری و اسناد بی‌مصرف ضروری است. نتیجه این رویکرد، شفافیت، تحویل قابل پیش‌بینی‌تر، ردیابی بهتر نقص‌ها و تمرکز تست بر ریسک‌های مهم است.

🟣لینک مقاله:
https://cur.at/M6ppa8C?m=web


👑 @software_Labdon
1
🔵 عنوان مقاله
Test Automation Guardrails

🟢 خلاصه مقاله:
افزایش تولید کد توسط هوش مصنوعی ریسک خطا، حفره‌های امنیتی و رفتارهای پیش‌بینی‌نشده را بیشتر می‌کند. اتکا به بررسی دستی کافی نیست؛ تست خودکار باید به‌عنوان نرده‌بان‌های ایمنی عمل کند و رفتار مورد انتظار را به‌صورت مشخصات اجرایی تثبیت کند. یک رویکرد لایه‌ای شامل تست‌های واحد، یکپارچه/قراردادی و سرتاسری، همراه با تحلیل ایستا و اسکن امنیتی، پوشش گسترده‌تری می‌دهد و در CI/CD تغییرات پرخطر را مسدود می‌کند. کیفیت و پایداری تست‌ها (کاهش فلیکینس، معنابخشی، سنجش اثربخشی) حیاتی است و هرچند هوش مصنوعی می‌تواند در تولید تست کمک کند، تأیید انسانی ضروری است. در نهایت، با پرچم‌های ویژگی، استیجینگ/کناری و مشاهده‌پذیری، محافظت تا تولید ادامه می‌یابد؛ نتیجه اینکه در عصر کد تولیدشده توسط AI، اتوماسیون تست مهم‌ترین سپر ایمنی است.)

🟣لینک مقاله:
https://cur.at/IABV4B5?m=web


👑 @software_Labdon
کد ۴۸ ساله معروف بیل گیتس، اوپن‌سورس شد!
مایکروسافت کد ۴۸ ساله‌ی معروف بیل گیتس را متن‌باز کرد تا هر کسی بتواند آن را ببیند و استفاده کند.

https://github.com/microsoft/BASIC-M6502

| <Saber V/>
🐳1👨‍💻1😎1
زبان C یاد بگیرید.

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

درهای جدیدی در ذهن‌تون باز میشه.

<Amirreza Gh/>
2👍1🐳1🆒1
🔵 عنوان مقاله
Automation Maturity Matrix & Test Pyramid

🟢 خلاصه مقاله:
این مقاله یک شیوه ارزیابی عملی برای کیفیت و اتوماسیون تست ارائه می‌کند که هرم تست را با سنجش بلوغ فرایند ترکیب می‌کند. با تکیه بر اصول هرم تست، توزیع متعادل میان تست‌های واحد، یکپارچه و انتها‌به‌انتها بررسی می‌شود و در عین حال ابعاد فرایندی مانند راهبرد، ابزارها، CI/CD، مدیریت داده و ناپایداری، پوشش و گزارش‌دهی امتیازدهی می‌گردد. خروجی مدل یک امتیاز بلوغ است که به تیم‌ها کمک می‌کند وضعیت خود را بسنجند، ضد‌الگوهایی مانند «هرم وارونه» و تست‌های شکننده را شناسایی کنند و برای بهبود مستمر برنامه‌ریزی کنند.

🟣لینک مقاله:
https://cur.at/2bwHqLs?m=web


👑 @software_Labdon
🔵 عنوان مقاله
Get better test reports from Playwright

🟢 خلاصه مقاله:
Playwright گزارش‌دهنده‌های داخلی قدرتمندی دارد، اما در پروژه‌های بزرگ‌تر معمولاً به شفافیت بیشتر در سطح «گام‌های تست» نیاز است. این مقاله با اشاره به یک نکته عملی از کریس انیتان نشان می‌دهد چطور می‌توان خروجی تست‌ها را طوری شفاف‌تر کرد که هر مرحله با هدف و معنای روشن در گزارش بیاید. نتیجه، رفع خطا سریع‌تر، بازخورد دقیق‌تر در CI و کاهش زمان تحلیل علت خرابی تست‌هاست.

🟣لینک مقاله:
https://cur.at/IIQYVvC?m=web


👑 @software_Labdon
Forwarded from Gopher Job
Companies using Go.xlsx
12.1 KB
📂 یه فایل فوق‌العاده آماده کردیم براتون!

🔹 لیست ۶۴ شرکت بزرگ دنیا که از Golang استفاده می‌کنن
🔹 همراه با موقعیت‌های شغلی فعال Golang توی همین شرکت‌ها

اگه دنبال فرصت‌های شغلی توی حوزه Backend، DevOps یا Software Engineering هستی، این فایل می‌تونه یه نقطه شروع عالی باشه.

📌 همین الان فایل رو بردار و شرکت‌ها + موقعیت‌ها رو ببین

@gopher_job
1🙏1
🔵 عنوان مقاله
Why Tests Aren't Enough (And What Actually Keeps Code Safe)

🟢 خلاصه مقاله:
تست‌ها لازم‌اند اما برای ایمن‌سازی نرم‌افزار کافی نیستند؛ چون فقط رفتارهای پیش‌بینی‌شده را می‌سنجند و می‌توانند حس امنیت کاذب ایجاد کنند. راه‌حل، رویکرد مبتنی بر ریسک است: شناسایی دارایی‌ها و مسیرهای حیاتی، تحلیل تهدیدها، و اولویت‌بندی بر اساس اثر و احتمال. امنیت واقعی با دفاع لایه‌ای به دست می‌آید: معماری و مرزبندی درست، بازبینی کد، آنالیز ایستا/پویا، مدیریت وابستگی‌ها، و در بُعد عملیاتی مشاهده‌پذیری، کَنری و فلگ ویژگی، رول‌بک سریع، محدودسازی نرخ و تایم‌اوت. فرهنگ مهندسی نیز مهم است: مستندات طراحی همراه با مدل‌سازی تهدید، چک‌لیست‌ها، پسا‌تحلیل بی‌سرزنش، و مالکیت و ران‌بوک‌های روشن. پیام نهایی: به‌جای تمرکز بر درصد پوشش تست، به مهندسی آگاه از ریسک روی بیاورید و تست را در کنار کنترل‌های چندلایه و آمادگی عملیاتی به‌کار بگیرید.

🟣لینک مقاله:
https://cur.at/5RQBzEF?m=web


👑 @software_Labdon
👌2
🚀 رفع هشدارهای Git GC (Garbage Collection)

گاهی وقتا موقع اجرای git pull یا git fetch با پیام‌های زیر مواجه میشید:

warning: The last gc run reported the following. Please correct the root cause and remove .git/gc.log
warning: There are too many unreachable loose objects; run 'git prune' to remove them.


این هشدارها یعنی ریپازیتوری شما پر از فایل‌های قدیمی و objectهای غیرقابل دسترس شده. برای پاکسازی و بهینه‌سازی کافیه مراحل زیر رو انجام بدید:

---

🔹 مرحله ۱: پاک کردن لاگ قدیمی GC

rm -f .git/gc.log


🔹 مرحله ۲: حذف objectهای غیرقابل دسترس

git prune


🔹 مرحله ۳: اجرای Garbage Collection به‌صورت کامل و تهاجمی

git gc --aggressive --prune=now


---

اگه بخواید همه‌ی مراحل رو یکجا اجرا کنید:

rm -f .git/gc.log && git prune && git gc --aggressive --prune=now


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


👑 @software_Labdon
🍾1
🔵 عنوان مقاله
The Blame Game in Software: Why QA Isn't Your Firefighter

🟢 خلاصه مقاله:
این مقاله می‌گوید نگاه سنتی به QA به‌عنوان «آتش‌نشانِ انتهای چرخه» هم کهنه است و هم مضر. انداختن بار کیفیت بر دوش تستِ مرحله‌ی پایانی باعث بازخورد دیرهنگام، هزینه‌ی اصلاح بالا، تعارض نقش‌ها و فرسودگی می‌شود. رویکرد درست، کیفیتِ «درون‌ساخته» و مسئولیت مشترک کل تیم است: شیفت-چپ با دخالت زودهنگام QA در نیازمندی و طراحی، تعریف معیارهای پذیرش، مالکیت تست‌های واحد و یکپارچه توسط توسعه‌دهندگان، خودکارسازی معنادار و CI/CD برای بازخورد سریع، و تمرکز QA بر مدیریت ریسک و آزمون اکتشافی. فرهنگِ بدون سرزنش، پسامرتکب‌های یادگیرنده و سنجه‌های پیشرو، بهبود مداوم را ممکن می‌کند. به‌گفته‌ی گنگا پاندی، QA باید مربی و شریک کیفیت باشد نه آتش‌نشان؛ نتیجه، تحویل سریع‌تر، پایدارتر و با اعتماد بیشتر است.

🟣لینک مقاله:
https://cur.at/JdwrxzU?m=web


👑 @software_Labdon
🔵 عنوان مقاله
Set up a Playwright Browser Server in AWS EC2

🟢 خلاصه مقاله:
** این مقاله پیشنهاد می‌کند برای اجرای تست‌های Playwright روی چند مرورگر (Chromium، Firefox و WebKit) به‌جای نصب مرورگرها روی هر ماشین، یک Browser Server متمرکز روی AWS EC2 راه‌اندازی کنید؛ ایده‌ای که توسط تانانجایان راجاسکاران مطرح شده است. با راه‌اندازی مرورگرها در حالت سرور و اتصال از راه دور از طریق WebSocket، نصب و به‌روزرسانی محلی حذف می‌شود و پایداری، مقیاس‌پذیری و استفاده از منابع بهبود می‌یابد. مقاله به مراحل کلی استقرار (انتخاب EC2، نصب Playwright یا استفاده از ایمیج‌های Docker، مدیریت فرآیند)، الزامات امنیتی شبکه (VPC خصوصی، TLS/SSH، احراز هویت) و نکات عملیاتی (مانیتورینگ، ایزوله‌سازی نشست‌ها، مقیاس‌پذیری و مدیریت هزینه) می‌پردازد. نتیجه این رویکرد، اجرای یکپارچه و قابل‌اعتماد تست‌ها روی چند مرورگر با نگهداشت ساده‌تر است.

🟣لینک مقاله:
https://cur.at/vk7NvBl?m=web


👑 @software_Labdon
یه سایت بصری خفن برای اینکه کارکرد الگوریتمای مختلف رو ببینید و بهتر درکش کنین:
https://algorithm-visualizer.org
🔵 عنوان مقاله
Graph Transformers in Structured Data (8 minute read)

🟢 خلاصه مقاله:
** این مقاله توضیح می‌دهد که ترنسفورمرهای گراف به‌عنوان نسل بعدی GNNها با تکیه بر مکانیزم توجه، وابستگی‌های دوربرد و روابط ناهمگن را بهتر از پیام‌رسانی محلی مدل می‌کنند. داده‌های کسب‌وکار که معمولاً در جداول رابطه‌ای ذخیره می‌شوند، می‌توانند به‌صورت گراف بازنمایی شوند؛ موجودیت‌ها گره، کلیدهای خارجی یال، و ستون‌ها ویژگی می‌شوند. این بازنمایی یکپارچه امکان کشف الگوهای عمیق‌تر و ساخت مدل‌های قابل‌اعتمادتر را برای مسائلی مانند کشف تقلب، توصیه‌گری، پیش‌بینی ریزش و ریسک اعتباری فراهم می‌کند. نویسنده بر ضرورت طراحی خط لوله تبدیل طرحواره به گراف، توجه به مقیاس‌پذیری (نمونه‌برداری یا توجه پراکنده) و مقایسه با مبناهای قوی تأکید می‌کند.

🟣لینک مقاله:
https://www.unite.ai/what-every-data-scientist-should-know-about-graph-transformers-and-their-impact-on-structured-data/?utm_source=tldrai


👑 @software_Labdon
Forwarded from AI Labdon
🤖 علاقه‌مند به دنیای هوش مصنوعی هستی؟

🏖 دنبال می‌کنی که چطور AI داره دنیا رو متحول می‌کنه؟

🍻پس جای درستی اومدی!

🎯 در کانال ما هر روز:

🔍 جدیدترین اخبار و دستاوردهای دنیای AI

🧠 تحلیل‌ تخصصی در حوزه یادگیری ماشین، دیپ لرنینگ و مدل‌های زبانی

💼 بررسی کاربردهای هوش مصنوعی در پزشکی، صنعت، آموزش، امنیت و اقتصاد

🛠 معرفی ابزارها، دوره‌ها و منابع یادگیری

📈 بررسی ترندها و آینده‌ فناوری‌های مرتبط با هوش مصنوعی

🍄همه‌ی این‌ها به زبان ساده، خلاصه و قابل فهم برای همه علاقه‌مندان — از مبتدی تا حرفه‌ای!
👇👇👇👇👇👇

https://t.me/ai_labdon
🔵 عنوان مقاله
Assessing Near-Term Accuracy in the Existential Risk Persuasion Tournament (28 minute read)

🟢 خلاصه مقاله:
** این مقاله دقت پیش‌بینی‌های کوتاه‌مدت در «مسابقه اقناع ریسک‌های وجودی» را بازبینی می‌کند و نشان می‌دهد که حتی فوق‌پیش‌بین‌ها و متخصصان هوش مصنوعی از ۲۰۲۲ تاکنون سرعت پیشرفت را، به‌ویژه در استدلال ریاضی، به‌طور جدی دست‌کم گرفته‌اند. در شاخص المپیاد جهانی ریاضی، تجمیع پیش‌بینی‌ها رسیدن مدل‌ها به سطح مدال طلا را عمدتاً حوالی ۲۰۳۰ می‌دانست و تنها حدود ۸٫۶٪ احتمال می‌داد زودتر رخ دهد؛ در حالی‌که اوپن‌ای‌آی و گوگل در ژوئیه امسال به این سطح رسیدند. نویسندگان بر لزوم بازکالیبراسیون و به‌روزرسانی روش‌های پیش‌بینی تأکید می‌کنند، زیرا این دست‌کم‌گرفتن می‌تواند برنامه‌ریزی برای پژوهش، ایمنی و حکمرانی را از واقعیت عقب بیندازد.

🟣لینک مقاله:
https://static1.squarespace.com/static/635693acf15a3e2a14a56a4a/t/68b6ce72b3435a79858344b7/1756810866830/near-term-xpt-accuracy.pdf?utm_source=tldrai


👑 @software_Labdon
🔵 عنوان مقاله
A PM's Guide to AI Agent Architecture: Why Capability Doesn't Equal Adoption (11 minute read)

🟢 خلاصه مقاله:
** این مقاله یادآور می‌شود که توانمندی فنیِ عامل هوشمند به‌تنهایی به پذیرش کاربر منجر نمی‌شود؛ کاربران معمولاً با اولین شکست واقعی آن را کنار می‌گذارند. نویسنده نشان می‌دهد که چالش اصلی برای مدیران محصول، تصمیم‌های معماری در لایه‌های مختلف عامل—از تفسیر ورودی و برنامه‌ریزی تا حافظه و مدیریت حالت، یکپارچه‌سازی ابزارها، ایمنی، بازخورد و مسیرهای بازیابی—است؛ تصمیم‌هایی که می‌توانند تجربه‌ای «جادویی» یا آزاردهنده بسازند. توصیه نهایی این است که برای تجربه‌ای سریع، شفاف، خطاپذیر و قابل اعتماد طراحی شود تا اعتماد و در نتیجه پذیرش پایدار شکل بگیرد.

🟣لینک مقاله:
https://www.productcurious.com/p/a-pms-guide-to-ai-agent-architecture?utm_source=tldrai


👑 @software_Labdon
اکانت یکی از برنامه‌نویس‌های معروف هک شده و پکیج‌های جاوا اسکریپت اون که بیشتر از ۱ ‌میلیارد دانلود داشتن، آلوده شدن. پکیج‌هایی مثل chalk, strip, ansi, debug و حدود ۱۵ پکیج‌ دیگه از پکیج‌های آلوده شده هستن و آدرس مقصد تراکنش‌های کریپتو رو به آدرس هکرها تغییر می‌دن و یه‌ جورایی کل اکو سیستم جاوااسکریپت آلوده شده. پیشنهاد شده فعلا رو ولت‌های نرم‌افزاری تراکنشی انجام ندید.
دلیل اینکه در زبان‌هایی مثل Go یا Rust یا حتی C دچار سردرگمی میشید، بخاطر این هست که میخواهید ساختارهایی که از زبان‌های شی‌گرا در ذهن دارید رو دقیقا به همون شکل در این‌ها هم داشته باشید. این زبان‌ها هم تا حدی این توهم رو ایجاد میکنند که اینکار شدنی هست؛ و میتوان گفت که همینطور است، ولی فقط در ظاهر!

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

مثلا اگر امروز به یک برنامه‌نویس Go یا Rust یک پروژه‌ی بانکی یا یک سیستم فروشگاه رو محول کنید، به احتمال زیاد این پروژه رو مبتنی بر DDD انجام خواهد داد! حتی یک برنامه‌نویس Clojure هم احتمالا همین رویه را دنبال خواهد کرد! الان احتمالا در ذهن شما این سوال پیش آمده که DDD؟ چطور همچین چیزی ممکن هست؟ مگه این برای شی گرایی نیست؟ خیر، «شما» اون رو با شی گرایی یاد گرفتید، ولی خودش یک ایده‌ی عمومی است.

شما به شکلی آموزش دیده‌اید که یونیت‌های کد را در قالب کلاس ها ببینید. و وقتی به زبان‌هایی میرسید که دارای کلاس نیستند، اولین چیزی که به فکرتان میرسد این است که کلاس را در آن‌ها شبیه سازی کنید. درست است؟

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

وقتی حرف از کلاس میشود، بیشتر افراد میکنند کلاس یک بلاک از کد است که تعدادی فیلد و متد را بین دو {} گرد هم آورده است.

اما کسی سوال نمیکند خب چرا اینکار را کردند؟ فقط چون میخواستند یک سری فیلد داشته باشند و یک سری تابع بتوانند روی ان‌ها کار کنند؟

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

ویژگی‌هایی وجود دارد که باعث میشود کلاس، کلاس بشود:

۱. کلاس دارای مکانیزم وراثت است.
۲. کلاس پلی مورفیسم مبتنی بر وراثت را فراهم میکند (متدهای virtual)
۳. از روی کلاس، میتوان آبجکتی در حافظه تولید کرد.
۴. کلاس آبجکت‌ها را دسته بندی میکند (برای همین اسمش class است). یعنی باید بتوان جواب این سوال را جویا شد: ایا فلان آبجکت جزو فلان کلاس است؟
۵. آبجکت‌های ساخته شده از روی کلاس، دارای لایف تایم متفاوتی از سایر بلاک ها هستند. ابجکت‌ها حالت رفرنس دارند. به این معنی که تقریبا در تمام زبان‌ها، در هیپ قرار میگیرند.

اینکه دیتا و توابع را کنار هم و در یک بلاک به اسم کلاس جمع کردن‌اند، به خاطر این است که یک کانتکست یکپارچه پدید آورند که در قالب آن بتوانند همه‌ی ویژگی‌های بالا را برآورده کنند.

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

یا مثلا در C یا سایر زبان‌ها، فیلد‌ها و متدها را در ماژول‌ها گرد هم میاورند. ایا با اینکار آن ماژول تبدیل به کلاس شده است؟

اتفاقی که این وسط افتاده این است:
۱. شما در حین یادگیری شی گرایی بدرستی درک نکردید که کلاس چیست!
۲. بر مبنای آن درک اشتباه، فکر کردید شی گرایی یعنی کنار هم قرار دادن فیلدها و متدها در یک بلاک.
۳. اصرار به این دارید که این درک اشتباه را در زبان‌هایی که اصلا دارای کلاس نیستند پیاده سازی کنید.

این همان جایی است که در زبان‌هایی مانند Go و Rust و Zig  و C سایرین به مشکل بر میخورید. برای همین هست که میگویند این‌ها را با زبان‌های شی گرا اشتباه نگیرید. چون این‌ها از نظر ظاهری، شاید شرایطی را فراهم کنند که به چشم شما مشابه چیزی باشد که در شی گرایی به یاد داشتید، ولی از نظر Semantics با زبان‌های شی گرا متفاوت اند.

| <Amirreza Gh/>
1