فهرست مندرجات
کد منبع (Source Code)
تعریف
کد منبع (Source Code) مجموعهای از دستورها، تعریفها و عبارتهایی است که برنامهنویس برای توصیف رفتار یک نرمافزار با استفاده از یک زبان برنامهنویسی مینویسد.
کد منبع میتواند به شکل متن ساده نوشته شود یا شامل ساختارها و فایلهای مختلفی باشد که در کنار یکدیگر یک نرمافزار را تشکیل میدهند. این کد معمولاً توسط ابزارهایی مانند کامپایلر، مفسر یا ابزارهای ساخت پردازش میشود.
نحوه کار
کد منبع معمولاً نخستین شکل قابلخواندن و قابلویرایش یک برنامه است. برای تبدیل آن به نرمافزاری قابل اجرا، بسته به زبان برنامهنویسی و محیط اجرا، ممکن است چند مرحله انجام شود:
- تحلیل نحوی (Parsing): بررسی ساختار کد بر اساس قواعد زبان.
- تحلیل معنایی (Semantic Analysis): بررسی معنی ساختارها و سازگاری آنها با قواعد زبان.
- ترجمه (Translation): تبدیل کد به شکل دیگری مانند کد ماشین یا بایتکد.
- اجرا (Execution): اجرای برنامه توسط پردازنده یا یک محیط اجرا.
این مراحل در همه زبانها و پیادهسازیها یکسان نیستند. برای مثال، بعضی زبانها به کد ماشین کامپایل میشوند، درحالیکه برخی پیادهسازیها کد را به بایتکد تبدیل کرده و سپس آن را در یک ماشین مجازی اجرا میکنند.
مثال
کد زیر یک برنامه ساده به زبان C است:
#include <stdio.h> int main(void) { printf("Hello, world!\n"); return 0; }
این متن کد منبع برنامه است. برای ساخت یک فایل اجرایی در محیطی که GCC نصب شده، میتوان از دستور زیر استفاده کرد:
gcc hello.c -o hello
در این مثال، `hello.c` فایل کد منبع و `hello` نام فایل اجرایی خروجی است. دستور ساخت ممکن است با توجه به سیستمعامل و ابزارهای مورد استفاده متفاوت باشد.
کد منبع و کد ماشین
کد منبع و کد ماشین دو مفهوم متفاوتاند:
- کد منبع (Source Code): معمولاً برای انسان قابلخواندن و ویرایش است و از قواعد یک زبان برنامهنویسی پیروی میکند.
- کد ماشین (Machine Code): شامل دستورهایی است که پردازنده مشخصی میتواند مستقیماً اجرا کند.
بین این دو ممکن است مراحل دیگری مانند تولید فایل شیء، پیونددهی و بهینهسازی وجود داشته باشد. همچنین همه زبانها الزاماً مستقیماً از کد منبع به کد ماشین تبدیل نمیشوند.
کد منبع و کد بایت
بایتکد (Bytecode) نمایش میانی کد است که معمولاً برای اجرا توسط یک ماشین مجازی یا محیط اجرای مشخص طراحی میشود.
برای نمونه، پیادهسازی استاندارد CPython کد پایتون را به بایتکد تبدیل میکند و سپس آن را در ماشین مجازی خود اجرا میکند. بنابراین، در این پیادهسازی، اجرای برنامه صرفاً به معنی اجرای مستقیم متن کد منبع توسط پردازنده نیست.
اطلاعات بیشتر: بایتکد
کد منبع در نرمافزار آزاد
در نرمافزار آزاد، دسترسی به کد منبع اهمیت اساسی دارد؛ زیرا امکان مطالعه، بررسی، تغییر و توزیع مجدد نرمافزار را مطابق مجوز آن فراهم میکند.
با این حال، در دسترس بودن کد منبع بهتنهایی برای آزاد بودن نرمافزار کافی نیست. مجوز نرمافزار نیز باید آزادیهای لازم را به کاربران بدهد. همچنین انتشار کد منبع لزوماً به این معنی نیست که نرمافزار از نظر امنیتی بررسی شده یا بدون آسیبپذیری است.
