برنامهسازی رایانهای یا برنامهنویسی رایانهای (به انگلیسی: computer programming) همان فرایند طراحی و ساخت یک برنامه رایانهای اجراپذیر برای بهدستآوردن یک نتیجه رایانشی خاص، یا انجام یک عمل خاص میباشد. برنامهنویسی شامل عملهایی مثل: تحلیل، ایجاد الگوریتمها، رخنمانگاری دقت الگوریتمها و مصرف منابع و پیادهسازی آن الگوریتمها به یک زبان برنامهنویسی انتخاب شدهاست (که معمولاً به آن کدگذاری (coding) گفته میشود). کد منبع یک برنامه به یک یا بیشتر زبان نوشته میشود که این زبان برای «برنامهنویس» قابل فهم است (به جای کد ماشین که به صورت مستقیم توسط واحد پردازش مرکزی اجرا میشود). هدف از برنامهنویسی، پیداکردن ترتیبی از دستورالعملها است که انجام یک عمل را در یک رایانه، معمولاً برای حلکردن یک برنامه داده شده، خودکارسازی میکند (که میتواند تا حد یک سیستمعامل پیچیده باشد). بنابراین، یک برنامهنویسی حرفهای نیاز به مهارت در چندین موضوع متفاوت دارد، که شامل دانش دامنه کاربردی، الگوریتمهای خاص و منطق صوری است.
برنامهنویسی بهطور خلاصه یعنی تعیین یک سری دستور برای اجرا شدن توسط رایانه به منظور رسیدن به هدفی دلخواه.
مقاله اصلی: زبان برنامهنویسی زبانهای مختلف برنامهنویسی وجود دارند که هر کدام از آنها سبکهای خاصی را پشتیبانی میکنند (به نام پارادایمهای برنامهنویسی). انتخاب زبان مورد استفاده، مورد توجه بسیاری از مباحث از قبیل خط مشی شرکت، مناسب بودن در انجام کار، در دسترس بودن بستههای شخص ثالث یا ترجیح شخصی است. در حالت ایدئال، زبان برنامهنویسی که برای کار مورد نظر مناسبتر باشد، انتخاب میشود.
تجارت از این ایدئال شامل یافتن برنامه نویسان به اندازه کافی است که زبان را برای ایجاد یک تیم میشناسند، در دسترس بودن کامپایلرها برای آن زبان و کارایی که برنامههای آنها را با یک زبان خاص اجرا میکنند. زبانها طیف تقریبی را از «سطح پایین» تا «سطح بالا» تشکیل میدهند.
زبانهای «سطح پایین» بهطور معمول بیشتر دستگاه محور و سریعتر اجرا میشوند و به زبان ماشین نزدیکتر هستند در حالی که زبانهای «سطح بالا» انتزاعیتر و آسانتر برای استفاده هستند اما سرعت کمتری دارند. معمولاً کدگذاری به زبانهای «سطح بالا» از زبانهای «سطح پایین» سادهتر است. برای نمونه پایتون زبانی سادهتر و سریع تر برای نوشتن و سی زبانی اصولی تر و زمانبر تر برای نوشتن میباشد.
آلن داونی در کتاب «چگونه به شکل یک استاد رایانه فکر کنیم» مینویسد:
جزئیات در زبانهای برنامهنویسی مختلف، متفاوت به نظر میرسند ولی تعدادی از ساختارهای اساسی در همه زبانهای برنامهنویسی یکسان هستند:
ورودی: دادهها را از صفحه کلید، یک فایل یا وسایل دیگر فراهم میکند.
خروجی: اطلاعات را روی صفحه تصویر نشان میدهد، به یک فایل میفرستد یا به دستگاههای دیگری انتقال میدهد.
محاسبات: اعمال محاسباتی اساسی مثل جمع و ضرب را انجام میدهد.
حالتهای شرطی: شرطهای مشخصی را کنترل میکند و بر اساس آن رشته مناسبی از عبارات را اجرا میکند.
حلقه: بعضی اعمال را به شکل تکراری انجام میدهد، معمولاً با استفاده از تعدادی متغیرها این کار انجام میشود.
بسیاری از زبانهای برنامهنویسی مکانیسمهایی را برای تماس با توابع ارائه شده توسط کتابخانههای مشترک فراهم میکنند. مشروط بر اینکه توابع موجود در یک کتابخانه از کنوانسیونهای زمان اجرا مناسب پیروی کنند (مثلاً روش گذراندن آرگومانها)، ممکن است این توابع به هر زبان دیگری نوشته شود.
چند مورد از زبانهای برنامهنویسی: سی شارپ (#C)، سی (C)، ++C، پایتون (Python)، جاوا (Java)، جاوا اسکریپت (Java Script) و …؛ اینها فقط چند نمونه از زبانهای برنامهنویسی هستند.