همین حالا کدنویسی را شروع کنید اگر اولین بخش از مقالات “شروع کدنویسی – همین حالا شروع کنید.” را مطالعه نکردهاید، قبل از خواندن این بخش، لازم است بخش اول را مطالعه کرده باشید.
در این سری نوشتار که از آن را به سه بخش تقسیم کردهام، سعی دارم دیدگاهی از شغل برنامهنویسی را در اختیار شما قرار دهم تا اگر پیش از این از برنامهنویسی هیولایی ترسناک در ذهنتان ساختهاید، کاملاً متقاعد شوید که این مهارت، کاملاً قابل یادگیری و قابل فهم است و تنها چیزی که نیاز دارد، پشتکار و انگیزه خودتان است. این که بپذیرید که شما هم میتوانید برنامهنویس شوید.
در قسمت اول، کلیاتی را در مورد ماهیت کار یک برنامهنویس توضیح دادیم و مفهوم متغیر را شرح دادیم. اگر این بخش را مطالعه کرده باشید، توانستهاید اولین کد خود را بنویسید. با من همراه باشید تا معرفی کلیدواژهها و مفاهیم برنامهنویسی را ادامه بدهیم.
Objectها یا اشیاء
یکی از بخشهای مهم کدنویسی، یادگیری نحوه سازماندهی به دادههاست. مثال تاریخ تولد را درنظر بگیرید: در فیسبوک، صدها میلیون تاریخ تولد (و تاریخهای مهم دیگر) وجود دارد که در حافظه کامپیوترهای موجود در انبار کامپیوترها ذخیره شده است. فیسبوک چه طور میفهمد این تاریخها کدام به کدام است؟ اگر من لیستی از میلیاردها تاریخ به شما بدهم، آیا میتوانید بفهمید که این تاریخها هر کدام به چه درد میخورد؟ شما شاید بتوانید ولی انسانهای عادی نمیتوانند.
خوشبختانه این حالت در فیسبوک وجود ندارد و تاریخ تولد شما، تاریخ ازدواجتان، نام شهری که در آن زندگی میکنید، سوابق کاری شما، نامتان و تمام اطلاعات دیگری که به شما مربوط میشود، به وسیله یک ID یا شناسه منحصر (مانند شناسهای که در گواهینامه رانندگی یا شناسنامه شما وجود دارد) به فرد به یکدیگر متصل شدهاند. این شناسه احتمالاً عدد بزرگیست که فیسبوک از کلاه جادویی خود بیرون آورده است. این یعنی شما شماره 12884002 هستید و تمام دادههایی که به شما مربوط میشود، برچسب 12884002 دارد و وقتی شما وارد فیسبوک میشوید (لاگین میکنید)، تمام اطلاعاتی که این برچسب را دارند، در انبار کامپیوترها جستجو شده و نمایش داده میشوند. فیسبوک، دقیقاً به همین شکل کار میکند.
در کدنویسی، این کار به وسیله یک object انجام میشود. یک object یا شیء از تعدادی قطعه داده تشکیل شده است که همگی ارتباطی سازمانیافته دارند. میتوانیم نامش را آرایه جمعی، دیکشنری یا map بگذاریم ولی بیشتر مواقع از کلمه object استفاده میشود.
در جاوااسکریپت، objectها شبیه باقی متغیرها تعریف و اعمال میشوند. نمونهای از یک object را در ادامه مشاهده میکنید:
var people = {
id: 12884002,
age: 28,
name: ‘ali’,
favorite_song: ‘babakaram, by Javadyasari’
}
هر قطعه از دادههای موجود در یک object شبیه الاکلنگ است. نام در سمت چپ و یک علامت : در وسط برای این که تعادل را حفظ کند. حقیقتاً کل کاری که میکنیم این است که چهار متغیر تعریف میکنیم: دوتای اول، شماره هستند و دوتای آخر، حروف و کلمات. اما همه آنها با هم مربوط هستند و به این ترتیب، هر زمان که بخواهیم در مورد People چیزی بدانیم، میتوانیم آنها را پیدا کنیم. و این که به جای این که اسم آنها را متغیر (Variable) بگذاریم، به آنها خصیصه (Properties) یا فیلد (Fields) میگوییم. یک object میتواند به هر تعداد که شما بخواهید، خصیصه یا فیلد داشته باشد مهم این است که آنها را داخل {کروشهها} قرار بدهیم.
میتوانیم آبجکتی را که نام people را برای آن درنظر گرفتهایم، جابهجا کنیم و درست مثل متغیرهای دیگر، به آنها ارجاع دهیم. کامپیوتر، منظور ما را درک میکند. اگر بخواهیم میتوانیم فقط به یکی از خصیصهها یا فیلدهای people ارجاع دهیم و برای این کار از کاراکتر نقطه استفاده میکنیم. اینطوری:
people.id
people.name
people.age
people.favorite_song
هرکدام از موارد بالا، درست شبیه متغیرهای دیگر به کار میروند. یعنی میتوانیم چیزی را در آنها قرار دهیم تا بعداً بتوانیم به آن مراجعه کنیم. میخواهید نام ali را تغییر دهید؟ کار سادهایست:
people.name = ‘zahra’
همین. تمام شد. از حالا به بعد، هرگاه people.name را تایپ کنید، نام zahra درنظر گرفته میشود.
آرایهها یا Arrays
گاهی اوقات برای خصیصههای یک object، نمیخواهید از اسامی منحصر به فرد استفاده کنید یا نمیدانید تعداد خصیصههای شما قرار است چه تعداد باشد. در این قبیل موارد، از آرایه یا Array استفاده میکنید. آرایه، فهرستی از قطعات داده مشابه است. آرایهها میتوانند بر حسب نیاز، بزرگ و کوچک شوند.
مثال خوب آن، اراجیفیست که در توییتر، توییت میکنید. توییتر نمیداند شما قصد دارید چه تعداد توییت ارسال کنید. توییتر برای نگهداری توییتهای شما از یک آرایه استفاده میکند. آرایهها در جاوااسکریپت، چیزی شبیه این هستند:
var dumb_tweets = [Salam, Twitter!’, ‘Rofagha Chetorid?’, ‘Kasi Ghahve mikhad?’]
اگر یادتان باشد، در objectها از {کروشه} استفاده میشد، درست است؟ آرایهها از ]براکت[ استفاده میکنند. آرایه فوق، حاوی سه جمله است که با علامت کاما از هم جدا شدهاند و درست میگویید، آنها نیز متغیر یا Variable هستند. موقع کدنویسی، هر جا که نیاز داشتید میتوانید dumb_tweets را تایپ کنید و کامپیوتر را به آن آرایه، ارجاع دهید.
اگر بخواهید میتوانید به یکی از جلمات آرایه نیز ارجاع دهید و این کار را به این شکل انجام میدهید:
dumb_tweets[0]
dumb_tweets[1]
dumb_tweets[2]
ما ابتدا نام آرایه dumb_tweets را وارد کرده و سپس داخل ]براکت[، شماره (ایندکس) المانهای داخلی را وارد میکنیم. عجیب نیست که اولین شماره آرایه، صفر است؟ اما شمارههای زندگی شما از این به بعد از صفر شروع میشود و من بعد، هرگاه گفتند تا ده بشمارید باید از صفر شروع کنید. برنامهنویسها اینطوری میشمارند.
هر کدام از جملات بالا یک متغیر است (منظور از جمله، کدیست که وقتی اجرا میشود به یک قطعه داده تبدیل میشود) و اگر بخواهید میتوانید چیزی را به آنها الصاق کنید.
dumb_tweets[2] = ‘az tamame harfhaii ke goftam pashimanam.’
به این ترتیب، kasi ghahve mikhahad به چیز دیگری تبدیل میشود و برای همیشه ناپدید میشود.
ارایهها میتوانند حروف و کلمات، عدد، تاریخ، آبجکت و حتی آرایههای دیگر را در خود نگهداری کنند. میتوانید داخل یک آرایه، آرایههای دیگری را قرار دهید.
پیشنهاد مقاله: آموزش برنامه نویسی– شروع آموزش برنامهنویسی
کدهایی که به این شکل، داخل یکدیگر قرار میگیرند، کدهای تودرتو نامیده میشود (nested codes).
آرایهها میتوانند خصیصهها یا فیلدهای آبجکتها نیز باشند. خصیصه یا فیلدی که در یک آبجکت وجود دارد، میتواند آرایهای از آبجکتهای دیگر باشد که هر یک از آن آبجکتها به خودی خود، آرایههای دیگری را به عنوان فیلد یا خصیصه مورد استفاده قرار میدهد و این فرایند تا بینهایت میتواند ادامه پیدا کند. چیزی شبیه عروسکهای تودرتوی روسی ولی ساختار دادهها به این شکل تعیین میشود. به عنوان مثال، اکانت توییتر شما میتواند آبجکتی باشد که یکی از فیلدها یا خصیصههای آن، آرایهای از توییتهای شماست. هر توییت نیز میتواند آبجکتی باشد که هر یک از خصیصههای موجود در آن، آرایهای از پاسخهای دریافتی از دیگران، لایکها و retweetها را نگهداری میکند و هر پاسخ، لایک یا retweet دریافتی میتواند آبجکتی باشد که خصیصههای آن شامل نام، تصویر پروفایل، اطلاعات Bio و دیگر مشخصات کاربری باشد که به توییت شما واکنش نشان داده است.
var nested_object = {
an_array: [
{
another_array: [
{
yet_another: [
{
message: ‘اگه به کمک احتیاج دارید چشمک بزنید’
}
]
}
]
}
]
}
برای دسترسی به خصیصه message میتوانید عبارت زیر را تایپ کنید:
nested_object.an_array[0].another_array[0].yet_another[0].message
به این ترتیب، کامپیوتر شما میداند که منظور شما ‘اگر به کمک احتیاج دارید، چشمک بزنید’ است.
در جاوااسکریپت، همه چیز به شکل رازگونهای یک آبجکت است. به عنوان مثال، آرایه dumb_tweets خصیصهای دارد که ما آن را هرگز مشخص نمیکنیم:
dumb_tweets.length
این خصیصه، طول آرایه است. جاوااسکریپت به طور اتوماتیک آن را ایجاد و به روزرسانی میکند. جاوااسکریپت میتواند به شما بگوید که چه تعداد المان در این آرایه وجود دارد. در مثال ما 3 المان وجود دارد. میتوانید خودتان بشمارید ولی این بار از صفر شروع نکنید چون من به شما دروغ گفتم و فقط بعضی وقتها باید شمارش را از صفر شروع کنید.
API
وقت آن رسیده که داستان ترسناک آتشسوزی را برایتان بگویم.
روزی روزگاري، در یک جهان موازی، برنامهنویسی زندگی میکرد. او تنها کدنویسی بود که در کل آن جهان وجود داشت و باید به تنهایی تمام کدهای موجود در جهان را مینوشت.
نگران نباشید این فقط یک داستان است. خونسردی خود را حفظ کنید.
حقیقت این است که هیچ کدنویسی تنها نیست و ما مرتباً از کدهایی استفاده میکنیم که خودمان آنها را ننوشتهایم.
حتی اگر یک کدنویس قوی باشید و میلیونها سطر کد را در زندگی خود نوشته باشید، اما حتماً در طول تجربه کدنویسی خود بارها از کدهایی استفاده کردهاید که دیگران آنها را نوشتهاند. بیشتر این کدها را کسانی نوشتهاند که شما اصلاً آنها را نمیشناسید. بعضی از این غریبهها حتی ممکن است امروز مرده باشند ولی کدهایشان به حیات خود ادامه میدهند. چیزی شبیه کدهای زامبی. اما این کدهای زامبی به جای این که مغز شما را بخورند، از مغزتان محافظت میکنند و بسیاری از کارهای سخت مغز شما را انجام میدهند. اینها بهترین زامبیهای تاریخ هستند.
اما چه طور از این کدهای زامبی استفاده کنیم؟ کپی و پیست چه طور است؟ بعضی وقتها جواب میدهد ولی همیشه این طور نیست و در بیشتر مواقع، از API برای استفاده از آنها کمک میگیریم. یک API ، مجموعه بستهبندیشدهای از خصیصهها و متدها (تکهکدهایی که برای هدف خاصی ساخته شدهاند) هستند که نام خاصی دارند و درست مثل متغیرها میتوانید توسط آن نام در کدهای خود به آنها ارجاع دهید. APIها کارهای بسیار مفیدی برای شما انجام میدهند.
آرایههای جاوااسکریپت، API خاص خود را دارند. خصیصه length، بخشی از این API است. بخش دیگر این API، متدیست به نام push که یک المان را به انتهای آرایه اضافه میکند:
dumb_tweets.push(‘پسر، من از ایدههای خوب متنفرم.’)
یک متد شبیه یک خصیصه است چون با کمک یک نقطه میتوانید به آن دسترسی پیدا کنید. متدها شکل دیگری از خصیصهها هستند چون باید بعد از آنها (پرانتز) درج شود. این پرانتزها دادههایی را که میخواهیم به آرایه خود اضافه کنیم، نگهداری میکنند. حال، آرایه dumb_tweets ما حاوی چهار المان است. چیزی شبیه این:
[‘Hello, Twitter!’, ‘My friends are so cool’, ‘I regret literally everything I have ever said’, ‘Man I hate good attitudes’]
به خاطر داشته باشید که ایندکس المان آخر، 3 است (چون از صفر شروع به شمارش میکنیم) و برای ارجاع به آن از [dumb_tweets[3 استفاده میکنیم و از حالا به بعد dumb_tweets، عدد 4 را نتیجه خواهد داد.
API آرایه جاوااسکریپت حاوی متدهای بسیار زیادیست که توضیح آنها خارج از موضوع این نوشته است ولی در اینجا میتوانید به آنها دسترسی پیدا کنید.
مرورگرهای وب نیز حاوی API بسیار عظیمی هستند که کدنویسهای جاوااسکریپت، هر روزه از آن استفاده میکنند. این API حاوی متدهاییست که برای کارهایی مثل متحرکسازی المانهای داخلی وبسایتها، دریافت اطلاعات کاربر، ارتباط با کامپیوترهای دیگر از طریق اینترنت، دستکاری کدها و بسیاری کارهای دیگر مورد استفاده قرار میدهند. توانایی کار با این API و آشنایی با اجزای مختلف آن، بخش مهمی از مراحل بدل شدن به یک توسعه دهنده وب است.
خوب دوستان، بخش دوم آموزش ما نیز در اینجا به پایان رسید. در بخش سوم که آخرین بخش این سریال آموزشیست، در مورد توابع، حلقهها و بخشهای دیگر ضروری برای کدنویسی صحبت خواهیم کرد. اگر سؤال یا نظری در مورد مطالب آموزش داده شده دارید، یا اگر بخشی از آن را به اندازه کافی خوب توضیح ندادهام، زیر همین نوشته با من در ارتباط باشید.
بوتکمپهای برنامهنویسی بامداد، واسط بین جویندگان کار و صنایع مختلف کشور است. در این بوتکمپها میتوانید به عنوان کارآموز مشغول کار شده و پس از طی مراحل کارآموزی و کسب نمره قبولی از مربیانتان به عنوان برنامهنویس به صنایع و شرکتها معرفی شوید. در صورت قبولی در آزمون ورودی، چنانچه در حال حاضر توان پرداخت کل شهریه خود را ندارید، میتوانید پرداخت بخش عمده شهریه خود را به زمان بعد از استخدام موکول کنید و درصدی از درآمدتان را به شهریههای معوقه دوران کارآموزی خود اختصاص دهید.