در این نوشته، قصد ندارم کدنویسی را به طور کامل آموزش دهم. در واقع هدفم این است که در سلسله مقالاتی، مفاهیم و کلیدواژههایی را مطرح کنم که شروع کدنویسی مفرحی داشته باشید. با من همراه باشید.
این آموزش که طی سلسله مقالاتی با همین عنوان، عرضه میشود، برای افراد زیر مناسب است:
- کسانی که به برنامهنویسی علاقه دارند ولی قبل از این که زمان و انرژی خود را صرف آن کنند، میخواهند طعم آن را بچشند.
- کسانی که در شروع سفر یادگیری علوم کامپیوتری هستند و میخواهند هر چه سریعتر به دانش اولیه لازم دست پیدا کنند.
- کسانی که برنامهنویسها را در تلویزیون و شبکههای اجتماعی دیدهاند و کنجکاوند که بدانند این افراد دائماً مشغول چه کاری هستند.
اول از همه: نفس عمیقی بکشید. تصویری که در ابتدای این نوشته مشاهده میکنید، یک کد واقعی نیست و کسی از آن به عنوان کد استفاده نمیکند. بخش عمده کدها یا برنامههای واقعی (کدهایی که خود من مینویسم) از حروف انگلیسی، ارقام (هر 10 رقم نه فقط دو رقم صفر و یک) و نمادها تشکیل شده است. در واقع، اگر با دستور زبان برنامه آشنا شوید، میتوانید آنها را بخوانید.
پیشنهاد مقاله: آموزش برنامهنویسی– شروع آموزش برنامهنویسی
در اینجا درخواستی از شما دارم: اگر قسمتی از مطالبی که میگویم برایتان قابل فهم نیست، لطفاً زیر همین پست، آن را بنویسید تا بیشتر در مورد آن توضیح بدهم. من در نوشتن وسواس دارم و میخواهم مطلبم قابل فهم باشد.
بیایید شروع کنیم.
آموزش برنامهنویسی: برنامه کامپیوتری چیست؟
برنامه کامپیوتری که بعضاً با نام اَپ، اپلیکیشن یا نرمافزار نیز شناخته میشود، از مجموعهای از سطور متنی به خصوص تشکیل میشود. این سطور متنی با سطور متنی معمولی فرق دارند زیرا علاوه بر انسان، کامپیوتر نیز میتواند آنها را درک کند و کامپیوترها بینهایت خنگ هستند. حتی در کوچکترین برنامهها هم میتوان صدها سطر متنی از این نوع را مشاهده نمود. میپرسید برنامههای بزرگ چه؟ آنها عموماً از میلیاردها سطر تشکیل میشوند.
ما اسم این متنهای به خصوص را کد گذاشتهایم. کد، عبارت است از مجموعهای از دستورالعملهای گام به گام است و به کامپیوتر میگوید که با دادهها چه کاری انجام دهد. داده، قطعهای از اطلاعات است که کامپیوتر میتواند در حافظه خود آن را نگهداری کند. کامپیوترهای مدرن، در نگهداری این قبیل اطلاعات، توانایی بالایی دارند. اگر در توییتر حساب کاربری داشته باشید، اطلاعاتی مثل تاریخ تولد و تمام توییتهای شما در تعدادی کامپیوتر غولپیکر ذخیره میشود که در انبار کامپیوترهای توییتر نگهداری میشوند. اطلاعات 300 میلیون نفر دیگری که در توییتر، حساب کاربری دارند نیز در این کامپیوترها نگهداری میشود.
ولی نگران نباشید کامپیوترها بیکار نیستند و برای سرگرمی به خواندن توییتهای قدیمی شما مشغول نمیشوند. اگر هم این کار را بکنند، آنها نمیتوانند به توییتهای قدیمی شما بخندند.
وقتی به سایت twitter.com میروید، کامپیوتر شما از آن کامپیوترهایی که در انبار توییتر هستند، مقداری کد را به امانت دریافت کرده و به سرعت شروع به خواندن آن کدها میکند. بعد این کدها را دقیقاً بر اساس دستورالعمل گام به گامی که در آنها قرار دارد، اجرا میکند.
اگر این دستورالعملها به دقت نوشته شده باشند، همه کارها مثل هلو در گلو اجرا میشوند و توییتر، کارش را شروع میکند. حالا توییتر میتواند مضخرفات شما را در کل دنیا منتشر کند و مضخرفات کل دنیا را در کامپیوتر شما نمایش دهد. اینگونه شما عاشق آن توییتها میشوید.
اگر کوچکترین ایرادی در آن دستورالعملها وجود داشته باشد (مثلاً ایراد تایپی یا تفسیر اشتباه دادهها) توییتر کار نخواهد کرد. در این صورت، یا پیام خطا نمایش داده میشود، یا برنامه به کل از کار میافتد. شاید هم در سکوت، درد بکشد و مخفیانه با دادههای شما کارهایی بکند که شما خوشتان نیاید.
کل ماجرا از این قرار است. برنامهنویسی کار خیلی سختی نیست. فقط باید چند صد اصطلاح را حفظ کنید و با برخی قواعد گرامری آشنا شوید. همان کاری که وقتی 2 سالتان بود با زبان فارسی انجام دادید و آن موقع شاید فکر میکردید زبان فارسی خیلی پیچیده و عجیب است. سختترین بخش برنامهنویسی هضم نا امیدیهای بسیاریست که در مسیر یادگیری با آن رو به رو میشوید.
بخش خندهدار برنامهنویسی، حل مسأله است. مشکلات واقعی دنیا به صورت پازلهایی درآمدهاند که میتوان آنها را به ایوسیله کدنویسی حل کرد (البته به شرطی که واقعاً این مشکلات را درک کرده باشید). بعد از این که تمام راهحلهای ممکن برای یک مسأله را در ذهن خود حلاجی کردید، میتوانید برنامهای بنویسید که به صورت مرحله به مرحله، آن را حل کند.
جعبه ابزار برنامهنویسها
جعبهابزار برنامهنویسها نوعاً از چند چیز تشکیل میشود:
- یک کامپیوتر
- یک اتصال اینترنت. در واقع برای این که بتوانید از گوگل استفاده کنید باید یک اتصال اینترنت داشته باشید. به این ترتیب، هر وقت در مورد نحوه انجام کاری با سؤالاتی مواجه شدید (که معمولاً روزانه 69945983453 بار این اتفاق رخ میدهد)، میتوانید در گوگل به جستجو بپردازید. وقتی هم که برنامه شما پیام خطا میدهد، آن را در گوگل سرچ میکنید. در واقع، معمولاً باید همه چیز را در گوگل سرچ کنید.
- یک ویرایشگر کد (IDE). چیزی شبیه برنامه Microsoft Word کدنویسها که به آنها در سازماندهی و عیبیابی کدها کمک میکند.
- یک کامپایلر یا تفسیرگر. برنامهای که کدهای شما را میخواند و سعی میکند اشتباهات شما را پیدا کرده و به شما اطلاع دهد و بعد آن را برای اجرا به کامپیوتر منتقل کند. البته کارهای زیاد دیگری هم انجام میدهد ولی فعلاً تا همین حد بدانید کافیست.
- یک هدفون خوب. هدفون به شما کمک میکند بیخیال اطرافیانتان شوید تا بتوانید تمرکز کنید.
احتمالاً همین حالا هم یک کامپیوتر دارید و از آنجا که مشغول خواندن این مطلب در اینترنت هستید، اتصال اینترنت و یک تفسیرگر نیز دارید (داخل اینترنت اکسپلورر و گوگل کروم، تفسیرگر داخلی وجود دارد). در اینترنت، تفسیرگرهای متعددی وجود دارد که میتوانید آنها را دانلود کنید. در مورد هدفون نمیتوانم کمکی به شما بکنم ولی به جای آن میتوانید آنقدر به آدمهای اطرافتان زل بزنید تا شما را تنها بگذارند.
بسیار خوب، پس شما ابزارهای لازم را در اختیار دارید، درست است؟
زبانهای برنامهنویسی
در دنیا هزاران زبان برنامهنویسی وجود دارد. بسیاری از آنها گنگ و بیفایده هستند و میتوانید با شناختن سه یا چهار زبان برنامهنویسی، مدتها در شغل لذتبخش خود به کار ادامه دهید. ولی نگران نباشید، یاد گرفتن آنها به سختی یاد گرفتن سه یا چهار زبان انسانی نیست.
زبانهای برنامهنویسی، اغلب با پارادایمی توصیف میشوند که نوع ويژگیهای درونی آنها را طبقهبندی میکند. به عنوان مثال، جاوااسکریپت، زبانیست که تمام مرورگرهای وب آن را اجرا میکنند و احتمالاً محبوبترین زبان برنامهنویسی دنیاست. ویژگیهای گوناگونی در جاوااسکریپت وجود دارد. من میتوانم بگویم جاوااسکریپت پارادایمهای ساختارمند، شیء گرا و رویدادمحور را پشتیبانی میکند و در مقابل، شما میتوانید من را یک بچهدرسخوان پرمدعا خطاب کنید.
لازم نیست معنای تمام این کلمات را بدانید. چیزی که باید بدانید این است که معمولاً زبانهای برنامهنویسی که پارادایم مشابه دارند، معمولاً سینتکس مشابه نیز دارند. منظور از سینتکس، فرهنگ لغات و گرامر است. لذا وقتی یک زبان برنامهنویسی (مثل جاوااسکریپت) را یاد گرفتید، 75 درصد از مسیر یادگیری زبانهای مشابهی چون پایتون و رابی را نیز طی کردهاید.
کدنویسهای ماهر قادرند مشکلات را به صورت الگوریتم بفهمند. الگوریتم، به مجموعه گامهایی گفته میشود که برای انجام یک کار خاص باید انجام شوند، هر چند که جزئیات در شرایط مختلف، متفاوت باشد. تا به حال به سایت دیجیکالا رفتهاید؟ عملیات پرداخت، مثالی از الگوریتم است. مهم نیست چه جنسی قریداری کردهاید، مراحل پرداخت، همیشه یکسان است: باید اطلاعات کارت بانکی، آدرس و نحوه ارسال محموله را وارد کنید. کدهای کامپیوتری این بخش کار، همیشه یکسان است و چیزی که تغییر میکند، دادههاییست که شما وارد میکنید. حال دقت کنید: تمام الگوریتمها را میتوان در تمام برنامههای کامپیوتری معمول، نوشت و به اجرا درآورد. این یک حقیقت ریاضیست. بعد از این که تفکر الگوریتمی را یاد گرفتید، زبان برنامهنویسی، در درجه اهمیت دوم قرار دارد. البته حس و حال برنامهها تا حدی با هم متفاوت است ولی در نهایت، مسأله مهم، نمادها یا کلیدواژههایی که به کار میبرید، نیست، مسأله، فرایندیست که در حال توصیف آن هستید.
از اینجا به بعد، میخواهم از زبان برنامهنویسی جاوااسکریپت استفاده کنم و مثالهایی برایتان بزنم. این را به خاطر حال دل خودم انجام میدهم چون جاوااسکریپت را خوب میفهمم.
کدها همیشه با فونتهای monospace نمایش داده میشوند. این فونتها برای تمام حروف، ارقام، نمادها و حتی فاصله، پهنای یکسانی را درنظر میگیرد. همه کدها به صورت monospace نوشته میشوند، هر چند خواندن آن از فونتهای تعادی سختتر است. علت آن این است که این فونت به شما کمک میکند که بلوکهای کد را با هم تراز کنید و به تمام حروف و کاراکترها به صورت یکسان توجه کنید. این از بروز اشتباه، جلوگیری میکند. تصویر زیر، یک فوت معمولی را با فونت monospace مقایسه میکند.
در جمله بالا، سه اشتباه عمدی لحاظ شده است: فاصله اضافهای که بعد از لغت for وجود دارد. آپوستروف اضافهای که بعد از لغت Alice’s درج شده و لغت without که اشتباه املایی دارد و wihout نوشته شده. احتمالاً در همان سطر اول، توانستهاید این اشتباهات را تشخیص دهید ولی تشخیص آنها در سطر دوم، سادهتر است و وقتی با یک کد 200 سطری سر و کار دارید، این سادگی بسیار ارزشمند است.
پیشنهاد مقاله: چه طور برنامهنویسی یاد بگیرم؟ ۱۱نکته مهم
وارد کردن دادهها در قالب کد
حال که پیشزمینه کافی راجع به موضوع پیدا کردید، بیایید کمی کدنویسی کنیم. اساسیترین بلوکهای سازنده یک برنامه کامپیوتری، متغیرها هستند. متغیر، نامیست که برای یک قطعه داده، مثل یک شماره یا یک جمله درنظر گرفته میشود. باید دادههای خود را نامگذاری کنید.
به دو دلیل، باید دادههای خود را نامگذاری کنید:
- ما از قبل، هیچ اطلاعی راجع به دادهها نداریم. آیا فیسبوک، قبل از این که شما تاریخ تولد خود را وارد کنید، از آن آگاه است؟ نه، البته که نه. در پشت صحنه کدهای فیسبوک از اسمی شبیه people’s_birthday برای تعیین دادههای مربوط به تاریخ تولد، استفاده میشود. از آنجا که نباید در اسامی متغیرها فاصله خالی وجود داشته باشد، از underscore برای جداکردن کلمات استفاده میشود. این کد، نام را به تاریخ تولدی که شما وارد میکنید، الصاق میکند و به این ترتیب، صرف نظر از این که تاریخ تولد شما 11 شهریور است یا 2 آبان، کدی که نوشته شده، یکسان است.
- شما باید معنای داده را به خاطر بسپارید. فرض کنید میخواهید به کامپیوتر خود بگویید تاریخی به نام 83 فروردین، تاریخی نامعتبر است. بنابراین، باید جایی به کامپیوتر بگویید که ماه دسامبر، 30 روز دارد. 30 یک عدد است. یک قطعه داده است. اما اگر در تمام کدهایتان از عدد 30 استفاده کنید و از اعداد 31 و 28 هم استفاده کنید، کد شما برای خواندن آن دچار سردرگمی میشود. این اعداد چه هستند؟ به همین دلیل، نامی را برای آن تعیین میکنید. عدد 31 تبدیل میشود به the_number_of_days_in_farvardin و کد شما همه چیز را درک میکند. زیباست نه؟
کامپیوتر انتظار دارد که نام متغیرهای خود را اعلام کنید. اعلام نام یک متغیر، شبیه سند تولد یک قطعه داده است. چیزی مثل این:
var the_number_of_days_in_farvardin
در این عبارت، واژه عملیاتی، var است. در واقع، مخفف variable (به معنای متغیر) است. استفاده از مخففها کار قشنگیست زیرا سرعت تایپ را بالا میبرد. حتی یک دستی هم میتوانید آن را تایپ کنید. در این حالت، میتوانید با دست دیگرتان قهوه بنوشید یا با یک تسبیح بازی کنید.
کار دیگری که میتوانید با متغیرها انجام دهید، این است که آنها را به چیز دیگری اعمال کنید. میتوانید مثلاً نامی را به یک قطعه داده، الصاق کنید.
the_number_of_days_in_farvardin = 30
مطالب، بسیار ساده هستند. ابتدا متغیر را تعریف میکنید و بعد آن را به چیزهای مختلف اعمال میکند و بعد هر زمان که خواستید از شماره 30 در برنامه خود استفاده کنید، میتوانید تایپ کنید the_number_of_days_in_farvardin و کامپیوتر نیز منظورتان را میفهمد.
هنگام نوشتن یک برنامه، متغیرها لزوماً به یک قطعه داده مشخص اعمال نمیشوند. میتوانید متغیرها را تعریف کنید و بعد آنها را به چیزهایی اعمال کنید که حتی وجود خارجی ندارند. به عنوان مثال، میتوانید متغیری با نام people’s_birthday تعریف کنید و به برنامه بگویید منتظر بماند تا کاربر آن را تایپ کند. هر تاریخی که کاربر در این قسمت تایپ کند، تبدیل به people’s_birthday میشود و شما اصلاً کاری به کارش ندارید.
متغیرها میتوانند بیش از اعداد و تاریخ را در خود نگهداری کنند. به عنوان مثال، میتوانید یک جمله یا یک قطعه داده را با آن تعریف کنید:
var_behtarin_shere_donya=’daram dam dam da dam’
دیدید؟ من در کد بالا، هم متغیر را تعریف کردم و هم آن را به چیزی اعمال کردم. از این به بعد، هر جا که در کدهایم بنویسم behtarin_shere_donya، کامپیوتر میداند که منظورم daram dam dam da dam است. در واقع مانند این است که با کامپیوترم به زبان کد صحبت میکنم.
حرفم را باور نمیکنید؟ همین حالا این کار را بکنید. اگر این مقاله را در تلفن همراهتان میخوانید، باید در یک کامپیوتر، مرورگر وب (گوگل کروم) را باز کنید. کلید f12 را روی صفحه کلید کامپیوتر فشار دهید. چیزی شبیه تصویر زیر را مشاهده میکنید:
مطمئن شوید زبانه Console فعال باشد. بعد روی فضای خالی، بعد از نماد < کلیک کنید. بعد مانند تصویر زیر، متغیر را تعریف کرده و آن را به چیزی مثل متن، الصاق کنید:
چون خط کدی که تایپ کردهاید، هیچ دادهای را تولید نمیکند، کنسول عبارت undefined (به معنای تعریف نشده) را نمایش میدهد.عیبی ندارد فکرش را نکنید. حال نام متغیر را تایپ کرده و کلید enter را فشار دهید.
تبریک میگم شما موفقت شدید! کنسول (که یک تفسیرگر است) متغیر شما را درک میکند. متغیر behtarin_shere_donya به عنوان “daram dam dam da dam” مشخص میشود (شناخته میشود).
در بسیاری از زبانهای برنامهنویسی باید نوع متغیری را که میخواهید تعریف کنید، مشخص کنید. مثلاً در c++ ، کلیدواژه var وجود ندارد. به جای آن از کلیدواژه int (برای مشخص کردن اعداد صحیح کوچک) و کلیدواژه long (برای مشخص کردن اعداد صحیح بزرگ) و کلید واژه float و double (برای مشخص کردن اعداد اعشاری) و کلیدواژه string (برای مشخص کردن متن) استفاده میشود. فعلاً نگران اینها نباشید چون بعداً همه آنها را یاد میگیرید.
در دو قسمت بعد هم، به همین ترتیب پیش میرویم و در پایان مقاله سوم، به شما قول میدهم درک خوبی از ماهیت کار برنامهنویسی به دست بیاورید.
در قسمت بعد، به معرفی Objectها، آرایهها و API خواهیم پرداخت. اگر سؤالی داشتید، حتماً در زیر همین پست، مطرح کنید. اگر بتوانم کمکی به شما بکنم، باعث خوشحالی من خواهد بود.
بوتکمپهای برنامهنویسی بامداد، واسط بین جویندگان کار و صنایع مختلف کشور است. در این بوتکمپها میتوانید به عنوان کارآموز مشغول کار شده و پس از طی مراحل کارآموزی و کسب نمره قبولی از مربیانتان به عنوان برنامهنویس به صنایع و شرکتها معرفی شوید. در صورت قبولی در آزمون ورودی، چنانچه در حال حاضر توان پرداخت کل شهریه خود را ندارید، میتوانید پرداخت بخش عمده شهریه خود را به زمان بعد از استخدام موکول کنید و درصدی از درآمدتان را به شهریههای معوقه دوران کارآموزی خود اختصاص دهید.
نظرات
خیلی خوب توضبح دادین?
خوشحالیم که راضی هستید.