سرکی به دنیای برنامه نویسی (وب)


.سلاام

امروز حالتون چطوره؟


انچه در ادامه میخونید متن پادکست ما هست کی میتونید از اینجا گوش بدید

https://castbox.fm/episode/سرکی-به-دنیای-برنامه-نویسی(وب)-id2716424-id316631781?utm_source=website&utm_medium=dlink&utm_campaign=web_share&utm_content=%D8%B3%D8%B1%DA%A9%DB%8C%20%D8%A8%D9%87%20%D8%AF%D9%86%DB%8C%D8%A7%DB%8C%20%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%20%D9%86%D9%88%DB%8C%D8%B3%DB%8C(%D9%88%D8%A8)-CastBox_FM




اینجا اینترن پلاس پلاسه و شما دارید به دومین قسمت سرکی به دنیای برنامه نویسی گوش میدید

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

توی سری پادکست سرکی به دنیای برنامه نویسی هم هر قسمت یه رشته ی برنامه نویسی رو با هم برسی میکنیم و توی این قسمت من که زهرا ام با علی مون قراره بریم سراغ وب و مسیر برنامه نویس وب شدن رو بهتون نشون بدیم


اول میریم سراغ تعریف وب:

وب یا world wide web یا www یه سیستم اطلاعاتیه که اسناد و یسری منابع دیگه هستن که هر کدوم یه آدرس منحصر به فرد دارن که بهش Uniform Resource Locators یا URL میگن که این منابع از اینترنت قابل دسترسی ان

‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌مثلا شما تو بخش آدرس مرورگرتون یه URL وارد میکنید و اینتر رو میزنید مرورگرتون میره اون چیزی که url بهش اشاره میکنه رو پیدا میکنه , دانلود میکنه و به شما نشون میده.

که میتونه یه صفحه ی وب باشه

حالا بریم ببینیم که این صفحه های وب که ساختنشون کار برنامه نویس های وبه چطوری ساخته میشن.


یه صفحه ی وب در کل سه تا بخش میتونه داشته:


بخش اول: content یا محتواشه که با زبون HTML مینویسن و میشه توش متن و لینک و عکس و ویدیو و یسری input و دکمه و خیلی چیزای دیگه گذاشت که میشه به اسکلت صفحه ی وب تشبیهش کرد


بخش دوم: presentation یا نحوه ارائه شه که میتونه اندازه و نحوه قرارگیری و بقیه مشخصات ظاهری اون محتوا رو مشخص کنه که با زبون CSS مینویسنش که میشه به پوست صفحه ی وب تشبیهش کرد


بخش سوم: هم behavior یا رفتار صفحه اس که یعنی میشه یه عملکردی رو برای صفحه تعیین کرد و با زبون JavaScript مینویسنش که میشه به عضله ی صفحه ی وب تشبیهش کرد


مثلا یه صفحه ی لاگین رو در نظر بگیرید

مثلا با html میتونیم بگیم که دو تا ورودی داریم که میشه توش برای username و متن نوشتpassword و یه دکمه داریم که اگه بزنیم لاگین میکنه.

بعد توی css میگیم هر کدوم از این آیتم های تو صفحه چه شکلی و چه رنگی باشن و کجای صفحه باشن

و در نهایت توی javascript میتونیم بگیم وقتی روی دکمه ی لاگین کلیک شد این دستورالعمل ها اجرا شه

اااااااااااااااااااااااااااااا

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

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

برای یادگیریه این سه تا زبون آموزش های فارسی و غیر فارسی و رایگان و پولی تو اینترنت ریخته و برای اجرای این زبونا تنها چیزی که لازم دارین فقط یه مرورگر

همون طور که توی سفر به اعماق کامپیوتر گفتیم قاعدتا اینجا شما نیاز به یک ide یا text editor دارید که باهاش بتونید فایل های html و css و js تون رو ادیت کنید که ما یه پست هم گذاشتیم و چند تا ide و text editor رو معرفی کردیم که میتونید از اونا هم استفاده کنید ولی برای دیدن نتیجه ی اجرا شدن کدتون باید فایل هایی که نوشتید رو با مرورگر باز کنید.

بعد از اینکه اینا رو یاد گرفتید. در قدم بعد میتونید خیلی چیزای دیگه ای رو یاد بگیرید

مثلا یسری فریم ورک برای css داریم که معروف ترینش bootstrap هه که خیلی هم چیز خوبیه


و کلی فریم ورک جاوا اسکریپت داریم مثل react , angular , vue.js و خیلیای دیگه که توی پروژه های بزرگتر میتونید از اونا استفاده کنید و خیلی به شما کمک میکنن.

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

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

به قول ممد:

< اگر جایی رو نگران شدید متوجه نشید >


حالا بعضیا هم هستن میگن ما فریم ورک vanilla js کار میکنیم.

که

در واقع دارن جک میگن. ?

در واقع vanilla js کار ها اعتقاد دارن که خود جاوااسکریپت آنقدر کامل و خوب هست که نیازی به استفاده از فریم ورک های دیگه نیست

حتی یه نفر برای vanilla js یه سایت ساخته که وقتی میرید توش میتونید فریم ورک vanilla رو دانلود کنید.

که یه فایل خالیه. ?

و منظورش هم اینه که شما به چیزی بیشتر از خود جاوااسکریپت نیازی ندارید

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

ولی بیشتر آگهی های استخدامی که از شرکت ها میبینیم معمولاً web developer هایی میخوان که یکی از اون سه تا فریم ورکی که بالا تر گفتیم ینی (انگولار یا ویو یا ری اکت) رو بلد باشن. یکی از دلیل هاشم اینه که همون طور که گفتیم اون فریم ورک ها کد استایل ثابتی دارن. و مثلا اگه یکی استعفا بده شما بخواید برید جاش کار کنید راحت تر سر در میارید از کد های اون بنده خدا.

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

خلاصه که ما نمیخوایم بگیم کدوم بهتره و کدوم بدتره.

اینترن پلاس پلاس یه پادکسته بی طرفه. :)))

اون دیگه تصمیمش با شماست.


کنار همه‌ی اینا کلی لایبری داریم که میتونید استفاده کردن ازشون رو یاد بگیرید مثلا anim.js که یه لایبری برای انیمیشن دادن به المان های صفحه اس و خیلی لایبری های دیگه که هر کدوم واسه یه کار خاصی کاربرد دارن و شما ممکنه تو پروژه اتون از اونا لازم باشه که استفاده کنید.

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

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

البته یه پروژه هایی مثل web assembly هم وجود دارن که با استفاده از اون ها میشه با زبون های دیگه ای هم برای مرورگر ها برنامه نوشت. ولی در لحظه ای که ما داریم این پادکست رو ضبط میکنیم هنوز خیلی جا نیفتادن و به نظر نمیاد که بتونن به راحتی جایگزین این تکنولوژی هایی که گفتیم باشن. نهایتا میتونن به عنوان یه آپشن در کنار این چیزایی که گفتیم استفاده بشن.

بنابراین شما الان دیگه مسیر رو تا حدودی فهمیدید چیه

و خوشبختانه چون این تکنولوژی ها خیلی ساله که هستن باعث شده که ادما کلی وقت داشته باشن که براش اموزش و ابزار و هر چیزی که شما نیاز داشته باشید رو آماده کنن.

و اصولا هم تقاضای خوبی داره مخصوصا اگه یکی از فریم ورک های جاوا اسکریپت که گفتیم مثل angular , react , vue.js رو خوب بلد باشید رو زمین نمی مونید :)

حالا شاید چند سال از تولید این پادکست گذشته باشه فریم ورک های دیگه ای رو بورس باشن ولی الان اینا رو بورس ان مخصوصا تو ایران الان react خیلی رو بورسه.

ولی اگه چند سالی از تولید این پادکست میگذره میتونید برید تو وبسایت هایی که آگهی استخدام دارن آگهی هارو ببینید که کدوم مهارت هارو بیشتر میخوان و برید اونا رو یاد بگیرید.

شاید از لهن من فکر کنید که با آخر پادکست رسیدیم.

ولی نه

نرسیدیم

تازه وسطش ایم

چون هر چی که تا اینجا گفتیم مربوط بود به front end وب.

در واقع تعریف فینیش اینه که front end وب به جایی از وبسایت میگن که کاربر میبینه که میشه ظاهر وبسایت.

و تا اینجای کار هم ما همش گفتیم ساختن و طراحی کردن صفحه های وب.

در صورتی که یه وبسایت به جز صفحه هاش و بخش ظاهریش ممکنه بخش های دیگه هم داشته باشه.

دقت کردید؟ گفتم ممکنه. ینی شاید خیلی وبسایت ها هم فرانت اند خالی باشن و با همین چیزایی که گفتیم کارتون راه بیوفته.

ولی بخش دیگه ای که در کنار front end هه بهش میگن backend یا برنامه نویسی سمت سرور که میتونه از طریق یه web api وصل بشه به front end و یسری اطلاعات رو رد و بدل کنه.

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

حالا هم میریم یه موزیک گوش بدیم بیایم در مورد back end صحبت کنیم.


حالا بریم سراغ بحث شیرین back end یا برنامه نویسی سمت سرور

که همانطور که از اسمش تابلوعه برنامه ای که backend developer مینویسه قراره توی سرور اجرا بشه و نه توی مرورگر کاربر و هیچ جای دیگه.

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

حالا این درخواست ها از کجا میان؟

از برنامه هایی که روی دستگاه های کاربر ها دارن اجرا میشن. که یه بخشیشون برنامه هایی هستن که front end developer اونا رو نوشته و روی مرورگر کاربر دارن اجرا میشن.

حالا بریم سراغ مسیر یادگیری back end

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

مثلا

Java , php , c# , Ruby , python , javascript , go lang

زبون های خیلی معمولی هستن برای برنامه نویسی سمت سرور.

که فقط یکیشون رو هم یاد بگیرید کافیه برای این که کارتون راه بیفته.

حالا چرا این زبون ها برای برنامه نویسی back end توصیه میشن؟

چون یک سری فریم ورک های قدرت مندی برای این زبون ها نوشته شده که کار با این زبون هارو برای برنامه نویسی backend خیلی راحت میکنن.

مثلا: php لاراول رو داره و java اسپرینگ رو داره و ruby روبی ان ریلز رو داره و python جنگو رو داره و javascript اکسپرس رو داره

که اینا که گفتم از معروف ترین فریم ورک های توسعه ی برنامه های سمت سرور ان و کلی فریم ورک دیگه هم هستن.

حالا کاری که شما برای backend developer شدن باید انجام بدید اینه که یکی از این فریم ورک هارو به اضافه ی زبونش مسلط بشید تا بتونید برنامه های سمت سرور رو بنویسید و درخواست هارو جواب بدید.

اماااااااا

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

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

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

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

و در نهایت خیلی چیزای دیگه هم مثل شبکه و سیستم عامل هست که دیگه طولانی میشه پادکست مون اگه بخوایم همه رو بگیم

و در کل مسئولیت بیشتری هم به دوش برنامه نویس back end هست چون خیلی مهمه که سرویس بک اند امن و پایدار بتونه به کار خودش ادامه بده که اگه اینطور نباشه اوضاع خیلی بی ریخت میشه.

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

و در نهایت اینم بگیم که یه عده هستن که هر دو بخش front end و back end رو تسلط دارن که بهشون میگن full stack

ینی یه تنه میتونن جفت طرف هارو توسعه بدن

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

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

قاعدتا نیازی به برنامه نویسی back end نداره

یا مثلا شما یه اپلیکیشنی نوشتید یه وبسایت میزنید تو وبسایت از قابلیتاش و اینجور چیزا حرف زدید و یدونه هم لینک دانلود گذاشتید

اونم باز نیازی به بک اند نداره.

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

حالا یه نکته ای هست

وبسایت هایی که نیاز به backend ندارن چجوری درخواست هاشون رو جواب میدن؟

جواب این سوال اینه که یسری برنامه هستن که بهشون میگن web server که مثلا:

Apache , IIS , ngnix , ….

مثال هاشن و این برنامه ها اینطوری ان که شما فقط فایل های برنامه ی front end تون رو که با html , css ,js نوشتید رو میدید به این ها و این ها میان فایل هاتون رو اصطلاحا serve میکنن. یعنی اگه کسی درخواست داد در جواب صفحاتی که طراحی کردید رو میفرستن.

البته که بعضیاشون قابلیت های خفن تری هم دارن.

و در نهایت یسری چیز دیگه هم هستن که بهشون میگن CMS که یعنی Content managment system که با کمک اینا با حداقل دانش برنامه نویسی میتونید یه وبسایت رو بیارید بالا.

این تیپی کار میکنن که مثلا شما wordpress رو نصب میکنید و با توجه به نیاز وب سایتتون یه سری پلاگین هم روش نصب میکنید یه قالب هم یا میخرید یا خودتون مینویسید یا رایگان دانلود میکنید و روش نصب میکنید و وبسایت بتون آماده میشه

که انعطاف خیلی کم تری دارن نسبت به اینکه خودتون بخواید از صفر بنویسید backend , front end وب سایتتون رو ولی خوب یه راه حل خیلی سریع و ارزون میتونن باشن.

خیلی ها هم هستن که با نوشتن پلاگین و قالب برای این CMS ها کسب درامد میکنن


حرف اخر

این قسمت پادکست ما هم تموم شد.

امیدوارم که براتون مفید بوده باشه

تو قسمت های بعدی سعی میکنیم که بحث رشته های دیگه ی برنامه نویسی رو براتون باز کنیم که در نهایت هم آشنا باشید هم اگه میخواید رشته ی خودتون رو پیدا کنید راحت تر این کارو بکنید.

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

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

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

خیلی این معرفی کردن شما برای ما مهمه.


با تشکر

خدافظ.