ارتباط کدنویسی و تفکر رایانشی
آیا کدنویسی همان تفکر رایانشی است؟ چه ارتباطی بین این دو وجود دارد؟ در دنیای مقایسه ها همیشه افراط و تفریط وجود داشته است. این موضوع هم یکی از مباحثی است که دیدگاه های موافق و مخالف جدی دارد. با ما در ادامه این مقاله برای درک صحیحی از ارتباط کدنویسی و تفکر رایانشی همراه باشید.
قبل از هر چیز اگر تا به حال به عبارت تفکر رایانشی یا computational thinking برنخورده اید و نمی دانید که منظور از آن چیست توصیه می کنیم مقاله تفکر رایانشی چیست را حتما بخوانید. در آنجا به زبان ساده و با ذکر یک مثال به طور کامل در مورد تفکر رایانشی صحبت کردیم. در این مقاله در مورد ارتباط کدنویسی و تفکر رایانشی صحبت می کنیم و خواهیم گفت که دیدگاه های افراطی و تفریطی در این باره وجود دارد. یعنی چه؟ در ادامه توضیح می دهیم.
از نظر دسته ای از صاحب نظران، کدنویسی نه تنها همان تفکر رایانشی نیست بلکه دشمن آن است. یعنی هر کس کدنویس شد دیگر نمی تواند تفکر رایانشی داشته باشد! چه دیدگاه مسخره ای! نه؟ اولین سوالی که می توان از چنین افرادی پرسید این است که منظورتان از کدنویسی چیست؟ اگر منظور از کدنویسی همان کپی کردن کدهای دیگران و استفاده از آن ها در برنامه بدون فهمیدن آن هاست، بله حق با شماست. اما آیا نمی توان حالت دیگری برای کدنویسی متصور شد؟
آیا کدنویسی فقط کپی پیست کردن است؟
یک سوال مهم که باید به آن پاسخ دهیم این است: آیا هر کس کدنویسی می کند دارد کدهای دیگران را کپی می کند؟ افرادی که با دنیای کدنویسی آشنا هستند شاید بگویند در حال حاضر کدِ هر برنامه ای در اینترنت موجود است. وقتی کد آن چیزی که می خواهیم وجود دارد، چرا از آن استفاده نکنیم؟ در جواب می گوییم بله تا حدودی حق با شماست … ولی فقط تا حدودی 🙂
کدهای آماده برای مسائل جدید وجود ندارد!
کدهای آماده بسیاری در اینترنت موجود است اما نه برای مسائل جدید در حوزه های مختلف. هرچند در اینجا هم اگر بلد باشید از تفکر رایانشی بهره بگیرید، می توانید مسائل را به قدری کوچک کنید که بتوانید برای بخش زیادی از آن ها هم از راه حل های موجود استفاده کنید؛ اما باز هم بالاخره در جایی هست که باید روش جدیدی برای موضوعات مورد نظرتان ارائه و پیاده سازی کنید.
کدهای آماده خالی از اشکال نیست!
کدهایی که در اینترنت وجود دارد در بعضی موارد خالی از اشکال نیست و باگ های زیادی در آن هست که باید رفع شود. بنابراین تا زمانی که به درستی کد را نفهمید استفاده کردن از آن نه تنها مفید نیست؛ بلکه شاید در مواقعی موجب ایجاد اشکال در کارتان شود. پس در اینجا هم یک فرآیند فکر کردن و فهمیدن دارد اتفاق می افتد که درصد زیادی از فواید کدنویسی در همین بخش فکر و فهمیدن اتفاق می افتد. (چرا گفتیم درصد زیادی و نگفتیم همه فواید کدنویسی؟ چون یکی از فواید کدنویسی افزایش خلاقیت است. این افزایش خلاقیت زمانی که شما همیشه در حال مطالعه و استفاده از کدهای دیگران هستید نسبت به زمانی که ایده ای را خودتان ارائه و پیاده سازی می کنید، کمتر اتفاق می افتد.)
چرخ را دوباره اختراع نکنید!
نکته سوم اینکه: گاهی اوقات ایده جدید حاصل ترکیب چند ایده است که در حال حاضر وجود دارند. اگر کسی سه ایده مختلف را که کدهای آن ها موجود است با هم ترکیب کرده و محصول یا خدمت جدیدی ارائه دهد، شما او را متهم به کپی پیست کردن می کنید؟ حتما خیر! چرا؟ چون زمانی که دوچرخه اختراع شد، چرخ و سایر لوازم آن وجود داشت. سازنده دوچرخه تنها این لوازم را به طرز صحیح و عالی کنار هم قرار داد و ایده جدیدی خلق کرد. هیچ کس هم به سازنده دوچرخه ایرادی نگرفت که تو کپی کار بودی!
تفکر رایانشی قبل از کدنویسی است یا در حین آن؟
پس می شود کدنویسی کنیم و متهم به کپی پیست هم نشویم و این در زمانی اتفاق می افتد که فرآیند تفکر و فهمیدن حذف نشده باشد. یعنی کدنویس خوب بیشتر فکر می کند تا اینکه بخواهد کد بنویسد. حالا باید به این سوال پاسخ دهیم: اگر کدنویسی همراه با تفکر رایانشی است، این تفکر دقیقا در چه مرحله ای باید اتفاق بیفتد؟ قبل از کدنویسی یا در حین آن؟
این هم از آن سوال های بسیار مهم است. دسته ای از کدنویس ها هستند که وقتی می خواهند کدی برای یک مسئله بنویسند قبل از تفکر سریعا دست به کد می شوند. اینقدر آزمون و خطا می کنند تا به راه حلی برسند که کار می کند (البته نه در همه حالات! از اینکه توانسته اند مسئله را حل کنند خوشحال می شوند و کار به خیالشان تمام شده است. اما اگر کمی کدی که نوشته اند را بالا پایین کنیم، تازه مشکلات آن نمایان می شود. مشکلاتی که حالا باید با وصله پینه آن ها را رفع کرد. چرا؟ چون شاکله و بنای اصلی کد را به غلط گذاشته اند؛ بنابراین تا آخر هم به غلط ادامه پیدا می کند.
کدنویسی ابزاری برای پیاده سازی تفکر رایانشی است
شما به عنوان کدنویس، فقط باید زمانی دست به کد شوید که راه حل مسئله (الگوریتم) را به طور کامل برای خودتان هضم کرده باشید. الگوریتم، همان خروجی تفکر رایانشی است که می تواند به صورت شبه کد یا فلوچارت درآمده باشد. ارائه راه حل برای یک مسئله وابسته به این نیست که شما به کدنویسی مسلط هستید یا خیر! کدنویسی تنها یکی از ابزارهای پیاده سازی آن راه حل است. وقتی معلمی از دانش آموزی می خواهد که انشایی درباره یک موضوع بنویسد آیا اهمیتی دارد که دانش آموز تایپ کردن بلد باشد؟ قطعا جواب خیر است. دانش آموز می تواند انشای خودش را به صورت دست نویس تحویل دهد. یا اصلا ویدئوی خودش را برای معلم بفرستد. یا صوت انشایی که نوشته و قبلا ضبط کرده را در کلاس پخش کند. همه این ها روش های مختلف برای ارائه انشا هستند و ارتباطی به اصل انشا ندارند.
کدنویسی و تفکر رایانشی ارتباط تنگاتنگی دارند
در مهندسی نرم افزار، مراحل طراحی و پیاده سازی مجزا هستند. در مرحله طراحی راه حل ارائه شده و در مرحله پیاده سازی، کدنویسی می شود. ممکن است این دو مرحله توسط دو گروه متفاوت انجام شود. حال اگر کدنویس، در تحلیل و طراحی به اندازه کافی قوی نباشد، نمی تواند به درستی طراحی را بفهمد. اگر طراحی را نفهمد کدی تولید می کند که آن چیزی نیست که مورد نیاز بوده است.
درست است که گروه های تحلیل و طراحی و پیاده سازی دائما با یکدیگر در ارتباط هستند ولی اگر فهم مشترک بین آن ها نباشد، کار خیلی سخت می شود. البته این موضوع برای تحلیل گران هم صدق می کند. یعنی اگر تحلیل گران نرم افزار، درک درستی از ماهیت و قابلیت های کدنویسی نداشته باشند، راه حل هایی ارائه می دهند که اصلا قابل کدنویسی نیست یا از قابلیت های زبان های برنامه نویسی به خوبی استفاده نمی کند. بنابراین، این یک موضوع دوطرفه است.
از تفکر رایانشی برای رسیدن به بهترین کد استفاده کنید
پس تا اینجا مشخص شد که بخشی از ارتباط تفکر رایانشی و کدنویسی به قبل از شروع کدنویسی برمی گردد. اما آیا موضوع به همین جا ختم می شود؟ قطعا خیر! برای پیاده سازی یا کدنویسی یک راه حل، روش های مختلفی وجود دارد. اینکه از کدام زبان برنامه نویسی و قابلیت های آن استفاده شود هم بخشی از تفکر رایانشی است. بین برنامه نویس ها مرسوم است که می گویند: به کدی که کار می کند دست نزن! اما کدی که کار می کند همیشه بهترین راه حل نیست و برای رسیدن به بهترین راه حل قطعا نیاز به تفکر رایانشی وجود دارد.
به عنوان جمع بندی این بخش، تفکر رایانشی فرآیندی است که هم پیش از کدنویسی و هم در حین آن اتفاق می افتد اما وابسته به آن نیست. تفکر رایانشی با علوم کامپیوتر اشتراک دارد اما می توان آن را در سایر حوزه های علوم نیز به کار گرفت و به کمک ابزارهای همان حوزه پیاده سازی کرد.
کدام یک مهم تر است؟ تفکر رایانشی یا کدنویسی؟
تفکر رایانشی و کدنویسی هر دو دارای درجه ای از اهمیت هستند اما یکی از آن ها اصل است و دیگری فرع. هر دو برای رسیدن به نتیجه لازم اند ولی یکی از آن ها مقدم بر دیگری است. به نظر شما کدام یک اهمیت بیشتری دارد؟
تفکر رایانشی اصل کار است!
فکر می کنم اگر مقاله را تا اینجا خوانده باشید حتما به درستی اشاره کرده اید که تفکر رایانشی اصل است و کدنویسی فرع آن. در مثال انشا، تا زمانی که چیزی ننوشته باشید، می توانید شروع به تایپ کردن یا خواندن از روی آن و ضبط فیلم و ویدئوی آن کنید؟ واضح است که خیر (البته که می توان همزمان با فکر کردن درباره موضوع انشا تایپ کردن هم شروع کنیم ولی نتیجه آن می شود شبیه همان کد وصله پینه داری که توضیح دادیم). البته این به این معنی نیست که کدنویسی کار کم ارزشی است. اگر کدنویسی نباشد راه حلی که ارائه شده برای کامپیوتر قابل فهم نیست. کدنویسی فرآیند تفکر رایانشی را با عملی کردن آن آسان تر و جذاب تر می کند. پس هر دو مهم هستند ولی در جایگاه خودشان و جایگاه تفکر رایانشی نسبت به کدنویسی قطعا بالاتر است.
فرآیند کدنویسی دگرگون می شود اما نابود نمی شود!
از طرف دیگر، با خودکارسازی فرآیندها در حال حاضر که به طور روزافزون هم در حال گسترش است احتمال اینکه در آینده نیاز به کدنویسی دچار دگرگونی هایی شود وجود دارد. دقت کنید منظور ما از دگرگونی به معنی نابودی نیست و نیاز به کدنویسی از بین نمی رود بلکه ممکن است نوع نیاز به آن تغییر کند. زمانی که وب سایت ها به وجود آمدند نیاز به برنامه نویسی وب به وجود آمد. در حال حاضر نیز با وجود سیستم های مدیریت محتوای بسیار قوی مانند وردپرس که به کمک آن ها می توان انواع سایت ها را در کمترین زمان ممکن و بدون نیاز به کدنویسی راه اندازی کرد، بازهم نیاز به برنامه نویسان وب وجود دارد.
کدنویسی و هوش مصنوعی
در سال های اخیر، ابزارهایی به کمک هوش مصنوعی جهت کدنویسی توسعه داده شده اما صحت و دقت آن ها هنوز جای کار دارد. اخیرا خبری منتشر شد در مورد اینکه یک سایت معروف که در حوزه پاسخگویی به سوالات کدنویسی فعالیت می کند (استک اورفلو) جلوی انتشار پاسخ هایی که به کمک هوش مصنوعی تولید می شده را گرفته است. دلیل این کار این بوده که پاسخ های تولید شده به کمک هوش مصنوعی هرچند در نگاه اول درست به نظر می رسند اما بررسی دقیق تر نشان می دهد که کدها دارای اشکال هستند. البته هرچه برنامه نویس حرفه ای تری باشید آینده شغلی تضمین شده تری خواهید داشت. نکته مهم دیگر این که باید به آن توجه داشت این است که آن ابزارهایی که قرار است کار برنامه نویسان را به طور خودکار انجام دهند، همین برنامه نویسان تولید می کنند!
تفکر رایانشی را یاد بگیریم
در این مقاله در مورد ارتباط کدنویسی و تفکر رایانشی صحبت کردیم. امروزه برای زندگی در جهان کنونی که با سرعت بالایی در حال تغییر است، بیش از هر زمان دیگری، «یادگیری» ضروری است. کسب نگرش یادگیری مادام العمر، به ما امکان می دهد هر بار با مشکلات مختلفی روبرو شویم. تفکر رایانشی به توسعه مهارتهای منطقی و توانایی حل مسائل خلاقانه و کارآمد کمک میکند، مهارتهای فکری را که به یادگیری و درک کمک میکند بهبود میبخشد و توانایی ایجاد روش های خلاقانه برای رسیدن به راه حل را افزایش می دهد. در دنیای کنونی اگر می خواهید در حوزه فناوری فعالیت کنید و در زمره خالقان فناوری قرار بگیرید ضروری است که بر تفکر رایانشی مسلط باشید. کدنویسی کدنویسی ابزاری است برای بهره گیری جذاب و سرعت بخشیدن به فرآیند تفکر رایانشی و در این فرآیند برای ارائه خروجی کارتان به شما کمک خواهد کرد.
اگر قرار باشد از این مقاله فقط یک جمله به خاطر سپرده باشید، این جمله می تواند این باشد:
تفکر رایانشی همان کدنویسی نیست بلکه فرآیندی است که قبل و حین کدنویسی به برنامه نویسان و طراحان الگوریتم کمک می کند تا بهترین راه حل و کد برای یک مسئله ارائه شود.
پاسخها