% Linux Installation and Getting Started    -*- TeX -*-
% programming.tex
% Copyright (c) 1992-1994 by Matt Welsh <mdw@metalab.unc.edu>
%
% This file is freely redistributable, but you must preserve this copyright 
% notice on all copies, and it must be distributed only as part of "Linux 
% Installation and Getting Started". This file's use is covered by the 
% copyright for the entire document, in the file "copyright.tex".
%
% Copyright (c) 1998 by Specialized Systems Consultants Inc. 
% <ligs@ssc.com>

\subsection{Programski jeziki in pripomočki}

Linux ponuja popolno programsko okolje Unixa, vključno z vsemi
standardnimi knjižnicami, orodji za programiranje, prevajalniki in
razhroščevalniki, ki bi jih pričakovali na drugih sistemih Unix.

Podprti so standardi, kot je POSIX.1, kar omogoča, da se programje,
napisano za Linux, zlahka prenaša na druge sisteme.  Poklicni
programerji na Unixu in upravniki sistemov uporabljajo Linux za razvoj
programja doma in potem prenesejo programje na službene sisteme Unix.
Ne le, da to prihrani dosti časa in denarja, pač pa vam tudi omogoča
delati v udobju lastnega doma.  (Eden od avtorjev uporablja doma svoj
sistem za razvoj in preizkušanje aplikacij za X~Window System; te
aplikacije se lahko neposredno prevedejo na delovnih postajah drugje.)
Študenti računalništva se učijo programiranja v Unixu in raziskujejo
druge vidike svojega sistema, kot je arhitektura jedra.

Z Linuxom imate dostop do popolnega nabora knjižnic in programskih
pripomočkov ter popolno izvorno kodo jedra in programskih knjižnic.

V svetu programske opreme za Unix se sistemi in aplikacije
pogosto programirajo v jeziku C ali C++.  Standardni prevajalnik
za C in C++ je v Linuxu GNU \texttt{gcc}, napredni, sodobni
prevajalnik, ki podpira C++, vključno z lastnostmi AT\&T 3.0,
kot tudi Objective-C, še eno objektno usmerjeno narečje jezika C.

Poleg jezikov C in C++ so bili na Linux preneseni tudi drugi
prevajalniški in interpreterski programski jeziki, kot so
Smalltalk, FORTRAN, Java, Pascal, LISP, Scheme in Ada
(če ste tako mazohistični, da programirate v Adi, vam tega nikakor
ne bomo preprečili).  Dodatno so na voljo različni zbirniki
za pisanje kode zaščitenega načina procesorja 80386 ter
tudi favoriti hekanja v Unixu, kot sta Perl (skriptni jezik,
ki potolče vse druge skriptne jezike) in Tcl/Tk (ukazni lupini
podoben sistem za obdelovanje ukazov, ki ima podporo za
razvoj preprostih aplikacij za X~Window System).

Napredni razhroščevalnik \texttt{gdb} lahko izvaja program v izvorni
kodi vrstico za vrstico ali preiskuje njegove posmrtne ostanke, da bi
ugotovili vzrok sesutja.  Pripomoček za optimalizacijo \texttt{gprof}
ponuja statistiko delovanja vašega programa in vam pove, kje ta porabi
največ svojega izvajalnega časa.  Kot smo že omenili zgoraj,
urejevalnik besedil \texttt{emacs} ponuja interaktivno urejanje in
prevajalska okolja za različne programske jezike.  Druga orodja
vključujejo GNU \texttt{make} in \texttt{imake}, ki upravljata
prevajanje velikih aplikacij, in RCS, sistem za zaklepanje izvorne
kode in nadzor nad njenimi različicami.

Končno, Linux podpira dinamično povezane, deljene knjižnice
(ang. Dynamically Linked Libraries, DLL), česar posledica so precej
manjše binarne datoteke.  Skupna koda podprogramov se poveže ob teku
programa.  Ti DLL-ji vam omogočajo tudi uporabo lastnih funkcij
namesto vgrajenih.  Na primer, če želite napisati svojo lastno
različico knjižnične funkcije \texttt{malloc()}, bo povezovalnik
uporabil vašo novo funkcijo namesto tiste iz standardne knjižnice.
