برنامهنویسی دلی! – بخش یک
پیشگفتار یک: نگاه ریاضیگونه و نگاه مهندسیگونه به برنامهنویسی
به گذشته که نگاه میکنم میبینم که آموزش برنامهنویسی همراه بوده با نوعی نگاه که بیشباهت به حل مسالههای ریاضی یا فیزیک نیست. نوعی نگاه حذف جزییات در ابتدا و اضافه کردن جزییات در ادامه.
برای نمونه در نگاه ریاضیگونه به برنامهنویسی شما ابتدا باید ساختار دادهها (data structure) را تعیین کنید و بعد با نگاه رویهگونه و الگوریتمی به کمک تابع یا رویه (procedure or function) راهحلتان را به گامهایی بشکنید و همین گامها را تکرار کنید. روی کاغذ، در کامپیوتر یا در ذهنتان، ابتدا باید این اجزا فکر کنید و بعد کدنویسی رو شروع کنید. البته میتوانید کمی فکر کنید و بعد کد بنویسید و بعد باز هم فکر کنید و کد بنویسید و …
در نگاه مهندسی هم برای نمونه در مدل آبشاری (waterfall) تلاش بر این است که قبل از ورود به جزییات و کدنویسی، طرحی از راه حل آماده شده باشد و به اندازه کافی پخته شده باشد تا هزینه پیادهسازی و ورود به جزییات کاهش پیدا کند. بماند که در این رویکرد تاکید بر این است که تا جای ممکن قبل از شروع پیادهسازی به همه چیز فکر کنید.
از این منظر، نگرش روشهای تکراری-تدریجی (iterative-incremental) نیز همین گونه است فقط «به همه چیز فکر کن بعد کد بنویس» به «یک کم فکر کن یک کم کد بنویس بعد دوباره فکر کن …». تلاش بر این است که اندازه و مدت آماده کردن طراحی و سپس پیادهسازی آن کاهش پیدا کند.
رویکرد توسعهی آزمون محور (Test Driven Development) به شکلی خلاقانه به جای شروع از «فکر کردن»، با نگاه صرفن کدنویسی، تلاش میکند تا ابتدا طرح کلان را از لا به لای آزمونهایی که به صورت کد نوشته میشود بیرون بیاورد. یادآوری این نکته مهم است که یکی از نتایج دوستداشتنی توسعهی آزمون محور این است که شما برای نوشتن آزمونها باید به طراحی کدی که میخواهید بنویسید فکر کنید. ولی در هر صورت باید «قبل از پیادهسازی فکر کنید»
برداشت من این است که اگر از این منظر به روشهای توسعهی نرمافزار نگاه کنیم همهی آنها بر این بنیان استوارند که «اول فکر کن بعد کد بنویس»!
در یکی دو نوشتهی بعدی در نظر دارم کمی در این باره بنویسم و ایدهای را با شما مطرح کنم.
گزیده:
برنامهنویس کیه؟
برنامهنویس، ماشینی یه که قهوه [ یا چایی] رو به کد تبدیل میکنه!
https://bit.ly/4g1BmsJ
https://t.me/bibalan_com
https://bibalan.com/?p=4706
Post #366
524