این پست ترجمه بخشی از مقاله "Object-Oriented Programming — The Trillion Dollar Disaster" از Medium است. مقاله اصلی خیلی طولانی بود . به همین خاطر مجبور شدم ان را به چند بخش تقسیم کنم.
برنامه نویسی شی گرا به عنوان جواهر تاج دانش کامپیوتر شناخته میشود. راه حل نهایی برای سازماندهی کد. پایان همه مشکلات ما. تنها راه درست برای نوشتن یک برنامه. توسط یک خدای برنامه نویسی به ما عطا شد.
اینطور نیست. مردم شروع به تسلیم شدن زیر بار انتزاعات و گراف های پیچیده اشیا تغییر پذیر کرده اند. زمان گرانبها و قدرت مغز به جای اینکه صرف حل کردن مساعل واقعی شود , صرف ''انتزاعات - abstractions" و "الگو های طراحی - design patterns" میشود.
بسیاری از مردم از جمله مهندسان نرم افزار انتقاداتی به برنامه نویسی شی گرا دارند. به جهنم, حتی مخترع OOP هم یکی از منتقدان شناخته شده OOP مدرن است.
هدف نهایی هر توسعه دهنده نرم افزار باید نوشتن کد قابل اعتماد باشد. هیچ چیز دیگری اهمیت ندارد اگر کد حاوی باگ و غیر قابل اعتماد باشد. و بهترین راه برای نوشتن کد قابل اعتماد چیست؟ سادگی. سادگی متضاد پیچیدگی است. بنابراین در درجه اول مسعولیت ما به عنوان یک توسعه دهنده نرم افزار باید کاستن پیچیدگی باشد.
من صادق هستم , من طرفدار شی گرایی نیستم. البته این مقاله قرار است از ان طرفداری کند. به هر حال دلایل خوبی برای دوست نداشتن OOP دارم.
همچنین درک میکنم که انتقاد از OOP موضوع حساسی است -- شاید به خیلی از خوانندگان توهین کنم. به هر حال کاری که فکر میکنم درست است را انجام میدهم.
هدف من توهین نیست , بلکه بالا بردن اگاهی در مورد اشکالاتی است که OOP معرفی میکند. من از OOP الن کی (Alan Kay) انتقاد نمیکنم -- او نابغه است. آرزو دارم OOP همانطور که او طراحی کرده بود پیاده می شد. من به رویکرد مدرن Java/C# در مورد OOP انتقاد دارم.
من فکر میکنم درست نیست که OOP به عنوان یک استاندارد بالفعل سازماندهی کد از دید خیلی از مردم شناخته شود - از جمله کسانی که خیلی senior هستند. همچنین غیر قابل قبول است که خیلی از زبان های اصلی, به غیر از OOP راه دیگری برای سازماندهی کد پیشنهاد نکنند.
لعنتی, من هنگام کار روی پروژه های OOP خیلی با خودم میجنگم. و حتی سرنخی ندارم که چرا باید اینقدر تلاش کنم. شاید به اندازه کافی خوب نبودم. باید چند تا الگو طراحی دیگه یاد میگرفتم(شاید). و در نهایت کاملا سوختم!
این پست خلاصه ای از سفر ده ساله دست اول من از برنامه نویسی شی گرا به برنامه نویسی Functional است. متاسفانه مهم نیست چقدر تلاش کنم, دیگر نمیتوانم کاربردی برای OOP پیدا کنم. شخصا پروژه های OOP ای را دیده ام که شکست خورده اند چون برای نگهداری بیش از حد پیچیده شده بودند.
قسمت دوم :