**Компјутерски програмер**, понекогаш наречен **развивач** на **софтвер**, **програмер** или неодамна **кодер** (особено во повеќе неформални контексти), е лице кое создава компјутерски софтвер. Терминот *компјутерски програмер* може да се однесува на специјалист во една област на компјутери или на генералист кој пишува код за многу видови на софтвер.

Најчесто користениот компјутерски јазик на програмерот (на пр. Assembly, COBOL, C, C ++, C #, JavaScript, Lisp, Python ) може да биде префиксиран во терминот *програмер*. Некои кои работат со веб-програмски јазици, исто така, ги префиксираат своите наслови со *веб* .

Историја
--------

 Многумина сметаат дека Ада Ловлејс е првиот компјутерски програмер.
Британската грофица и математичарка Ада Ловлејс честопати се смета за прва компјутерска програмерка. Таа била првата која објавила дел од програма (поточно алгоритам ) наменета за имплементација на анатлитичкиот мотор на Чарлс Бејбиџ, во октомври 1842 година. Истиот тој алгоритм бил искористен за пресметување на Бернули броевите. Но, во времето на Ловелас, машината Бејбиџ никогаш не била завршена како стандард за функционирање. Па така, Ада Ловлејс никогаш немала можност да го види алгоритамот на дело.

Првиот научник кој направил програма на функционален, модерен, електронски компјутер, бил компјутерскиот научник Конрад Зусе, во 1941 година.

Програмскиот тим ENIAC, составен од Кеј МекНолто, Бети Џенингс, Бети Снајдет, Марлин Вескоф, Фран Билас и Рут Лихтерман беа првите редовно програмери кои работеа.

Софтверска индустрија
---------------------

Првата компанија основана која специјално имала за цел да обезбеди софтверски производи и услуги е Компанијата за употреба на компјутер во 1955 година. Пред тоа време, компјутерите биле програмирани или од клиенти или од неколкуте комерцијални производители на компјутери во тоа време, како што биле Спери Ранд и ИБМ .

Софтверската индустрија се проширила во раните 1960-ти, скоро веднаш откако компјутерите за почеток биле продавани во масовно произведени количини. Универзитетите, владите и деловните субјекти создадоа побарувачка за софтвер. Многу од овие програми беа напишани од програмери во склоп на самите фирми; некои беа дистрибуирани помеѓу корисниците на одредена машина без наплата за истото, додека други се продаваа на комерцијална основа. Други фирми, како што е Корпорацијата за компјутерски науки (основана во 1959 година), исто така, започнаа да растат. Производителите на компјутери наскоро започнаа да комбинираат оперативни системи, системскиот софтвер и околини погодни за програмирање со нивните направи.[]
[  ]
Индустријата се прошири со зголемувањето на личниот сметач (компјутер) во средината на 1970-тите, што му донесе компјутер на просечниот канцелариски работник. Во следните години, компјутерот исто така помогна да се создаде постојано растечки пазар за игри, апликации и софтверски услуги.[]
[  ]
Во раните години на 21 век, се појави уште еден успешен деловен модел за хостиран софтвер, наречен софтвер како услуга или SaaS. Од гледна точка на производителите на некој комерцијален софтвер, SaaS ги намалува загриженоста за неовластено копирање, бидејќи може да се пристапи само преку Интернет, и по дефиниција, ниту еден софтвер на клиент не е вчитан на компјутерот на крајниот корисник. SaaS обично работи надворешно, односно на облак (cloud) .[]
[  ]

Природа на работата
-------------------

Компјутерските програмери пишуваат, испробуваат, отстрануваат грешки и одржуваат детални упатства, наречени компјутерски програми, што компјутерите мора да ги следат за да ги извршуваат своите функции. Програмерите, исто така, замислуваат, дизајнираат и испробуваат логички структури за решавање проблеми преку компјутер. Многу технички иновации во програмирањето - напредни компјутерски технологии и софистицирани нови јазици и програмски алатки - ја редефинираа улогата на програмер и подигнаа голем дел од програмската работа направена денес. Насловите и описите на работните места може да се разликуваат, во зависност од организацијата.

Програмерите работат во многу поставки, вклучително и оддели за корпоративна информатичка технологија (ИТ), големи софтверски компании, мали фирми за услуги и владини субјекти од сите големини. Многу професионални програмери работат и за консултантски компании на страници на клиенти како изведувачи.. Лиценца обично не е потребна за работа како програмер, иако обично програмерите поседуваат професионални сертификати. Програмирањето нашироко се смета за професзија (иако некои  власти не се согласуваат со образложение дека само професии со законски услови за лиценцирање се сметаат како професија).

Работата на програмерите варира во голема мера во зависност од видот на бизнисот за кој пишуваат програми. На пример, упатствата вклучени во ажурирање на финансиските записи се многу различни од оние што се потребни за удвојување на условите во авионот за пилотите што тренираат во симулатор на лет. Едноставни програми може да се напишат за неколку часа, за покомплексни може да биде потребно повеќе од една година работа, додека други никогаш не се сметаат за „целосни", туку се подобруваат континуирано сè додека остануваат во употреба. Во повеќето случаи, неколку програмери работат заедно како тим под надзор на постар и поискусен програмер.[]
[  ]

 Софтверски инженер кој пишува JavaScript
Програмерите пишуваат програми според спецификациите утврдени првенствено од постари програмери и од системски аналитичари. Откако ќе заврши процесот на дизајнирање, задачата на програмерот е да го претвори тој дизајн во логичка серија инструкции што компјутерот може да ги следи. Програмерот ги кодира овие упатства на еден од многуте програмски јазици. Различни програмски јазици се користат во зависност од целта на програмата COBOL, на пример, најчесто се користи за деловни апликации кои обично работат на главни и средни компјутери, додека Fortan се користи во науката и инженерството. C ++ и Python се широко користени и за научни и за деловни апликации. Java, C #, JS и PHP се популарни програмски јазици за веб и деловни апликации. Програмерите генерално знаат повеќе од еден програмски јазик и, бидејќи многу јазици се слични, тие често можат релативно лесно да учат нови јазици. Во пракса, програмерите честопати се повикуваат од јазикот што го знаат, на пр. Како *Java програмери*, или според видот на функцијата што ја извршуваат или околината во која работат: на пример, *програмери за бази на податоци*, *мрежни програмери* или развивачи на веб.[]
[  ]
Кога правите измени во изворниот код од кој се составени програмите, програмерите треба да ги информираат другите програмери. Тие го прават ова со вметнување коментари во изворниот код за другите да можат полесно да ја разберат програмата или можат да ги информираат со дкументирање на нивниот код. За да заштедат работа, програмерите често користат библиотеки со основен код што може да се модифицира или прилагоди за одредена апликација. Овој пристап дава посигурни и поконзистентни програми и ја зголемува продуктивноста на програмерите со елиминирање на некои рутински чекори.[]
[  ]

### Испробување и отстранување на грешки

Програмерите испробуваат програма со тоа што ја извршуваат и бараат грешки. Како што се идентификувани, програмерот обично ги прави соодветните исправки, а потоа ја проверува програмата сè додека не остане прифатливо ниско ниво и сериозноста на грешките. Овој процес се нарекува испробување и отрастранување на грешки (debugging). Овие се важни делови од работата на секој програмер. Програмерите може да продолжат да ги решаваат овие проблеми во текот на целиот животен век на програмата. Ажурирање, поправка, изменување и проширување на постојните програми понекогаш се нарекува *програмирање за одржување*. Програмерите може да придонесат за изработување на упатства за корисници, онлај помош или можр да работат со технички писатели за да извршат таква работа.

### Апликација наспроти системско програмирање

Компјутерските програмери често се групираат во два широка типа: програмери за апликации и програмери за системи. Програмерите за апликации пишуваат програми за управување со одредена работа, како што е програма за следење на залихите во рамките на една организација. Тие исто така можат да го ревидираат постојниот спакуван софтвер или да прилагодат генерички апликации кои често се купуваат од независни продавачи на софтвер. За разлика од нив, програмерите на системи пишуваат програми за одржување и контрола на софтвер за компјутерски системи, како што се оперативни системи и системи за управување со бази на податоци. Овие работници прават промени во упатствата што одредуваат како мрежата, работните станици и обработувачот на системот се справуваат со различните работни задачи што им се дадени и како тие комуницираат со периферната опрема како што се печатачи и дискови (drives).

### Квалификации и вештини

Програмер треба да има техничка експертиза со одредени аспекти на компјутерите. Некои позиции бараат диплома во соодветна област како што се компјутерски науки, информатичка технологија, инженерство, програмирање или други сродни студии. Идеален програмер е оној кој поседува практично искуство со клучни програмски јазици како што се C ++, C #, PHP, Java, C, JavaScript, Visual Basic, Python и Smalltalk .

### Видови на софтвер

Програмерите можат да работат директно со експерти од различни области за да создадат софтвер - или програми дизајнирани за специфични клиенти или спакуван софтвер за општа употреба - почнувајќи од видео игри до образовен софтвер до програми за објавување на десктоп или финансиски апликации. Програмирањето на спакуваниот софтвер претставува еден од најбрзо растечките сегменти на индустријата за компјутерски услуги. Некои компании или организации - дури и мали - формираат сопствен ИТ тим за да обезбедат дизајн и развој на внатрешен софтвер за да одговорат на многу специфични потреби од нивните внатрешни крајни корисници, особено кога постојниот софтвер не е соодветен или премногу скап. Ова е, на пример, случај во лабораториите кои служат за истражување.[]
[  ]
Во некои организации, особено во малите, луѓето попознати како *аналитичари на програмери* се одговорни и за анализата на системите и за реалното работење на програмирањето. Преминувањето од средина на главната рамка во она што се заснова првенствено на лични сметачи (лични сметачи) ја замагли некогаш крутата разлика помеѓу програмерот и корисникот. Сè повеќе, вештите крајни корисници преземаат многу од задачите што претходно ги вршеле програмерите. На пример, зголемената употреба на спакуван софтвер, како што се табеларни пресметки и софтверски пакети за управување со бази на податоци, им овозможува на корисниците да напишат едноставни програми за пристап до податоци и да вршат пресметки.[]
[  ]
Покрај тоа, подемот на Интернет го направи веб развојот огромен дел од полето за програмирање. Во моментов, повеќе софтверски апликации се семрежни прилози што може да ги користи секој со прелистувач .[] Примери за такви апликации вклучуваат услугата за пребарување на Google, услугата за е-пошта Outlook.com и услугата за споделување на фотографии Flickr.

Програмски уредници, познати и како уредници на изворни кодови, се уредници на текст кои се специјално дизајнирани за програмери или програмери за пишување на изворниот код на апликација или програма. Повеќето од овие уредници вклучуваат функции корисни за програмери, кои можат да вклучуваат обележување на синтаксата во боја, автоматско вдлабнување, звтоматско пополнување, совпаѓање на заградата, проверка на синтаксата како и дозвола на додатоци. Овие одлики им помагаат на корисниците за време на кодирање, отстранување на грешки и испробување.

Глобализација
-------------

Според БиБиСи Newsуз, 17% од студентите по компјутерски науки не можеле да најдат работа во својата област 6 месеци по дипломирањето во 2009 година, што е највисока стапка од испитаните универзитетски теми, додека 0% од студентите по медицина се невработени во истото истражување.

### Промени на пазарот во САД

По падот на точка-ком меурот (dot-com bubble) (1999–2001), многу американски програмери останаа без работа или со пониски плати. Покрај тоа, запишувањето на дипломи поврзани со компјутер во САД опаѓа со години, особено кај жените , што, според Бобуф и Мејсон  може да се припише на недостаток на општ интерес за наука и математика, а исто така и надвор од очигледен страв дека програмирањето ќе биде подложено на истите притисоци како кариерата во производството и земјоделството. Американското биро за статистика на трудот Професионални изгледи 2016-26 покажува пад од 7 проценти и пад од 9 проценти од 2019 до 2029 година.

Поврзано
--------

* Програмер за игри
* Список на програмери
* Процес на развој на софтвер
* Инженерство на софтвер
* Администратор на системот

Користена литература
--------------------

1. 1 2  Fuegi, J.; Francis, J. (October–December 2003). „Lovelace & Babbage and the creation of the 1843 'notes'". *IEEE Annals of the History of Computing*. **25** (4): 16–26. doi:10.1109/MAHC.2003.1253887.
2. ↑  „Memorials". Eniacprogrammers.org. Посетено на 2018-10-11.
3. ↑  „ABC News: First Computer Programmers Inspire Documentary". Abcnews.go.com. 2007-12-04. Посетено на 2010-10-03.
4. ↑  Elmer C. Kubie (Summer 1994). „Recollections of the first software company". *Annals of the History of Computing*. **16** (2): 65–71. doi:10.1109/85.279238.
5. 1 2 3  „Computer Programmers : Occupational Outlook Handbook: : U.S. Bureau of Labor Statistics". *www.bls.gov*.
6. ↑  „BBC Bitesize - GCSE Computer Science - Programming software and the IDE - Revision 4". *www.bbc.co.uk* (англиски). Посетено на 2017-09-16.
7. ↑  Shankleman, Martin (1 July 2010). „'One in 10' UK graduates jobless".
8. ↑  Mann, Amar; Nunes, Tony (August 2009). „After the Dot-Com Bubble: Silicon Valley High-Tech Employment and Wages in 2001 and 2008" (PDF). *Regional Report, U.S. Bureau of Labor Statistics*: 1–8. Посетено на 29 September 2020.
9. ↑
10. ↑  Theresa Beaubouef and John Mason, Why the high attrition rate for computer science students: some thoughts and observations. ACM SIGCSE Bulletin, 2005