خانه توسعهدهنده سورس کد چیست و چه اهمیتی دارد؟ – همهچیز راجع به Source Code در برنامهنویسی
سورس کد چیست و چه اهمیتی دارد؟ – همهچیز راجع به Source Code در برنامهنویسی
یکی از مهمترین مفاهیم در دنیای توسعه نرمافزار، «سورس کد» است. سورس کد را میتوان منابع تمام کدهای یک نرمافزار توصیف کرد که اجزای گوناگون را در خود جای داده، از جمله دستورالعملهای نحوه عملکرد نرمافزار. با این اوصاف، اگر به آموزش برنامه نویسی علاقه دارید، درک تمام ابعاد مربوط به سورس کد ضروری است. در ادامه با کوئرا بلاگ همراه باشید تا بگوییم سورس کد چیست و مهمترین دانستنیهای پیرامون آن را توضیح دهیم.
فهرست مطالب
Toggleسورس کد چیست ؟
سورس کد به مجموعهای از دستورالعملهای نوشتهشده از سوی برنامهنویسان گفته میشود. این دستورالعملها، تمام گامها و همین طور منطقی که برنامههای کامپیوتری باید برای دستیابی به وظایف گوناگون در پیش بگیرند را در خود جای دادهاند. البته پیش از اینکه کامپیوتر قادر به پیروی از این دستورها باشد، معمولا باید سورس کد را از طریق یک سیستم «کامپایلر» (Compiler) و یا «مفسر» (Interpreter) تبدیل به «کد ماشین» (Machine Code) کنیم. کد ماشین به کد قابل فهم برای پردازندههای کامپیوتر گفته میشود.
برای مثال هنگامی که مشغول با کار اپلیکیشنهای گوناگون هستید – چه مرورگر کامپیوتر، چه بازی محبوبتان و چه اپلیکیشنی روی موبایل – این سورس کد است که در پشت صحنه به درخواستها پاسخ میدهد و نرمافزار را به انجام وظایف گوناگون وا میدارد. اگر بخواهیم جوری دیگر بگوییم، سورس کد مثل فونداسیون تمام نرمافزارها است و نحوه کارکرد آنها را دیکته میکند.
دلایل اهمیت سورس کد چیست ؟
در بخش قبلی، سورس کد را به فونداسیون تمام نرمافزارها و اپلیکیشنها تشبیه کردیم. با چنین نقش مهمی، طبیعی است که سورس کد به دلایل متعدد، از مهمترین اجزای هر برنامهای به حساب میآید. در ادامه تنها برخی از این دلایل را بررسی کردهایم:
- شفافیت و اعتماد: گاهی از اوقات، سورس کد برنامهها برای بررسی در اختیار عموم قرار میگیرد. در چنین اوقاتی، کاربران و دیگر توسعهدهندگان میتوانند از نحوه کار نرمافزار سر در بیاورند. این شفافیت منجر به شکلگیری اعتماد در میان مخاطبان و مشتریان میشود، خصوصا اوقاتی که تامین امنیت و محافظت از حریم شخصی کاربران ضروری است.
- شخصیسازی گسترده: با دسترسی به سورس کد هر نرمافزاری، میتوان تغییرات متعدد در آن به وجود آورد. کسبوکارها معمولا نیاز به بهبود و تغییر دادن محصولات نرمافزاری خود در گذر زمان دارند و با دسترسی به سورس کد، تمام این فرایند آسانتر میشود.
- نوآوری و همکاری: پروژههای متنباز یا «اوپن سورس» (Open Source) – به معنی پروژههایی که سورس کد آنها به رایگان در اختیار همه قرار میگیرد – معمولا برنامهنویسان و کاربران را به مشارکت ترغیب میکنند. کم نیستند پروژههایی که با همکاری توسعهدهندگانی از سراسر جهان پیش میروند و نهتنها نوآورانه ظاهر میشوند، بلکه برای سالیان سال بهبود مییابند.
- ایرادیابی و برطرفسازی ایرادات: زمانی که افراد مختلف به سورس کدی یکسان دسترسی دارند، پیدا کردن اشتباهات و آسیبپذیریها آسان میشوند. پروژههایی که با دسترسی تمام اعضای تیم یا حتی عموم مردم به سورس کد پیش میروند معمولا نتایجی باثباتتر و ایمنتر به همراه میآورند.
- یادگیری و بهبود مهارت: بررسی سورس کد برنامههای گوناگون، یکی از بهترین روشهای یادگیری برای برنامهنویسان تازهکار است. با تحلیل کدهایی که پیشتر نوشته شدهاند، درکی بهتر از مفاهیم برنامه نویسی به دست میآورید و مهارتهای کدنویسی خود را بهبود میبخشید.
در غاییترین حالت، سورس کد مثل ستون فقرات جهان دیجیتال است. سورس کد فقط راجع به نوشتن مجموعهای از کدها نیست، بلکه راجع به نوآوری، ساخت و بهبود مداوم ابزارهای دیجیتالی است که همه ما به صورت روزمره از آنها استفاده میکنید.
چه افرادی از سورس کد استفاده میکنند؟
قلمروی کدنویسی آنقدر گسترده است که نمیتوان گفت صرفا گروه مشخصی از افراد به سراغ آن میروند. افراد گوناگون در نقشهای مختلف ممکن است چه به صورت مستقیم و چه غیرمستقیم با سورس کد سروکار داشته باشند. در ادامه، صرفا برخی از مشاغلی که معمولا تعامل روزمره با سورس کد دارند را بررسی میکنیم:
برنامهنویسان و توسعهدهندگان نرمافزار | برنامهنویسان و توسعهدهندگان نرمافزار هنگام ساخت هر اپلیکیشنی – چه برنامههای کامپیوتری، چه بازیهای موبایل و چه پلتفرمهای تحت وب – سورس کد را میسازند، دستخوش تغییر میکنند و نگهداری از آن را برعهده میگیرند. |
توسعهدهندگان و طراحان وب | این افراد، سایتهایی را توسعه میدهند که همهی ما به صورت روزانه به آنها سر میزنیم. اگرچه طراحان معمولا روی عناصر ظاهری و تجربه کاربری تمرکز دارند، توسعهدهندگان با زبانهایی مانند HTML ،CSS و جاوا اسکریپت، طراحیها را در سورس کد پیاده میکنند. |
مدیران سیستم | اگرچه مدیران سیستم (System Administrator) لزوما کدنویسی نمیکنند، اما معمولا با اسکریپتها و فایلهای پیکربندی (نوعی از سورس کد) تعامل دارند و به نگهداری از سیستمهای کامپیوتری و شبکهها مشغول میشوند. |
مدیران دیتابیس | مدیر دیتابیس (Database Administrator) مدیریت دیتابیس و نگهداری از آن را برعهده دارد. چنین مدیری معمولا از زبان SQL و اسکریپتها (که نوعی سورس کد به حساب میآیند) برای بهرزورسانی و مدیریت داده کمک میگیرد. |
متخصصان امنیت | هکرهای اخلاقمدار (کلاهسفید) و متخصصان امنیت سایبری میتوانند با تحلیل سورس کد نرمافزارها، آسیبپذیریهای بالقوه را بیابند و اجازه سوء استفاده را به مجرمان ندهند. با شناسایی این نقاط ضعف میتوان نرمافزاری امنتر ساخت. |
دانشمندان داده | دانشمندان داده به کمک زبانهایی مانند پایتون و R، اسکریپتهای مخصوص تحلیل داده، یادگیری ماشین و دیگر وظایف دادهمحور را مینویسند. |
مشارکتکنندگان در پروژههای متنباز | بسیاری از توسعهدهندگان از اینکه در اوقات فراغت خود روی پروژههای متنباز کار کنند لذت میبرند. برای مثال میتوان قابلیتهای اضافه را به سورس کد افزود، ایرادات را از بین برد و یا خیلی ساده، کیفیت کلی نرمافزار را بالا برد. |
دانشآموزان و دانشجویان | بسیاری از افرادی که تصمیم به ورود به جهان برنامهنویسی و تکنولوژی میگیرند، برای شروع به بررسی سورس کدها و آزمونوخطا با آنها مشغول میشوند. به این ترتیب، درکی عمیقتر از قواعد بنیادین توسعه نرمافزار به دست میآید. |
کارشناسان کنترل کیفیت | اگرچه کارشناسان کنترل کیفیت عمدتا روی شناسایی باگها و ایرادات نرمافزاری تمرکز دارند، با درک سورس کد میتوانند بهرهوری خود را بالا ببرند و ارتباطی سازنده با اعضای تیم توسعه داشته باشند. |
تحلیلگران کسبوکار و مدیران محصول | با اینکه تحلیلگران کسبوکار و مدیران محصول هر روز کدنویسی نمیکنند، با درک سورس کد میتوانند میان تیمهای فنی و سهامداران پل بزنند. از سوی دیگر، با بهدست آوردن درکی بنیادین از کدنویسی، توقعات واقعگرایانه شکل میگیرد و محدودیتها و فرصتهای پروژه شناسایی میشوند. |
انواع Source Code چیست ؟
اگرچه عموم مردم به سورس کد به چشم مفهومی واحد و نامتغیر نگاه میکنند، حقیقت این است که بسته به کاربردها و مراحلی که در فرایند توسعه نرمافزار پشت سر میگذارید، با اشکال مختلفی از سورس کد برنامه نویسی سروکار خواهید داشت.
سلسله مراتب پیادهسازی (Implementation Hierarchy)
سلسله مراتب پیادهسازی به این معنی است که کد نرمافزار از چه ساختاری پیروی میکند. این ساختار میتواند در طیفی بزرگ قرار بگیرد که از کاربردهای سطح بالا (و دسترسپذیر برای کاربر عادی) تا عملیاتهای سطح پایین (و مناسب برای پردازنده) متغیر خواهد بود. با درک سلسله مراتب پیادهسازی وظایف، درکی واضحتر از انواع سورس کد در پروژهها به دست میآورید:
کد سطح بالا (High-Level Code) | چنین کدی با زبانهای برنامهنویسی سطح بالا مانند پایتون، جاوا یا سی پلاس پلاس نوشته میشود. این زبانها شباهت زیادی به زبانهای انسانی دارند و از ساختار دستورالعملهای ماشین پیروی نمیکنند. زبانهای سطح بالا روی کاربردپذیری محض تمرکز دارند و برنامهنویس را وادار به مدیریت جزییات گوناگون در عملیاتهای سختافزاری نمیکنند. |
کد میانافزار (Middleware Code) | میانافزار نقش یک پل را میان اپلیکیشنهای سطح بالا و کارکردهای سطح پایین در سیستم عامل یا دیتابیسهای گوناگون ایفا میکند. برای مثال میانافزار میتواند حاوی کدهای ضروری برای پروتکلهای ارتباطی، سریالسازی داده و دیگر وظایف یکپارچهسازی باشد. |
کد سطح پایین (Low-Level Code) | کدهای سطح پایین به زبانهایی مانند اسمبلی و یا حتی مستقیما به شکل کد ماشین نوشته میشوند. این کد به سختافزار نزدیکتر است و برای وظایفی استفاده میشود که نیاز به کنترل کردن مستقیم عملیاتهای دستگاه دارند. برای مثال میشود به فرمورها (Firmwares) و درایورهای (Drivers) گوناگون اشاره کرد. |
کد اسکریپتینگ (Scripting Code) | زبانهای اسکریپتنویسی – مانند جاوا اسکریپت – معمولا در اتوماسیون، دستکاری سریع داده و یا بهبود رابطهای کاربری به کمک میآیند. این زبانها معمولا با کدهای سطح بالاتر ادغام میشوند تا کارکردهایی هرچه بیشتر به ارمغان آورند. |
پیکربندی و فراداده | اگرچه فایلهای پیکربندی (Configuration Files)، توضیحات XML و دیگر اشکال فراداده (Metadata) لزوما «کد» به حساب نمیآیند، اما نقشی مهم در تعیین رفتارهای نرمافزار ایفا میکنند و به اندازه سورس کد اهمیت دارند. |
انواع ترجمه (Translation)
«ترجمه» به فرایند تبدیل یک نوع از سورس کد به نوعی دیگر گفته میشود و هدف از این کار، تطبیق دادن سورس کد با پیشنیازهای نرمافزاری و سختافزاری گوناگونی است که اجرای اپلیکیشن را امکانپذیر میکنند. بسته به اینکه برنامه را به چه زبانی نوشتهایم و برای چه پلتفرمی، با مکانیزمهای ترجمه گوناگونی سروکار خواهیم داشت:
- کامپایل (Compilation): کامپایل به فرایند ترجمه کدهای سطح بالا به کد ماشین گفته میشود. خروجی این فرایند هم یک فایل قابل اجرا و باینری است. ابزارهای کامپایلر گوناگون مانند GCC (برای C و ++C) و Javac (برای جاوا) به این کار رسیدگی میکنند.
- تفسیر (Interpretation): به جای اینکه کد ابتدا به کد ماشین تبدیل شود، ابزارهای مفسر میتوانند سورس کد را خطبهخط بخوانند و به اجرا درآورند. زبانهایی مانند پایتون، روبی و پیاچپی از مفسر بهره میگیرند.
- ترنسپایل (Transpilation): در فرایند ترنسپایل، سورس کد یک زبان سطح بالا، به سورس کد زبانی دیگر تبدیل میشود. از مثالهای برجسته این موضوع، کدهای زبان TypeScript است که به جاوا اسکریپت ترنسپایل میشوند.
- کامپایل درجا (Just-In-Time Compilation | JIT): این فرایند را میتوان ترکیبی از کامپایل و تفسیر به حساب آورد. زبانهایی مانند جاوا و C# از کامپایلرهای JIT کمک میگیرند. در کامپایل JIT، کد سطح بالا ابتدا به یک فرم میانی (مانند بایتکد جاوا) ترجمه میشود و بعد به شکل کد ماشین درمیآید.
- اسمبلی (Assembly): زبانهای خانواده اسمبلی مثل نمایهای بصری از کد ماشین هستند. ابزارهای اسمبلر (Assembler) کدهای این زبانها را به دستورالعملهای کد ماشین تبدیل میکنند.
با درک اینکه انواع مختلف سورس کد چیست و سلسلهمراتب و مکانیزمهای ترجمه چطور کار میکنند، درکی واضح از ابعاد ظریف توسعه نرمافزار و ابزارهای ضروری برای وظایف گوناگون به دست میآورید.
کاربردهای رایج سورس کد چیست ؟
تا به اینجای کار به طور یقین از اهمیت سورس کد باخبر شدهاید، خصوصا با درنظرگیری اینکه تمام اپلیکیشنهای روی موبایل، تمام وبسایتهایی که به آنها سر میزنیم و حتی الگوریتمهایی که فرایندهای پیچیده را آسان میکنند از سورس کد بهرهمند شدهاند. در ادامه، میبینیم برخی کاربردهای رایج سورس کد چیست و در چه وظایفی به کمکمان میآید.
بنا کردن فونداسیون وبسایتها
همه ما به اشکال گوناگون و به دفعات، با سایتهای موجود در سطح وب تعامل میکنیم. تمام سایتها – از بلاگهای شخصی گرفته تا فروشگاههای بینالمللی – بر سورس کد اتکا دارند:
- HTML (یا HyperText Markup Language): در قلب تمام سایتها HTML را مییابید که به محتوا سامان میدهد. با زبان HTML، نحوه چیدمان متون، تصاویر و دیگر عناصر بصری تعیین میشود.
- CSS (یا Cascading Style Sheets): درحالی که HTML ساختار سایت را تعیین میکند، CSS به ظاهر آن میرسد. با زبان CSS، توسعهدهندگان و طراحان میتوانند جزییات بصری – مانند رنگها و فونتها – را دیکته کنند و به سراغ طراحی واکنشگرا (Responsive Design) برای سازگاری سایت با انواع دستگاهها و نمایشگرها بروند.
- جاوا اسکریپت: این زبان اسکریپتنویسی به وبسایتها جان میدهد و قابلیتهای تعاملی را به آن اضافه میکند. از انیمیشنهای ساده گرفته تا قابلیتهای پیچیدهای مانند تایید فرم (Form Validation) و بارگذاری ناهمگام داده (Asynchronous Data Loading) با جاوا اسکریپت پیادهسازی میشوند.
- کد بکاند: درحالی که زبانهای بالا برای فرانتاند (بخشی از سایت که مقابل چشم کاربر قرار میگیرد) مناسب تلقی میشوند، بخش اعظمی از سورس در پشت صحنه به اجرا درمیآید. زبانهایی مانند PHP، پایتون، #C، روبی و جاوا در توسعه منطق سمت سرور، مدیریت دیتابیسها و حصول اطمینان از کارکرد بینقص سایت به کار میآیند.
افزودن قابلیت به برنامهها
تمام نرمافزارها و اپلیکیشنها در غاییترین حالت مجموعهای از قابلیتهای گوناگون هستند که کنار یکدیگر قرار گرفتهاند. برای پیادهسازی این قابلیتها و کارکردها از سورس کد کمک میگیریم.
- قابلیتهای بنیادین: هر نرمافزاری چند قابلیت بنیادین دارد. برای مثال نرمافزارهای پردازش کلمات قابلیتهای بنیادین متعدد مثل ویرایش متن، قالببندی (فرمتینگ) و ذخیرهسازی فایلهای متنی ارائه میکنند. در بازیهای ویدیویی هم مکانیکهای گیمپلی، رندر عناصر گرافیکی و سیستم شمارش امتیاز در جمع قابلیتهای بنیادین قرار میگیرند.
- قابلیتهای یکپارچهسازی و پلاگینها: بسیاری از اپلیکیشن از انواع افزونهها و پلاگینها پشتیبانی میکنند. این یعنی توسعهدهندگان شخص ثالث میتوانند وارد میدان شوند و قابلیتهای هرچه بیشتر به آن اپلیکیشنها اضافه کنند. برای مثال نرمافزارهای طراحی گرافیکی میتوانند پلاگینهایی برای استفاده از فیلترها یا ابزارهای جدید داشته باشند.
- رابطهای برنامهنویسی اپلیکیشن (Application Programming Interface | API): از سورس کد میشود در توسعه API نیز کمک گرفت که رابطی برای برقراری ارتباط و اشتراکگذاری داده با برنامه اصلی به حساب میآید. برای مثال اپلیکیشنهای آبوهوا میتوانند با استفاده از یک API، اطلاعات آبوهوایی را به صورت در لحظه از سروری دیگر دریافت کنند.
توسعه الگوریتم
پیشتر سورس کد را مجموعهای از دستورالعملها توصیف کردیم که به کامپیوتر میگوید چطور مشکلات مختلف را رفع و به وظایف گوناگون رسیدگی کند. به صورت مشابه، سورس کد وسیلهای برای تعریف کردن، بهبود دادن و اشتراکگذاری الگوریتمها نیز به حساب میآید:
- حل مساله: در علوم کامپیوتر و ریاضیات، از الگوریتمها برای رسیدگی به چالشهایی مانند سامان دادن به داده، پیدا کردن کوتاهترین مسیر در شبکه و یا فشردهسازی فایلها استفاده میشود.
- مشارکت متنباز: بسیاری از الگوریتمها به صورت رایگان در پلتفرمهایی مانند گیتهاب منتشر شدهاند و توسعهدهندگان سراسر جهان میتوانند به کمک یکدیگر آنها را بهبود دهند و یا الگوریتمهایی سازگار با اهداف گوناگون بسازند.
- پژوهش علمی: محققان معمولا از سورس کد برای پیادهسازی و تست الگوریتمهای جدید استفاده میکنند. بعد از تایید عملکرد، این الگوریتمها در ژورنالهای علمی منتشر میشوند و سورس کد آنها نیز برای بررسی و آزمونوخطای هرچه بیشتر در اختیار همتایان قرار میگیرد.
بهطور خلاصه، سورس کد مثل خونی میماند که در رگهای قلمرو دیجیتال جاری است. سورس کد به پلتفرمهایی که میشناسیم و با آنها تعامل داریم شکل میدهد و قابلیتهای گوناگون را به نرمافزارهای محبوبمان میآورد.
مثالی از سورس کد
اگرچه سورس کد میتواند شکلی بسیار پیچیده به خود بگیرد و به زبانهای گوناگون نوشته شود، بیایید به عنوان مثال به سراغ یک کد آبجکت ساده برویم. در ادامه، برنامهای ساده به زبان پایتون داریم که نام کاربر را میپرسد و به او خوشآمد میگوید:
# This is a simple Python program to greet the user
def greet(name):
"""Return a greeting message."""
return f"Hello, {name}! Welcome to the world of programming."
def main():
user_name = input("Please enter your name: ") # Get user's name
message = greet(user_name) # Get the greeting message
print(message) # Display the greeting
if _name_ == "__main__":
main() # Run the main function
اجزای تشکیلدهنده سورس کد چیست ؟
در ادامه، برخی اجزای تشکیلدهنده سورس کد را مطابق با کد پایتون بالا بررسی میکنیم:
- کامنتها (Comments): هر متنی که بعد از علامت # میآید، یک کامنت است. از کامنتها برای توصیف کد و هدف آن استفاده میشود تا همهچیز برای انسانها قابل درک باشد. مفسر پایتون، کامنتها را نادیده میگیرد.
- تعریف توابع: تابع
greet(name)
نام کاربر را به عنوان پارامتر دریافت میکند و یک پیام خوشآمدگویی نشان میدهد. توابع به نظم دادن به کد و تبدیل آن به بلوکهایی با قابلیت استفاده چندینباره کمک میکنند. - تابع اصلی (Main): تابع
main()
میزبان منطق بنیادین برنامه است. با تابعinput()
از کاربر خواسته میشود نام خود را بنویسد، تابعgreet()
خوشآمدگویی را برعهده میگیرد و بعد پیام خوشآمدگویی به نمایش درمیآید. - بررسی شرطی: خط
if _name_ == "__main__
به بررسی این میپردازد که اسکریپت به شکل یک برنامه مستقل اجرا میشود یا به عنوان ماژولی از یک اسکریپت دیگر ایمپورت شده است. اگر شرایط نخست رقم بخورد، تابعmain()
فراخوانی و برنامه اجرا میشود.
زمانی که سورس کد اجرا میشود (مثلا با اجرای python filename.py
در خط فرمان)، از کاربر میخواهد نام خود را بنویسد و بعد پیام خوشآمدگویی را همراه با همان اسم به نمایش درمیآورد. با این مثال ساده، ذهنیتی بنیادین از شمایل سورس کد به دست میآورید. اما از یاد نبرید که اپلیکیشنهای دنیای واقعی میتوانند میلیونها خط کد و منطق، ساختمان داده و الگوریتمهای بسیار پیچیدهتر داشته باشند.
جمعبندی و پاسخ به سوالات متداول پیرامون این که سورس کد چیست
در نهایت باید بار دیگر گفت سورس کد مثل فونداسیونی میماند که اکوسیستم دیجیتال و عظیم امروزی روی آن بنا شده است. از اسکریپتهای ساده گرفته تا اپلیکیشنهای غولآسا، سورس کد مستقیما روی رفتار نرمافزار، تعاملات آن و همینطور تکامل آن در گذر زمان تاثیر میگذارد. در این مطلب یاد گرفتیم سورس کد چیست و انواع سورس کد، کاربردها و دلایل اهمیت آنها را نیز درک کردیم. در نهایت، مقاله را با پاسخ دادن به برخی از سوالات پرتکرار کاربران به پایان میرسانیم.
همهچیز به نوع نرمافزار بستگی دارد. اگر نرمافزار مورد نظر «متنباز» (Open Source) باشد، میتوانید سورس کد آن را بخوانید و حتی دستکاری کنید. با این حال سورس کد اکثر برنامههای نرمافزاری جهان کاملا خصوصی هستند و در دسترس کمترین افراد ممکن قرار میگیرند تا از آسیبهای امنیتی و مالی جلوگیری شود.
زمانی که سورس کد یک برنامه را تغییر میدهید، در واقع کارکردهای آن برنامه را دگرگون میکنید. به این ترتیب امکان برطرفسازی باگها، افزودن قابلیتهای جدید و یا تغییر دادن قابلیتهای قبلی مهیا میشود. بعد از ایجاد تغییرات ضروری در سورس کد، معمولا باید برنامه را دوباره کامپایل کرد تا یک فایل اجرایی جدید ساخته شود.
اگر سورس کد یک نرمافزار گم شود و از دست برود، مشکلاتی بزرگ رقم خواهند خورد. برای پیادهسازی هر تغییر یا بهبودی در نرمافزار، دسترسی به سورس کد ضروری است. بدون سورس کد، تنها به آخرین ورژن از نرمافزار دسترسی دارید و راهی هم برای برطرفسازی مشکلات یا افزودن قابلیت وجود ندارد. البته گاهی اوقات میشود فایلهای کامپایلشده را مهندسی معکوس کرد و به وضعیت اصلی بازگرداند، اما این فرایند بسیار هزینهبر و پیچیده خواهد بود.
منبع: SiteChecker و Lenovo