کد چیست؟ فراتر از دستورالعملهای ماشین
خلاصهٔ کاملتر
کد چیه؟ جواب سطحیش اینه که یه سری دستور به ماشینه. اما Unmesh Joshi، مهندس ارشد ThoughtWorks و نویسنده کتاب Patterns of Distributed Systems، یه سوال عمیقتر میپرسه: حالا که LLMها میتونن حجم زیادی کد اجراپذیر از توضیحات ساده تولید کنن، چی از کدنویسی باقی میمونه که واقعاً ارزش داشته باشه؟
جواب اینه که کد همیشه دو جنبه داشته. اول، دستورالعمل به ماشین: کدی که محاسبات رو هدایت میکنه، داده رو جابجا میکنه و اجرا رو هماهنگ میکنه. این همون بخشیه که داره کالایی میشه. دوم، مدل مفهومی از دامنه مسئله: اینجاست که "طراحی" اتفاق میافته. یه کدبیس خوب فقط ماشین رو هدایت نمیکنه، بلکه مفاهیمی میسازه که انسانها و ابزارها بتونن باهاشون استدلال کنن.
هر دامنه جدی — از بانکداری و خردهفروشی گرفته تا وب و زیرساخت — واژگان خاص خودش رو داره. وقتی یه توسعهدهنده برای دامنه خردهفروشی کد مینویسه، باید مفاهیمی مثل customer، order، shipment رو به واژگان فنی مثل HTTP متدها یا الگوهای repository ترجمه کنه. این ترجمه یه واژگان جدید میسازه که در نام متغیرها، مرز متدها و سلسلهمراتب کلاسها شکل میگیره.
فریمورکها و کتابخانهها مثل Spring در واقع واژگان مدونشده برای دامنههای فنی هستن؛ رایجترین الگوها رو کپسوله میکنن. اما هرچی به هسته مدل کسبوکار نزدیکتر بشی، انتزاعها باید محلیتر و اختصاصیتر باشن. به همین دلیله که مفهوم Bounded Context در Domain-Driven Design (DDD) اینقدر مهمه — هر context مرزی رو مشخص میکنه که در اون یه واژگان خاص معتبره. یه کلمه ممکنه در دو context معنی متفاوتی داشته باشه.
این واژگان محلی از طریق جلسات تکرارشوندهای ساخته میشه که در اونا کد مینویسیم و روش فکر میکنیم. تکنیکهایی مثل TDD برای این کار عالین، چون فیدبک مداومی بین مدل و رفتارش ایجاد میکنن. این فرآیند نمیتونه در انزوا اتفاق بیفته — همکاری نزدیک بین توسعهدهندگان، متخصصان دامنه و کاربران ضروریه.
نکات کلیدی:
- کد دو نقش داره: دستورالعمل به ماشین (داره کالایی میشه) و مدل مفهومی از دامنه (همچنان ارزشمنده)
- کدنویسی خوب یه عمل ترجمهست: واژگان دامنه کسبوکار رو به واژگان فنی نگاشت میکنه
- فریمورکها واژگان مدونشده دامنههای فنی هستن، اما برای هسته کسبوکار کافی نیستن
- مفهوم Bounded Context در DDD مرزهایی میسازه که انتزاعهای محلی در اونا معنا دارن
- TDD و همکاری با متخصصان دامنه ابزارهای کشف این واژگان محلی هستن




