برنامهنویسی
برنامهنویسی رایانهای (computer programming) همان فرایند طراحی و ساخت یک برنامه رایانهای اجراپذیر برای بهدستآوردن یک نتیجه رایانشی خاص، یا انجام یک عمل خاص است. برنامهنویسی شامل عملهایی مثل: تحلیل، ایجاد الگوریتمها، رخنمانگاری دقت الگوریتمها و مصرف منابع، و پیادهسازی آن الگوریتمها به یک زبان برنامهنویسی انتخاب شدهاست (که معمولاً به آن کدگذاری (کدینگ) گفته میشود) کد منبع یک برنامه به یک یا بیشتر زبان نوشته میشود که این زبان برای « برنامهنویس» قابل فهم است (به جای کد ماشین که به صورت مستقیم توسط واحد پردازش مرکزی اجرا میشود). هدف از برنامهنویسی، پیداکردن ترتیبی از دستورالعملها است که انجام یک عمل را در یک رایانه، معمولاً برای حلکردن یک برنامه داده شده، خودکارسازی میکند (که میتواند تا حد یک سیستمعامل پیچیده باشد). بنابراین، یک برنامهنویسی حرفهای نیاز به مهارت در چندین موضوع متفاوت دارد، که شامل دانش دامنه کاربردی، الگوریتمهای خاص، و منطق صوری است.
تاریخچه
در اوایل قرن نهم میلادی، یک ترتیب سنج موسیقی قابل برنامهریزی توسط برادران فارسی بانو موسی اختراع شد که یک دستگاه پخش خودکار فلوت را در کتاب دستگاههای مبتکر توصیف کرد. در سال ۱۲۰۶میلادی، مهندس کوردالجزاری یک دستگاه درام قابل برنامهریزی را اختراع کرد که در آن میتوان از اتوماتیک مکانیکی موسیقی برای پخش ریتمهای مختلف و الگوهای طبل، از طریق میخها و کامپها استفاده کرد. در سال ۱۸۰۱، با تغییر دادن برنامه «ژاکارد»، بافندگی ژاکارد میتواند بافت های کاملاً متفاوتی تولید کند. مجموعه ای از کارت های کارتن با سوراخ هایی که در آنها وجود دارد.
الگوریتمهای رمزگشایی و تحلیل رمز کد نیز قرنها وجود داشتهاست. در قرن نهم میلادی، ریاضیدان عرب آل کندی، الگوریتم رمزنگاری را برای رمزگشایی کد رمزگذاری شده، در «دست نوشته در رمزگشایی پیامهای رمزنگاری» شرح داد. او اولین توصیف رمزپزشکی را با استفاده از آنالیز فراوانی، اولین الگوریتم رمزگشایی کد ارائه داد. اولین برنامه رایانه ای بهطور کلی به سال ۱۸۴۳ مربوط میشود، هنگامی که Ada Lovelace، ریاضیدان، الگوریتمی را برای محاسبه دنباله ای از اعداد Bernoulli منتشر کرد، که قرار است توسط موتور تحلیلی چارلز بابیج انجام شود.
در دهه ۱۸۸۰ هرمان هالریت مفهوم ذخیره دادهها را به صورت قابل خواندن با دستگاه اختراع کرد. بعداً یک کنترل پنل (افزونه) بهTabulator Type 190 خود که به آن اضافه شده بود اجازه داد که برای مشاغل مختلف برنامهریزی شود و تا اواخر دهه ۱۹۴۰ تجهیزات ضبط واحدی مانند IBM 602 و IBM 604 توسط پنلهای کنترل به روش مشابهی برنامهریزی شدند. اولین کامپیوترهای الکترونیکی با این حال، با مفهوم رایانههای برنامه ذخیره شده معرفی شده در سال ۱۹۴۹، هر دو برنامه و دادهها به همان شیوه در حافظه کامپیوتر ذخیره و دستکاری شدند.
کد ماشین زبان برنامههای اولیه بود که در مجموعه دستورالعملهای دستگاه خاص، غالباً به صورت دودویی نوشته شدهاست. به زودی زبان های مونتاژ ایجاد شد که به برنامهنویس اجازه میدهد تا دستورالعملها را در قالب متن مشخص کند به عنوان مثال، ADD X، TOTAL)، با اختصار برای هر کد عملیات و نامهای معنی دار برای مشخص کردن آدرسها. اما، از آنجا که یک زبان مونتاژ چیزی بیش از یک نشان دیگر برای یک زبان ماشین نیست، هر دو ماشین با مجموعههای مختلف دستورالعمل نیز دارای زبانهای مونتاژ متفاوت هستند.
زبان های سطح بالا روند تهیه یک برنامه را سادهتر و قابل فهم تر و محدودتر به سختافزار زیرین میکردند FORTRAN، اولین زبان سطح پرکاربرد برای اجرای عملی، در سال ۱۹۵۷ منتشر شد و بسیاری از زبانهای دیگر به زودی توسعه یافتند به ویژه، COBOL با هدف پردازش دادههای تجاری و لیپ برای تحقیقات رایانه ها و برنامهها بیشتر با استفاده از کارت های پانچ شده یا نوار کاغذی وارد میشدند. برنامه عصر رایانه را در عصر کارت پانچ ببینید. در اواخر دهه ۱۹۶۰، دستگاههای ذخیرهسازی داده و پایانههای رایانه به اندازه کافی ارزان شدند که میتوان برنامهها را با تایپ کردن مستقیم به رایانهها ایجاد کرد. ویرایشگرهای متن (خود برنامهها) ساخته شدهاند که اجازه میدهد تغییرات و اصلاحات بسیار آسانتر از کارت های سوراخ شده انجام شود.
زبانهای پرکاربرد در برنامهنویسی
سی شارپ (#C)، سی (C)، ++C، پایتون (Python)، جاوا (Java)، جاوا اسکریپت (Java Script) و …
ساختارهای اساسی در همه زبانهای برنامهنویسی یکسان هستند:
ورودی: دادهها را از صفحه کلید، یک فایل یا وسایل دیگر فراهم میکند.
خروجی: اطلاعات را روی صفحه تصویر نشان میدهد، به یک فایل میفرستد یا به دستگاههای دیگری انتقال میدهد.
محاسبات: اعمال محاسباتی اساسی مثل جمع و ضرب را انجام میدهد.
حالتهای شرطی: شرطهای مشخصی را کنترل میکند و بر اساس آن رشته مناسبی از عبارات را اجرا میکند.
حلقه: بعضی اعمال را به شکل تکراری انجام میدهد، معمولاً با استفاده از تعدادی از متغیرها این کار انجام میشود.
برنامهنویسی مدرن
هر روشی که برای چگونگی اشکالاتی (نه باگها) را که ممکن است پیش بیایند، پیشبینی کردهاست. این شامل حالتهایی مانند دریافت اطلاعات نادرست، نامناسب یا غلط میشود؛ همچنین کمبود منابعی مانند حافظه، سرویسهای سیستم عامل یا اتصال به شبکه و سایر اشکالات مانند خطای کاربر یا اشکالات قطع برق نیز در این دسته قرار میگیرند.
کاربرد پذیری ارگونومی یک برنامه: آسانی استفاده از برنامه برای شخصی که میخواهد از آن برای کار در نظر گرفته شده استفاده کند یا گاهی برای کارهای پیشبینی نشده آن را به کار برد. این مورد میتواند به تنهایی و علیرغم تمام موارد دیگر باعث موفقیت یا شکست شود. طیف وسیعی از عناصر متنی، تصویری و گاهی سختافزاری وجود دارند که میتوانند باعث ارتقای وضوح، درک، پیوستگی، کامل بودن واسط کاربری برنامه شوند.
قابلیت حمل: طیف سختافزارها و سیستم عامل هایی که کد منبع برنامه را بتوان روی آنها با مترجم یا مفسر اجرا کرد. این قابلیت بستگی به تفاوت در تسهیلاتی دارد که سیستمهای مختلف از نظر منابع سختافزاری و سیستم عاملها برای برنامهنویسی ارائه میکنند. همچنین رفتار پیشبینی شده سختافزارها و سیستمهای عامل، و در دسترس بودن مترجمها (و منابع کتابخانهای) اختصاصی در آن سیستمها برای کد منبع موجود نیز مهم است.
نگهداشت پذیری: این که سازندگان و ارتقا دهندگان فعلی برنامه یا افراد دیگری در آینده بتوانند به راحتی ارتقاها یا تغییراتی در برنامه انجام دهند تا خطاها و حفرههای امنیتی را رفع کنند یا بتوانند آن را برای محیط جدیدی تطبیق دهند. در این مورد تلاش مناسب اولیه در ایجاد برنامه است که نقش عمدهای بازی میکند. این خاصیت ممکن است تأثیر خیلی زیادی روی کاربر نهایی برنامه نداشته باشد ولی در بلند مدت برای سرنوشت یک برنامه خیلی مهم است.
کارایی / عملکرد : اندازهگیری منابع سیستمی مورد نیاز برای یک برنامه (زمان پردازنده، فضای حافظه، وسایل کند مثل دیسکها، پهنای باند شبکه و موارد دیگری مثل تعامل با کاربر): هر چقدر کمتر، بهتر این خاصیت همچنین شامل مدیریت صحیح منابع مانند پاک کردن فایل های موقت و از بین بردن نشتیهای حافظه نیز میشود.
حوزههای برنامهنویسی را بر اساس پلتفرم به چهار دسته کلی تقسیم میکنند:
- حوزه برنامهنویسی تحت وب
یکی از محبوبترین حوزههای برنامه نویسی ،حوزه تحت وب است. به زبانهایی که برای کار بر روی وب و شبکه طراحی و ساخته شدهاند، زبانهای برنامهنویسی تحت وب گفته میشود. این زبانها برای ایجاد و تولید انواع پروژهها و نرمافزارهای تحت وب مورد استفاده قرار میگیرند. به عنوان مثال انواع وبسایتها، ایمیل، خرید آنلاین، امور بانکی، مجلهها و برنامههای انلاین نمونه کاربردهایی هستند که از زبانهای تحت وب برای ایجاد آنها استفاده شده است.
- حوزه برنامهنویسی تحت دسکتاپ
زبانهای برنامه نویسی تحت دسکتاپ زبانهایی هستند که از آنها برای تولید نرمافزارهای کاربردی روی سیستم عامل ویندوز، لینوکس، مک و … استفاده میشود. مانند نرمافزارهای اتوماسیون اداری، نرمافزارهای چندرسانهای Multi Media، مرورگرها و …
از بین انواع زبانهای برنامهنویسی در این حوزه، متداولترین آنها که میتوان نام برد:
زبانهای برنامهنویسی ویندوز C#, java, javascript
زبانهای برنامهنویسی لینوکس java, python
زبانهای برنامهنویسی مک: swift
- حوزه برنامهنویسی تحت موبایل
برنامهنویسی تحت موبایل زبانهایی میباشند که برای ساخت اپلیکیشنهای موبایلی استفاده میشوند. یعنی با استفاده از آنها میتوانید انواع اپلیکیشن اندرویدی و ios را تولید کنید. مانند: جاوا، کاتلین، پایتون، سی شارپ، بیسیک و …
- حوزه برنامه نویسی بازیهای رایانهای
بازیهای رایانهای محبوبیت بالایی در بین کودکان، نوجوانان و حتی بزرگسالان دارند. برخی افراد در کشورهای پیشرفته، از طریق بازی کردن کسب درآمد میکنند. برخی افراد ترجیح میدهند تا با توسعه بازیهای رایانهای درآمد نامحدود برای خود ایجاد کنند. شما برای توسعه بازیهای رایانهای به یادگیری یک زبان برنامه نویسی مانند ++C نیازمند هستید و باید با اسکریپت نویسی و موتورهای بازی سازی (همچون یونیتی، آنریل، گیم میکر و…) نیز آشنایی داشته باشید.