View Single Post
Old 22-10-2017, 11:56   #11
pabloski
Senior Member
 
Iscritto dal: Jan 2008
Messaggi: 8406
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Già. Ma d'altra parte linguaggi come Haskell richiedono tempo per poter essere padroneggiati.
Vero, ma il tempo risparmiato per il debugging pure conta. E contano pure i costi dei danni prodotti dal software. L'ingegneria ha sempre lavorato per migliorare gli strumenti a sua disposizione, solo noi informatici sembriano quasi aversi a qualsiasi tipo di miglioramento in tal senso ( oddio, e' piu' una questione generazionale in realta' ).

Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Non possiamo generalizzare. Lavorare col C ha ancora senso in alcuni ambiti, come l'embedded.
Non sono tanto fanatico da non riconoscere le limitazioni di alcune tipologie di hardware o le necessita' di alcuni ambiti ( real-time ad esempio ). Il C ha il vantaggio di essere il piu' vicino all'assembly e quindi parco di risorse e privo di comportamenti non deterministici tipi di tecnologie basate su virtuale machine e garbage collection.

Pero' questa cosa si e' capita e infatti alcuni linguaggi novelli ( Rust ad esempio ) tengono conto di queste casistiche. Certo non si puo' pretendere di cambiare tutto il C con codice Rust in pochi anni. L'importante e' che gli addetti ai lavori ne prendano nota.


Quote:
Originariamente inviato da cdimauro Guarda i messaggi
se puoi gestire alcune cose a livello più basso.
Anche su questo punto i linguaggi di nuova generazione hanno fatto i loro compitini. Il problema e' nato dalla corsa verso "l'alto livello" propinataci da Java e figli. Sono loro che hanno sviluppato strumenti per sviluppare software piu' robusto, ma a costo di peggioramenti non trascurabili su altri fronti.

Oggi c'e' un ripensamento su quest'ultima parte. Haskell non fa parte del club pero', visto quanto complesso rende manipolare qualsiasi cosa che abbia dei side-effects. Ma Haskell non e' l'unico linguaggio funzionale!

Quote:
Originariamente inviato da razzoman Guarda i messaggi
perdonami ma.. perché questo odio per il c? per sviluppo embedded/driver é ottimo e sinceramente imparato il c, passare alla programmazione a oggetti é un attimo
Nessun odio. Semplici constatazioni. C e' un linguaggio nudo, che non ti offre nessuna rete di protezione o astrazione che possa aiutarti a prevenire bug. E la mente umana non e' Skynet. Siamo limitati, distratti, per questo abbiamo bisogno di strumenti che ci vengano incontro.

Se questi strumenti ci fanno pagare un dazio troppo alto ( in termini di complessita' computazionale e quindi risorse hardware consumate ) finiscono per non essere adatti ad alcuni ambiti. Ma ripeto, questa trade-off e' chiaro agli addetti ai lavori e ci stanno lavorando.

La comunita' Rust si sta interessando all'embedded. Ma anche altre comunita' lo stanno facendo ( vedi MicroPython ).

Quindi non e' bianco o nero, semplicemente se oggi abbiamo assoluto bisogno di software corretto, magari il C perde parecchi punti perche' non ci offre nulla su questo fronte.

Quote:
Originariamente inviato da GTKM Guarda i messaggi
Una VM la scrivi in Java?
Ma la puoi scrivere in OCaml.

Quote:
Originariamente inviato da GTKM Guarda i messaggi
O magari e' meglio un linguaggio che ti permette una certa gestione del basso livello?
Se ti offrisse anche strumenti per prevenire intere classi di bug tipici e comuni, sarebbe meglio, non credi?


Quote:
Originariamente inviato da GTKM Guarda i messaggi
Che poi, gli aborti che si fanno col C spesso sono piu' causa del fatto che certa gente dovrebbe cambiare mestiere.
Su milioni di righe di codice magari e' questione di semplici limiti del cervello umano. Pure i geniacci che lavorano a Linux o Windows ( o i maghi che lavorano a macOS ) commettono errori imbarazzanti.

E infatti sono proprio loro a spingere la comunita' alla larga a creare strumenti di sviluppo piu' evoluti.


Quote:
Originariamente inviato da GTKM Guarda i messaggi
Un esempio: l'aritmetica dei puntatori. C'e' chi si intestardisce col voler usare il C non avendo ben chiaro cosa sia un puntatore. E gia' questo e' assurdo.
Ma qua parliamo di ragazzini al primo anno d'universita'. Difficile che un programmatore che lavora per IBM non sappiamo cosa sia un puntatore. Eppure bug "stupidi" te li ritrovi in software di grande importanza come openssl. Sono stupidi? Ignoranti? No, semplicemente lo strumento che hanno usato e' mancante.

Quote:
Originariamente inviato da GTKM Guarda i messaggi
A me sembra peggio l'andazzo odierno di portarsi dietro un intero browser per scrivere un insulso editor di testo.
Quello e' un trend che va ben oltre i semplici linguaggi. Senza contare che i motori dei browser sono tra i software piu' buggati sul pianeta e Javascript e' un cavolo vestito da linguaggio di programmazione.
pabloski è offline   Rispondi citando il messaggio o parte di esso