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