با بشریت، خواه خودت باشی خواه دیگری، چنان رفتار کن که پایانیست، نه ابزار و وسیله ای برای پایانی دیگر... امانوئل کانت
بک اند (back end) چیست؟ برنامه نویس back end کیست؟
بک اند (back end) چیست؟ برنامه نویس back end کیست؟ گاهی پیش میآید که فیلم یا سریالی حسابی گل میکند و تکیه کلام بازیگرهایش از دهان همه شنیده میشوند. تلویزیون بدون معطلی از بازیگران سریال در یک برنامه زنده دعوت میکند تا در مورد فیلم صحبت کنند. بازیگرها هم همیشه وسط صحبتهایشان از بچههای پشت صحنه و کارگردانی تشکر میکنند و مدام میگویند اگر آنها نبودند مسلما کار بهجایی نمیرسید.
بک اند که در این مقاله از بامداد میخواهیم در موردش مفصل بنویسیم دقیقا همان پشت صحنه صفحههای وبی است که در کسری از ثانیه باز میکنیم، بدون اینکه فکر کنیم دقیقا آن عقبترها چهخبر است. در ادامه در مورد back end و ویژگیهای یک بک اندکار بیشتر توضیح میدهیم.
بک اند چیست؟ همان پستوی پر رمز و راز صفحههای وب
اگر بخواهیم خیلی ساده و سرراست توضیح بدهیم باید بگوییم برنامههای وب دو دوسته هستند:
_ آنهایی که بهطور مستقیم با صفحههای سایت ارتباط دارند و کاربر میتواند کدهایشان را در سیستم ببیند.
_ و آن دستهای که دور از چشم کاربران هستند و اگر تمام سیستم را هم زیرورو کنند چیزی پیدا نخواهند کرد.
به برنامههای دسته دوم و کدهایی که به این ترتیب و برای پردازش صفحههای وب نوشته میشوند back end میگویند. بک اندها بهطور مستقیم با سیستم در ارتباط نیستند و کدهایشان را از طریق یک سرور به مرورگر کاربران ارسال میکنند. درواقع این وسط یک سرور وجود دارد که برنامه نویسهای بک اند، کدهایشان را از آن طریق روی سیستم کاربر میفرستند.
در ادامه میخواهیم در مورد تفاوت back end با front end بنویسیم تا شما از این طریق بهتر بتوانید هر دو مفهوم را درک و هضم کنید.
پیشنهاد مقاله: زبان برنامه نویسی سی شارپ (C-sharp)| مزایا و کاربردها
تفاوت back end و front end چیست؟
اول مقاله را که یادتان است؟ همانجا که بازیگرهای بامعرفت با فروتنی از بچههای پشت صحنه تشکر کردند؟ بازیگرها در اینطور مصاحبهها میخواهند یک نکتهی مهم را به تماشاگران یادآوری کنند. میخواهند بگویند فیلمی که دیدید و حسابی از دیدنش لذت بردید یک کارگردان، فیلمبردار، صدابردار و چند ده نفر آدم کاربلد دیگر هم آن پشت داشته است که این بزم را برای شما آماده کردهاند.
قصه سایتها و صفحههای وب هم دقیقا چنین چیزی است. شما یک ظاهر با کدهای جاوا اسکریپت، HTML ،CSS یا Ajax میبینید که این فقط روی سکه یا همان front end است. بهجز اینها کدهای دیگری هم در کار هستند و برنامههای دیگری هم نوشته شدهاند که شما نمیبینید ولی مسلما در حال اجرا هستند و روی تصویری که جلوی چشمتان است اثر مهمی دارند ولی خب بهوسیله یک سرور بهدست شما رسیدهاند و قابل دیدن نیستند. اینها همان بچههای پشت صحنه یا بک اند(back end) هستند. خلاصه اینکه:
_ هر چیزی که کاربر در مرورگرش میبیند front end و کدهایی که نمیبیند و بهشان دسترسی ندارد back end هستند.
_ عملکردهایی مثل بهینهسازی برای موتورهای جستجو، سازگار کردن اندازه صفحه با شرایط مختلف و... توسط فرانت اند انجام میشود.
_ کاربر میتواند کدهای فرانت اند را در سیستمش ببیند ولی به کدهای بک اند دسترسی ندارد و دراصل ترفندهای یک برنامه نویس بک اند از نظر کاربرها دور و غیرقابل دسترس است.
_ کاربر کدهای بک اند را نمیبیند و فقط اثراتشان را حس میکند. ذات بک اند پنهان کاری و پردازش است ولی فرانت اند رو بازی می کند.
_ زبانهای برنامه نویسی بک اند و فرانت اند با هم بهطور کلی متفاوت هستند.
_ back end دادهها را مرتب و جمعبندی میکند و برای front end میفرستد تا برای کاربرها نمایش داده شوند.
درادامه قصد داریم در مورد دو اصطلاح server side بهمعنی سمت سرور و client side بهمعنی سمت مشتری بیشتر توضیح بدهیم و در واقع با یک تیر دو نشان بزنیم. هم معنی این دو اصطلاح را باز کنیم و هم مفاهیم بک اند و فرانت اند را بهتر و بیشتر برایتان جا بیندازیم.
Server side یعنی چه؟ یعنی برنامههایی که طرف سرور را میگیرند
روزی که داشتند تکلیف زبانهای برنامه نویسی را مشخص میکردند، هرج و مرج بالا گرفته بود و هرکس چیزی میگفت و نظری میداد. تا اینکه بالاخره یکی از سیستمها وسط ماجرا همه را ساکت کرد و گفت دست نگه دارید؛ باید یارکشی کنیم. آن دسته از برنامههایی که با توجه به ویژگیهایشان باید توسط مرورگر کاربر پردازش شوند بروند یکطرف و آن عدهای که برای پردازش به یک سرور احتیاج دارند و با پنهانکاری میخواهند کدهایشان را در اختیار یک سرور مطمئن بگذارند، بروند طرف دیگر.
این ماجرا باعث شد که زبانهای برنامه نویسی و کدهایشان، یکسری طرف کاربر یا مشتری را گرفتند و یکسری طرف سرورها را. از آن به بعد گروه اول به زبانهای client side یا سمت مشتری و دسته دوم به زبانهای server side یا سمت سرور معروف شدند.
پیشنهاد مقاله: بهترین زبان برنامه نویسی: مقایسه کامل سی شارپ و php
ویژگیهای برجسته server side
_ زبانهای برنامه نویسی سمت سرور را مرورگرها درک نمیکنند و حتی در دسترس کاربرها نیز نیستند.
_ مرورگر نقشی در خواندن یا دریافت کدها ندارد. بلکه کدهایی را که از سمت سرور اصلی پردازش میشوند، نشان میدهند.
_ هرجا به اطلاعات پویا احتیاج باشد باید از زبانهای سمت سرور استفاده شود.
_ بعضی از زبانهای برنامه نویسی سمت سرور عبارتند از: پایتون، PHP، C# و...
Client side به چه معناست؟ یک مشتری که شانههای سرور را سبک میکند
هرجا پای تعامل با کاربر درمیان است از client side استفاده میشود. اسکریپتهای کلاینت ساید توسط خود گیرنده یا همان مرورگر سیستم شما پردازش میشوند و درواقع کار و ربطی به سرورهای پشتیبانی کننده ندارند. حتی میتوان گفت client side باری از روی شانههای سرورها برمیدارد و بار سرورها را تا حد زیادی کاهش میدهد. این مرورگر شما است که کدها را میخواند و پردازش میکند.
زبانهایی اسکریپت سمت مشتری یا client side
_زبان HTML: یک برنامه کلیدی و بنیادی که دراصل اسکلت صفحههای وب بهشمار میآید.
_ زبان CSS: اگر بخواهیم خیلی مختصر و مفید بگوییم، دکور و نمای صفحههای وب کار دستان توانای SCC است.
_ جاوا اسکریپت
_ زبان Ajax : یک زبان کلاینت ساید که برخی پردازشها را برعهده دارد. حتما فرمهای مختلف ثبتنام را در سایتهای مختلف دیدهاید؟ بخشهایی از این فرمها را بااستفاده از ajax مینویسند.
یک back end کار چه ویژگیهایی باید داشته باشد
اگر بخواهید وارد دنیای برنامه نویسی شوید و تصمیم گرفتهاید به یک back end کار ماهر تبدیل شوید، بهتر است ویژگیهای زیر را در خودتان تقویت کنید:
- یک عدد ذهن منطقی و تحلیلگر مورد نیاز است: کسی که قرار است یک برنامه نویس بک اند شود قبل از هرچیز باید بداند که با چالشها و مسائل متعددی روبهرو خواهد شد. این مسائل برای حل شدن احتیاج به تفکر منطقی و تجزیه و تحلیلهای مناسب دارند. البته خبر خوش اینکه این مهارت را درطول زمان و با تمرین بهدست خواهید آورد.
- چطور سوال خوب بپرسیم تا به جواب درست و خوب برسیم: واقعیت این است که وقتی کسی برای اولین بار وارد حوزهای میشود هرچقدر هم که سواد تئوری داشته باشد، احتیاج به تجربه عملی و رفع اشکال دارد. حوزهی برنامه نویسی هم از این قاعده پیروی میکند. بنابراین باید هنگام بروز مشکل یا سوال، باید بتوانید از همکاران یا متخصصهای حوزه برنامه نویسی سوال مناسب بپرسید تا به جواب مورد نظرتان برسید.
- خیلی از back end کارها بهصورت دورکار فعالیت میکنند. بنابراین قبل از اینکه یک بکاند کار ماهر شوید باید این توانایی را داشته باشید که برای بهدست آوردن موقعیتهای کاری مناسب، وارد مذاکره شوید.
پیشنهاد مقاله: با پایتون به یک دوندهی هزارتوی برنامه نویسی تبدیل شوید
مهارت های یک back end کار چیست؟
?تمام کسانی که در پشت صحنه یک فیلم کار میکنند مهارت خاص خودشان را دارند. مثلا صدابردار یا فیلمبردار باید طبق اصول خاصی کار کنند تا به نتیجهای که قرار است برسند. یک back end کار هم که در پشت صحنه صفحههای وب کار میکند باید برای درست پیش رفتن اوضاع، مهارتها و تسلطهای خاصی داشته باشد:
- تسلط به یک زبان برنامه نویسی سمت سرور: همانطور که در قسمتهای قبل توضیح دادیم کار برنامههای back end پشت صحنه انجام میشود و بهوسیله یک سرور پردازش میشود و سپس برای مرورگر کاربر فرستاده میشوند. بنابراین کسانی که قرار است بهعنوان برنامه نویس back end کار کنند باید با یکی از زبانهای برنامه نویسی سمت سرور آشنا باشند. زبانهایی مثل پایتون، Ruby، سی شارپ و...
- پایگاه داده یا دیتا بیس: زبان برنامه نویسی شما وقتی معنی پیدا میکند که به کمکش بتوانید به یک دیتابیس متصل شوید و اطلاعات را روی آن پایگاه ذخیره کنید.
- مباحث تخصصی زبان برنامه نویسیتان را بدانید: شما قرار است با یک زبان برنامه نویسی سمت سرور آشنا باشید. البته که یک آشنایی معمولی و متوسط کارتان را راه میاندازد ولی اگر با مباحث تخصصی زبان برنامه نویسی مورد نظرتان آشنا شوید میتوانید:
- کدهای کاراتری بنویسید.
- کدهایی که مینویسید امنیت بیشتری دارند.
- کدهایتان راحتتر و سریعتر اجرا میشوند.
- میتوانید برنامههای شیءگرا یا objective oriented بنویسید که در کارآیی همانند ندارند.
پیش نیازهای لازم برای back end کار شدن چیست؟
برای اینکه بتوانید کدهای back end بنویسید به سه چیز احتیاج دارید:
_ کدهایی که مینویسید. در قسمتهای قبل کامل توضیح دادیم که باید بتوانید با استفاده از یک زبان برنامه نویسی سمت سرور کدهای مناسب و کارا بنویسید.
_ یک سرور: شما باید بتوانید به سروری متصل شوید که کدهایتان را بگیرد و پردازش کند.
_ یک دیتابیس یا پایگاه داده: با نوشتن برنامههای خاصی باید بتوانید به یک دیتابیس متصل شوید و اطلاعاتتان را رویش ذخیره کنید.
زبان های برنامه نویسی سمت سرور یا back end کدامند؟
تا اینجا مدام از زبانهای برنامه نویسی سمت سرور صحبت کردیم بدون اینکه وارد جزئیاتشان شویم. درادامه بهتر است کمی بیشتر در مورد زبانهای برنامه نویسی back end توضیح دهیم تا شما بیشتر و بهتر با آنها آشنا شوید.
زبان برنامهنویسی C#:
یک زبان برنامه نویسی ساده، مدرن، جزءگرا، شیءگرا، منطقی و کاربردی که توسط مایکروسافت در سال 2000 ساخته شد. سی شارپ برای ایجاد و طراحی سایت از تکنولوژی ASP.Net کمک میگیرد. سی شارپ این روزها در دنیای برنامه نویسی حرفهای زیادی برای گفتن دارد و البته بازار کار این زبان در ایران هم حسابی داغ و پررونق است. سایتهای بانک ملی، ملت، تبیان، دیجی کالا، بلاگفا و... در ایران با ASP.Net تحت سی شارپ نوشته شدهاند.
زبان برنامه نویسی PHP:
یک زبان برنامه نویسی رایگان و متن باز با یک جامعه آماری بزرگ و البته پشتیبانی خوب. PHP سرعت اجرایی بالایی دارد و در طول چند سال گذشته، بارها کدنویسیاش را بهینه کرده است. سایتهایی که با PHP نوشته شدهاند عبارتند از فیس بوک، یاهو، وردپرس، جوملا. در ایران هم سایتهای برترینها، بامیلو، سلام دانلود و... با زبان PHP نوشته شدهاند.
زبان برنامه نویسیPython:
یک زبان برنامه نویسی ساده، خوانا است که جزء زبانهای چندمنظوره و شیئگرا بهحساب میآید. کدهایی که با استفاده از این زبان نوشته میشوند، بهراحتی توسط برنامه نویسان قابل خواندن و تجزیه تحلیل هستند و همین موضوع باعث شده که این روزها خیلی از برنامه نویسها جذب این زبان ساده برنامه نویسی شوند.
زبان برنامه نویسیPerl:
یک زبان برنامه نویسی که از مهمترین ویژگیاش سرگرمکنندگی است. پرل یک زبان برنامه نویسی ترکیبی و چند منظوره است که در عین حال سریع و قابل اعتماد است. این زبان برنامه نویسی در حوزههای متنوع و گستردهای بهکار برده میشود. از حوزههای نظامی و هوش مصنوعی گرفته تا طراحی صنعتی و... .
زبان برنامه نویسی Ruby:
ویژگیهای بارز روبی متن باز بودن، شیئ گرایی و البته سادگیاش است. با استفاده از این زبان برنامه نویسی منعطف، میتوان برنامههایی سریع و رایگان نوشت و درعین حال از خاصیتهای بینظیر شیئگرایی هم استفاده کرد.
زبان برنامه نویسی Hack:
هک بهنوعی همکار php به حساب میآید و اولین بار توسط فیس بوک معرفی و استفاده شد. بدنهی اصلی Hack بسیار شبیه PHP است. درست است که این برنامه برای کارآیی بیشتر فیس بوک نوشته شده است ولی این روزها به برنامه نویسان کمک میکند تا برنامههای بدون باگ و با کارآیی بالای زیادی بنویسند.
پیشنهاد مقاله: بوت کمپ آموزش برنامه نویسی
یادگیری بک اند را از کجا شروع کنیم؟
?
کارتونهای زمان بچگی را که حتما یادتان است؟ خیلی وقتها پیش میآمد قهرمان یک کارتون با گروهی از دوستانشان تصمیم میگرفتند به دنبال پیدا کردن یک گنج بروند. قبل از هر کاری آنها یک نقشه گنج میکشیدند یا از یک آدم باتجربه یک نقشه قدیمی میگرفتند و کندوکاو و جستجویشان را با تمام قدرت شروع میکردند.
شما هم اگر به برنامه نویسی آن هم از نوع back end علاقمند هستید و میخواهید کارتان را باجدیت شروع کنید، چیزی از آن گروههای جستجو کننده گنج کم ندارید. باید یک نقشه راه طراحی کنید و قدمبهقدم مطابق اصول پیش بروید.
نقطهی شروع کار شما یادگیری یک زبان برنامه نویسی سمت سرور است. وقتی تصمیم گرفتهاید که یک برنامه نویس بک اند شوید یعنی قرار است روی هسته اصلی سایتها کار کنید. شما بعد از یادگیری باید بتوانید کدهای کاربردی و سریع بنویسید. ازطرفی باید بتوانید مشکلاتی که در کدنویسیهای مختلف وجود دارد را پیدا و رفع کنید. البته تمام اینها احتیاج به آموزش و درعین حال تجربه دارد. بنابراین باید تا میتوانید از همان ابتدا وقت و انرژی بگذارید.
در مرحله بعدی باید با دیتابیسهای مختلف آشنا شوید. پایگاههای داده یا دیتابیسها به دودسته رابطهای و غیر رابطهای تقسیم میشوند که البته هر کدامشان انواع متفاوتی دارند. شما در مرحله یادگیری back end باید با انواع دیتابیسها هم آشنا شوید.
در مسیر یادگیری و پس از آشنایی با مقدمات کار، میتوانید بهمرور زمان پروژههای دورکاری مختلف و متناسب با سطح اطلاعاتتان قبول کنید تا هم تجربه بهدست بیاورید و هم کمکم یک رزومه درست و درمان برای خودتان دست و پا کنید.
جمعبندی
هروقت به رستوران میروید، یک دکور زیبا و چشمنواز میبینید و یک غذای خوشمزه میخورید حتما به این نکته توجه میکنید که مدیریت، آشپز و گارسونهای رستوران در آشپزخانه و حاشیه ماجرا درحال تلاش و کار هستند تا یک روز یا شب بهیاد ماندنی را برای شما بسازند. Back end کارها هم در دنیای وب دقیقا حال و اوضاعی شبیه آشپزها، کارگردانها و... دارند.
یک برنامه نویس back end همیشه درحال کدنویسی و برای سایتها و شبکههای اینترنتی و... است و هرلحظه حواسش به ضعفها و اشکالهایی که در سایت موردنظرش ممکن است رخ بدهد، است. اگر back end کارها نبودند قطعا سایتها این سرعت و کارآیی که امروز دارند را نداشتند و ما در عرض چند ثانیه نمیتوانستیم چندین و چند سایت را باز کنیم، خبر بخوانیم، ثبتنامهای مختلف انجام بدهیم و... . پس باید گفت دم همهی برنامه نویسهای کاربلد و بیادعا گرم!!!
مطلبی دیگر از این انتشارات
برنامه نویسی چیست؟
مطلبی دیگر از این انتشارات
چلنج باحال از سایت CodeWars شماره 1
مطلبی دیگر از این انتشارات
php Code Refactoring Series - part4