برنامهنویسی
برنامهسازی رایانهای[۱] یا برنامهنویسی رایانهای (به انگلیسی: computer programming) همان فرآیند طراحی و ساخت یک برنامه رایانهای اجراپذیر برای بهدستآوردن یک نتیجه رایانشی خاص، یا انجام یک عمل خاص می باشد. برنامهنویسی شامل عملهایی مثل: تحلیل، ایجاد الگوریتمها، رخنمانگاری دقت الگوریتمها و مصرف منابع و پیادهسازی آن الگوریتمها به یک زبان برنامهنویسی انتخاب شدهاست (که معمولاً به آن کدگذاری (coding) گفته میشود).[۲][۳] کد منبع یک برنامه به یک یا بیشتر زبان نوشته میشود که این زبان برای «برنامهنویس» قابل فهم است (به جای کد ماشین که به صورت مستقیم توسط واحد پردازش مرکزی اجرا میشود). هدف از برنامهنویسی، پیداکردن ترتیبی از دستورالعملها است که انجام یک عمل را در یک رایانه، معمولاً برای حلکردن یک برنامه داده شده، خودکارسازی میکند (که میتواند تا حد یک سیستمعامل پیچیده باشد). بنابراین، یک برنامهنویسی حرفهای نیاز به مهارت در چندین موضوع متفاوت دارد، که شامل دانش دامنه کاربردی، الگوریتمهای خاص و منطق صوری است.
برنامهنویسی بهطور خلاصه یعنی تعیین یک سری دستور برای اجرا شدن توسط رایانه به منظور رسیدن به هدفی دلخواه.
برنامهنویسی مدرن
هر روشی که برای چگونگی اشکالاتی (نه باگها) را که ممکن است پیش بیایند، پیشبینی کردهاست. این شامل حالتهایی مانند دریافت اطلاعات نادرست، نامناسب یا غلط میشود؛ همچنین کمبود منابعی مانند حافظه، سرویسهای سیستم عامل یا اتصال به شبکه و سایر اشکالات مانند خطای کاربر یا اشکالات قطع برق نیز در این دسته قرار میگیرند.
- کاربرد پذیری ارگونومی یک برنامه: آسانی استفاده از برنامه برای شخصی که میخواهد از آن برای کار در نظر گرفته شده استفاده کند یا گاهی برای کارهای پیشبینی نشده آن را به کار برد. این مورد میتواند به تنهایی و علیرغم تمام موارد دیگر باعث موفقیت یا شکست شود. طیف وسیعی از عناصر متنی، تصویری و گاهی سختافزاری وجود دارند که میتوانند باعث ارتقای وضوح، درک، پیوستگی، کامل بودن واسط کاربری برنامه شوند.
- قابلیت حمل: طیف سختافزارها و سیستم عامل هایی که کد منبع برنامه را بتوان روی آنها با مترجم یا مفسر اجرا کرد. این قابلیت بستگی به تفاوت در تسهیلاتی دارد که سیستمهای مختلف از نظر منابع سختافزاری و سیستم عاملها برای برنامهنویسی ارائه میکنند. همچنین رفتار پیشبینی شده سختافزارها و سیستمهای عامل و در دسترس بودن مترجمها (و منابع کتابخانهای) اختصاصی در آن سیستمها برای کد منبع موجود نیز مهم است.
- نگهداشت پذیری: این که سازندگان و ارتقا دهندگان فعلی برنامه یا افراد دیگری در آن بتوانند به راحتی ارتقاها یا تغییراتی در برنامه انجام دهند تا خطاها و حفرههای امنیتی را رفع کنند یا بتوانند آن را برای محیط جدیدی تطبیق دهند. در این مورد تلاش مناسب اولیه[۴] در ایجاد برنامه است که نقش عمدهای بازی میکند. این خاصیت ممکن است تأثیر خیلی زیادی روی کاربر نهایی برنامه نداشته باشد ولی در بلند مدت برای سرنوشت یک برنامه خیلی مهم است.
- کارایی / عملکرد :اندازهگیری منابع سیستمی مورد نیاز برای یک برنامه (زمان پردازنده، فضای حافظه، وسایل کند مثل دیسکها، پهنای باند شبکه و موارد دیگری مثل تعامل با کاربر): هر چقدر کمتر، بهتر. این خاصیت همچنین شامل مدیریت صحیح منابع مانند پاک کردن فایلهای موقت و از بین بردن نشتیهای حافظه نیز میشود.