Strumenti per lo sviluppo di software sono:
Questi strumenti sono combinati insieme da programmi (utilities) che ne facilitano l'uso,
come il make, oppure in veri e propri ambienti di sviluppo, che permettono anche
di creare facilmente un'interfaccia grafica per il programma.
Per Linux abbiamo ad esempio il kdevelop, per Windows la piattaforma .net,
la Sun offre ambienti di sviluppo dedicati a Java.
Il Fortran e' stato uno dei primi
linguaggi di programmazione, negli anni 60 e 70 tutto il software
scientifico e parte di quello commerciale veniva scritto in fortran, ma
ormai il fortran ha perso di importanza, soppiantato dal C o da linguaggi ad oggetti.
Il compilatore piu' importante e' il C, il sistema operativo e quasi
tutto il software di una distribuzione Linux e' scritto in C.
Il C++ ha applicazione in progetti complessi, in genere per
interfacce grafiche.
Java e' soprattutto utilizzato per grossi applicativi commerciali
che devono girare in ambiente di rete. E' abbinato ad una
ricchissima libreria di classi, fortemente sostenuto dalla SUN,
che ne mantiene un rigido controllo, ed osteggiato dalla Microsoft, che cerca
di soppiantarlo con la sua piattaforma di sviluppo.
Il Pascal e' un linguaggio creato in ambiente accademico, anni fa era di moda
nelle universita', ma non e' mai veramente entrato in
uso ed i pochi veri progetti sviluppati in Pascal sono poi stati riscritti in C.
L'assembler e' un linguaggio molto vicino al linguaggio macchina, obbliga
il programmatore a gestire direttamente i registri e l'indirizzamento delle variabili
ed e' dipendente dall'hardware della macchina. Quando non esistevano i compilatori
si lavorava in assembler e tutto era molto lungo e brigoso,
oggi si scrivono in assembler solo le parti dei
programma che necessitano di particolari ottimizzazioni, o routine che devono
interfacciarsi con l'hardware, ma anche per la programmazione di microprocessori
esistono ambienti di sviluppo che permettono di lavorare in
un linguaggio simile al C, e compilano loro il programma.
Anche i sistemi operativi hanno solo poche parti in assembler.
Accanto a questi linguaggi occorre considerare tutta una serie di linguaggi
interpretati, cioe' tradotti in linguaggio macchina riga per riga, durante l'esecuzione.
Fra questi il Perl, usato molto per procedure di sistema (quando la shell non basta piu')
il Python, che ha una sintassi molto semplice e permette di lavorare "ad oggetti",
il PHP, che viene abbinato ai server web, per interfacciarli ad applicazioni e database.
Ci sono poi tanti altri linguaggi di programmazione, spesso dedicati ad ambienti e
problemi particolari.
Assieme ai compilatori in un sistema Linux si trovano il linker della GNU: (ld) e varie utilities (GNU Binary Utilities) , fra cui :
E' anche importante il debugger GNU: gdb, si tratta di un debugger
con un'interfaccia a comandi inteso specialmente
per programmi in C, esistono anche interfacce grafiche a questo debugger,
come xxgdb o ddd.
g77 -c -o file.o file.f : compila il file file.f, produce un object file.o , ma non fa il link (-c).
g77 -o file file1.f file2.f -L/local/lib -lmia : compilazione e link di file1.f, file2.f, produce l'eseguibile file, usa la libreria libmia.a in /local/lib
g77 -O0 -g -o file file.f : non ottimizza (-O0), include simboli per il debugger (-g)
g++ -o eseguibile main.cpp classe.cpp : compila programma C++
ld -o exe /lib/crt0.o hello.o -lc : produce l'eseguibile exe, linkando /lib/crt0.o ed hello.o utilizzando la libreria libc.a