سورس کد (Source Code) یکی از اجزاء اصلی برنامهی کامپیوتری است که توسط برنامه نویسها ساخته میشود و اغلب در قالب توابع، توضیحات، تعاریف، فراخوانیها، روشها و سایز عبارات عملیاتی (Operational Statements) نوشته میشود. سورس کد به گونهای نوشته میشود تا برای انسان قابل خواندن باشد. همچنین نوع قالب بندی و فرمت آن نیز به گونهای است که قابل درک و فهمیدن برای توسعه دهندگان و سایر کاربران باشد.
به عنوان مثال، وقتی یک برنامه نویس، یک دنبالهای از دستورات زبان C را درون یک فایل Notepad ویندوز تایپ میکند و سپس این فایل را به عنوان یک فایل متنی ذخیره میکند، میتوان گفت که این فایل اکنون حاوی سورس کد است. به طور کلی کدی که هنوز کامپایل نشده است را به عنوان سورس کد میشناسیم. بعد از اینکه سورس کد به وسیله ی کامپایلرها کامپایل شد، به آن، آبجکت کد یا Object Code میگویند. دقت شود که آبجکت کد تنها مختص به زبان های کامپایلری مثل C و ++C است. زبان های مفسری یا Interpreted، دارای آبجکت کد نمیباشند و در واقع تنها یک نوع کد دارند. زبانهایی مثل جاوا اسکریپتجاوا اسکریپت چیست؟ معرفی زبان برنامه نویسی java scriptزبان برنامه نویسی جاوا اسکریپت چیست و چه کاربردی دارد؟ این صفحه عالی به بررسی مزایای JavaScript پرداخته و مبانی برنامه نویسی جاوا اسکریپت را آموزش داده، پایتون وغیره.
برنامه نویسان میتوانند از یک ویرایشگر متن، یک ابزار برنامه نویسی بصری و یا یک محیط توسعه ی یکپارچه یا IDE مانند کیت توسعه ی نرم افزار (SDK) برای ساخت سورس کد استفاده کنند. در محیطهای توسعه برنامههای پیشرفته، سیستمهای مدیریت سورس کدی وجود دارد که خیلی به برنامه نویسان کمک میکند. به عنوان مثال چند نفر همزمان روی یک فایل سورس کد کار کنند، سطوح مختلف فایلهای سورس کد را پیگیری کنند و خیلی از کارهای دیگر.
مجوز یا لایسنس سورس کد
سورس کدها میتوانند انحصاری و یا متن باز (Open Source)اوپن سورس یا متن باز چیست؟ اوپن سورس به چه معناست؟اوپن سورس یا متن باز چیست؟ این صفحه عالی به بررسی این موارد و همچنین تاریخچه نرم افزار متن باز و نحوه به کارگیری متن باز در توسعه نرم افزار پرداخته است باشند و تعیین کنندهی اینکه انحصاری و یا متن باز باشد، توسط لایسنسها یا مجوزها مشخص میشود. به عنوان مثال مجموعه نرم افزاری مانند Microsoft Office، یک سورس کد انحصاری است، با نصب کردن این مجموعهی نرم افزار توسط مشتریان، مایکروسافت تنها به مشتران اجازه میدهد تا به فایلهای اجرایی کامپایل شدهی نرم افزار و فایلهای کتابخانهای که فایلهای اجرایی برای فراخوان توابع برنامه به آنها نیاز دارد دسترسی داشته باشند.
در مقابل، Apache OpenOffice یک نرم افزار متن باز (Open Source) است، بنابراین وقتی کاربر آن را دانلود و نصب میکند، میتواند سورس کد (Source Code) آن را نیز تغییر بدهد. به طور معمول، فروشندگان نرم افزارهای اختصاصی مثل مایکروسافت، به دو دلیل سورس کد را با مشتریان به اشتراک نمیگذارند. اولین علت برای محافظت از مالکیت معنوی است (فرض کنید نرم افزار پولی باشد) و دومین علت جلوگیری از تغییرات در سورس کد آن نرم افزار به دست مشتری میباشد. تغییر در سورس کد ممکن است برنامه را خراب کند و یا آن را در برابر حملات، آسیب پذیرتر کند. لایسنسهای نرم افزار اختصاصی معمولا هرگونه تلاش برای تغییر سورس کد را ممنوع میکنند.
از طرف دیگر، هدف نرم افزارهای متن باز (Open Source) این است که سورس کد در دسترس همگان باشد تا هر کسی بتواند آن را تغییر دهد، علت آن هم این امر است که توسعه دهندگان با تغییر دادن سورس کد، میتوانند آنها را قویتر، ایمنتر و کارا تر کنند. کاربران به طور آزادانه میتوانند سورس کد متن باز را تحت مجوزها و لایسنسهای عمومی مانند GNU General Public License دریافت کنند.
اهداف سورس کد
علاوه بر هدف ایجاد پایه و اساس نرم افزار، سورس کد اهداف مهم دیگری را نیز دارد. برای مثال کاربران ماهری که به سورس کد دسترسی دارند، میتوانند نرم افزارها را برای خودشان سفارشی یا Customize کنند. از طرفی دیگر توسعه دهندگان میتوانند از سورس کد برای ساخت برنامهها و نرم افزارهای مشابه برای سایر پلتفرمها و سیستم عاملها استفاده کنند. کاری که بدون داشتن سورس کد و دستورالعملهای کدنویسی، کاری پیچیده خواهد بود.
دسترسی به سورس کد همچنین امکانات دیگری را در اختیار برنامه نویسان قرار میدهد. به عنوان مثال به آنها اجازه میدهد تا از طریق اشتراک گذاری کد برای اهداف یادگیری و یا استفاده از قطعه کدها برای ساخت سایر برنامهها در جامعه خود مشارکت کنند.
سازماندهی سورس کد
زبانهای متفاوت و زیادی وجود دارند که قادر به ساخت سورس کد میباشند. کد زیر یک نمونه از سورس کد مربوط به زبان C است که جمله ی Hello World را چاپ میکند:
/* Hello World program */
#include<stdio.h>
main()
{
printf("Hello World");
}
یک شخصی که هیچ پیش زمینهای از برنامه نویسی ندارد قادر به خواندن سورس کد نوشته شده به زبان C که در بالا آمده است میباشد و میتواند درک کند که هدف از سورس کد بالا، چاپ کردن یا پرینت کردن جملهی Hello World است. البته لازم است بگوییم برای اینکه پردازشگرهای کامپیوتر بتوانند قطعه کد بالا را بخوانند، نیاز است تا سورس کد نوشته شده ابتدا به زبان ماشین ترجمه شود. این کار به وسیلهی یک برنامهی خاص به نام کامپایلر (Compiler)کامپایلر چیست و چگونه کار میکند و چرا از آن استفاده میشود؟کامپایلر (Compiler) یک برنامهی خاص برای ترجمه سورس کدهای (Source Code) یک زبان برنامه نویسی، به زبان ماشین یا بایت کد و یا یک زبان برنامه نویسی دیگر است انجام میشود. در این مورد از کامپایلر C استفاده میشود.
بعد از اینکه برنامه نویسها سورس کد را کامپایل کردند، اکنون فایل خروجی حاصل از این کامپایل با عنوان آبجکت کد یا Object Code شناخته میشود. آبجکت کد به طور کلی از 0 ها و 1 ها یا همان باینری کدها (کدهای دودویی) تشکیل شده است. این کدها برای انسان به راحتی قابل درک نمیباشد. آبجکت کدها در نهایت به یک فایل قابل اجرا که هدف از آن اجرای یک تابع از برنامهی خاصی میباشد، لینک یا پیوند داده میشود.
سیستمهای مدیریتی سورس کد میتوانند به برنامه نویسها کمک کنند تا در توسعهی سورس کد همکاری بهتری داشته باشند. به عنوان مثال میتوانند از بازنویسی ناخواسته یک کدنویس بر روی کار یک کدنویس دیگر جلوگیری کنند.
نمونه هایی از سورس کد
گفتیم که از سورس کدها به دلایل مختلفی از جمله پیشرفتهتر کردن نرم افزار، موارد آموزشی، موارد امنیتی و خیلی از موارد دیگر استفاده میشود. اکثر سورس کد های رایگان در سایت Github قرار دارند، Github سایتی برای کنترل ورژن و توسعهی نرم افزار است که بیش از 100 میلیون توسعه دهنده در سرتاسر دنیا در حال استفاده کردن از آن هستند. سورس کد های غیر رایگان و پولی نیز وجود دارند که معمولا در سایت فروشندهها قرار میگیرند و به ازای دریافت مبلغی از شما، آن را به شما تحویل میدهند. در این قسمت نمونه های معروفی از سورس کدها را معرفی میکنیم:
- سورس کد ربات تلگرام: تلگرام یکی از محبوب ترین اپلیکشنهایی است که توسعه دهندگان علاقهی زیادی به کار با سورس کد های آن دارند. تلگرام با داشتن قابلیتی به نام ساخت ربات، میتواند قابلیتهای متعددی را به نرم افزارش اضافه کند. به عنوان مثال ربات چت ناشناس، ربات جستجوی موزیک و خیلی از موارد دیگر. سازندگان این رباتها، سورس کدهای این رباتها را در اختیار دیگران قرار میدهند تا توسعه دهندگان دیگر بتوانند قابلیتهای جدیدی اضافه کنند و یا مصرف کنندگان از این سورس کد برای گروهها و کانالهای تلگرامی خود استفاده کنند.
- سورس کد وردپرس: وردپرس یک سیستم مدیریت محتوا یا CMS است و به وسیلهی آن میتوان بدون داشتن توانایی برنامه نویسی، به ساخت وبسایت پرداخت. وردپرس کاملا متن باز (Open Source)اوپن سورس یا متن باز چیست؟ اوپن سورس به چه معناست؟اوپن سورس یا متن باز چیست؟ این صفحه عالی به بررسی این موارد و همچنین تاریخچه نرم افزار متن باز و نحوه به کارگیری متن باز در توسعه نرم افزار پرداخته است است و به راحتی میتوان هر تغییری در آن بوجود آورد و آن را بنابر نیاز های شرکت خود، سفارشی سازی کرد.
- سورس کد های پولی: تمامی سورس کدها رایگان نمیباشند، سورس کد های مربوط به دروس دانشگاهی، سورس کدهای قالب یا تم وبسایتها، سورس کدهای نرم افزارهای امنیتی و خیلی از موارد دیگر میتوانند پولی باشند. شما در قبال مبلغی که پرداخت میکنید، این سورس کد ها به شما تحویل داده میشود و میتوانید به کار با آن بپردازید.
تاریخچه ی سورس کد
اولین نرم افزار در سال 1940 و به صورت کدهای باینری نوشته شد. از یک دیدگاه میتوان اولین نمونهی سورس کد را این کد دانست. یکی از اولین نمونه سورس کد، توسط Tom Kilburn نوشته شده است، تام کیلبرن جزء اولین افراد در حوزهی علوم کامپیوتر بود. کیلبرن اولین برنامه ی دیجیتال موفق را که به صورت الکترونیکی در حافظهی کامپیوتر نگهداری میشد را در سال 1948 ایجاد کرد. این نرم افزار توانست یک معادلهی ریاضی را حل کند. در سال های 1950 و 1960، سورس کد ها اغلب به صورت رایگان به همراه نرم افزار های ساخته شده توسط شرکت ها ارائه میشدند.
با توجه به اینکه شرکتهای کامپیوتری رو به رشد، استفاده از نرم افزارها را گسترش دادند، سورس کدها پرکارتر شدند. مجلات کامپیوتری قبل از عصر اینترنت اغلب سورس کدها را در صفحات خود چاپ میکردند و خوانندگان این سورس کدها برای استفاده از آنها مجبور بودند تک تک کاراکترهای استفاده شده در سورس کد را برای خودشان تایپ کنند. بعد ها دیسکهای فلاپی فرایند اشتراک گذاری سورس کدها را راحتتر و ارزانتر کرد. سپس با بوجود آمدن اینترنت کلیهی موانع از سر راه برداشته شد.
سورس کد چیست؟
وقتی کاربری با استفاده از دستورات یک زبان برنامه نویسی مثل ++C و یا Java یک کدی را مینویسد و آن را به صورت یک فایل ذخیره میکند، میتوان گفت که آن فایل حاوی سورس کد است. در واقع سورس کدها، کدهایی هستند که طبق دستور زبان خاصی نوشته شدهاند و هیچ عمل دیگری مثل کامپایل کردن و... روی آنها صورت نگرفته است.
آیا سورس کد ها قابلیت اجرا دارند؟
سورس کدها تنها کدهای نوشته شدهای هستند که در قالب فایلهایی با فرمتهای مخصوص ذخیره شدهاند و توانایی هیچ کاری را ندارند. برای اینکه سورس کدها به یک برنامه قابل اجرا تبدیل شوند، باید آنها را کامپایل و تفسیر کرد تا به زبان ماشین تبدیل شوند.
تفاوت سورس کد و آبجکت کد چیست؟
سورس کدها برای انسان قابل فهم هستند اما برای پردازشگر کامپیوتر خیر. به خروجی حاصل از کامپایل و تفسیر کردن سورس کد، آبجکت کد (Object Code) میگویند. آبجکت کدها تنها از 0 و 1 تشکیل شدهاند و به همین جهت به راحتی برای انسان قابل فهم نمیباشد. اما پردازشگرها قادر به اجرای آن هستند.