Programista

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj

Programista, zwany też potocznie koderem to osoba, która tworzy programy komputerowe w pewnym języku programowania. Termin ten może odnosić się także do specjalisty w jednej dziedzinie programowania. Większość programistów zna co najmniej kilka języków programowania (np. C, C++, Java), lecz specjalizuje się tylko w wybranych z nich. Nazwa głównego języka jest często dodawana do nazwy stanowiska, np. programista C++, aby podkreślić specjalizację.

Mianem programistów określa się czasami projektantów oprogramowania, inżynierów oprogramowania czy analityków systemowych. Jest to jednak pewne uproszczenie, ponieważ zawody te wymagają wielu innych umiejętności, oprócz samego programowania. O ile podział ten jest dobrze zarysowany za granicą[1][2][3], w Polsce panuje większa swoboda w wyborze nazw zawodu[potrzebne źródło].

Ada Lovelace jest uważana za pierwszą programistkę (osobę programującą) w dziejach.

Powszechnie uważa się, że pierwszym programistą w historii była Ada Lovelace. W październiku 1842 roku jako pierwsza wyraziła ona algorytm w formie instrukcji przeznaczonych do wykonania na komputerze, którym miała być maszyna analityczna budowana w XIX wieku przez Charlesa Babbage[4]. Ponieważ projekt nigdy nie został ukończony, nie mogła ona zweryfikować działania swojego programu. Pierwszą osobą, która stworzyła i uruchomiła program na komputerze był Konrad Zuse w 1941 roku. Z kolei Kay McNulty, Betty Jennings, Betty Snyder, Marlyn Wescoff, Fran Bilas oraz Ruth Lichterman pracujące przy projekcie ENIAC były pierwszymi etatowymi programistkami świata[5].

Międzynarodowy Dzień Programisty jest obchodzony 13 września, a w roku przestępnym 12 września[6].

Aspekty pracy programisty[edytuj | edytuj kod]

Historia[edytuj | edytuj kod]

Programowanie komputera ENIAC w latach 40. XX wieku.

Metody pracy programistów ewoluują wraz z rozwojem techniki. Programowanie pierwszego amerykańskiego elektronicznego komputera ENIAC wiązało się z przełączaniem setek styków i obwodów elektrycznych między poszczególnymi modułami, co było czasochłonne i prowadziło do dużej liczby błędów. Niemiecki konstruktor Konrad Zuse w swoich pierwszych komputerach Z1 oraz Z3 z 1937 i 1941 roku zastosował z kolei wczytywanie kolejnych instrukcji programu z ośmiokanałowej taśmy perforowanej, którą należało wcześniej odpowiednio przygotować. Aż do lat 80. w powszechnym użyciu były karty dziurkowane, na które programista wprowadzał kolejne partie kodu programu, a następnie ładował do pamięci komputera poprzez specjalny czytnik.

Początkowo programiści tworzyli programy bezpośrednio w kodzie maszynowym danego komputera, operując sekwencjami liczb. Poszczególne komendy zaczęto szybko wyrażać w językach asemblerowych, w których zamiast liczbowego kodu rozkazu można było stosować ich symboliczną, czytelną nazwę (np. ADD). Przed uruchomieniem takiego programu należało przetłumaczyć nazwy poszczególnych rozkazów na ich reprezentację liczbową i w takiej postaci wprowadzić do pamięci maszyny.

Projekt pierwszego tzw. języka wysokiego poziomu, Plankalkül przedstawił Konrad Zuse w swojej publikacji z 1948 roku wydrukowanej w czasopiśmie Archiv der Mathematik. Proponował on, aby zrezygnować ze stosowania rozkazów maszynowych na rzecz bardziej naturalnego zapisu, np. a + b, lecz jego koncepcja przeszła bez echa. W 1956 roku opublikowany został podręcznik języka Fortran, pierwszego języka wysokopoziomowego, który odniósł sukces i jest stosowany do dnia dzisiejszego. Pierwszy kompilator Fortranu powstał rok później.

Na lata 60., 70. i 80. przypada rozwój zarówno sprzętu komputerowego, jak i języków programowania. W 1977 firma Apple wypuściła na rynek pierwszy kompletny komputer osobisty, który mieścił się na jednym biurku, otwierając tym samym drogę do przemysłu informatycznego rzeszom nowych ludzi. W tamtych czasach oprogramowanie komputerowe nie było przystosowane do prostoty użytkowania, dlatego praca z komputerem bardzo często rodziła potrzebę samodzielnego tworzenia programów. Co więcej, wiele programów w tamtych czasach było dziełem jednej bądź dwóch osób, zatem praktycznie każdy, kto miał odpowiednie zdolności i ciekawy pomysł, mógł stworzyć coś rewolucyjnego.

Wraz ze wzrostem stopnia złożoności programów nad projektem musiało pracować coraz więcej programistów, a jednocześnie musieli oni rozumieć dużo większą ilość kodu. Kolejna rewolucja nadeszła wraz z upowszechnieniem się sieci komputerowych, które umożliwiły łatwiejsze dzielenie się swoimi poprawkami oraz pracę grupową.

Praca programisty obecnie[edytuj | edytuj kod]

Współcześni programiści pracują najczęściej w dobrze wyposażonych biurach lub laboratoriach komputerowych ze sprzętem niezbędnym do testowania aplikacji. Inżynierowie oprogramowania często podróżują, aby spotykać się z klientami. W powszechnym użyciu są telekonferencje oraz praca zdalna, ponieważ postęp technologiczny umożliwia wykonywanie coraz większej ilości zadań bez konieczności przebywania w biurze.

W zależności od obszaru specjalizacji programistów można podzielić na dwie główne grupy:

  • programiści aplikacji - zajmują się tworzeniem aplikacji komputerowych realizujących określone zadanie, np. wspomaganie zarządzania przedsiębiorstwem,
  • programiści systemowi - rozwijają aplikacje oraz systemy nadzorujące pracę sprzętu komputerowego, np. systemy operacyjne, sterowniki, czy systemy zarządzania bazami danych.

Wraz z rozwojem sieci WWW pojawiło się także zapotrzebowanie na programistów specjalizujących się w tworzeniu aplikacji działających w środowisku WWW.

Testowanie i debugowanie[edytuj | edytuj kod]

Osobnym aspektem pracy programisty jest zapewnienie odpowiedniej niezawodności tworzonego oprogramowania. W trakcie tworzenia popełnianie błędów jest nieuniknione - mogą być one wynikiem zarówno braku niezbędnych umiejętności, jak i pomyłek podczas pisania. Proces wyszukiwania i usuwania błędów w oprogramowaniu nazywa się debugowaniem. Usuwanie błędów nie jest czynnością wykonywaną jeden raz, lecz procesem trwającym przez cały okres życia programu w miarę, jak jest on rozwijany, a jego kod porządkowany.

Jedną z technik znajdowania błędów jest systematyczne testowanie oprogramowania, zarówno w sytuacjach rzeczywistych, jak i przy pomocy zestawów syntetycznych testów weryfikujących poszczególne komponenty. Dzięki automatycznym środowiskom testowym, mogą być one wykonywane bezpośrednio przez komputer posiadający opis czynności do wykonania i znający oczekiwany rezultat każdego testu. Wszelkie niezgodności są raportowane programistom jako miejsca potencjalnych błędów.

Organizacja procesu testowania może leżeć poza kompetencjami zespołu tworzącego oprogramowanie. Firmy powierzają to zadanie pracownikom zwanym testerami, którzy kontrolują na bieżąco jakość tworzonego oprogramowania już od etapu projektowania, a także zajmują się tworzeniem testów[7].

Narzędzia[edytuj | edytuj kod]

Programista tworzy oprogramowanie w środowisku komputerowym umożliwiającym jego uruchamianie i testowanie. Podstawową jego częścią jest Edytor kodu źródłowego oraz interpreter lub kompilator odpowiedniego języka programowania. Do wykrywania błędów używane są debugery pozwalające śledzić działanie programu linijka po linijce oraz stan pamięci. Część tworzonych programów wyposażana jest w dodatkowe funkcje umożliwiające łatwiejszą diagnozę pojawiających się problemów. Wszystkie narzędzia mogą być od siebie niezależne lub być częścią zintegrowanego środowiska programistycznego.

Przy pracy grupowej powszechnie stosowane są systemy kontroli wersji. Przechowują one kod aplikacji w wydzielonym miejscu, do którego programiści wysyłają z własnych kopii roboczych nowe poprawki. Systemy dbają o automatyczne połączenie ich z już istniejącym kodem czy wykrywanie konfliktów edycji. Ponadto pozwalają cofnąć się do dowolnego momentu w przeszłości i przeglądać archiwalne zmiany.

Narzędzia programistyczne nie są związane jedynie z edycją kodu aplikacji, ale także z koordynacją pracy zespołu oraz nadzorem nad przebiegiem projektu. Do takich narzędzi należą bugtrackery służące do zgłaszania znalezionych w programie błędów oraz monitorowania postępu prac nad ich usunięciem. Systemy tworzenia dokumentacji umożliwiają wygenerowanie dokumentacji bezpośrednio z kodu źródłowego. Do projektowania aplikacji wykorzystywane są narzędzia CASE.

Rynek pracy IT w Polsce[edytuj | edytuj kod]

Rynek IT w Polsce systematycznie się rozwija, dlatego mimo dużego nasycenia, firmy wciąż borykają się z problemem braku wykwalifikowanych specjalistów w tej dziedzinie. Ministerstwo Nauki i Szkolnictwa Wyższego przewiduje, że w latach 2010-2025 będą oni najbardziej poszukiwaną grupą spośród zawodów technicznych[8]. Specjaliści IT należą do najlepiej zarabiających grup zawodowych w kraju, lecz wysokość zarobków jest mocno uzależniona od wybranej specjalizacji[8].

W Polsce nie trzeba posiadać żadnego certyfikatu, aby być programistą. Choć na ważniejsze stanowiska techniczne takie, jak inżynier oprogramowania, pracodawcy często wymagają posiadania wykształcenia wyższego, istotne jest posiadane doświadczenie w stosowaniu wymaganych technologii. Ponadto tworzenie aplikacji dla wielu sektorów (np. bankowego) wymaga znajomości konkretnej branży oraz uwarunkowań prawnych.

Zobacz też[edytuj | edytuj kod]

WiktionaryPl nodesc.svg
Zobacz hasło programista w Wikisłowniku

Przypisy

  1. Eric Sink: No Programmers (ang.). 2003-05-09. [dostęp 2010-06-15].
  2. Raymond Lewallen: Developer versus Programmer (ang.). 2005-02-22. [dostęp 2010-06-15].
  3. Mike Diehl: "Developers" AND "Programmers" (ang.). 2006-10-13. [dostęp 2010-06-15].
  4. J. Fuegi, J. Francis. Lovelace & Babbage and the creation of the 1843 'notes'. „Annals of the History of Computing, IEEE”. 25 (4). s. 19-25 (ang.). 
  5. eniacprogrammers.org
  6. www.internationalprogrammersday.org
  7. Żaneta Wysocka: Tester oprogramowania. 4PM.pl. [dostęp 2010-09-17].
  8. 8,0 8,1 Monika Tomkiewicz: Rynek pracy: branża IT chce zatrudniać, ale nie ma kogo. Computerworld, 2010-08-09. [dostęp 2010-09-17].

Bibliografia[edytuj | edytuj kod]