Post by Gian Uberto LauriEsistono, ho avuto occasione di vederli, qualcosa di paragonabile
all'illuminazione zen :).
Intendo dire... programmatori che *non* sbagliano?
Voglio dire, un conto è sbagliare *poco*. Oppure sbagliare ma avere
ampie skill nello scrivere i test/verifiche formali per cui poi gli
errori vengono presi al volo. Ma *non* sbagliare proprio...
Post by Gian Uberto LauriConta che una volta valeva la pena di ragionarci su sul codice prima
di darlo in pasto al compilatore ed al debugger, vuoi per i tempi di
esecuzione vuoi per l'uso delle risorse. Quindi si andava molto più
attenti.
Io a suo tempo ho iniziato così (a casa non avevo il compilatore). Ma se
è per quello io sono anche uno di quelli che pensa che il codice che uno
scrive se lo dovrebbe anche verificare per lo meno in modo semi-formale.
Sicuramente per gli algoritmi sarebbe il caso che uno si buttasse giù
almeno una prova di correttezza. Cosa relativamente diffusa nel mondo
dei linguaggi dichiarativi (dove in effetti è pure più facile da fare),
e poco in quello degli imperativi.
Post by Gian Uberto LauriQui potrei raccontarti qualcosina di divertente che include il
software di navigazione di un certo vettore...
L'arianne 5? So tutto quasi a memoria. Dopo tutto il studio nel campo
delle verifiche formali statiche di software.
Post by Gian Uberto LauriVero. Ma essendo molti ed economici ci saranno manager che affideranno
progetti a homini visualbasicensis invece che a programmatori di
adatta capacità (ma maggiore costo).
Non a caso il numero di 'bagni di sangue' è impressionante. Circa un
progetto su quattro giunge a compimento, secondo le ultime statistiche
che ho spulciato.
Post by Gian Uberto LauriPer le categorie mi servirebbe un esempio per capire meglio il tuo
discorso.
Se devi supportare più sistemi (metti qualche unix commerciale, linux,
windows) ti trovi a lavorare con gli autotools in primo luogo. In
secondo luogo devi avere le macchine suddette in casa e testare
pacchettizzazioni et similia su tutte quante le macchine (che vuole dire
magari due build system e diversi auto-installer).
Poi ci si trova a gestire le librerie esterne. Che possono essere
tipicamente presenti sul target oppure no. Nel caso bisogna vedere con
quali versioni funziona, con quali no. In sistemi dove il gcc non è il
default, vedere se la compatibilità binaria funziona o non funziona.
Oppure portare le librerie con la tua applicazione e nel caso essere
pronto a gestire possibili conflitti con le librerie sull'ospite.
A me Java non fa impazzire, ma complessivamente da questo punto di vista
è un notevole passo avanti. E pure li ci sono delle storie dell'orrore,
eh... Confesso che mi piace ancora di più Python, per queste cose.
Post by Gian Uberto LauriPer lo scrivere... Si e no. Penso dipenda dall'esperienza.
Ho circa 10 anni di esperienza nello scrivere C (e sono solo 10 solo
perchè sono giovane io). Eppure mi è molto più facile usare Ruby (che
conosco solo da un anno). Semplicemente C è più complesso a prescindere
da usare. E ritengo che la qualità di quello che scriva sia 'decente'
(il massimo che uno può dirsi da solo, IMHO) in ambo i casi.
Post by Gian Uberto LauriCerto, il C va bene con organizzazioni del lavoro tipo quelle ne "il
mitico mese uomo" (team di 10 persone in cui c'è un programmatore
senior, uno junior, un code lawyer e il resto supporto).
Dopo di che rimangono in dietro, allora aggiungono altri 10 junior e non
si fa più un accidenti del tutto :P
Post by Gian Uberto LauriIo stavo pensando principalmente a codice che gira su server, anche
grossetti. Con quella mentalità venne sviluppata una applicazione che,
fintanto che stava nel laboratorio, andava benissimo. Salvo mettere in
crisi il server con qualche decina di migliaia di page fault/secondo
quando arrivava il picco d'utenza... Energia sprecata sia sul server
che sulle macchine client.
Questo lo ho visto anche con una applicazione C++ che mi sono rifiutato
di debuggare ( o meglio, per la quale ho rifiutato di prendere
l'incarico di aggiustarla ). Era un'applicazione computazionale. E
leggendo brevemente il codice mi sono venuti 3 capelli bianchi.
Post by Gian Uberto LauriAnche la query va scritta con efficienza.
Assolutamente e soprattutto si. Ma questo prescinde se il linguaggio
client è Java, C o Python.
Post by Gian Uberto LauriNon mi convinci del tutto. Il discorso a naso torna perché non si
stanno considerando alcune variabili.
IMHO scegliere un linguaggio di basso livello per un progetto software
'di alto livello' (ovvero di livello applicativo) rientra nel caso della
'premature optimization', se è fatto a scopo prestazionale.
IMHO un approccio più sensato è scegliere un linguaggio che si presta al
task in questione, scrivere e poi vedere. Se le performance non sono
accettabili (per diversi valori di accettabile) si passa ad un profiler
e si riscrivono in C (o addirittura in ASM, a seconda di quello che si
sta facendo) le parti critiche.
Dopo di che, pensa ad un'applicazione web. Quanto ci mette Python (o
Java) a processare un po' di testo rispetto a quanto tempo ci va per
fare tutte le query al db per tirare fuori le informazioni.
Inoltre è stato dimostrato che utilizzare un mod_qualcosa (con il
linguaggio Qualcosa) è comunque più efficiente di usare un CGI (fosse
anche in C). Certo, chiamare in C gli internals di Apache è ancora più
veloce (ma scriversi un webserver custom 'monoapplicazione' potrebbe
essere ancora più veloce, se in mano a persone competenti).
Post by Gian Uberto LauriMi puoi indicare qualcosa di veramente notevole fatto in Ocaml?
CIL. E' un bel softare, Ma a parte quello è un linguaggio usato molto in
ambiti accademici/universitari/scientifici. Per cui è difficile andare a
beccare le specifiche applicazioni (a meno che qualcosa non sia nel ramo
in cui stai lavorando studiando).
Post by Gian Uberto LauriNon è per sminuire quel linguaggio. La fortuna di un linguaggio è un
discorso complesso, usualmente il linguaggio più noti hanno avuto o un
grosso impulso da parte del marketing o sono stati usati per scrivere
qualcosa di notevole (i.e. un kernel). Il Pascal non rientra in queste
categorie ma a naso era l'unico linguaggio didattico(*) valido
disponibile.
Infatti.
--
blog: http://www.akropolix.net/rik0/blogs | Uccidete i filosofi,
site: http://www.akropolix.net/rik0/ | tenetevi riso e
forum: http://www.akropolix.net/forum/ | bacchette per voi.