برنامه‌نویسی دلی! – بخش یک

  • یوسف مهرداد بی‌بالان

پیش‌گفتار یک: نگاه ریاضی‌گونه و نگاه مهندسی‌گونه به برنامه‌نویسی

به گذشته که نگاه می‌کنم می‌بینم که آموزش‌ برنامه‌نویسی همراه بوده با نوعی نگاه که بی‌شباهت به حل مساله‌های ریاضی یا فیزیک نیست. نوعی نگاه حذف جزییات در ابتدا و اضافه کردن جزییات در ادامه.

برای نمونه در نگاه ریاضی‌گونه به برنامه‌نویسی شما ابتدا باید ساختار داده‌ها (data structure) را تعیین کنید و بعد با نگاه رویه‌گونه و الگوریتمی به کمک تابع یا رویه (procedure or function) راه‌حل‌تان را به گام‌هایی بشکنید و همین گام‌ها را تکرار کنید. روی کاغذ، در کامپیوتر یا در ذهن‌تان،‌ ابتدا باید این اجزا فکر کنید و بعد کدنویسی رو شروع کنید. البته می‌توانید کمی فکر کنید و بعد کد بنویسید و بعد باز هم فکر کنید و کد بنویسید و …

در نگاه مهندسی هم برای نمونه در مدل آبشاری (waterfall) تلاش بر این است که قبل از ورود به جزییات و کدنویسی، طرحی از راه حل آماده شده باشد و به اندازه کافی پخته شده باشد تا هزینه پیاده‌سازی و ورود به جزییات کاهش پیدا کند. بماند که در این رویکرد تاکید بر این است که تا جای ممکن قبل از شروع پیاده‌سازی به همه چیز فکر کنید.

از این منظر،‌ نگرش روش‌های تکراری-تدریجی (iterative-incremental) نیز همین گونه است فقط «به همه چیز فکر کن بعد کد بنویس» به «یک کم فکر کن یک کم کد بنویس بعد دوباره فکر کن …». تلاش بر این است که اندازه و مدت آماده کردن طراحی و سپس پیاده‌سازی آن کاهش پیدا کند.

رویکرد توسعه‌ی آزمون‌ محور (Test Driven Development) به شکلی خلاقانه به جای شروع از «فکر کردن»، با نگاه صرفن کدنویسی، تلاش می‌کند تا ابتدا طرح کلان را از لا به لای آزمون‌هایی که به صورت کد نوشته می‌شود بیرون بیاورد. یادآوری این نکته مهم است که یکی از نتایج دوست‌داشتنی توسعه‌ی آزمون‌ محور این است که شما برای نوشتن آزمون‌ها باید به طراحی کدی که می‌خواهید بنویسید فکر کنید. ولی در هر صورت باید «قبل از پیاده‌سازی فکر کنید»

برداشت من این است که اگر از این منظر به روش‌های توسعه‌ی نرم‌افزار نگاه کنیم همه‌ی آنها بر این بنیان استوارند که «اول فکر کن بعد کد بنویس»!

در یکی دو نوشته‌ی بعدی در نظر دارم کمی در این باره بنویسم و ایده‌ای را با شما مطرح کنم.

گزیده:

برنامه‌نویس کیه؟
برنامه‌نویس، ماشینی یه که قهوه [ یا چایی] رو به کد تبدیل می‌کنه!

https://bibalan.com/?p=4706
یوسف مهرداد بی‌بالان

یوسف مهرداد بی‌بالان


کانال تلگرام

نظرات (3)

wave
  • مصطفی

    ۵ بهمن ۱۴۰۳ در ۱۹:۳۹

    درود جناب دکتر
    با توجه به رشد چشمگیر هوش مصنوعی، آینده شغل مهندسی نرم افزار و برنامه نویسی را چگونه می‌بینید؟ آیا فرصت است یا تهدید
    خصوصا که زاکربرگ گفته در سال ۲۰۲۵ مهندسین رده میانی با ai جایگزین می‌شوند.
    https://www.itpro.com/software/development/a-sign-of-things-to-come-in-software-development-mark-zuckerberg-says-ai-will-be-doing-the-work-of-mid-level-engineers-this-year-and-hes-not-the-only-big-tech-exec-predicting-the-end-of-the-profession

    پاسخ
    • یوسف مهرداد بی‌بالان

      ۲۳ بهمن ۱۴۰۳ در ۰۵:۵۰

      سلام، وقت شما به خیر
      چه پرسش دشواری!
      شواهد حاکی از اینه که مهندسی نرم افزار و برنامه‌نویسی دچار تحول بنیادی شده یا خواهند شد. از دید من بخش بزرگی از پیشرفت‌های هوش مصنوعی هنوز وارد دنیای نرم‌افزار نشده‌اند و با ورود اون‌ها تحولات بزرگ‌تری رو شاهد خواهیم بود.
      بی‌شک چنین شرایطی هم فرصته و هم تهدید. اون‌ چیزی که فراتر از تهدیدهای رایج تکنولوژی‌های نوظهور هست، سرعت تحولات حوزه‌ی هوش مصنوعی و کاربردهای اونهاست که حتا فعالان این حوزه رو هم تهدید می‌کنه.

      پاسخ
      • مصطفی

        ۲۶ بهمن ۱۴۰۳ در ۲۰:۰۹

        متشکرم از شما

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

برای خروج از جستجو کلید ESC را بفشارید