حامد حیدریان
حامد حیدریان
خواندن ۲ دقیقه·۳ سال پیش

کتاب Coders at Work: Reflections on the Craft of Programming


این کتاب در سال ۲۰۰۹ نوشته شده و نویسنده آن Peter Seibel در مصاحبه با ۱۵ نفر از تاثیرگذارترین دانشمندان علوم کامپیوتر که طراحان زبان های برنامه نویسی و سیستم عامل موفق و برندگان جایزه تورینگ هستند مصاحبه های جذابی انجام داده. در ادامه خلاصه ای از بخش مربوط به Joshua Bloch معمار و توسعه دهنده فریمورک Collection در زبان برنامه نویسی جاوا و نویسنده کتاب معروف Effective Java را آورده ام:

او در پاسخ به اینکه چه کتاب هایی را هر برنامه نویسی باید بخواند، کتاب Design Patterns معروف به GOF را معرفی کرد که به نظرش از لحاظ بوجود آوردن واژگان مشترک بین برنامه نویسان و وجود تعداد زیادی ایده های ناب، کتاب ارزشمندی است. نکته جالب در مورد او توجه ویژه به بعد "نویسندگی" در برنامه نویسی بود به طوریکه تعدادی از کتاب های معرفی شده اش حتی مربوط به برنامه نویسی نیز نبودند مانند Elements of Style و فرهنگ لغات Merriam-Webster! او همچنین با اشاره به کتاب سترگ The Art of Computer Programming گفت ظرفیت و سرعت لازم برای خواندن همه این مجموعه را نداشته ولی هرگاه بر روی الگوریتمی کار میکند حتما به سراغ آن میرود تا قسمت مربوطه را بخواند. او همچنین با یادآوری اهمیت برنامه سازی موازی کتاب Java Concurrency In Practice را (که خودش از جمله نویسندگان این کتاب است!!!) معرفی کرد. او کتاب قدیمی و مشهور Mythical Man Month را در ابین جمله خلاصه کرد: افزودن نیروی جدید به پروژه ای که از برنامه عقب است تنها وضعیت را بدتر میکند. و با توجه به اینکه این معنی امروز هم معتبر است برنامه نویسان را به مطالعه آن تشویق کرد. او همچنین با توجه به نوع کاری که انجام داده است کتاب Hacker’s Delight(که در حوزه‌ی نوشتن برنامه‌هایی با کارکرد bitwise است) را حائز تاثیری به غایت ژرف بر خودش دانست.

سوال جالب دیگری که نویسنده از او پرسید این بود که در طول فعالیت کاری اش چه چیزهایی را یاد گرفته است که او نام گذاری مناسب عناصر مختلف برنامه و همچنین احتراز از کپی-پیست به طور مطلق را مهمترین مطلبی دانست که به آن رسیده و همچنین به این موارد اشاره کرد:

۱- برنامه نویسی به نوشتن چیزی که کار میکند نیست؛ بلکه به خلق محصولاتی است که خوانایی و بهینگی و توسعه پذیری بالایی دارند و بر خلاف باور عمومی معتقد است هرچه برنامه ای تمیز تر نوشته شود با سرعت بیشتری اجرا میشود!

۲- داکیومنتیشن به شدت مهم است و یکی از دلایل موفقیت جاوا وجود ابزار javadoc از روز اول است

۳- نوشتن برنامه صحیح بسیار دشوار است و بنابراین باید از همه ابزارهای ممکن مانند نوع آزمایی ایستا و genericها و تحلیل ایستای کد نهایت بهره را در جهت رفع باگ های احتمالی ببریم.

۴- اعتقادش به اینکه "هرچه ساده تر بهتر" تقویت شد.

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

او در نهایت برنامه نویسی را ترکیبی از پیشه وری، ریاضیات، مهارت های ارتباطی و هنر نویسندگی فنی(prose) میداند.

کتاببرنامه نویسیمهندسی کامپیوترنرم افزار
حامد حیدریان
شاید از این پست‌ها خوشتان بیاید