چرا من نمیتونم حتی یک کد ساده بنویسم؟

به عنوان کسی که فکر میکنه تا حدودی برنامه نویسی میدونه ، یکی از عمده مشکلاتی که در ابتدای باهاش روبرو بودم میخوام با شما به اشتراک بزارم .
اکثر بچه های کامپیوتر خصوصا نرم افزاری ها که تازه از دانشگاه شروع میکنند
به کد نویسی کردن به یه مشکل خیلی بزرگ مواجه میشن ،

چرا من نمیتونم حتی یک کد ساده بنویسم؟

وقتی پای حرف بچه های کامپیوتری بشینید معمولا چنتا جمله رو زیاد میشنوید :

  • من اصول اولیه رو سرکلاس یاد گرفتم پس چرا نمیتونم  یه برنامه بنویسم ؟
  • من تئوری ها رو بلدم اما نمیتونم از اونها توی کد استفاده کنم ؟
  • من حلقه ها رو میشناسم اما نمیدونم کی باید از اونخا توی کد هام استفاده کنم ؟
  • ….

[در بین این سه تا ، سوال اول از همه بیشتر معروف شده ]

وقتی که دانشجو ها سر کلاس در حال یاد گیری یک زبان برنامه نویسی هستند و یا
اونهایی که تسلط بیشتری دارند و شروع به خوندن کتاب های مرجع میکنند همه این
موارد به دانشجو امکان پیشرفت میده یا حتی در مواقعی دقیقا میگند که چه چیزی و
دانشجو باید تایپ کنه اما وقتی که دانشجو بخواد خود یک برنامه رو تایپ کنه مسلما
احساس ضعف میکنه چون دیگه هیچ اشاره و یا راهنمایی وجود نداره که بخواد از اون
استفاده کنه .

نتیجه راهنمایی بیش از حد این میشه که دانشجو سینتکس(syntax) برنامه رو بدون
یادگرفتن مفاهیم برنامه نویسی یاد میگیره.سینتکس متنیه که شما برای یک زبان
برنامه نویسی خاص اونو مینویسید و اینکه سینتکس برای هر زبان برنامه نویسی
متفاوته .چیزی که شما واقعا بهش نیاز دارید دونستن مفاهیمی مثل ، حلقه ها
تکرار ، ارث بری و … . مفاهیم به شما اجازه میدند که کد واقعی بنویسید . وقتی
کسی میگه که در مورد مثلا حلقه های بلده اما نمیدونه کی باید از اونها استفاده کنه
، به این معنی که سینتکس (نحو) بلده اما اصلا مفهوم تکرار و درک نمیکنه .

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

حرف های واقعی :

این قسمت مقاله میخوام یکم از طعم واقعی این عشق براتون بگم پس خودتون رو
آماده کنید .اگر حس میکنید که مفاهیم و بلد هستید اما نمیتونید بدون راهنمایی یه
برنامه ساده بنویسید ، از این میترسم که احتمالا اصول اولیه رو درک نمیکنید .
شما روی لبه ای که مدرسه واکینگ کد بهش میگه صحره سردرگمی وایستادید :

درک دردناکیست وقتی که آموزش ها به پایان میرسد و دانشجو
احساس میکند که هنوز توانایی لازم برای مستقل عمل کردن را ندارد.
چالش اصلی پیش رو در اشکال زدایی است نه حل کردن درست مسئله

نکته: یک محیط برنامه نویسی واقعی ایجاد کنین :

حالا وقتش رسیده تا یه محیط برنامه نویسی واقعی نصب و پیکر بندی کنین.
هر زبان برنامه نویسی نیاز به یک محیط متفاوت داره.

اول، شما نیاز به یک ویرایشگر متن یا IDE (محیط توسعه یکپارچه) دارین.
محبوبترین ویرایشگر متن که ویژه زبان برنامه نویسی ایست که درحال یادگیری
اون هستید ، پیدا و نصب کنین .
در مرحله دوم، شما باید چگونگی اجرای یک فایل حاوی کد را یادبگیرین.

اگر از یک IDE به عنوان ویرایشگر متن خود مثل Visual Studio، Xcode یا Eclipse
استفاده می کنید، این قابلیت (مرحله دوم )در IDE وجود داره.

اگر شما از IDE استفاده نمی کنین، احتمالا باید یاد بگیرین چطور کد خودتونو رو از
خط فرمان اجرا کنین. به دنبال دستورالعمل “شروع به کار” برای زبان برنامه نویسی
خودتان برین و همچنین در YouTube برای فیلمهای آموزشی که می تونید اونها رو
دنبال کنین و بررسی کنین.

وقتیکه تونستین کد رو وارد کنین، اونرو در یک فایل ذخیره کنین، و فایل رو اجرا کنین، بعد برنامه شما آماده برای اجراست. برنامه نویسای حرفه ای هر روز به این صورت عمل میکنن.

نکته: برنامه ها را از ابتدا بسازین:

شما باید شروع به نوشتن کد خود بدون دستورالعمل کنین . با یک فایل خالی شروع کنین
و هر خط کد خود را تایپ کنین.

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

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

نکته: از کم شروع کنین :

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

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

من می دونم، برنامه های مبتنی بر متن ، گرافیکی و سه بعدی نیستن. شما می دونید که چگونه همه می گند که ، شما نیازی به دونستن ریاضی برای برنامه  نویسی ندارین؟ خوب این برای برنامه نویسی گرافیک 3D درست نیست. شما نیاز به درک مفیدی از هندسه، جبر خطی، و کمی از حساب دیفرانسیل و انتگرال دارین.

بسته به نوع زبان برنامه نویسی که یاد می گیرین ،حتی یک GUI معمولی با دکمه ها و جعبه های متن هم می تونه دشوار باشه . این واقعا نیازی به دونستن ریاضی نداره، اما به احتمال زیاد نیاز به یک درک کامل از برنامه نویسی شی گرا و نمودارهای جسمی پیچیده داره.

توصیه من برای مبتدی ها اینکه که بازی های مبتنی بر متن را برای مدتی بنویسن. چند بازی مثل “حدس زدن شماره”، “مسابقه چند گزینه ای” و “تیک تاک” . سعی کنین ماجراجویی کنید.

از این پروژه ها برای یادگیری تمام ویژگی های زبان برنامه نویسی انتخاب شده خود استفاده کنین.

نکته: زیاد برنامه نویسی کنین :

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

کمی شبیه نجاریه. شما می تونین همه چیزهایی را که دوست دارین در مورد نجاری بخونین، اما خوندن تنها به شما مهارت لازم برای ساخت یه میز رو نمیده. اگر واقعا می خواین یاد بگیرین که چطور یه میز  بسازی، باید چوب، یک اره و  چسب ها را اماده کنین و در واقع تلاش کنین تا یه میز  بسازین. اولین میز شما احتمالا وحشتناک میشه. بنابراین شما باید تئوری ها رو بخوانین یا مشاوره بگیرین از یه نجار واقعی . میز دوم هنوز شاهکار نیست، اما بهتر از اولین تلاش شماست. اگر میزهای خود را نگه دارید و بارها تلاش کنید در نهایت شما یک میز دلخواه خواهید داشت.

برنامه نویسی هم همینطوره، در اون شما باید نرم افزار های مختلف رو برای به دست آوردن مهارت بنویسین. اولین برنامه ای که می نویسین زیاد بدرد نمیخوره و احتمالا کد کثیفی داره اما مهم نیست. بعضی از نظریه ها را بخوانین، راهنمایی دریافت بگیرین و یک برنامه جدید ایجاد بنویسین. هر برنامه ای که می نویسین باید بزرگتر و بهتر از گذشته باشه. این مراحل را برای مدت زمان طولانی تکرار کنین و به متخصص تبدیل بشید.

نکته : راهنمایی بخواید :

اگر سعی کردین مشکل خودتون رو برای بیش از یک ساعت حل کنین اما به جواب نرسیدین ممکنه زمان برای درخواست کمک باشه.

بعضی از دانشجوها بلافاصله بدون صرف وقت برای حل مشکل خودشون از دیگران کمک میگیرن. این امر به طور کلی در جامعه برنامه نویسی مورد توجه قرار گرفته . مردم ممکنه به شما بگن که به WhatHaveYouTried.com مراجعه کنید.

دانشجوها دیگه هرگز حاضر به دریافت کمک نیستن. این احتمالا یادگیری اونها رو کاهش می ده. اگر سعی کردین مشکل خودتون رو حل کنین، اما به هیچ  نتیجه ای نرسیدین، حتما  درخواست کمک کنین.

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

نکته : از راه درست درخواست کمک کنین :

مبتدی ها اغلب نمی خوان سؤالات خودشونو مطرح کنن، چراکه تجربیات اونها در مورد پرسش ها در جامعه برنامه نویسی بسیار دور از انتظارون بوده. اگر سوال خودتونرو به روش درست مطرح کنین، تجربه بهتری پیدا میکنین.

  1. پیام خطا دقیق خود را در جامعه قرار  بدین این مهم ترین عنصر اطلاعاته. اغلب مردم سعی نمی کنن به سؤال جواب بدن مگر اینکه پیام خطای دقیق را ببینن.
  2. اگر پیام خطایی وجود نداشته باشه، توضیح بدین که چه اتفاقی قرار بیفته  و چه اتفاقی افتاده . چیزی شبیه به “من انتظار داشتم که خروجی ۵ باشه، اما در واقع خروجی ۷ شد”. اغلب مشکل در کد شما نیست، در انتظار شماست. اگر شما چیزی را که انتظار نداشتین توضیح ندین، با جواب هایی مثل “کد به نظر میرسه درسته” اما “مشکل چیه؟” روبرو میشین.
  3. کد خراب خود را در جامعه قرار بدین. بدون دیدن کد جواب دادن خیلی سخت میشه.اونرو در اختیار دیگران قرار بدین، اگر اون خیلی بزرگ نیست، چرا که دیگران  کد شمارو برای بررسی مشکل اجرا خواهند کرد. اگر کد بیش از حد بزرگه  اون رو در ،  Github Gist یا Pastebin.com بگذارین، بعد لینک رو به سؤال خودتون اضافه کنین.
  4. کد خود را به درستی فرمت کنید ، کد خودتون رو مثل متن معمولی قرار ندین. یاد بگیرین چطور کد خودتون رو به سادگی فرمت کنین تا بتوانین اونرو بخونین.
  5. آنچه که قبلا سعی کرده اید را بگین. این به دیگران نشون میده که شما قبلا تلاش کردین.
  6. سعی کنید از اصطلاحات صحیح استفاده کنین. این همیشه امکان پذیر نیست، چرا که شما هنوز هم تمام اصطلاحات را یاد می گیرین، اما بهترین شات را به در جامعه قرار بدین. تلاش کنین که شرایط مشترک رو یاد بگیرین و از اونها به درستی استفاده کنین.

نتیجه :

برنامه نویسی سخت ، واقعا سخته. و اگر شما فقط از طریق کلاس های دانشگاه و یا آموزشگاه ها به دنبال یاد گیری باشین ، این کار ممکنه برای شما خیلی ناخوشایند بشه.

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

زیاد کد بنویسین روش های مختلف را بخونید، خواندن، کد کردن، خواندن، کد کردن، خواندن و غیره و در نهایت شما رو حرفه ای میکنه.

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

از همه مهمتر، از آن لذت ببرید و ادامه دهید!

پی نوشت :

این نوشته برداشتی آزاد  با اندکی تغییر از کتاب برنامه نویسی برای مبتدی ها نوشته تام دالینگ بود .

پاسخ دهید

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