orange1978 ha scritto:
quello che trovo triste é vedere gente ridere quando chiama vecchia puttanaccia una scienziata
Non ho ancora guardato il video, cioè lui ha chiamato "puttana" Grace Murray Hopper perché quando ha inventato il Cobol ha deciso che gli anni andavano gestiti a 2 cifre? Se è così, ma lo sa che quello era lo standard negli anni 60, quando Cobol è stato concepito? Sa lui quanto costava la memoria ai tempi, e che a risparmiare 2 byte sui grandi numeri si risparmiavano un sacco di soldi?
orange1978 ha scritto:
da quello che ho capito il problema non é tanto il linguaggio ma gli applicativi scritti in quel paradigma giusto?
questo significa che il fatto di mettere l'anno in una variabile a sole due cifre anziche quattro per risparmiare sulla memoria, in teoria dovrebbe essere possibile con qualsiasi linguaggio di programmazione, anche in assembly o basic, ma allora la colpa non é di chi ha inventato il cobol ma di chi ha scritto un programma di gestione finanziaria in quel linguaggio ponendo un limite del genere.
Entrambe le cose. Tutti i linguaggi ad alto livello (*) come Cobol hanno tutta una serie di funzioni integrate per far calcoli su numeri, date e via dicendo. Una funzione tipica di qualsiasi linguaggio di questo tipo è quella che calcola la differenza di tempo (espressa in anni, mesi, giorni, ore, eccetera) tra due date. Se questa accetta anni soltanto nel formato a 2 cifre e si mette a confondere il 2000 con il 1900, c'è un grosso problema.
Quando non è il linguaggio il problema può esserlo l'applicazione, nel caso in cui per esempio memorizzi nel suo database l'anno a due cifre invece che quattro anche se il linguaggio con cui è scritta supporta gli anni a 4 cifre. Metti per esempio che il programma di un ufficio anagrafica statale debba fare una query sul database per estrarre, che ne so, i nomi e cognomi di tutte le persone nate tra il 1904 ed il 2004. Con l'anno a quattro cifre la query sarebbe una cosa di questo genere:
SELECT *
FROM anagrafe
WHERE YEAR(data_nascita
) BETWEEN 1904
AND 2004
E qui il motore del database non può sbagliare, gli anni sono indicati chiaramente come 1904 e 2004. Ma se la query fosse stata così:
SELECT *
FROM anagrafe
WHERE YEAR(data_nascita
) BETWEEN 04
AND 04
ecco che si vede chiaro dove sta il problema. La condizione BETWEEN fatta in quel modo per esempio potrebbe far si che ad essere estratti dal database siano solo i record delle persone nate nel 1904. Questo era un problema che tipicamente si poteva avere durante il periodo del "millennium bug".
orange1978 ha scritto:
non penso che il linguaggio cobol non possa gestire le date usando un anno in quattro cifre
Era così in passato, ma Cobol è stato aggiornato col supporto per gli anni a 4 cifre già moooooolto prima del 2000. Forse già dagli anni '80. Grillo su queste cose spara veramente una sequela interminabile di stronzate, è meglio che si dedichi a fare il comico su questioni della vita di tutti i giorni e lasci perdere di addentrarsi in congetture in campi in cui notoriamente non capisce un cazzo.
* = "Alto livello" non significa che sono linguaggi migliori di altri, ma semplicemente che astraggono dall'hardware. Un programma Cobol, così come un programma Java e via dicendo, lo si può far girare su qualsiasi piattaforma hardware, a condizione che sia stato previsto per quella piattaforma un compilatore o perlomeno un interprete. Per contro Assembly è un linguaggio di basso livello, perché si programma direttamente "sul metallo", cioè si manipolano in modo diretto registri della CPU, locazioni di memoria, eccetera. Per esempio un programma scritto con l'Assembly dello Z-80 non girerà mai su una CPU x86, su un Arm, su un Power PC e via dicendo. tu Orange lo sai già, lo scrivo per gli altri che leggono il post