Tag Archives: سورس کد

کامنت Comment

کامنت یا Comment چیست؟

کامنت (Comment) در حوزه برنامه نویسی به توضیحاتی اطلاق می‌شود که برای بخش‌های مختلف سورس کد نوشته می‌شود و در کاربردهای غیرفنی به نظرات و بازخوردهایی گفته می‌شود که کاربران در واکنش به یک مطلب یا پست درج می‌کنند.

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

همانطور که گفته شد به نظرات و بازخوردهایی که کاربران در یک شبکه اجتماعی یا سایت در واکنش به محتوای یک مطلب یا پست درج می‌کنند و یا در مورد تجربه خود از خرید یک محصول در صفحات فروشگاه‌های اینترنتی بیان می‌کنند Comment گفته می‌شود. حتی در برخی از واژه پردازها (نظیر Microsoft Word) کاربران می‌توانند روی بخشی از متن یک سند برای همکاران یا نویسنده اصلی سند، نظر و پیشنهاد خود را در قالب کامنت ثبت کنند.

در مورد رسانه‌های آنلاین برای جلوگیری از انتشار خودکار مطالب نامناسب یا اسپم های کامنتی (Comment Spam)، معمولا نظرات کاربران پس از تأیید یک اپراتور یا صاحب رسانه منتشر می‌شود. با اینحال در رسانه‌های با فضای نظردهی گسترده امکان انتشار خودکار نظرات در کنار قابلیت‌هایی نظیر فیلتر کردن و شناسایی اسپم ها وجود دارد.

کامنت اینستاگرام Instagram Comment
دو Comment در یک پست اینستاگرامی

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

کامنت در حوزه برنامه نویسی به توضیحات، مطالب و متونی در سورس کدها گفته می‌شود که برای انسان‌ها قابل مطالعه است و با هدف کمک به درک آسانتر عملکرد سورس کد به بخش‌های مختلف آن افزوده می‌شود.

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

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

در زبان های برنامه نویسی مختلف از نمادها و علائم گوناگونی برای تعیین بخش کامنت استفاده می‌شود. این تعیین کننده‌ها به کامپایلر یا مفسر اعلام می‌کنند ناحیه مربوطه متعلق به یک Comment است و محتوای آن‌ها نباید مشابه با بخش‌های معمولی سورس کد مورد پردازش قرار گیرد.

لازم است بدانید در فرایند کمینه سازی (Minification)، کامنت ها از جمله اجزائی هستند که برای کاهش حجم نهایی فایل از سورس کد حذف می‌شوند.

انواع کامنت ها

در اغلب زبان‌ها از دو نوع کامنت خطی و چندخطی در سورس کدها پشتیبانی می‌شود که معمولا از علائم مختلفی برای تعیین محدوده هرکدام از آن‌ها استفاده می‌شود.

کامنت خطی (Line Comment) با یک تعیین کننده آغاز می‌شود و تا پایان خط ادامه می‌یابد. در بسیاری از زبان های برنامه نویسی، Comment های تک خطی می‌توانند برای افزودن توضیحات در ادامه همان خطی نوشته شوند که دستور قرار دارد و به آن‌ها کامنت اینلاین یا در خط (Inline Comment) نیز گفته می‌شود. به عبارت بهتر در چنین زبان‌هایی هر چیزی که در یک خط پس از این تعیین کننده‌ها مشاهده می‌شود Comment محسوب می‌شود.

از سوی دیگر، کامنت های چند خطی (Multi-line Comment) که به کامنت های بلاکی (Block Comments) نیز مشهور هستند ناحیه‌ای از سورس کد – متشکل از تعدادی خط – را معین می‌کنند و معمولا برای بیان هدف و عملکرد کلی یک متد، کلاس یا هر قطعه کد نسبتا پیچیده (که نیازمند توضیحی طولانی در تعدادی خط است) به کار می‌روند. محدوده این ناحیه توسط یک نماد آغازین و یک نماد انتهایی معین می‌شود و هر چیزی که مابین آن‌ها قرار بگیرد یک Comment به شمار می‌رود.

نوع دیگری از کامنت ها موسوم به کامنت های مستندات (Documentation Comments) نیز وجود دارد که در سورس کد برخی از زبان های برنامه نویسی (از جمله زبان جاوا و سی شارپ) پشتیبانی می‌شود. از این نوع Comment ها برای ایجاد خودکار مستندات توسط ابزارهایی موسوم به تولید کننده مستندات (Documentation Generator) استفاده می‌شود (Javadoc از جمله این ابزارهاست که برای کدهای به زبان جاوا مورد استفاده قرار می‌گیرد). در این کامنت ها معمولا از تگ های مختلفی برای تعیین نویسنده، نسخه و … پشتیبانی می‌شود که از این تگ ها به هنگام تولید مستندات استفاده می‌شود.

کامنت ها در زبان های برنامه نویسی مختلف

همان‌طور که پیشتر به آن اشاره شد در زبان های برنامه نویسی گوناگون از نمادهای مختلفی برای تعیین محدوده کامنت ها استفاده می‌شود. در قطعه کد زیر که به زبان جاوا نوشته شده است می‌توانید نمونه‌های خطی و چندخطی را مشاهده کنید. در این زبان از // برای مشخص کردن آغاز کامنت های خطی و از /* و */ به ترتیب برای تعیین ابتدا و انتهای کامنت های بلاکی استفاده می‌شود. کامنت های مستندات نیز در میان /** (تعیین کننده ابتدا) و */ (تعیین کننده انتها) قرار می‌گیرند.

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

در جدول زیر می‌توانید لیستی از علائم مورد استفاده به عنوان تعیین کننده‌های Comment خطی و چندخطی را در برخی از زبان های برنامه نویسی و نشانه گذاری مشاهده کنید:

زبانتعیین کننده کامنت خطیتعیین کننده کامنت چندخطی
تعیین کننده ابتداتعیین کننده انتها
 Java, JavaScript, C++, C#, PHP///**/
Cاز همان ساختار چندخطی استفاده می‌کند/**/
HTML, XMLاز همان ساختار چندخطی استفاده می‌کند<!––>
Visual Basicاین زبان فاقد ساختار مجزا برای نوع چند خطی است
Ruby#=begin=end

کاربردها و محتوای کامنت ها

کامنت ها می‌توانند منطق پشت قطعه‌های کد را توضیح دهند و منظور یا هدف برنامه نویس را با زبانی قابل فهم بیان کنند. این کار می‌تواند با توضیح مستقیم و جزئی خطوط کد، توصیف مراحل الگوریتمی که به کار رفته و ذکر عملکرد کلی یک زیرروال، کلاس و … انجام شود. به این ترتیب درک اینکه هر قسمت از کد برای چه منظوری نوشته شده است برای توسعه دهندگان دیگر یا برنامه نویسان همکار میسر می‌شود. کامنت ها نه تنها در طول فرایند توسعه اولیه بلکه به هنگام نیاز به ایجاد تغییرات یا رفع باگ های سورس کد نیز به کمک برنامه نویسان می‌آیند.

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

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

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

در بسیاری از محیط های یکپارچه توسعه، برنامه نویسان می‌توانند به سرعت با کمک آیتم‌های موجود در منو، نوار ابزار یا کلیدهای میانبر بخشی از کد انتخاب شده را به صورت Comment درآورند یا آن را از حالت Comment خارج کنند (Uncomment).

پیوندهای پیشنهادی تک دیک

لینک واژه در ویکیپدیا

کمینه سازی Minification

کمینه سازی یا Minification چیست؟

کمینه سازی سورس کد یا به اختصار کمینه سازی (Minification) اصطلاحی در حوزه برنامه نویسی است و به فرایندی گفته می‌شود که طی آن تمامی اجزا و کاراکترهای غیرضروری از سورس کد حذف می‌شود. کمینه سازی علاوه بر اینکه در نتیجه اجرای سورس کد اختلال یا تغییری به وجود نمی‌آورد، حجم فایل مربوطه را نیز کاهش می‌دهد. گاهی اوقات از واژه Minimization نیز به عنوان معادلی برای این اصطلاح استفاده می‌شود.

کاراکترهای غیر ضروری (شامل کاراکتر فاصله و خط جدید) و همچنین المان هایی نظیر کامنت ها (که برای توصیف عملکرد قسمت‌های مختلف کد استفاده می‌شوند) در حین انجام فرایند Minification از سورس کد حذف می‌شوند. از آنجایی که این اجزا و کاراکترها غالبا برای خواناتر کردن سورس کد به کار می‌روند حذف آن‌ ها تاثیری روی نتیجه اجرای کد نخواهد داشت.

فرایند کمینه سازی به خصوص در مورد سورس کدهای مرتبط با صفحات وب نظیر فایل های جاوا اسکریپت (JavaScript) به عنوان یک زبان برنامه نویسی تفسیری، شیوه نامه های آبشاری (CSS) و فایل های اچ تی ام ال (HTML) به کار می‌رود. کاهش حجم این منابع باعث می‌شود فایل ها با سرعت بیشتری به دست کلاینت ها (برای مثال مرورگرهای وب) برسد و درنتیجه منجر به کاهش زمان لازم برای لود شدن صفحات وب خواهد شد.

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

فارغ از روش‌های ساده‌ای نظیر حذف کامنت ها و فاصله ها از سورس کد، ممکن است تکنیک‌های پیشرفته‌تری نیز برای کمینه سازی مورد استفاده قرار گیرد. جایگزینی نام‌های طولانی متغیرها و توابع با نام‌هایی با تعداد کاراکتر کمتر (و حتی تک کاراکتری) در سورس کدهای بسیاری از زبان‌ها (به خصوص JavaScript) و جایگزینی ویژگی‌های مرتبط با یک ویژگی خلاصه شده (Shorthand Property) و حذف قانون‌ها یا ویژگی‌های تکراری در CSS از جمله این موارد هستند.

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

ابزارهای Minification

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

برای برخی از زبان ها ابزارهای نرم افزاری متعددی در دسترس توسعه دهندگان قرار گرفته است که با روش‌های ساده تا پیشرفته به مینیفای کردن سورس کد می‌پردازند. از جمله مشهورترین این ابزارها می‌توان به HTMLMinifier برای اچ تی ام ال، CSSO برای سی اس اس و Google Closure Compiler و UglifyJS برای جاوا اسکریپت اشاره کرد.

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

کمینه سازی و فشرده سازی

با وجود اینکه کمینه سازی و فشرده سازی (Compression) داده ها هر دو می‌توانند باعث کاهش حجم فایل سورس کد شوند اما نباید آن‌ها را یکسان دانست. در واقع سورس کد کمینه شده می‌تواند بدون نیاز به انجام مرحله‌ای اضافه بلافاصله تفسیر و اجرا شود؛ این در حالیست که سورس کد فشرده شده پیش از اجرا شدن لازم است از حالت فشرده خارج شود. در عین حال مفسر می‌تواند با نسخه اصلی یا نسخه کمینه سازی شده کار کند بدون اینکه تغییری در مفسر ایجاد شود.

جالب است بدانید بسیاری از وبسایت‌ها از هر دو روش کمینه سازی و فشرده سازی فایل ها برای کاهش حجم داده هایی که باید منتقل شود استفاده می‌کنند.

مثال هایی از کمینه سازی

در مثال زیر می‌توانید نمونه‌ای از یک قانون CSS را قبل و پس از انجام Minification مشاهده کنید. همانطور که می‌بینید در این قانون علاوه بر اینکه کامنت، سمی کلن اختیاری انتهایی، کاراکترهای اضافی فاصله و خط جدید حذف شده‌اند، ویژگی خلاصه شده border نیز جایگزین سه ویژگی مجزای border-width و border-style و border-color شده است.

کمینه سازی Minification
نمونه‌ای از انجام Minification روی یک قانون CSS

در مثال زیر نیز یک قطعه کد جاوا اسکریپت و نسخه حاصل از اعمال فرایند Minification توسط Google Closure Compiler را مشاهده می‌کنید:

کمینه سازی Minification
نمونه‌ای از انجام Minification روی یک قطعه کد جاوا اسکریپت

مزایا و معایب Minification

همانطور که پیشتر به آن اشاره شد Minification قادر است با کاهش حجم سورس کد به ویژه در مورد منابع وب به لود شدن سریعتر صفحات وب و کاهش پهنای باند مورد نیاز برای انتقال داده ها منجر شود.

با اینحال کدهای کمینه شده معمولا به اندازه نسخه اصلی خوانا نیستند و به علاوه فاقد مستنداتی هستند که در سورس کدهای معمولی دیده می‌شود. بنابراین نسخه‌هایی که روی آن‌ها فرایند Minification انجام شده است برای مطالعه و بررسی یا ویرایش و تغییر مناسب نیستند. به همین دلیل برخی از توسعه دهندگان، نسخه اصلی سورس کد را نیز به صورت مجزا یا همراه با پکیج اصلی منتشر می‌کنند تا خوانایی و امکان تغییر آسان آن در آینده میسر شود.

برخی از متخصصین معتقدند کمینه سازی را می‌توان روشی برای مبهم سازی (Obfuscation) سورس کد به شمار آورد؛ با این وجود مشابه با ابزارهایی که برای انجام خودکار Minification به کار می‌روند، ابزارهای ویژه‌ای نیز برای Unminification طراحی و منتشر شده است.

پیوندهای پیشنهادی تک دیک

لینک واژه در ویکیپدیا

اسپاگتی کد Spaghetti Code

اسپاگتی کد یا Spaghetti Code چیست؟

اسپاگتی کد (Spaghetti Code) یا کد درهم تنیده اصطلاحی در حوزه برنامه نویسی رایانه ای است و به سورس کدهایی گفته می‌شود که فاقد ساختار مناسب بوده و به علت پیچیدگی غیرضروری، فهم و نگه داری آن به امری دشوار تبدیل می‌شود. این درهم تنیدگی و پیچیدگی می‌تواند ناشی از عوامل مختلفی از جمله نبود قوانین مناسب برای استایل‌های برنامه نویسی و تجربه یا دانش ناکافی فرد برنامه نویس باشد.

استفاده از دستورات GOTO به عنوان روشی برای جهش (که زبان های برنامه نویسی قدیمی وابستگی بیشتری به آن داشتند و در بسیاری از زبان های امروزی نیز از آن پشتیبانی می‌شود) یکی از شایع ترین دلایل ایجاد کدهای درهم پیچیده و دارای جریان کنترلی (Control Flow) آشفته به شمار می‌رود. به این معنا که ترتیب اجرای دستورات در این سورس کدها برخلاف برنامه نویسی ساخت یافته استاندارد به شکلی واضح و قابل فهم نمی‌باشد و همانند یک بشقاب اسپاگتی دارای رشته‌هایی است که از ابتدا تا انتها با پیچ و خم‌های فراوان همراه می‌شود. طبیعتا دستکاری و تغییر قطعه‌ای از این کدها به گونه‌ای که باعث بروز مشکل در سایر بخش‌های آن نشود کار ساده‌ای نخواهد بود؛ درست مانند جدا کردن یک قاشق از اسپاگتی که معمولا باعث می‌شود رشته‌های دیگری که در بشقاب قرار دارد نیز قطع شوند!

با وجود اینکه امروزه دستور GOTO در سورس کدها کمتر دیده می‌شود و حتی برخی از زبان‌های برنامه نویسی از آن پشتیبانی نمی‌کنند اما همچنان وجود توابع طولانی، انشعابات متعدد و قطعه کدهای نوشته شده با ساختار ضعیف از جمله مواردی به شمار می‌روند که منجربه ایجاد اسپاگتی کد می‌شود. بد نیست بدانید تغییر نامناسب و مکرر سورس کدهایی که سال‌ها پیش نوشته شده‌اند نیز می‌تواند به شکل‌گیری چنین کدهایی بیانجامد.

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

پیوندهای پیشنهادی تک دیک

لینک واژه در ویکیپدیا

منبع باز Open Source

منبع باز یا Open Source چیست؟

نرم افزار منبع باز یا متن باز (Open Source) به نرم افزارهایی گفته می‌شود که همراه با سورس کد عرضه می‌شوند و صاحب امتیاز نرم افزار مطالعه و بررسی، تغییر و توزیع آن را به صورت رسمی و با هر هدفی مجاز دانسته است. (نحوه خواندن این اصطلاح به صورت “منبعْ باز” می‌باشد.)

در نقطه مقابل این نوع نرم افزارها، نرم افزارهای مالکیتی یا اختصاصی (Proprietary software) قرار می‌گیرند که با عنوان منبع بسته (Closed Source) نیز شناخته می‌شوند.

نرم افزارهایی که منبع آن ها در اختیار عموم قرار گرفته است اما از لحاظ قانونی مجوز تغییر یا توزیع مجدد آن‌ها صادر نشده است به نرم افزارهای “سورس – در دسترس” (Source-Available) موسوم هستند.

از جمله رایج‌ترین محصولات منبع باز می‌توان به سرور اچ تی تی پی آپاچی (Apache HTTP Server)، مرورگر موزیلا فایرفاکس، مجموعه آفیس LibreOffice، ویرایشگرهای تصاویر GIMP و Inkscape و سیستم مدیریت محتوای وردپرس و جوملا اشاره کرد.

فواید و چالش‌های استراتژی منبع باز

متن باز بودن یک نرم افزار به محبوبیت، فراگیری و انعطاف پذیری آن کمک می‌کند، چرا که توسعه دهندگان مستقل می‌توانند متناسب با نیاز کاربران به نرم افزارهای منبع باز قابلیت‌های بیشتری اضافه کنند و یا نقاط ضعف و باگ‌های آن را برطرف نمایند. به علاوه محصول نهایی می‌تواند قابل اعتمادتر از سایر نرم افزارها باشد چرا که معمولا توسط صدها و هزاران برنامه نویس مختلف مورد بررسی و تست قرار گرفته است. از همین رو مدل توسعه نرم افزاری منبع باز راهکاری برای توسعه همکارانه نرم افزارها محسوب می‌شود.

با این وجود می‌توان گفت Open Source بودن در مورد امنیت نرم افزار همانند یک تیغ دولبه عمل می‌کند. از سویی تعداد بیشتری از متخصصین می‌توانند به بررسی سورس کد نرم افزار پرداخته و مشکلات امنیتی آن را تشخیص دهند و از سویی دیگر هکرها هم می‌توانند حفره‌های یک نرم افزار متن باز را بسیار آسانتر از نرم افزارهای معمولی پیدا کرده و در جهت اهداف شرورانه خود به کار بگیرند.

منبع باز - متن باز Open Source
نرم افزارهای Open Source

سورس کد Source Code

سورس کد یا Source Code چیست؟

سورس کد (Source Code) مجموعه‌ای از دستورالعمل‌های رایانه‌ای است که معمولا در قالب متن ساده و به یک زبان برنامه نویسی کامپیوتری نوشته می‌شود. در واقع برنامه نویسان با نوشتن سورس کد، اعمالی که باید توسط رایانه انجام شود را مشخص می‌کنند.

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

اغلب نرم افزارها تنها در قالب یک فایل اجرایی برای استفاده کاربر منتشر می‌شوند اما در صورتی که سورس کد نرم افزار نیز منتشر شود و مطالعه، تغییر و توزیع آن توسط دیگران از سوی تولیدکننده نرم افزار مجاز دانسته شود نرم افزار را منبع باز (بخوانید: منبعْ باز یا Open Source) می‌نامند.

جالب است بدانید الزاما تمام سورس کد یک برنامه به یک زبان برنامه نویسی نوشته نمی‌شود. برای مثال ممکن است بخش‌هایی از یک برنامه به زبان C# نوشته شود و بخشی دیگر از آن برای اجرای بهینه‌تر به زبان C++ نوشته شده و در قالب یک فایل dll در سورس کد اصلی مورد استفاده قرار گیرد.

معمولا برای تسهیل فرایند نگه داری و اشکال زدایی نرم افزار و همچنین افزایش خوانایی آن از قراردادهایی در کدنویسی استفاده می‌شود که رعایت آن‌ها توسط برنامه نویسان ضروری می‌باشد. هم‌چنین در اغلب موارد توضیحاتی موسوم به کامنت (Comment) به خطوط مختلف سورس کد اضافه می‌شود. این توضیحات باعث می‌شود Source Code نه تنها برای تیم توسعه دهندگان اصلی بلکه برای سایر برنامه نویسانی که ممکن است در آینده بروزرسانی آن را برعهده بگیرند (یا به هر دلیلی آن را مطالعه کنند) نیز قابل درک شود. در این توضیحات، معمولا عملکرد هر تابع، نقش هر متغیر، عملی که توسط یک حلقه انجام می‌شود و … در قالب جملاتی کوتاه بیان می‌شود. به این ترتیب هدف هر قطعه از کد و ارتباط بخش‌های مختلف با یکدیگر در میان انبوهی از کدهای پیچیده مشخص شده و اعمال تغییرات یا رفع نقایص و مشکلات در آن‌ها آسانتر خواهد بود.

در تصویر زیر می‌توانید نمونه‌ای از سورس کدهای ساده برنامه سلام دنیا را به زبان‌های PHP و C++ همراه با کامنت های تک خطی (خطوط سبز رنگ) مشاهده کنید.

سورس کد Source Code
نمونه‌ای از Source Code ساده برنامه سلام دنیا به زبان‌های برنامه نویسی C++ (قطعه کد بالایی) و PHP (قطعه کد پایینی)

پیوندهای پیشنهادی تک دیک

لینک واژه در ویکیپدیا

کامپایلر Compiler

کامپایلر یا Compiler چیست؟

کامپایلر (Compiler) یک برنامه‌ی رایانه‌ای است که سورس کد نوشته شده به یک زبان برنامه نویسی (زبان مبدأ) را به یک زبان دیگر (زبان مقصد) تبدیل می‌کند. البته معمولا این اصطلاح برای برنامه‌هایی به کار می‌رود که سورس کد یک زبان برنامه نویسی سطح بالا (نظیر C یا BASIC) را به سورس کد یک زبان سطح پایین‌تر (نظیر کد ماشین یا زبان اسمبلی) تبدیل می‌کنند.

حاصل این فرایند که Compilation نامیده می‌شود، برنامه‌ای است که توسط پردازنده قابل اجرا خواهد بود. در واقع، هدف یک کامپایلر متداول، ایجاد برنامه‌ی قابل اجرا از روی سورس کد نوشته شده است (برنامه‌ای که درک آن برای پردازنده آسان است نه مانند سورس کدهای یک زبان سطح بالا که برای انسان قابل فهم هستند).

زبان‌های کامپایلی یا کامپایل شده (Compiled Language) به نوعی از زبان‌های برنامه‌نویسی گفته می‌شود که سورس کد آن‌ها پیش از اجرا شدن باید کامپایل شود. در مقابل این زبان‌ها، سورس کدهای نوشته شده به زبان‌های تفسیری بدون نیاز به کامپایل شدن توسط برنامه‌هایی موسوم به مفسر (Interpreter) اجرا می‌شود. معمولا برنامه‌های نوشته شده به زبان‌های کامپایلی در هنگام اجرا سریعتر عمل می‌کنند چرا که لازم نیست سورس کد آن‌ها هنگام اجرا به زبان ماشین ترجمه شود.

انواع کامپایلرها

چه از نظر مفهوم و چه از نظر عملکرد، انواع مختلفی از کامپایلرها وجود دارد. برخی از کامپایلرها از برنامه‌های کوچکتری تشکیل شده‌اند که هرکدام مرحله‌ای از کامپایل را انجام می‌دهند. به این کامپایلرها چند گذره (Multi-pass Compiler) گفته می‌شود. ویژگی‌های برخی از زبان‌ها به گونه‌ای است که در مواردی هنگام کامپایل کردن، خواندن مجدد سورس کد در آن‌ها ضروری می‌باشد. در چنین موقعیت‌هایی نوع چندگذره با ایجاد خروجی‌های میانی نهایتا سورس کد نهایی را تولید می‌کند. برخی دیگر از کامپایلرها تنها در یک گذر و به طور کامل تمام سورس کد دریافتی از زبان مبدأ را به زبان مقصد تبدیل می‌کنند که به آن‌ها کامپایلر تک گذره (Single-pass Compiler) گفته می‌شود.

گونه‌ای از کامپایلرها که به محلی یا بومی (Native Compiler) مشهور هستند به شکلی طراحی می‌شوند که خروجی آن‌ها تنها روی همان پلتفرم (سیستم عامل و پردازنده‌ای) که کامپایلر در آن اجرا شده قابل اجرا هستند. در عوض، خروجی کامپایلرهای متقاطع (Cross Compiler) روی پلتفرم‌های مختلفی قابل اجراست.

کامپایلرهایی که زبان مبدأ و مقصد آن‌ها دو زبان تقریبا هم سطح (معمولا سطح بالا) هستند را کامپایلرهای Source to Source می‌نامند. برنامه‌ای که سورس کد یک زبان سطح پایین‌تر را به یک زبان سطح بالاتر ترجمه می‌کند نیز دیکامپایلر (Decompiler) نامیده می‌شود.