برنامه‌نویس

**برنامه‌نویس رایانه**، **توسعه‌دهنده**، **کدنویس** یا **مهندس** **نرم‌افزار** متخصصی است که نرم‌افزار رایانه می‌نویسد. عبارت برنامه‌نویس رایانه می‌تواند به یک متخصص در زمینه‌ای از برنامه‌نویسی یا یک شخص دارای سررشته، که برای بسیاری از نرم‌افزار‌های مختلف کد می‌نویسد، اشاره کرد. شخصی که یک روش رسمی برای برنامه‌نویسی تمرین یا تدریس می‌کند، همچنین می‌تواند به‌عنوان تحلیل‌گر برنامه‌نویس (هکر یا متخصص امنیت) شناخته شود.

برخی از زبان‌های برنامه‌نویسی محبوب: پی‌اچ‌پی (PHP)، پایتون (Python)، سی (C)، سی‌شارپ (C#)، سی‌پلاس‌پلاس (C++)، جاوا (Java)، جاوا اسکریپت (JavaScript)، گو (Go) و غیره هستند.

عبارت برنامه‌نویس می‌تواند برای اشاره به یک توسعه‌دهندهٔ نرم‌افزار، توسعه‌دهندهٔ وب، توسعه‌دهندهٔ اپلیکیشن‌های تلفن همراه، مهندس نرم‌افزار، دانشمند رایانه یا تحلیل‌گر نرم‌افزار نیز به کار برده شود.

[بندانگشتی|200px|[ایدا لاولیس به‌عنوان نخستین برنامه‌نویس رایانه شناخته می‌شود.]]
ایدا لاولیس، ریاضی‌دان و کنتس انگلیسی  نخستین برنامه‌نویس رایانه به‌شمار می‌آید. او در اکتبر ۱۸۴۲ برای نخستین بار یک الگوریتم را به منظور پیاده‌سازی روی موتور تحلیلی چارلز ببیج، جهت محاسبهٔ عدد برنولی نوشته و منتشر کرد. اما به دلیل این که ماشین بابیج در زمان لاویس برای عملکرد استاندارد کامل نشده بود، وی هرگز موفق نشد تا اجرای الگوریتم خود را ببیند.

نخستین بار در سال ۱۹۴۱، دانشمند رایانه کنراد تسوزه یک برنامه را بر اساس عملکرد الکترونیکی مدرن مبتنی بر رایانه اجرا کرد.

تیم برنامه‌نویسی انیاک، شامل کاتلین انتونلی، ژان بارتیک، بتی هالبرتن، مارلین ملتزر، فرانسیس اسپنس و روث تیتلبام نخستین اشخاصی بودند که به‌طور منظم برنامه‌نویسی می‌کردند.

روز بین‌المللی و جهانی برنامه‌نویسان هر ساله در روز ۷ ژانویه جشن گرفته‌می‌شود. در سال ۲۰۰۹، دولت روسیه فرمان داد تا هر سال یک روز تعطیل رسمی که با نام روز برنامه‌نویسان شناخته می‌شود در ۱۳ سپتامبر (۱۲ سپتامبر در سال‌های کبیسه) جشن گرفته شود. این روز همچنین پیش از آن یک روز تعطیل بین‌المللی غیررسمی بوده‌است.

## ماهیت کار

برنامه‌نویس‌ها می‌نویسند، آزمایش می‌کنند، اشکال‌زدایی می‌کنند و از دستورالعمل‌های دقیق، که برنامه‌های رایانه‌ای گفته می‌شوند و رایانه باید از آن‌ها برای اجرا توابع‌شان پیروی کند، نگهداری می‌کنند. برنامه‌نویس‌ها همچنین تصور می‌کنند، طراحی می‌کنند و ساختارهای منطقی را برای برطرف کردن اشکال‌ها توسط رایانه آزمایش می‌کنند. بسیاری از نوآوری‌های فنی در برنامه‌نویسی — فناوری‌های رایانش پیشرفته، زبان‌های تازه پیچیده و ابزارهای برنامه‌نویسی — نقش برنامه‌نویس را دوباره تعریف کرده‌اند و بسیاری از کارهای برنامه‌نویسی که امروزه انجام می‌شوند را بسیار بهتر کرده‌اند. عنوان‌های شغلی و توصیف‌ها با توجه به آن سازمان ممکن است متفاوت باشند.

برنامه‌نویس‌ها در بسیاری از محیط‌ها، از جمله بخش‌های سازمان فناوری اطلاعات، شرکت‌های نرم‌افزاری بزرگ، شرکت‌های خدمت‌رسانی کوچک و نهادهای دولتی کار می‌کنند. بسیاری از برنامه‌نویس‌های حرفه‌ای همچنین برای شرکت‌های مشاوره‌ای در محل‌های خدمت گیرنده به عنوان پیمانکار کار می‌کنند. اجازه‌نامه به‌طور معمول برای کار کردن به عنوان یک برنامه‌نویس نیاز نیست، اگرچه گواهی‌نامه‌های حرفه‌ای به‌طور معمول توسط برنامه‌نویس گرفته می‌شوند. برنامه‌نویسی به‌طور گسترده یک حرفه در نظر گرفته‌می‌شود (هرچند بعضی از مقامات در مورد این اساس که فقط شغل‌هایی که پروانهٔ قانونی نیاز دارند به عنوان یک حرفه به حساب آیند اختلاف نظر دارند).

کار برنامه‌نویس‌ها به‌طور گسترده‌ای بسته به نوع کسب و کاری که آن‌ها برای آن برنامه می‌نویسند متفاوت است. برای نمونه، دستورالعمل‌های درگیر در به‌روزرسانی سوابق مالی بسیار متفاوت از تکثیر کردن شرایط در یک هواپیما برای آموزش خلبانان در یک شبیه‌ساز پرواز هستند. برنامه‌های ساده می‌توانند در چند ساعت نوشته شوند، آنهایی که پیچیدگی بیشتری دارند ممکن است بیش از یک سال کار نیاز داشته باشند، این در حالی است که دیگر برنامه‌ها هرگز 'کامل' در نظر گرفته نمی‌شوند بلکه به‌طور مداوم تا زمانی که از آن‌ها استفاده می‌شود بهبود می‌یابند. در بیشتر موارد، چندین برنامه‌نویس با یکدیگر زیر نظر یک برنامه‌نویس ارشد به عنوان یک تیم کار می‌کنند.

برنامه‌نویس‌ها مطابق مشخصات فنی که در درجهٔ اول توسط برنامه‌نویس‌های ارشد و تحلیل‌گرهای سیستم بیشتر تعیین شده‌اند برنامه می‌نویسند. پس از تکمیل فرایند طراحی، کار برنامه‌نویس است که آن طراحی را به دنباله‌های منطقی از دستورالعمل‌هایی که رایانه بتواند پیروی کند تبدیل کند. برنامه‌نویس کد این دستورالعمل‌ها را به یکی از بسیار زبان برنامه‌نویسی می‌نویسد. زبان‌های برنامه‌نویسی گوناگون بسته به هدف برنامه استفاده می‌شوند. کوبول برای نمونه، به‌طور معمول برای اپلیکیشن‌های تجاری که معمولاً روی بزرگ‌رایانه و رایانهٔ کوچک اجرا می‌شوند استفاده می‌شود؛ در حالی که، فرترن در علم و مهندسی استفاده می‌شود. سی++ به‌طور گسترده برای هر دو اپلیکیشن‌های علمی و تجاری کاربرد دارد. جاوا، سی شارپ، ویژوال بیسیک و پی‌اچ‌پی زبان‌های برنامه‌نویسی محبوبی برای وب و نرم‌افزارهای کاربردی تجاری هستند. برنامه‌نویس‌ها عموماً بیش از یک زبان برنامه‌نویسی می‌دانند، و چون بیشتر زبان‌ها مشابه یکدیگر هستند، اغلب نسبتاً به آسانی زبان‌های تازه را فرا می‌گیرند. در عمل، برنامه‌نویس‌ها اغلب با زبانی که می‌دانند نسبت داده می‌شوند، برای نمونه *برنامه‌نویس‌های جاوا*، یا با نوع وظیفه‌ای که انجام می‌دهند یا محیطی که در آن کار می‌کنند، برای نمونه، *برنامه‌نویس‌های [[پایگاه داده‌ها]]*، *برنامه‌نویس‌های بزرگ‌رایانه* یا * [[توسعه‌دهنده وب|توسعه‌دهنده‌های وب]].

زمانی که در [[کد منبع]]، چیزی که برنامه‌ها از آن ساخته شده‌اند تغییر ایجاد شود، برنامه‌نویس‌ها باید دیگر برنامه‌نویس‌ها را از وظیفه‌ای که روزمره انجام می‌شود آگاه کنند. آن‌ها این کار را با نوشتن توضیحات در کد منبع و [[مستندسازی نرم‌افزار|مستندسازی کدشان]] انجام می‌دهند؛ بنابراین، دیگر برنامه‌نویس‌ها برنامه را با آسانی بیشتر درک می‌کنند. برای صرفه‌جویی در کار، برنامه‌نویس‌ها اغلب از [[کتابخانه (رایانه)|کتابخانه‌های]] کد پایه که می‌توانند تغییر یابند یا برای نرم‌افزار کاربردی مشخص سفارشی شوند استفاده می‌کنند. نتیجهٔ این روش برنامه‌های قابل اطمینان و سازگارتر است و همین‌طور سودمندی برنامه را با حذف برخی از مرحله‌های روزمره افزایش می‌دهد.

=== آزمون و اشکال‌زدایی ===
برنامه‌نویس‌ها برنامه را بارها اجرا می‌کنند و به دنبال [[اشکال نرم‌افزاری|اشکال‌های نرم‌افزاری]] و خطاهای احتمالی می‌گردند. زمانی که اشکال‌ها مشخص شدند، برنامه‌نویس معمولاً اصلاحات مناسب را ایجاد می‌کند، سپس برنامه را دوباره تا وقتی که یک سطح پایین و شدت قابل قبول از اشکال‌ها باقی بماند بررسی می‌کند. این فرایند را [[تست نرم‌افزار|آزمودن]] و [[اشکال‌زدایی]] می‌گویند. این‌ها بخش‌های مهم از وظیفهٔ هر برنامه‌نویس است. برنامه‌نویس‌ها می‌توانند به برطرف کردن این اشکال‌ها در سراسر چرخهٔ زندگی یک برنامه ادامه دهند. به‌روزرسانی، تعمیر، ویرایش و گسترش برنامه‌های موجود را *تعمیر و نگهداری* می‌گویند. برنامه‌نویس‌ها می‌توانند به تولید [[راهنمای کاربر|راهنماهای کاربر]] و [[راهنمای آنلاین|راهنمای برخط]] بپردازند، یا با نویسندهٔ فنی برای انجام چنین کاری همکاری کنند.

=== برنامه‌نویسی نرم‌افزار کاربردی در مقابل برنامه‌نویسی سیستم ===
برنامه‌نویس‌های رایانه اغلب به دو گروه گسترده تقسیم می‌شوند: برنامه‌نویس‌های نرم‌افزار کاربردی و برنامه‌نویس‌های سیستم. برنامه‌نویس‌های نرم‌افزار کاربردی برنامه‌هایی می‌نویسند تا به وظیفه مشخصی رسیدگی کنند، مانند برنامه‌ای برای پیگیری سیاهه در یک سازمان. این گروه از برنامه‌نویس‌ها همچنین می‌توانند نرم‌افزار بسته‌بندی‌شده را اصلاح کنند یا نرم‌افزارهای کاربردی عمومی را که مکرراً از فروشنده‌های نرم‌افزار مستقل خریداری می‌شوند سفارشی کنند. در حالی که، برنامه‌نویس‌های سیستم، برنامه‌هایی برای نگهداری و بررسی نرم‌افزار سیستم‌های رایانه‌ای می‌نویسند. مانند [[سیستم‌عامل|سیستم‌های عامل]] و [[پایگاه داده‌ها|سامانه‌های مدیریت پایگاه داده‌ها]]. این گروه از برنامه‌نویس‌ها در دستورالعمل‌هایی که مشخص می‌کنند چگونه شبکه، پایانه‌های رایانه رومیزی (معمولاً شبکه شده و قدرتمندتر از [[رایانه شخصی]] هستند)  و [[واحد پردازش مرکزی]] سیستم وظیفه‌های گوناگونی که به آن‌ها داده شده‌اند را رسیدگی می‌کنند و چگونه با تجهیزات جانبی مانند [[چاپگر]]ها و [[دیسک‌گردان]] ارتباط برقرار می‌کنند تغییر ایجاد می‌کنند.

== جستارهای وابسته ==
* [[روز برنامه‌نویسان]]
* [[برنامه‌نویس بازی]]
* [[فرایند توسعه نرم‌افزار]]
* [[مهندسی نرم‌افزار]]
* [[مدیر سیستم]]
* [[توسعه وب]]

== پانویس ==


== منابع ==
* 

== برای مطالعهٔ بیشتر ==

* [[Gerald Weinberg|Weinberg, Gerald M.]], *The Psychology of Computer Programming*, New York: Van Nostrand Reinhold, 1971
* An experiential study of the nature of programming work: Lucas, Rob. [http://www.newleftreview.org/?view=2836 "Dreaming in Code"] *New Left Review'' 62, March–April 2010, pp. ۱۲۵–۱۳۲.

## پیوند به بیرون

* "The Future of IT Jobs in America" article
* How to be a programmer - An overview of the challenges of being a programmer
* The US Department of Labor's description of "Computer Programmers"

رده:افراد در فناوری اطلاعات
رده:برنامه‌نویسان رایانه
رده:برنامه‌نویسی
رده:مشاغل رایانه‌ای
رده:واژگان رایانه
رده:ویژوال استودیو

__نمایه__
رده:صنعت نرم‌افزار