امروزه که همه ی ما کارهای روزمره مان با کامپیوتر پیوند خورده و برای هرکاری نیاز به ثبت نام اینترنتی هست شاید کمتر به مباحث پشت پرده این حوزه توجه داریم.
مباحث مبانی برنامه نویسی نه به صورت تنها یک حرفه بلکه به صورت یک فرهنگ باید مورد توجه قرار گیرد.
مبانی برنامه نویسی به عنوان رکن اصلی و اولیه ی کار با زبان های برنامه نویسی است به این معنی که باید شناخت ابتدایی از مسیری که می خواهید در آن فعالیت نرم افزاری داشته باشید بدست بیاورید.
در این مطلب می خواهیم شما را با ساختار و مولفه های نرم افزار و مبانی برنامه نویسی بیشتر آشنا کنیم پس در ادامه با بایت لرن همراه باشید.
آشنایی اولیه با مبانی برنامه نویسی
هر سیستم کامپیوتر از سخت افزار (hardware) و نرم افزار (software) تشکیل شده است که می توان آن را به جسم و روح تشبیه کرد و ما با داشتن این دو در کنار هم میتوانیم یک کامپیوتر در اختیار داشته باشیم.
کامپیوترها مانند ما انسانها دچار خستگی یا فراموشی نمی شوند و میتوانند عملیات پردازشی گوناگون را هزاران بار (در صورت عدم وجود مشکل فیزیکی) انجام دهند.
نیازهای انسان در مقابل توانایی ها و خلاء های کامپیوتر
انسان به سه دلیل کامپیوتر را اختراع نمود :
- دقت
- سرعت
- عدم خستگی کامپیوتر
دلایلی که انسان در تامین کامل آنها دچار مشکل است اما در مقابل کامپیوتر نیز دچار خلاءهایی می باشد، به عنوان مثال کامپیوتر نمی توانند مانند انسان دارای خلاقیت باشد چون خلاقیت نیاز مستقیم به هوشِ انسانی دارد.
اگرچه در سالیان اخیر تلاشهای مستمری در زمینهی ساختِ هوشِ مصنوعی در کامپیوتر صورت گرفته است، اما پیاده کردن این پروژه به دلیلِ وجود فرآیندهای بسیار پیچیده در مغز انسان زمان بر خواهد بود و اکنون در دسترس نیست.
سیستم عامل چیست؟ برنامه کاربردی کدام است؟
فهمیدیم که کامپیوتر بدون نرم افزار به مانند یک جسم بی جان است و از آن نمی توان استفاده نمود، همینطور که نرم افزار بدون سخت افزار بلا استفاده است. بخش مهمی از قسمت نرم افزاری یک کامپیوتر را سیستم عامل تشکیل می دهد.
چیزی که معمولاً کاربران آن را می خرند و به ندرت یافت می شود که کسی سیستم عامل را ایجاد کند، گرچه امکانِ آن هست و غیرممکن نیست اما غالباً تیمهای فوق حرفه ای به ساختِ یک سیستم عامل می پردازند و تمرکز ما بر روی برنامه های کاربردی است.
برنامههای کاربردی بر روی سیستم عامل نصب و به کمک سیستم عامل بر روی سخت افزار اجرا می شوند. در مورد برنامهی کاربردی دو حالت وجود دارد، می توان آن را خرید و استفاده نمود، همینطور می توان آن را از پایه نوشت و ایجاد کرد.
چرا نیاز داریم یک برنامه ی کاربردی را خلق کنیم؟
اما چه دلایلی برای نوشتن یک برنامهی کاربردی هست؟ ممکن است یک نیاز شخصی وجود داشته باشد، ممکن است در جریان یک پروژهی دانشگاهی نیاز به نوشتن یک برنامهی خاص پیدا کنیم و همینطور ممکن است مشتری از ما چنین خواسته ای داشته باشد و بسته به نیازِ خاص مشتری نیاز به تولید یک برنامهی کاربردیِ خاص وجود داشته باشد.
پس بخشی از برنامههای کاربردی را می توان خرید (آفیس، انواع player، فتوشاپ و . . ) و همینطور می توان نمونهی این برنامهها و یا نمونههای کاملاً متفاوت را بسته به نیازهای موجود از پایه خلق کرد.
به چه چیزهایی کامپیوتر می گویند؟
لازم است بدانیم که کلمهی کامپیوتر الزاماً برای اشاره به سیستمی که دارای کیس و نمایشگر و کیبورد و موس باشد نیست و هر دستگاه هوشمند اعم از یک تلفن همراه، تلویزیون می تواند یک کامپیوتر باشد و دور نیست زمانی که برای پردازش یک عملیات تمام وسایل موجود در یک خانه با هم همکاری کنند.
اگر از لحاظ تاریخی نگاه کنیم، میبینیم که اگرچه کلمهی کامپیوتر به معنای خاص پردازشگر پس از اختراع کامپیوتر و در دورههای جدید ایجاد شده است اما در زمانِ قدیم نیز وسایلی بوده اند که نیازهای پردازشی ما را برطرف می کرده اند و به نوعی حکم کامپیوتر داشته اند. چرتکه، اسطرلاب و . . . نمونهی چیزهایی هستند که در زمانهای قدیمی به نوعی یک کامپیوتر بوده اند.
حتی یک کلید ساده کهیک در را برای ما باز می کند نوعی کامپیوتر است و شیارهایی که بر روی آن حک شده نوعی برنامه نویسی است. کامپیوترها و برنامه نویسی را در گونههای مختلف می توان دید، یکی از بزرگترین این برنامهها همان DNA است که توسط طبیعت نوشته شده است و اهداف بزرگی را دنبال می کند با این تفاوت که با مولکولهای شیمیایی نوشته شده است.
پس اصطلاحات کامپیوتر، سخت افزار و نرم افزار می توانند معنیهای بسیار گسترده ای داشته باشند در این مطلب به طور خاص آن را محدود به کامپیوترهای دیجیتال و برنامه نویسی بر روی آنها می کنیم.
برنامه نویسی چیست؟
به پروسهی تولید نرم افزار برنامه نویسی یا programming گفته می شود و می توان این گونه در نظر گرفته که نرم افزار که خود یک اسم جمع هست می تواند معادل برنامهها در نظر گرفته شود و در واقع پروسه ی ساخت نرم افزار را برنامه نویسی نام داد.
برنامه نویسی عبارت است از اینکه ایدهی خاصی را به کامپیوتر منتقل کنیم تا آن را برای ما اجرا کند، در واقع انسان ایدهی خود را از مسیر برنامه نویسی تبدیل به چیزی می کند (برنامه) که کامپیوتر آن را بتواند بفهمد و اجرا کند و پروسهی میانی این مسیر، مابین نیاز و هدف همان برنامه نویسی است. که این تعریفی از مبانی برنامه نویسی نیز می باشد.
در واقع برای استفاده از قابلیتهای کامپیوتر نیاز به برنامه نویسی داریم و گرنه کامپیوتر اهمیت خود را از دست خواهد داد.
به چه زبانی می توانیم با کامپیوتر صحبت کنیم؟
برای انجامِ عمل برنامه نویسی نیاز داریم بتوانیم با کامپیوتر صحبت کنیم اما هر کامپیوتر زبانی جز زبان خودش را متوجه نمی شود. زبان کامپیوتر زبان ماشین (machine language) خوانده می شود.
این زبانی است که خاصِ هر کامپیوتر است اما با این وجود امکانِ این هست که دو کامپیوتر با معماریهای متفاوت زبان همدیگر را متوجه نشوند و بنابراین زبان ماشین بسیار وابسته به سخت افزار است.
نیاز است که ابتدا بدانیم زبان ماشین دقیقن چه چیزی است و آن را یاد بگیریم و پس از آن بدانیم که زبان ماشین هر کامپیوتر با معماری خاص خودش دقیقاً چه چیزی است که این کار سختی خواهد بود.
برنامه نویسی چگونه آغاز شد؟
در زمانهای قدیم عملاً برنامهنویسی تنها به زبان ماشین انجام داده می شد، برنامهها به وسیلهی رشتههای طولانی از صفر و یک تولید می شد که پروسهی بسیار سختی است. برای اشاره به سختی آن همین بس که ده کیلو بایت اطلاعات که در حال حاضر ناچیز شمرده می شود حاوی ۱۰۰۰۰ صفر و یک می باشد.
مدتی برنامهها به این صورت نوشته می شد اما با اختراع زبان اسمبلی (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 می شوند. اینها الگوهایی هستند که بسته به نیازشان ترکیبی از آنلاین و آفلاین در آنها وجود دارد و به نوعی بینابین هستند.
هر روز زبانهای جدید تر با امکانات جدیدتری معرفی می شوند و این دانش به صورت پویا در حال گسترش است. هر زبان می تواند تحت تاثیر زبانهای مختلف دیگر باشد و همین طور اثر گذار بر زبانهای دیگر باشد و بدین نحو زبانهای مختلف می توانند مکمل یکدیگر باشند و باعث رشد هم شوند.
این مروری بود بر زبانهای برنامه نویسی و در ادامه به این می پردازیم که زبانهای برنامه نویسی چگونه به نیازهای مختلف انسان پاسخ می دهند.
چطور یک زبان برنامه نویسی رو یاد بگیرم؟ قسمت دوم
امروز در این مطلب با مبانی برنامه نویسی ، ساختار و مولفه های آن آشنا شدیم.
خیلی ب موضوع خوبی پرداختی ممنون بابت پست خوبت