مهندس نرم افزار، توسعه دهنده، برنامه نویس
برنامه نویس عملگرا
مقدمه
کتاب برنامه نویس عملگرا (The Pragmatic Programmer) یکی از معروف ترین کتاب های دنیای برنامه نویسی است که بیست سال پیش در سال 1999 نوشته شده است. اخیرا ویرایش بیست سالگی این کتاب منتشر شده و نویسندگان کتاب به همین مناسبت مصاحبه های زیادی انجام داده و در پادکست های زیادی صحبت کرده اند. صحبت هایی که این دو، دیو تامس و اندی هانت، در یکی از پادکست ها کردند به نظرم خیلی مفید و جالب توجه آمدند. به همین دلیل 7 دقیقه ابتدایی این پادکست 69 دقیقه ای را ترجمه کردم. اگر فرصت کافی پیش آمد و اگر دیگرانی پیدا شدند که به این ترجمه علاقه داشته باشند، کار را کامل تر خواهم کرد.
نکته 1: گویا این کتاب قبلاً به فارسی هم ترجمه شده.
نکته 2: چند سال پیش پادکستی وجود داشت (و هنوز هم وجود دارد) به اسم Software Engineering Radio. دوستی به اسم محمد علی بزرگ زاده (؟) در سایتی به آدرس http://www.se-topics.ir که الان دیگر از کار افتاده، خیلی از قسمت های این پادکست را به فارسی ترجمه و در یک mailing list به دیگران ارسال می کرد. کار ایشان را آن زمان خیلی می پسندیدم. امیدوارم چنین کارهایی باز هم تکرار شوند.
مصاحبه
بی جی: هزاران کتاب در مورد برنامه نویسی موجود است اما فقط بعضی از آنها اثری بزرگ و طولانی از خود بر جا گذاشته اند. و یکی از آنها «برنامه نویس عملگرا: ازشاگردی تا استادی» نوشته اندرو هانت و دیو تامس است. که به تعداد بی شماری از توسعه دهندگان کمک کرده است تا شغل و کارکردشان را بهبود دهند. اگر هدف شما در شغلتان این است که چیزی بیش از شخصی باشید که به خاطر زندگی روزمره کد می نویسد، این کتاب به شما کمک می کند تا یک برنامه نویس واقعاً عالی بشوید.
ما اندی و دیو را در این مصاحبه در کنار خودمان داریم تا درباره نوشتن کتاب و بیست سالگی آن با ما صحبت کنند. اما قبل از آن که ادامه دهیم، ویل، این هفته چه کاره بوده ای؟
ویل: من در حال انجام Regression Test برای حجم زیادی از کد بوده ام. و پیدا کردن اشتباهات کوچکی که در یک بازه چند هفته ای مرتکب شده بودم و اصلاح آنها. البته اعتراف می کنم که کار خیلی پر اهمیتی نبوده! و همش همین. اندرو؟
اندی: چطوری؟ کی؟
ویل: من فکر می کردم اسمت باید اندرو باشه!
اندی: دارم فکر می کنم چه کسی من را اندرو صدا می زند. فکر می کنم مادر زنم بوده. البته خیلی هم مهم نیست. چیزی که در طول هفته در حال انجامش بودم این بوده که با دیو در حال تکمیل آخرین بخش نسخه بیست سالگی کتاب بودیم و من داشتم خستگی اون کار را از تن به در می کردم.
اندی: تصحیح می کنم که کتاب همین الان هم آماده است. کتاب 8 می منتشر شد و شما می توانید به pragprog.com بروید و نسخه الکترونیک آن را همین الان بخرید. محتوای این نسخه کامل است درست مثل نسخه کاغذی که بعدتر آماده خواهد شد. شما می توانید E-Book را الان بخرید و پاییز و اواخر سپتامبر، نسخه کاغذی را در آمازون، کتاب فروشی های محلی و هر جایی که کتاب های خوب را روی درخت های مرده چاپ می کنند بخرید.
دیو: این کاملاً و کلاً بی شرمانه است.
اندی: درسته، ممنون. این از جمله شغل های کثیفی است که کسی ممکن است مجبور به انجام آن باشد.
ویل: دیو، تو چطور؟
دیو: من مشغول سر و کله زدن با چیزهای جالبی بودم. چون دارم کتاب را تمام می کنم، حالا وسط آماده سازی برای دوره ای هستم که می خواهم پاییز در SMU برگزار کنم و این دوره راجع به زبان های برنامه نویسی است. و چون بهترین راه یاد گرفتن زبان های برنامه نویسی، استفاده از آنها و تلاش کردن ها و دنبال کردن چراها است، پس من دارم تلاش می کنم که از اول اولش شروع کنم و این هفته در حال سر و کله زدن با ALGOL 60 و اسمبلر PDP-11 و پاسکال بودم. البته من با پاسکال سر و کله نمی زدم، من پاسکال را دوست دارم. اما ALGOL 60 خیلی زشت است!
ویل: گاهی با دلفی سر و کله می زنم. پاسکال خوب است. بقیه…
دیو: در واقع من از اسمبلر PDP-11 خوشم می آید و آن را دوست دارم. و چیزی حدود 5 سال با اون زندگی کردم و چیزهای جالبی با اون ساختیم. معماری خیلی زیبایی دارد. و پایه خیلی ایده ها در زبان های برنامه نویسی سطح بالا بوده است. * اما استفاده از آن به طور کلی لذت بخش است.
اندی: و یکی از کارهای جالبی که می شود با این تکنولوژی های باستانی انجام داد…
دیو: این چیزهای عجیب از کجا اومده اند؟
اندی: من فکر می کنم مفید است که تاریخچه این طور چیزها بررسی شود و بفهمیم چطور به اینجا رسیدیم و این چیزها از کجا آمده اند؟
دیو: و موضوع جالب این است که بیشتر این زبان ها را می توانید از در مرورگرتان اجرا کنید. شبیه ساز PDP 11/70 وجود دارد که با جاوا اسکریپت نوشته شده و در براوز من اجرا می شود. و چیز ترسناک این است که این چیزی که با جاوا اسکریپت در براوزر من اجرا می شود سریع تر است از سخت افزار اصلی که این زبان روی آن اجرا می شد است.
اندی: ما می توانیم مدل شبیه ساز را امتحان کنیم. *
ویل: خیلی جالب به نظر میاد.
دیو: در کنار موضوع تاریخ، من در حال باز خوانی مقالاتی بودم و خواندن مونولوگ دایجسترا درباره یادداشت های راجع به برنامه نویسی ساخت یافته که مربوط به دهه 1970 بوده. اگر آن را خوانده باشید، می دانید که ترمینولوژی آن مقداری ناخوشایند است. و اگر واقعاً خوانده باشید، می دانید که این یادداشت همه نکات خوبی که امروزه باید رعایت می کنیم را پیش بینی کرده و حتی به نحوی توصیه می کند. و این خودش خیلی خوب و جالب بوده است.
اندی: قطعاً چیزهای با ارزشی را می توان در آن مقالات قدیمی پیدا کرد. من فکر می کنم این برای مردم شوکه کننده است وقتی بدانند که دانشمندان کامپیوتر و برنامه نویس های دهه 60 و 70 واقعاً می دانستند که دارند چه کار می کنند. وقتی به عقب بر گردیم و نگاهی به کتاب The Mythical Man-Month فرد بروکس بیندازیم می فهمیم که مفاهیم آن هنوز هم دقیق است. به جز بعضی تکنولوژی های خارج از رده، اوضاع هنوز همان است. ما هنوز مشکلات مشابهی داریم. اگر به عقب برگردید و نگاهی بیندازید به سخن رانی دایجسترا تحت عنوان برنامه نویس خیلی فروتن، نیاز به برنامه نویس خیلی فروتن، و نگذارید که نفس (ایگو) شما جلوتر از خودتان قرار بگیرد. که نمی گذارد با تمام ظرفیت وجودتان کار کنید. به این خاطر که اگر این کار را بکنید، بعداً باگ یا مشکلی وجود نخواهد داشت که بخواهید برای رفع آنها اقدامی کنید. و کل ایده این است که در آینده هم همین مشکلات را خواهیم دید. مثلاً در 1970، 1972. این مشکلات را من حتی همین هفته پیش هم دیدم!
ویل: حتی همین هفته!
اصل این مطلب در اینجا منتشر شده.
مطلبی دیگر از این انتشارات
کدر (coder) کیه ؟ برنامه نویس (programmer) کیه ؟
مطلبی دیگر از این انتشارات
فرادرس، فرای درس نیست.
مطلبی دیگر از این انتشارات
داکر برای دات نت کار ها - قسمت 3 (اجرای Hello World)