كد نويسي؛ مهارت زبان يا دانش رياضي؟
بسياري از ما با اين ايده بزرگ شديم كه كد نويسي مهارت بسيار پيچيده و دشواري است كه يادگيري آن براي هر كسي ممكن نيست. از انديشه متخصصين برخي افراد كه در يادگيري زبان خارجي اشكال دارند، كد نويسي هم نوعي زبان و از توان آنها خارج است. در كنار اينها، دستهاي ديگري از افراد هستند كه معتقدند كد نويسي نياز به دانش رياضي دارد و چون در حل مسائل رياضي ضعيف هستند، فكر ميكنند نميتوانند از پس يادگيري كد نويسي برآيند.
اما حق با كدام گروه است؟ آيا برنامهنويسي با مهارت زباني در ارتباط است يا دانش رياضي؟ اگر فردي مهارت كافي در يادگيري زبانهاي خارجي نداشته باشد يا حل مسائل رياضي برايش دشوار باشد، آيا نميتواند برنامهنويس خوبي شود؟
مسئله اينجا است كه بهسختي ميتوان دست از مقايسهي كامپيوتر با مغز انسان كشيد؛ مقايسهاي كه اغلب فهم بسياري از مسائل را برايمان آسانتر ميكند؛ اما گاهي با طرز كار واقعي مغز در تضاد است.
آيا مغز كد كامپيوتر را مانند زبان پردازش ميكند يا مسئلهي رياضي
يكي از سؤالاتي هم كه مدام دربارهي شباهت و تفاوت كامپيوتر با مغز انسان مطرح ميشود، نحوهي پردازش و خواندن كد است. آيا مغز ما كد كامپيوتر را مانند يك زبان پردازش ميكند يا با آن مثل مسئلهي رياضي رفتار ميكند؟ رسيدن به جواب اين سؤال و پي بردن به طرز كار ذهن هنگام پردازش كد از مانديشه متخصصين يادگيريي اهميت بسياري دارد و نكات باارزشي در مورد بهترين روش يادگيري كد نويسي دراختيار ما قرار ميدهد.
در انديشه متخصصينسنجي گالوپ در سال ۲۰۱۶، مشخص شد اكثر مدارس آمريكا مايلاند يادگيري كد نويسي را شروع كنند. در اين بين، مديران ۶۶ درصد مدارس پيشدبستاني تا دبيرستان معتقد بودند يادگيري علوم كامپيوتر بايد در كنار درسهاي ديگر به دانشآموزان ارائه شود. اكثر كشورهاي اروپايي، كلاسهاي كد نويسي و علوم كامپيوتر را به برنامههاي درسي مدارس اضافه كردهاند (فرانسه و اسپانيا در سال ۲۰۱۵). انتظار ميرود اين نسل جديد كدنويسان، جمعيت توسعهدهندگان جهان را از ۲۳٫۹ ميليون نفر در سال ۲۰۱۹ به ۲۸٫۷ ميليون نفر در سال ۲۰۲۴ افزايش بدهد.
با همهي اين تلاشها، هنوز در نحوهي درست يادگيري كد نويسي سردرگمي وجود دارد. آيا كد نويسي بيشتر شبيه زبان است يا رياضي؟
برخي از مدارس در دنيا به دانشآموزان اجازه ميدهند زبان برنامهنويسي را بهعنوان «زبان خارجي» انتخاب كنند و آن را مشابه زبانهاي ديگر مثلاً فرانسوي يادگيري ميدهند. اين رويكرد احتمالاً براي جذب بيشتر دانشآموزان به كد نويسي روش مؤثري است؛ اما اگر اتكا به تكنيكهاي يادگيري زبان براي يادگيري كد نويسي مناسب نباشد، آنوقت يادگيري دانشآموزان دچار اختلال ميشود. به همين ترتيب تلاش براي يادگيري كد نويسي مشابه يادگيري رياضي هم ممكن است به همان اندازه روش اشتباهي باشد و نتيجهي مطلوب به دست نيايد.
براي حلوفصل اين موضوع، در سالهاي اخير مطالعات و آزمايشهايي انجام شده است كه فعاليت مغزي برنامهنويسان را هنگام خواندن كد تجزيهوتحليل كردهاند.
كد نويسي: زبان يا رياضي؟
در حال حاضر دو مكتب فكري دربارهي ماهيت كد نويسي وجود دارد. انديشه متخصصينيهي غالب، به كد نويسي بهعنوان نوعي زبان نگاه ميكند كه قواعد دستوري و نگارشي خاص خود دارد. مگر نه اينكه به پايتون، جاوا و C زبان برنامهنويسي ميگويند؟ پس حتماً براي اين كار دليلي وجود دارد. در حمايت از اين ايده حتي كلمهي اختصاري مناسب هم وجود دارد: CAL، مخفف Coding as Another Language بهمعني «كد نويسي بهعنوان زبان ديگر».
دستهي ديگري از افراد نگاه متفاوتي به كد نويسي دارند. از انديشه متخصصين آنها كد نويسي بيشتر شبيه يادگيري منطق رياضي است؛ چون به فرمول و الگوريتم نياز دارد تا از دادهي ورودي، خروجي بگيرد. حتي وبسايتي در اينترنت وجود دارد كه كد نويسي و رياضي را همزمان يادگيري ميدهد.
اما كدام رويكرد مؤثرتر است؟ آيا يادگيري برنامهنويسي به مهارتهاي زباني نياز دارد يا مهارتهاي رياضي؟ اگر فردي در رياضي ضعيف بود، آيا به اين معني است كه نميتواند برنامهنويس خوبي شود و بايد بهطور كامل از اين مهارت چشمپوشي كند؟
مباحثه سر اين موضوع از همان زمانيكه يادگيري كد نويسي در مدارس شروع شد، وجود داشته است و به انديشه متخصصين ميرسد مكتب «زبان» طرفداران بيشتري دارد. قوانين مدارس در ايالات تگزاس، اوكلاهاما و جورجيا به دانشآموزان اجازه ميدهد براي واحد زبان خارجي، علوم كامپيوتر را انتخاب كنند. براي مثال، در مدارس تگزاس اگر دانشآموزي از پيشرفت در كلاس زبان خارجي بازمانده است، ميتواند بهجاي آن كلاس كد نويسي بردارد.
اين موضوع جدا از افرادي كه ميخواهند برنامهنويسي ياد بگيرند يا آن را يادگيري بدهند، براي متخصصان علوم اعصاب هم مباحثه بسيار جذابي است. ازآنجاييكه از عمر برنامهنويسي كامپيوتر تنها چند دهه ميگذرد، مغز هنوز براي پردازش آن، ناحيهي خاصي ايجاد نكرده است.
درنتيجه، بخشي از مغز كه اكنون كد كامپيوتري را پردازش ميكند، قبلاً براي پردازش كار ديگري به كار ميرفته و حالا تغيير متخصصي داده است. دو سيستم مغزي، كانديداهاي احتمالي پردازش كد هستند: سيستم مربوط به فعاليتهاي زباني يا سيستمي كه مسئول انجام وظايف پيچيدهي شناختي مانند حل مسائل رياضي يا جدول كلمات متقاطع است و بهعنوان «شبكهي تقاضاي چندگانه» (multiple demand network) شناخته ميشود.
كد نويسي نوعي زبان است
اگر جزو آن دسته افراد علاقهمند به يادگيري برنامهنويسي هستيد كه به خاطر نداشتن دانش رياضي كافي، سراغ اين مهارت نرفتهايد، احتمالاً از نتايج مطالعهاي كه در سال ۲۰۲۰ در دانشگاه واشنگتن انجام شد، استقبال خواهيد كرد. نتايج اين مطالعه نشان داد كد نويسي آنطور كه تصور ميشود، رابطهي نزديكي با رياضي ندارد و در اهميت داشتن سواد رياضي براي يادگيري كد نويسي اغراق شده است.
افرادي كه مهارت زباني قويتري دارند، احتمالاً برنامهنويسان خوبي ميشوند
شانتل پرات، دانشمند علوم اعصاب در دانشگاه واشنگتن و سرپرست تيم محققان اين مطالعه، سالها روي نحوهي يادگيري مغز مطالعه كرده است.به تصور او، افرادي كه مهارتهاي زباني قويتري دارند، احتمالاً برنامهنويسان خوبي ميشوند. اين ايده در مطالعات ديگر نيز دنبال شده بود؛ اما براي اثبات آن داده و مدارك كافي وجود نداشت.
پرات و همكارانش سراغ گروهي ۳۶ نفره از افراد انگليسيزبان بدون هيچ دانش برنامهنويسي رفتند تا به آنها در سطح مقدماتي پايتون ياد بدهند. تيم تحقيقاتي پيش از يادگيري پايتون، از مغز شركتكنندگان اسكن گرفت تا الگوهاي امواج مغزي آنها را در حال استراحت مطالعه كند.
اين تيم سپس براي ارزيابي مهارت شركتكنندگان در رشتههاي مختلف از آنها آزمون كتبي گرفت و نتايج اين ارزيابي را با توانايي آنها در يادگيري كد نويسي مقايسه كرد. محققان دريافتند بهجاي دانش رياضي، اين مهارت بهكارگيري زبان، حافظه و استدلال است كه در پيشبيني اينكه فرد چقدر در يادگيري برنامهنويسي مهارت دارد، نقش مهمي بازي ميكند.
اين مطالعه نشان داد سواد رياضي (شامل چهار عمل اصلي در پايهايترين حالت و اندازهگيري، هندسه، احتمال و آمار در مراحل بالاتر) با سرعت يادگيري داراي همبستگي است؛ اما بهطور كلي ارتباط محكمي با نحوهي يادگيري پايتون ندارد؛ بلكه استعداد يادگيري زبان، حافظه و استدلال با سرعت يادگيري، دقت و يادآوري مطالب همبستگي بيشتري دارند.
البته پرات تأكيد ميكند نتايج اين مطالعه به اين معني نيست كدنويسان هيچ نيازي به رياضي ندارند. بلكه آن مدل دانش رياضي كه براي برنامهنويسي مورد نياز است، بهجاي آنكه به محاسبات مربوط باشد، به مهارتي نيازمند است كه در رشتههاي زيادي متخصصد دارد. به اعتقاد پرات، «منظور بسياري از مردم از رياضي در واقع حل مسئله است؛ اما كد نويسي خيلي با سواد رياضي سروكار ندارد.»
البته اين مطالعه محدوديتهايي نيز دارد و ما هنوز دربارهي نحوهي پردازش كد نويسي در مغز و اينكه چرا برخي افراد برنامهنويسان بهتري هستند، چيزهاي زيادي نميدانيم.
از طرفي، زبانهاي برنامهنويسي ديگر چون جاوا، ++C و ARM كه به خوانايي پايتون نيستند، ممكن است چالشهاي بزرگتري براي افرادي كه تازه به يادگيري كد نويسي روي آوردهاند، ايجاد كند؛ اما شواهدي كه در اين خصوص وجود دارد علمي نيست و فقط از نوع شواهد حكايتي است.
كد نويسي فقط مختص افراد مسلط به رياضي نيست
اشكال ديگر اين است كه اين مطالعه فقط در سطح مقدماتي پايتون انجام شد و مشخص نيست اگر كدآموزان وارد ممباحثه الگوريتمهاي پيچيدهتر شوند و بخواهند مسائل چالشبرانگيزتري حل كنند، آيا همين نتايج به دست خواهد آمد يا خير.
اما براي پرات و تيمش رسيدن به همين نتيجه كافي بود كه كد نويسي فقط مختص افراد مسلط به مهارتهاي رياضي نيست. درحاليكه زبانهاي برنامهنويسي متخصصپسندي چون پايتون محبوبتر ميشوند و افراد بيشتري به آموختن آنها روي ميآورند، مدرسان فرصت دارند دريابند كد نويسي مناسب چه افرادي است و در حرفههاي مختلف چه متخصصدهايي ميتواند داشته باشد.
كد نويسي نه كاملاً زبان است نه رياضي
در مطالعهاي جديدتر كه نتايج آن چند ماه پيش منتشر شد، گروهي از محققان دانشگاه MIT و تافتس از حدود ۲۰ شركتكنندهي بزرگسال و ماهر به كد نويسي خواستند در دستگاه fMRI قرار بگيرند تا فعاليت مغز آنها هنگام حل مسائل برنامهنويسي تجزيه و تحليل شود.
مشاهدهي اينكه كدام بخش از مغز هنگام حل اين مسائل فعال ميشوند، به محققان كمك ميكند نحوهي پردازش زبانهاي كد نويسي را در مغز مشخص كنند. بهعنوان مثال، اگر نواحي مربوط به پردازش زبان در مغز فعال شود، ميتوان گفت مغز با كد كامپيوتر مانند زبان رفتار ميكند؛ اما اگر نواحي مربوط به پردازش رياضي فعال شود، ميتوان نتيجه گرفت براي مغز، حل مسائل برنامهنويسي مثل حل مسائل رياضي است.
زبانهاي كد نويسي مورد استفاده در اين مطالعه پايتون و ScratchJr بود. پايتون به اين خاطر كه خوانايي بسيار بالايي دارد، زبان موردعلاقهي محققان در انجام مطالعات است؛ ScratchJr هم متشكل از عكسهاي نمادين است كه براي يادگيري كد نويسي به كودكان طراحي شده. در آزمون پايتون، ۲۴ شركتكنندهي بزرگسال (۱۵ زن) و در آزمون ScratchJr نوزده بزرگسال (۱۲ زن) شركت كردند.
در تسك اصلي به شركتكنندگان قد و وزن فردي بهصورت كد پايتون يا جملهي عادي داده شد تا BMI (سنجش سلامت وزن فرد متناسب با قد) او را محاسبه كنند. براي ScratchJr هم از شركتكنندگان خواسته شد موقعيت بچهگربهاي را هنگام راه رفتن و پريدن رديابي كنند.
تسك كنترل اين مطالعه شامل به خاطر سپردن توالي مربعها در يك شبكه (براي فعال كردن سيستم تقاضاي چندگانه در مغز) و خواندن يك جملهي بامعني و يك جملهي بيمعني (براي فعال كردن سيستم زبان) بود.
در اين آزمايش، سيستم زباني مغز هنگام خواندن كد واكنش ضعيفي نشان داد و محققان به اين نتيجه رسيدند كه با وجود شباهتهاي زبان كامپيوتر با زبانهاي طبيعي، مغز با كد بهعنوان زبان رفتار نميكند. در عوض، خواندن كد شبكهي تقاضاي چندگانه را در مغز شركتكنندگان فعال كرد.
پردازش كد بيشتر در شبكهي تقاضاي چندگانه انجام ميشود تا سيستم زباني
شبكهي تقاضاي چندگانه در لوبهاي پيشاني و آهيانهاي (بالايي) مغز گسترده شده و مسئول انجام وظايف دشوار ذهني از جمله حل مسائل رياضي و جدول كلمات متقاطع است. خود اين شبكه به دو قسمت چپ (مسئول وظايف منطقي) و قسمت راست (مربوط به تفكر انتزاعي) تقسيم ميشود. محققان MIT دريافتند خواندن كد پايتون به انديشه متخصصين ميرسد هر دو قسمت چپ و راست اين شبكه را فعال ميكند، درحاليكه ScratchJr قسمت راست را كمي بيشتر از قسمت چپ به كار ميگيرد.
نكتهي جالب توجهي كه در اين مطالعه به دست آمد، اين بود كه حل مسائل برنامهنويسي قسمتهايي از شبكهي تقاضاي چندگانه را فعال كرد كه هنگام حل مسائل رياضي فعال نميشوند؛ بنابراين ميتوان اينطور نتيجه گرفت مغز با كد برنامهنويسي مانند زبان يا منطق رياضي رفتار نميكند و به انديشه متخصصين ميرسد پاي حوزهي جداگانهاي در ميان باشد كه البته همچنان در شبكهي تقاضاي چندگانه قرار دارد.
تحقيقات MIT با مقالهاي از دانشگاه جانز هاپكينز همراه بود كه به نتيجهي مشابهي رسيده بود. طبق اين مقاله، «حل مسائل برنامهنويسي بهجاي فعال كردن نواحي مربوط به زبان، شبكهي تقاضاي چندگانه را فعال ميكند.»
اين يافته براي مدرسان برنامهنويسي پيامدهايي به همراه دارد. به قول كلايو تامپسون، نويسندهي حوزهي تكنولوژي، «يكي از دلايلي كه دانشمندان دنبال پاسخي براي اين سؤال رياضي/زبان هستند اين است كه ما واقعاً در يادگيري برنامهنويسي و علوم كامپيوتر ضعيف هستيم. هيچ كس بهطور كامل نميداند آيا بايد با كد نويسي بهعنوان منطق رياضي برخورد كرد يا زبان.»
مطالعهي MIT نتيجه گرفت براي مغز انسان، فرايند درك كد شبيه پردازش زبان نيست. به همين خاطر، تدريس كد نويسي مانند يك زبان خارجي احتمالاً نميتواند رويكرد مناسبي باشد.
نتيجهگيري
با اين تفاصيل، آيا آموختن برنامهنويسي به دانش رياضي نياز دارد يا مهارت يادگيري زبان؟ هر دو يا هيچ كدام؟
برخي از مطالعات قديمي به اين نتيجه رسيدهاند كه برنامهنويسي نوعي زبان است و بسياري از افراد و مؤسسات هم با برنامهنويسي بهعنوان نوعي زبان برخورد ميكنند؛ اما مطالعهي جديد MIT نشان داد كد نويسي براي مغز فرايندي منحصربهفرد و پيچيده است و نميتوان آن را در يكي از اين دو شاخه گنجاند.
به گفتهي آنا ايوانوا، نويسندهي اصلي مقالهي MIT، «درك كد كامپيوتر به انديشه متخصصين ميرسد پديدهي منحصربهفردي باشد. نه كاملاً مثل زبان است و نه مثل رياضي و منطق.»
نتايج اين مطالعه نشان داد براي اين سؤال كه آيا بهتر است كد نويسي مانند مهارت رياضيمحور تدريس شود يا مهارت زبانمحور، پاسخ قطعي وجود ندارد. بخشي از اين امر به اين دليل است كه يادگيري برنامهنويسي احتمالاً هم از سيستم زباني و هم از سيستم تقاضاي چندگانه كمك ميگيرد؛ اما با پيشرفت فرد در مهارت كد نويسي، پردازش كد بيشتر در ناحيهي شبكهي تقاضاي چندگانه كه مربوط به منطق و حل مسئله است، اتفاق ميافتد و وابستگي به نواحي زباني مغز كمرنگ ميشود.
كد نويسي نه كاملاً مثل زبان است و نه مثل رياضي و منطق
بدين ترتيب به انديشه متخصصين ميرسد مدرسان علوم كامپيوتر لازم است رويكرد خاص خود را براي يادگيري هرچه كارآمدتر كد نويسي ايجاد كنند كه احتمالاً شامل المانهايي از هر دو شاخهي يادگيري زبان و رياضي ميشود.
از طرفي، آزمايشي كه دانشمندان علوم اعصاب ژاپني سال گذشته روي برنامهنويسان مبتدي، باتجربه و متخصص انجام دادند، نشان داد فعاليت در بخشهايي از مغز كه با پردازش زبان طبيعي، بازيابي حافظهي اپيزوديك و كنترل توجه در ارتباط است، با بالا رفتن سطح مهارت برنامهنويس تقويت شد. اين يافته نشان ميدهد كد نويسي ممكن است آنطور كه فكر ميكرديم به زبان شباهت نداشته باشد؛ اما مانند زبان، شروع يادگيري آن از سنين پايين مؤثرتر خواهد بود.
انديشه متخصصين شما متخصص عزيز اخبار تخصصي، علمي، تكنولوژيكي، فناوري مرجع متخصصين ايران در اين رابطه چيست؟ آيا كد نويسي براي افرادي كه سواد رياضي خوبي دارند، آسانتر است يا افرادي با مهارت بالاي يادگيري زبان؟ يا شايد پاي عامل ديگري در ميان است؟
هم انديشي ها