مفاهیم اولیه برنامه نویسی
مفاهیم اولیه برنامه نویسی
· برنامه نویسی سطح بالا
· برنامه نویسی سطح میانی
· برنامه نویسی سطح پایین
همونطوری که می دونید، هر برنامه ای، مجموعه ای از دستورالعمل هاست که به دنبال هم به وسیله سی پی یو یا واحد پردازشگر مرکزی اجرا میشن. البته فکر نکنید که سی پی یو خودش عقل کلَه! بلکه معمولاً همین دستور ها، صرفاً دستوراتی بسیار ساده هستند مانند جمع، ضرب و... اما مجموعه همین دستور های کوچیکه که روی هم جمع می شه و تبدیل به یک برنامه کارآمد می شه. هر برنامه ای از حدوداً از هزاران یا میلیونها دستور العمل مختصر مانند بالا تشکیل شده.
مشکل ترین راه برای برنامه نویسی، نوشتن کد ماشین (صفر و یک) به طور مستقیمه که کار حضرت فیله! چرا که انجام این عمل بسیار سخته و سی پی یو های جدید، هر یک صد ها دستورالعمل مختلف دارند، البته مشکل بودن برنامه نویسی به زبان ماشین، تنها سختی نوشتن آن نیست، بلکه هر مدل از سی پی یو، خودش دستورالعمل های خاص خودش رو داره که سرهم می شه قوز بالا قوز! بنابراین، برنامه نویسی به زبان صفر و یک یا باینری(اصطلاح جدید رو یاد بگیرید: باینری=صفر و یک)، مستلزم اطلاعات بسیار گسترده ای در مورد کارکرد هر سیستم عامل و هر مدل از یک سخت افزار و... است که از عهده خارج است.
شاید اسم زبان اسمبلی به گوشتون خورده باشه، اسمبلی چیزی جز همان صفر و یک نیست، که البته به حالت متنی درآمده و شما به جای اینکه اعداد هر دستور رو مجبور باشید یاد بگیرید و به ذهن بسپارید، از نامهایی که از قبل معلوم شدن، استفاده می کنید. اسمبلی امروزه، جز برنامه نویسی بسیار سطح پایین سیستم و برنامه نویسی هسته (Kernel) سیستم های عامل، که مستقیماً با سخت افزار سر و کار دارند، کاربرد دیگه ای نداره.
بعد از این که برنامه نویسی سطح پایین رو معرفی کردیم، حالا به برنامه نویسی سطح میانی و سطح بالا می رسیم. زبان های برنامه نویسی سطح بالا امروزه به طور چشمگیری، زیاد شدند و دلیلش هم اینه که به زبان مکالمه روزانه زبان انگلیسی نزدیک تره و راحت می توان برنامه های خودمون رو به سرعت (ترجیحاً در محیط ویندوز) بنویسیم، بدون اینکه به یادگیری زبان اسمبلی یا صفر و یک، حتی برای نوشتن یک برنامه ساده،نیاز داشته باشیم.
برای مثال، برای چاپ کردن یک کلمه در زبان بیسیک روی صفحه نمایش، نیاز به خط کد زیر داریم:
PRINT "Hello"
همانطوری که می بینید، برنامه نویسی به این شیوه، بسیار آسونتر از برنامه نویسی با اسمبلی یا صفر ویکه. نکته دیگه اینه که، کامپیوتر ها دقیقاً چیزی رو که شما بهشون می گید، اجرا میکنن، نه اجرا کردن اینکه منظور شما چی بوده، مثلاً:
PRINT ] "Hello"
اگرچه در سطر بالا، مطمئناً منظور برنامه نویس، چاپ کلمه "Hello" بوده، ولی کاراکتر "[" زیادیه، کامپیوتر هم این رو نمی فهمه و مرغ هم یک پا داره! از زبانهای سطح بالای معروف، می توان پاسکال (Pascal) و ویژوال بیسیک (Visual Basic) رو نام برد.
و آخرین توضیح اینکه زبان برنامه نویسی سطح میانی، یعنی زبانی که از برنامه نویسی سطح بالا و پایین، به طور تلفیقی استفاده کرده باشه، مثل زبان C یا C++.
مفسر ها (Interpreters):
مفسر، برنامه ایه که کد منبعی رو که برنامه نویس نوشته، خط به خط می خونه و اجرا می کنه. در حقیقت، مفسر ها، کد هایی رو که ما نوشتیم، به زبان صفر و یک و زبانی که برای ماشین قابل درک باشه، ترجمه نمی کنه و فقط برای اون معلوم شده که مثلاً اگر به کلمه "PRINT" رسید، عبارت جلوی اون رو رو صفحه نمایش بده. ولی این نوع ترجمه کد، اشکالات زیادی داره و همین باعث شده تا این گونه زبان هایی که فقط از مفسر برای اجرای برنامه هاشون استفاده می کنن، زیاد پر طرفدار نباشند. مثلاً، هر کسی می تونه به کد نوشته شده برای برنامه شما، دسترسی داشته باشه و به دلخواه خودش اون رو تغییر بده، یا هر کسی برای اجرای برنامه شما، باید یه مفسر جداگانه داشته باشه که قطعاً با بسیار سخته یا اصلاً امکان پذیر نیست. از زبان های تفسیری، می توان به بیسیک (BASIC) و جاوا سکریپیت(Java) اشاره کرد.
کامپایلرها (Compilers):
کامپایلر ها، مترجم هایی به معنای واقعی هستند. در حقیقت این نوع برنامه ها، کد منبعی رو که برنامه نویس نوشته، مستقیماً به زبان ماشین (صفر و یک) ترجمه می کنه و از اون یک فایل اجرایی (Executable File *.exe) می سازه. البته این نوع اجرای کد منبع، بسیار بهتر از نوع اول یعنی مفسر هاست، چرا که اگر اشکالی هم در نحو (Syntax) کد منبع برنامه وجود داشته باشه، اون خطا رو به برنامه نویس گزارش می کنه و تا اون خطا از برنامه رفع نشه، کامپایلر هیچ گونه فایل اجرایی نمی سازه. در اینجا به چندتا از مزیت های استفاده از کامپایلر ها اشاره میکنم:
- یک برنامه کامپایل شده چون مستقیماً به زبانی که برای ماشین قابل فهم باشه، ترجمه شده، طبیعتاً سرعتش هم در مقایسه با برنامه هایی که مترجم ها اون رو اجرا می کنن، بسیار بیشتره (آگه بگم حداقل صدبار بیشتر، اغراق نکردم).
- برنامه های کامپایل شده، نیازی به یک برنامه پشتیبان، مانند مفسر ندارند و مستقلاً، چون فایل اجرایی هستند، اجرا می شوند (این نوع برنامه ها، برنامه های خود ایستا یا (Stand-alone) نامیده می شوند).
- برنامه های کامپایل شده، کلاً از برنامه های تفسیر شده قدرتمند تر هستند.
زبان های کامپایلری، امروزه به طور بسیار گسترده ای استفاده می شن. در اصل، بسیاری از برنامه های واژه پرداز مثل Word یا برنامه های ریاضی، برنامه های اصلاح تصاویر و بسیاری از برنامه هایی که سرعت بالایی رو لازم دارن، مثل بازی های سه بعدی، به وسیله زبان های کامپایلری نوشته می شن. از محبوب ترین زبان های کامپایلری، می توان C یا C++ را نام برد.
در این جا پس به خوبی در می یابیم که زبان های کامپایلری، ارجحیت کاملی بر زبان های تفسیر شده دارند، البته استثناهایی هم وجود دارد، مانند همین مایکروسافت ویژوال بیسیک، که به عنوان یک زبان کامپایلری معرفی می شود، اما این زبان کاملاً نیازمند توابع ذاتی کتابخانه ای زمان اجراست. بسیاری از برنامه نویسان حرفه ای، ویژوال بیسیک را اصلاً به عنوان زبان برنامه نویسی تلقی نمی کنند، بلکه آن را فقط یک اسباب بازی (!) برای ایجاد برنامه های پر از اشکال و ساده تحت ویندوز به شمار می آورند. خیله خوب حالا! فکر کنم خیلی حاشیه رفتم. البته با این حرف هایی که زدم، از ویژوال بیسیک دلسرد نشین ها، چون هنوز هم محبوب ترین زبان برنامه نویسی تحت ویندوز، همین جناب ویژوال بیسیک است (خسته شدم اینقدر نوشتم ویژوال بیسیک! از این به بعد، همه ما این زبان رو به اختصار، وی بی (VB) می نامیم، خوب؟). و همینطور بسیاری از برنامه های خود مایکروسافت (به استثنای برنامه های سیستمی که با زبان قدرتمند سی نوشته می شن) مثل مجموعه Office یا ... با VB نوشته شدن.