مجله ی اینترنتی برای کسایی که میخوان برنامه نویس بشن internplusplus.ir
سفر به اعماق کامپیوتر (قسمت سوم)
سلام
حالتون چطوره؟
این متن زیر در واقع متن پادکست ما هست و اگه گوش کردن رو به خوندن ترجیح میدید میتونید از اینجا ها پادکست مارو پیدا کنید
اینجا اینترن پلاس پلاسه و شما دارید به سومین قسمت سری سفر به اعماق کامپیوتر گوش میدید.
پیشنهاد میکنم که اگه قسمتای قبلی رو گوش نکردید اول برید اونا رو گوش کنید.
چون سری سفر به اعماق کامپیوتر ما حالت سریالی داره اینجوری نیست که بیایم اخبار روز و این جور چیزا رو بگیم.
از پایه اومدیم مفاهیمی که لازمه برای برنامه نویس شدن رو میگیم.
و توی این قسمت من که ممد ام با زهرامون در مورد اینا صحبت میکنیم.
1. حافظه و دیتابیس
2. شبکه و اینترنت
حافظه و دیتابیس
خوب بریم یکم در مورد حافظه صحبت کنیم.
ببینید ما دو نوع کلی حافظه داریم.
حافظه اصلی یا primary memory.
و حافظه ی ثانویه یا secondary memory
حافظه اصلی یا primary memory خودش از چند دسته ی ram , rom و… تشکیل میشه که در مورد ram تو قسمت یک سری سفر به اعماق کامپیوتر صحبت کردیم.
گفتیم ram یه حافظه ایه که برنامه ها برای اجرا شدن بهش نیاز دارن و متغیر ها و غیره روی اون ذخیره میشن.
اما یه نکته ای در مورد ram وجود داره.
اونم اینه که وقتی یه برنامه تموم میشه یا کرش میکنه یا به هر دلیلی از حالت اجرا خارج میشه حافظه ای که گرفته بوده رو آزاد میکنه تا برنامه های دیگه بتونن از فضایی که آزاد شده استفاده کنن.
پس اگه داده ای توی ram مثلا در قالب یه متغیر ذخیره کرده باشیم با بسته شدن برنامه و دوباره باز کردنش نمیتونیم بهش دسترسی داشته باشیم.
پس اینجا میفهمیم که نیاز به یه نوع حافظه ی دیگه داریم که بعد از بسته شدن برنامه یا حتی خاموش شدن کامپیوتر همچنان دیتا های مارو بتونه نگه داره که اینطوری دفعه دیگه که برنامه رو باز میکنیم به اون دیتا یی که سری قبلی ذخیره کرده بودیم دسترسی داشته باشیم.
و اینجاست که سراغ نوع دوم حافظه ها که حافظه ی ثانویه یا secondary memory هستن میریم. که مثلا hard drive ها cd ها ssd ها و فلش درایو ها و حافظه های این تیپی از نوع secondary memory اند. که مثل حافظه های نوع اول نیستن که با تموم شدن برنامه یا قطع برق یا خاموش کردن کامپیوتر و… دیتای توشون از بین بره.
پس برای دیتا هایی که دوست داریم نگهشون داریم که دفعه بعد که برنامه باز میشه ازشون استفاده کنیم به نظر گزینه ی خوبی میان.
حالا این داده ها که روی حافظه ثانویه ذخیره میشن در قالب فایل ذخیره میشن که تو قسمت قبل که در مورد source code حرف میزدیم فایل رو کامل تعریف کردیم و خوشبختانه خیلی چیز ملموس تری هست نسبت به بقیه چیزایی که تا حالا تعریف کردیم چون تا امروز خیلی باهاشون سروکار داشتید.
سرتون رو درد نیارم پس اگه ما بخوایم مثلا یه برنامه بنویسیم که اطلاعات یه تعدادی دانشجو رو ذخیره کنه جوری که با بازو بسته کردن برنامه پاک نشه باید روی حافظه ی ثانویه مثلا دیسک و در قالب فایل ذخیرش کنیم.
یه نکته هم اینجا داخل پرانتز بگم
مرسومه بین برنامه نویس ها بعضی موقع ها به جای کلمه ی ذخیره کردن از نوشتن هم استفاده میکنن.
مثلا به جای اینکه بگن بیا ذخیره کنیم تو فلان فایل <مکث> میگن بیا بنویسیم تو فلان فایل
«بیا بنویسیم روی آب رو درخت رو پر پرنده رو ابرا» <بانو مهستی>
و در مقابل نوشتن هم از کلمه خوندن استفاده میکنن. مثلا میگن مثلا میگن یه چیزی رو از یه فایلی بخونیم.
«چی بخونم جوونیم رفته صدام رفته دیگه»
تقریباً همه ی زبون های برنامه نویسی هم قابلیت کارکردن با فایل ها رو دارن و شما اگه کار کردن با متغیرها رو تا حدودی یاد گرفتید بد نیست سعی کنید برنامه هایی شبیه همین نوشتن اطلاعات چند تا دانشجو توی فایل رو هم تمرین کنید.
برای شروع فقط کافیه برید تو گوگل بزنید
working with files in c++
یا جاوا
یا پایتون
یا ابالفضل ?
ولی همینجوری ذخیره کردن دیتا هامون تو فایل ها با روش های من درآوردی زیاد جواب نمیده چون هزار و یک مشکل به وجود میاد و سرعت و عملکرد پایینی هم خواهد داشت که چراش در این پادکست نمیگنجه.
واسه همین یسری برنامه نویس های گولاخ به کمک ریاضی دان ها و بقیه بروبچ دانشمندا نشستن یسری سیستم به اسم DBMS یا database management system یا سیستم مدیریت پایگاه داده طراحی کردن که سعی کردن با انواع فرمول های ریاضی و قواعد خاصی که طی سال ها تجربه به دست آورده بودن تا حد زیادی مشکلات کار کردن با پایگاه داده ها رو حل کنن و عملکرد و سرعتش رو بهتر کنن. و این DBMS هارو در اختیار ما هم گذاشتن?.
{خیر از جوونیشون ببینن}
حالا این پایگاه داده یا database که میگن چی هست اصن.
تعریف فنی اش میشه اینکه دیتابیس یه مجموعه ای از اطلاعاته که به صورت منظم شده ای ذخیره شده و به راحتی قابل دسترسی و مدیریت و تغییره.
حالا این DBMS ها چهار عمل اصلی دارن که به طور خلاصه بهش میگن CRUD که از اول اسم چهار عمل اصلیه دیتابیس ها تشکیل میشه:
اولیش : Create که ینی یه چیزی رو به اطلاعات قبلی اضافه کنیم.(مثلا یه دانشجو جدید داریم و اطلاعاتش رو وارد دیتابیس میکنیم)
دومیش: Read که یعنی خواندن. که یعنی بره تو دیتابیس بگرده دنبال یه بخشی از اطلاعات برداره بیاره.
سومیش: Update که یه اطلاعاتی که قبلا وجود داشته رو تغییر میده. مثلا شما اعتراض زدی نمرت عوض شده. حالا نمره جدیدت باید جایگزین نمره قبلی شما تو دیتابیس بشه یا اصطلاحا اپدیت بشه.
چهارم: Delete که به معنی پاک کردن کاربردش اینه که یه بخشی از دیتابیس رو پاک کنه
که حالا اول اسم همه اینا رو بزاریم کنار هم میشه CRUD
حالا میخوایم چند تا dbms معروف رو مثال بزنیم:
مثلاً
MYSQL
MICROSOFT SQL SERVER
SQLite
mongo db
و خیلیای دیگه.
ممکنه توی مثال هایی که زدیم تکرار کلمه ی SQL توجه شما رو جلب کرده باشه. که اگه به قسمت اول سری سفر به اعماق کامپیوتر رجوع کنید ما اونجا SQL رو به عنوان یه زبان که مخصوص کار با دیتابیس ها هست معرفی کردیم و این DBMS هایی که توی اسمشون SQL دارن هم منطقا از زبان SQL پشتیبانی می کنن.
کل سیستم هم اینطوری کار میکنه که شما یه query که یه عبارتیه به زبون SQL رو میدید به DBMS و DBMS اون اجرا میکنه و یکی از چهار عمل اصلیه CRUD روی دیتابیس شما اتفاق میوفته. و شما هم خودتون به صورت دستی میتونید این query هارو بدید به DBMS و هم اینکه میتونید query هارو توی برنامه ای که دارید مینویسید بزارید که در حین اجرا برنامه این query هارو بده به dbms.
شبکه و اینترنت
اما بخش دوم پادکست که در مورد شبکه و سرور و اینترنت و این تیپ چیز هاست.
اول بریم سراغ تعریف شبکه:
یه شبکه ی کامپیوتری مجموعه ای از کامپیوترهاست که با هم از طریق یسری پروتکل ارتباط برقرار میکنن و منابع خودشون مثل فایلا رو با هم به اشتراک میزارن.
در واقع شبکه بستری رو فراهم میکنه که توش کامپیوتر ها میتونن به هم یک سری داده هارو در قالب پیام به هم بفرستن.
حالا پروتکل یعنی چی و چرا بهش نیاز داریم؟
ببینید اگه هر کامپیوتری طبق سلیقه ی خودش هر جور که بخواد پیام هارو بفرسته تو شبکه سنگ رو سنگ بند نمیشه. چون بقیه اصن نمیدونن این پیاما چه فرمتی دارن و چجوری باید خونده بشن پس به درد نمیخورن. پس ما اینجا به یه سری استاندارد و قرارداد مشترک بین همه کامپیوتر ها نیاز داریم که به این قرارداد ها پروتکل میگن.
حالا بیایم ببینیم این اینترنتی که بدون اون صبحمونشب نمیشه چیه!
اینترنت (Internet) یک شبکه جهانی است که شامل کُلی کامپیوتر متصل به هم از سرتاسر دنیا بوده و اجازه انتقال یه عالمه از دادهها و اطلاعات را میان کامپیوترهای موجود، میدهد.
دقیقا مثل نامه اس پس از اونجایی که وقتی میخوایم نامه بزنیم آدرس فرستنده و گیرنده رو میزنیم پس توی اینترنت هم به همچین آدرسی نیاز داریم که بتونیم به اینترنت بفهمونیم که این پیام مارو به کدوم کامپیوتر برسونه.
و اسم این آدرس در دنیای شبکه و اینترنت آدرس ip هست.
پس هر کامپیوتری که به اینترنت وصل شه یدونه از این ip آدرس ها نیاز داره که سرویس دهنده ی اینترنت یدونه بهش میده. که چهار تا عدده ۰ تا ۲۵۵ هه که با نقطه از هم جدا شدن.
مثلا:
5.237.192.210
جا داره یه فلش بک به قسمت اول سری سفر به اعماق کامپیوتر بزنم که اونجا کامپیوتر رو تعریف کردیم و گفتیم کامپیوتر فقط محدود به pc های خانگی و لپ تاپ ها نیست موبایل های هوشمند و کنسول های بازی نیست و خیلی چیزای دیگه هم کامپیوتر به حساب میان.
خوب حالا این سوال پیش میاد که پس اگه اینترنت فقط یسری کامپیوتر ان که بهم وصل ان پس وبسایت ها و سرویس های انلاین دیگه چی میشن؟
اونا کجان؟
ببینید ما توی اینترنت دو نوع کامپیوتر داریم:
سرور ها و کلاینت ها.
داستان از این قراره که سرور ها سرویس ها رو ارائه میدن و کلاینت ها از اون سرویس ها استفاده میکنن.
مثلا اگه یه وبسایت رو یه سرویس در نظر بگیریم. یه وبسایت یه سرور داره که یجایی به اینترنت وصله و شما به عنوان کلاینت یه پیام که بهش میگن درخواست رو میفرستید بهش و اونم به عنوان جواب مثلا صفحه ی اول وب سایت رو برای شما میفرسته. یا شما ممکنه تو درخواستتون بگید من فلان صفه رو میخوام. وسرور هم همون صفحه ای که میخواید رو براتون میفرسته.
زیبا نیست؟
اما بریم سراغ نکته ی زیبای بعدی که اسمش DNS هه
که مخفف Domain Name System هه.
حالا داستان چیه؟
ما گفتیم هر کامپیوتری تو اینترنت از جمله سرور ها ip ادرس دارن که چهار تا عدده که با نقطه از هم جدا شدن. ولی خوب سخته که بخوایم واسه هر وبسایتی که بریم توش این آدرس رو حفظ کنیم و مهم تر از اون اینه که ممکنه این ادرس عوض هم بشه.
بنابراین یه چیزی طراحی شد به اسم dns که شبیه یه دفترچه تلفنه که میتونه یه نام دامنه رو تبدیل کنه به آدرس ip.
یعنی چی؟
مثلا شما تو مرورگرتون میزنید internplusplus.ir اول یه درخواست میره سمت dns server بعد اون dns سرور توی دفتر تلفن مانندش میگرده ببینه آدرس ip سایت intern plus plus الان چیه و به عنوان جواب به مرورگر شما میده و بعد مرورگر که الان دیگه ip آدرس رو داره میتونه درخواست بفرسته به سرور intern plus plus و سرور ما هم به عنوان جواب صفحه ی اصلی ما رو برمیگردونه به مرورگر شما و مرورگر شما هم اونو به شما نمایش میده.
اینجوری دیگه شما لازم نیست آدرس ip سایت مارو حفظ کنید اگر هم ما یه روزی آدرس ip سرور مون عوض شد میریم به dns server میگیم آدرس جدید مارو بزن تو دفتر تلفن مانندت بی زحمت.
خلاصه که خیلی باحاله
حالا این دامنه ها مثلاً internplusplus.ir خریدنی ان ینی شما میری مثلا یه دامنه رو برای یک سال به اسم خودت میکنی و بعد به صورت جداگانه باید بری به سرویس دهنده ی dns هم بگی که این دامنه رو هر کی خواست این ip رو بهش بده.
حرف اخر
این قسمت سفر به اعماق کامپیوتر هم تموم شد.
امیدوارم که براتون مفید بوده باشه دیدتون نسبت به این چیزایی که گفتیم کامل تر شده باشه.
مارو میتونید از جاهای مختلفی دنبال کنید.
مثلا فایل صوتی پادکست هامون رو تو تلگرام میزاریم.
اگه خوندن رو از گوش کردن بیشتر دوست دارید متن پادکست هامون رو توی ویرگول میزاریم.
خود پادکست مارو میتونید از کست باکس و انکر گوش کنید.
ادرس همه اینا هم تو سایت ما که ادرسش internplusplus.ir هست هست و از هر جا راحتید مارو دنبال کنید.
اگه خواستید هم مارو به کسایی که فکر میکنید مطالب ما به دردشون میخوره معرفی کنید.
تا قسمت بعد خدافظ
مطلبی دیگر از این انتشارات
سفر به اعماق کامپیوتر (قسمت اول)
مطلبی دیگر از این انتشارات
سرکی به دنیای برنامه نویسی(قسمت اول)
مطلبی دیگر از این انتشارات
بریم تو کد - قسمت اول (انواع داده و عملگر ها)