مبانی برنامه نویسی – آشنایی با ساختار و مولفههای یک زبان برنامه نویسی


در این آموزش، در خصوص مبانی برنامه نویسی صحبت میکنیم و با ساختار یک زبان برنامه نویسی آشنا خواهیم شد. در ابتدا، لزوم آشنایی با مباحث ابتدایی در مبانی برنامه نویسی مطرح میشود و مفاهیم اساسی زبانهای برنامه نویسی را یاد میگیریم. همچنین در خصوص مولفههای یک زبان برنامه نویسی به بحث میپردازیم.
چرا از کامپیوتر استفاده می کنیم؟
هر سیستم کامپیوتر از سختافزار (hardware) و نرمافزار (software) تشکیل شده است که میتوان آن را به جسم و روح تشبیه کرد و ما با داشتن این دو در کنار هم میتوانیم یک کامپیوتر در اختیار داشته باشیم. کامپیوترها مانند ما انسانها دچار خستگی یا فراموشی نمی شوند و میتوانند عملیات پردازشی گوناگون را هزاران بار (در صورت عدم وجود مشکل فیزیکی) انجام دهند.
- مقاله پیشنهادی: برنامه نویسی چیست ؟ — از کاربرد تا یادگیری به زبان ساده
نیازهای انسان در مقابل توانایی ها و خلاء های کامپیوتر
انسان به سه دلیل کامپیوتر را اختراع کرد:
- دقت
- سرعت
- عدم خستگی کامپیوتر
دلایلی که انسان در تامین کامل آنها دچار مشکل است اما در مقابل کامپیوتر نیز دچار خلاءهایی است، به عنوان مثال کامپیوتر ها نمیتوانند مانند انسان دارای خلاقیت باشند چون خلاقیت نیاز مستقیم به هوشِ انسانی دارد. اگرچه در سالیان اخیر تلاشهای مستمری در زمینهی ساختِ هوشِ مصنوعی در کامپیوتر صورت گرفته است، اما پیاده کردن این پروژه به دلیلِ وجود فرآیندهای بسیار پیچیده در مغز انسان زمان بر خواهد بود و اکنون در دسترس نیست.
سیستم عامل چیست؟ برنامه کاربردی کدام است؟
فهمیدیم که کامپیوتر بدون نرمافزار به مانند یک جسم بی جان است و از آن نمیتوان استفاده نمود، همینطور که نرمافزار بدون سختافزار بلا استفاده است. بخش مهمی از قسمت نرمافزاری یک کامپیوتر را سیستم عامل تشکیل می دهد. چیزی که معمولاً کاربران آن را می خرند و به ندرت یافت می شود که کسی سیستم عامل را ایجاد کند، گرچه امکانِ آن هست و غیرممکن نیست اما غالباً تیمهای فوق حرفهای به ساختِ یک سیستم عامل می پردازند و تمرکز ما بر روی برنامههای کاربردی است. برنامههای کاربردی بر روی سیستم عامل نصب و به کمک سیستم عامل بر روی سختافزار اجرا می شوند. در مورد برنامه کاربردی دو حالت وجود دارد، میتوان آن را خرید و استفاده کرد، همینطور میتوان آن را از پایه نوشت و ایجاد کرد.
چرا نیاز داریم یک برنامه ی کاربردی را خلق کنیم؟
برای آشنایی با مبانی برنامه نویسی باید بدانیم چه دلایلی برای نوشتن یک برنامهی کاربردی وجود دارد؟ ممکن است یک نیاز شخصی وجود داشته باشد یا در جریان یک پروژهی دانشگاهی نیاز به نوشتن یک برنامهی خاص پیدا کنیم و همینطور ممکن است مشتری از ما چنین خواسته ای داشته باشد و بسته به نیازِ خاص مشتری نیاز به تولید یک برنامهی کاربردیِ خاص وجود داشته باشد. پس بخشی از برنامههای کاربردی را میتوان خرید (آفیس، انواع player، فتوشاپ و ... ) و همینطور میتوان نمونه این برنامهها و یا نمونههای کاملاً متفاوت را بسته به نیازهای موجود از پایه خلق کرد.
به چه چیزهایی کامپیوتر می گویند؟
لازم است بدانیم که کلمهی کامپیوتر الزاماً برای اشاره به سیستمی که دارای کیس و نمایشگر و کیبورد و موس باشد نیست و هر دستگاه هوشمند اعم از یک تلفن همراه، تلویزیون میتوانند یک کامپیوتر باشند و دور نیست زمانی که برای پردازش یک عملیات تمام وسایل موجود در یک خانه با هم همکاری کنند. اگر از لحاظ تاریخی نگاه کنیم، میبینیم که اگرچه کلمه کامپیوتر به معنای خاص پردازشگر پس از اختراع کامپیوتر و در دورههای جدید ایجاد شده است اما در زمانِ قدیم نیز وسایلی بوده اند که نیازهای پردازشی ما را برطرف می کرده اند و به نوعی حکم کامپیوتر داشته اند.
چرتکه، اسطرلاب و مواردی از این دست، نمونهی دستگاههایی هستند که در زمانهای قدیمی به نوعی یک کامپیوتر بوده اند. حتی یک کلید ساده که یک در را برای ما باز می کند نوعی کامپیوتر است و شیارهایی که بر روی آن حک شده نوعی برنامهنویسی است. کامپیوترها و برنامهنویسی را در گونههای مختلف میتوان دید، یکی از بزرگترین این برنامهها همان DNA است که توسط طبیعت نوشته شده است و اهداف بزرگی را دنبال می کند با این تفاوت که با مولکولهای شیمیایی نوشته شده است. پس اصطلاحات کامپیوتر، سختافزار و نرمافزار میتوانند معنیهای بسیار گسترده ای داشته باشند در این مطلب به طور خاص آن را محدود به کامپیوترهای دیجیتال و مبانی برنامه نویسی بر روی آنها خواهیم کرد.
برنامه نویسی چیست؟
به پروسهی تولید نرمافزار برنامه نویسی یا programming گفته می شود و میتوان اینگونه در نظر گرفته که نرمافزار که خود یک اسم جمع هست میتواند معادل برنامهها در نظر گرفته شود و در واقع پروسهی ساخت نرمافزار را برنامه نویسی نام داد. برنامه نویسی عبارت است از اینکه ایدهی خاصی را به کامپیوتر منتقل کنیم تا آن را برای ما اجرا کند، در واقع انسان ایدهی خود را از مسیر برنامه نویسی تبدیل به چیزی می کند (برنامه) که کامپیوتر آن را بتواند بفهمد و اجرا کند و پروسهی میانی این مسیر، مابین نیاز و هدف همان برنامه نویسی است. در واقع برای استفاده از قابلیتهای کامپیوتر نیاز به آشنایی با مبانی برنامه نویسی داریم و گرنه کامپیوتر اهمیت خود را از دست خواهد داد.
به چه زبانی میتوانیم با کامپیوتر صحبت کنیم؟
برای آشنایی با مبانی برنامه نویسی نیاز داریم بتوانیم با کامپیوتر صحبت کنیم اما هر کامپیوتر زبانی جز زبان خودش را متوجه نمی شود. زبان کامپیوتر زبان ماشین (machine language) خوانده میشود. این زبانی است که خاصِ هر کامپیوتر است اما با این وجود امکانِ این هست که دو کامپیوتر با معماریهای متفاوت زبان همدیگر را متوجه نشوند و بنابراین زبان ماشین بسیار وابسته به سختافزار است. نیاز است که ابتدا بدانیم زبان ماشین دقیقا چه چیزی است و آن را یاد بگیریم و پس از آن بدانیم که زبان ماشین هر کامپیوتر با معماری خاص خودش دقیقاً به چه معناست که این کار سختی خواهد بود.
بعد از کسب این اطلاعات، شروع آموزش تمام زبانهای برنامه نویسی نیازمند شناخت و یادگیری مراحل استفاده مفاهیم پایه در برنامه نویسی است. این مفاهیم پایه تقریبا در تمام زبانهای برنامه نویسی مشترک بوده و شاید فقط سینتکس و قوائد جزئی آنها با یکدیگر تفاوت داشته باشند.
برنامه نویسی چگونه آغاز شد؟
در زمانهای قدیم عملاً برنامهنویسی تنها به زبان ماشین انجام داده میشد، برنامهها به وسیلهی رشتههای طولانی از صفر و یک تولید می شد که پروسهی بسیار سختی است. برای اشاره به سختی آن همین بس که ده کیلو بایت اطلاعات که در حال حاضر ناچیز شمرده می شود حاوی 10000 صفر و یک است. مدتی برنامهها به این صورت نوشته می شد اما با اختراع زبان اسمبلی (Assembly Language) اوضاع کمی بهتر شد. دیگر نیاز نبود برنامه نویسها با رشتههای طولانی صفر و یک کار کنند. برای بخشهایی از دستورها اسم خاص گذاشته شد، اسمهایی که به زبانِ انسان هم مربوط بودند اما با این وجود باز هم نیاز بود برای انجام یک کار ساده دستوراتِ بسیاری نوشته شود.
چرا برای هر زبان سطح تعیین می شود؟
زبان اسمبلی یک حالت میانی بود بین زبان ماشین و زبانهای سطح بالا. در زبانهای سطح بالا، دستورات تا حد بسیار زیاد به زبان انسانی شبیه شدند. به اسمبلی یک زبان سطح پایین گفته می شود و به چنین برنامههایی زبان سطح بالا گفته می شود. در حال حاضر تمام زبانها سطح بالا هستند اما هنوز هم برای برنامههایی که درگیری زیادی با سختافزار دارند، مثلاً پیاده سازی برنامه در میکروکنترولر، از زبان اسمبلی استفاده می شود. کدهای زبان اسمبلی توانایی خوانش پایینی دارند و فهمیدن آنها زیاد ساده نیست و حتی برای کسانی که زبان اسمبلی کار کردهاند درکِ یک برنامه به زبان اسمبلی زیاد ساده نیست با این وجود همین زبان مزیتی برای زمانِ خود بود.
زبانهای برنامهنویسی سطح بالا
BASIC از اولین زبانهای سطح بالاست که اساساً برای آموزش برنامه نویسی ساخته شده است و نام آن مخففِ عبارتِ Beginner's All-purpose Symbolic Instruction Code است که میتوان آن را اینطور ترجمه کرد: "زبان برنامه نویسی نمادینِ همه منظوره برای مبتدیان" که اساساً برای آموزش ساخته شده است اما بعدها دیالکت یا گویشهایی مثل Qbasic، VisualBasic و . . ساخته شد که تبدیل شدند به بیسیکهای سفارشی شده برای اهداف خاص که از مهمترین آنها VB و VB. Net هستند. در کنار اینها زبانِ C را داریم که تعداد زیادی از زبانهای برنامه نویسی از آن استفاده کردند و به نوعی مادرِ زبانهای برنامه نویسی است.
مبانی برنامه نویسی و خالق زبانِ C
این زبان توسط دنیس ریچی معرفی شد، در آن زمان دنیس ریچی در حالِ کار بر روی سیستم عامل یونیکس به زبانِ B بود اما متوجه شدند که این زبان برای یونیکس کافی نیست و همزمان با توسعهی یونیکس C هم توسعه پیدا کرد تا به وسیلهی آن بهتر بتوانند یونیکس را توسعه بدهند و به همین دلیل تاریخ توسعهی سیستم عامل یونیکس و زبان برنامه نویسی C به هم گره خورده است.
دنیس ریچی یکی از اثرگذارترین دانشمندان حوزهی علوم کامپیوتر بود کهیونیکس و C از یادگاران بزرگ او هستند. این دو در آیندهی پایهی سیستمهای عامل یونیکس، اندروید و مکینتاش شدند و هر دو فوق العاده تاثیرگذار بودند. زبانهای برنامه نویسی مهمی مانند C++، C#، JAVA، JAVA SCRIPT و . . . به صورت غیرمستقیم به C وابسته هستند که این خود بیانگر این است که این زبان چقدر در تاریخچهی برنامه نویسی تاثیرگذار بوده. از خویشاوندان نزدیک زبان جاوا، JAVA SCRIPT را باید نام برد. البته جاوا اسکریپت همان جاوا نیست اما در حال حاضر ارتباطهای مهمی بین آنها ایجاد شده است. از زبانهای مهمی که در حوزه وب استفاده می شود میتوان به PHP اشاره کرد که فوق العاده قدرتمند است و پر استفاده ترین زبان برنامه نویسی در حوزهی تحت وب است همان طور که C++ پر استفاده ترین در حوزهی نرمافزار به شمار میرود.
برای بررسی مبانی برنامه نویسی خوب است که با جاوا آشنا شوید. جاوا بیشترین کاربرد را بین قطعات مختلف الکترونیکی مانند یخچالها، ماشین لباسشوییها، دستگاههای خودپرداز، کامپیوترها، پرینترها و ... دارد. به ویژه در گوشیهای هوشمند با اختراع سیستم عامل اندروید این زبان مورد استفاده قرار گرفت. بعضی زبانها حالت علمی دارند که در میان آنها میتوان به PYTHON اشاره کرد. این زبان یک زبان تابعی است که کاربردهای گوناگون دارد. زبانهای قدرتمندی چون MATLAB و R نیز در این زمره قرار می گیرند. اسمهایی که بردیم زبانهای برنامه نویسی سطح بالایی بودند برای آشنایی با مبانی برنامه نویسی مهم هستند که در میان آنها نقش خاص دو زبان در انها مشهود است. یکی بیسیک به دلیل سادگی و یکی C به دلیل اساسی بودن در میان زبانهای برنامه نویسی. زبانهای سطح بالا محدود به اینها نیستند و دهها زبان سطح بالای دیگر وجود دارند اما معروف ترین این زبانها در بالا آورده شد.
نحوه قابل فهم شدن زبان برای سخت افزار
این زبانها چطور کار میکنند و فلسفه وجودی آنها چیست؟ مگر نگفتیم کامپیوترها تنها زبان ماشین را میفهمند؟ ما میتوانییم ایده خود را بوسیلهی برنامه نویسی به کد منبع تبدیل کنیم. این کد طی فرآیند توسط یک مترجم، ترجمه و تبدیل به زبان ماشین میشود. مترجم، خود یک نرمافزار است که به ما به عنوان یک مترجم کمک میکند. این فرآیندِ تبدیل نیاز به کد منبع برنامه نویسی نام دارد. فرآیند ترجمه خود به دوشکل کلی انجام میشود:
- ترجمه ی آنلاین
- ترجمه ی آفلاین
ترجمه های مختلف چه تفاوتی با هم دارند؟ مزایا و معایبشان چیست؟
ترجمهی آفلاین compile نام دارد یا همان کامپایل کردن. به تبدیل گرفتن برنامه و تبدیل آن به یک فایل، کامپایل کردن میگوییم و برنامهای که این کار را میکند compiler نام دارد. در ترجمهی آنلاین هر تغییر کوچک نیاز به کامپایل دارد و مانند ترجمهی آفلاین نیست و این چندان به صرفه نیست چون زمان بر است. به ترجمهی آنلاین تفسیر یا interpret می گویند. برنامهی مفسر در لحظهی اجرا برنامه را ترجمه می کند اما لطف آن این است که برنامه را در لحظه اجرا ترجمه می کند و پس از تغییر نیاز به کامپایل نیست و برنامه را در هر لحظه ترجمه می کند. از جمله نمونههای آفلاین میتوان به C# ,C++ ,C و java و در نمونههای آنلاین میتوان به php اشاره کرد. اما این زبان چرا نیاز دارد آنلاین باشد؟
فرض کنید بخواهیم به یک سایت قطعه کدی اضافه کنیم، ما نیازی به کامپایل دوباره نداریم. وقتی به وبسایت چنین درخواستی می دهیم سرور در آن لحظه برنامه را اجرا می کند و این تغییر بلافاصله اعمال می کند. اما در مترجمهای آفلاین تغییرات در طولانی مدت انجام می شوند ولی در زبان php اینطور نیست چون به سرعت کدها در حال تغییرند. زبانهای مفسری سرعت اجرای پایین تری دارند اما تغییرات زودتر لحاظ میشوند.
نمونهی دیگری از زبانهای مفسری جاوا اسکریپت است. کدهای جاوا اسکریپت به صورت آنلاین در مرورگر اجرا می شوند. C# و جاوا شباهت کوچکی به زبانهای مفسری دارند. وقتی C کامپایل میشود مستقیماً تبدیل به زبان ماشین خواهند شد اما C# و جاوا بهیک زبان میانی کامپایل میشوند و هنگام اجرا مثل زبانهای مفسری به زبان ماشین تبدیل خواهند شد اما دلیل چیست؟ در زمان ساخت ادواتی مانند پرینتر یا ... ممکن است نیاز به برنامهای باشد که در تمام سیستم عاملها اجرا شود. جاوا تبدیل بهیک زبان میانی ترجمه می شود و سپس مشخص می شود زبان میانی در هر سیستم عامل چگونه ترجمه شود. #C هم همینطور است اما نتوانسته چندان موفق عمل کند. بدین گونه برنامهها multi platform می شوند. اینها الگوهایی هستند که بسته به نیازشان ترکیبی از آنلاین و آفلاین در آنها وجود دارد و به نوعی بینابین هستند.
هر روز زبانهای جدیدتر با امکانات جدیدتری معرفی میشوند و این دانش به صورت پویا در حال گسترش است. هر زبان میتواند تحت تاثیر زبانهای مختلف دیگر و همینطور اثر گذار بر زبانهای دیگر باشد و بدین نحو زبانهای مختلف میتوانند مکمل یکدیگر باشند و باعث رشد هم شوند. این مروری بود بر زبانهای برنامه نویسی و در ادامه به این می پردازیم که زبانهای برنامه نویسی چگونه به نیازهای مختلف انسان پاسخ می دهند.
آنچه مطالعه کردید، مبانی برنامه نویسی بود که توسط جناب آقای علیرضا رجایی به عنوان پیاده سازی و برداشت متنی از آموزش «مبانی برنامه نویسی و انواع زبان های برنامه نویسی» تهیه شده که از این لینک قابل دسترس است.
اگر این مطلب برای شما مفید بوده است، آموزشها و مطالب زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای برنامهنویسی سی شارپ (C#)
- مجموعه آموزشهای پروژه محور برنامهنویسی
- آموزش پروژه محور Python (پایتون) – ساخت نرمافزار برای Windows و Linux
- برنامه نویسی چیست ؟ — از کاربرد تا یادگیری به زبان ساده
- برنامه معکوس کردن رشته و آرایه — به زبان ساده
- رنگآمیزی گراف به روش حریصانه — به زبان ساده
متشکرم
الان بیشتر میکروکنترلرها با c یا زبانهای نزدیک به cنوشته میشود
خیلی ممنون از سایت مفیدتون عالی هستین شما
سلام . عکس آقای ریچی و کد داخل عکس چقدر جالب و تاثیرگذار بود. ممنون