The Practice of Programming
تا حالا شده که زمان زیادی را برای کد نویسی یک الگوریتم اشتباه هدر داده باشید؟ از ساختمان داده ای استفاده کنید که بسیار پیچیده باشد؟ برنامه ای را تست کرده باشید اما یک مشکل واضح را از قلم انداخته باشید؟ یک روز را صرف جستجوی باگی کرده باشید که باید در عرض پنج دقیقه آن را پیدا میکردید؟ لازم است که برنامه سه برابر سریعتر اجرا شود و از حافظهی کمتری استفاده کند؟ تلاش کرده اید که برنامه ای را از یک workstation به یک PC منتقل کنید یا بالعکس؟ سعی کرده اید تغییر ناچیزی در برنامه شخص دیگری ایجاد کنید؟ دوباره برنامه ای را باز نویسی کرده اید زیرا نمیتوانستید آن را درک کنید؟
جالب بود؟ این موارد به طور مداوم برای برنامه نویسان اتفاق میافتد. اما مقابله با چنین مشکلاتی اغلب دشوارتر از آن چیزی است که باید باشد، زیرا مباحثی مانند تست کردن، اشکال زدایی، قابلیت حمل، کارایی، گزینههای طراحی، سبک و تمرین برنامه نویسی معمولاً مورد توجه دورههای علوم کامپیوتر یا برنامه نویسی قرار نمیگیرند. اکثر برنامه نویسان با افزایش تجربه، آنها را به طور اتفاقی یاد میگیرند و عده کمی هم هرگز آنها را یاد نخواهند گرفت.
کتاب تمرین برنامه نویسی فراتر از کد نویسی صرف است. برنامه نویسان همچنین باید مصالحهها را ارزیابی کنند، از بین گزینههای طراحی یکی را انتخاب کنند، اشکال زدایی و تست کنند، کارایی را بهبود بخشند و نرم افزارهای نوشته شده توسط خود و دیگران را نگهداری کنند. در عین حال، آنها ضمن رعایت مشخصات باید به مواردی مانند سازگاری، استحکام و قابلیت اطمینان نیز بپردازند.
رویکرد ما در این کتاب مبتنی بر این اصول اساسی و بهم پیوسته است که در همه سطوح محاسبات اعمال میشوند. این اصول شامل سادگی است که برنامهها را کوتاه و قابل مدیریت نگه میدارد؛ وضوح، که اطمینان حاصل میکند که آنها توسط افراد و همچنین ماشینها به راحتی درک میشوند؛ عمومیت، به این معنی که آنها در طیف گسترده ای از موقعیتها به خوبی کار میکنند و در صورت بروز شرایط جدید، وفق پیدا میکنند؛ و اتوماسیون، که به ماشینها اجازه میدهند که برای ما کار کنند و ما را از انجام کارهای پیش پا افتاده خلاص کنند.
کتاب «تمرین برنامه نویسی» همهی این عناوین را پوشش میدهد. این کتاب مملو از توصیههای کاربردی و مثالهای واقعی با زبانهای سی، سی پلاس پلاس، جاوا و انواع مختلف زبانهای برنامه نویسی خاص منظوره است. این کتاب شامل فصل هایی در مورد:
- اشکال زدایی: یافتن به سرعت و با قاعده باگ ها
- تست: تضمین اینکه نرم افزار به درستی و قابل اعتماد کار میکند
- کارایی: سریعتر و فشردهتر ساختن برنامه ها
- قابلیت حمل: اطمینان از اجرای برنامهها در همه جا بدون تغییر
- طراحی: توازن اهداف و محدودیتها برای تصمیم گیری در مورد انتخاب بهترین الگوریتمها و ساختمان داده ها
- رابط ها: استفاده از انتزاع و پنهان کردن اطلاعات برای کنترل فعل و انفعالات بین اجزا
- سبک: نوشتن کدی که بخوبی کار کند و خواندن آن لذت بخش باشد
- notation: انتخاب زبانها و ابزارهایی که به ماشینها اجازه میدهند تا بیشتر کارها را انجام دهند