PDA

Visualizza la versione completa : [OT] programmazione - marzo 2013


MItaly
01-03-2013, 18:15
... è arrivato marzo senza che me ne accorgessi! :stordita:

(maledizione, credevo di avere altri tre giorni prima della fine del mese, tocca ritoccare il programma di preparazione degli esami :incupito: )

A tal proposito: universitari e non che frequentate questo forum, cosa studiate? Siete soddisfatti/insoddisfatti/indifferenti?

Scara95
01-03-2013, 18:21
Originariamente inviato da MItaly

(maledizione, credevo di avere altri tre giorni prima della fine del mese, tocca ritoccare il programma di preparazione degli esami :incupito: )


Febbraio troll

MItaly
01-03-2013, 18:24
Tutta la questione delle misure di tempo irregolari (mesi e anni) mi è sempre stata sulle scatole, anche in software fare i conti con le date è sempre un pasticcio.

Scara95
01-03-2013, 18:38
Beh, un anno è 365.25 giorni, manteniamo pure la tradizione, ogni 4 anni aggiungiamo un giorno, e ogni 400 (e un qualcos'altro che non mi ricordo :mem: ) quindi ci restano i 365 giorni, la vedo un po' dura dividerli in mesi: puoi fare solo 5 mesi da 73 giorni o 73 mesi da 5 giorni xD

MItaly
01-03-2013, 19:04
È peggio di così, ci sono anche i "leap seconds", e ogni timestamp ha un'idea diversa di come trattarli. E poi c'è il fatto che la terra man mano rallenta, per cui il "tempo ufficiale" (=orologi atomici+tempo fissato per un anno terrestre) si discosta ogni anno di un qualcosina rispetto al "tempo terrestre". Te l'ho detto, è un pasticcio. :mem:

Comunque, l'idea dei mesi se non sbaglio viene dai cicli lunari, per cui volendoli legare a qualcosa si potrebbero fare 13 mesi da 28 giorni e attaccarci un giorno in più l'ultimo mese (due nei bisestili) - vagamente più regolare e più semplice gestire il "caso speciale".

Sono particolarmente sensibile alla questione perché sono rimasto scottato una volta. In uno dei primi programmi fatti per soldi (era una roba di reportistica da dati CSV, fine 2006) da qualche parte il codice doveva sapere quanti giorni c'erano in ogni mese; quindi, all'inizio di una funzione c'era questa roba:


//Nomi dei mesi
char months[12][4]={"JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"};
//Numero di giorni/mese
unsigned int dpm[12]={31,29,31,30,31,30,31,31,30,31,30,31};

Ora, questa è la versione corretta (tra l'altro, a sette anni di distanza vedo che months poteva essere tranquillamente un const char * [12], ma vabbé), ma nella versione originale mi ero perso per strada giugno, forse perché, prima dell'inizio dell'università, era essenzialmente una zona di non-tempo. :D

Ho scovato l'errore completamente per caso poco prima che il programma, ormai in versione definitiva, andasse in produzione: mi serviva riciclare quel codice in un altro programma, e mi sono accorto che sfalsava tutti i mesi dopo giugno. Nel programma originale questo dava, tra le altre cose, risultati leggermente sballati per tutte le medie mensili di emissioni per i mesi in questione, ma sballate in modo sufficientemente sottile da non accorgersene a colpo. :stordita:

La storia insegna tre cose:
- usare librerie già fatte per queste cose in genere è una buona idea; :stordita:
- chiedere sempre una copertura il più ampio possibile sui dati di test;
- se i mesi mi stanno antipatici c'è un motivo. :D

MItaly
01-03-2013, 19:18
Un'altra questione odiosa relativa ai mesi che mi è capitata di recente era incrementare una data (oggetto datetime) in Python di un mese, indipendentemente dal mese in cui ci si trova. Ovviamente qualche metodo brutale si trova sempre, ma speravo ci fosse qualche sistema relativamente elegante.
Un timedelta normale ovviamente non va bene, dato che questo misura un intervallo di tempo "vero" (tot secondi), mentre se io voglio passare dal 2 gennaio al 2 febbraio sono 31 giorni, ma dal 2 febbraio al 2 marzo sono 28 o 29. Ho trovato la soluzione in questa (http://labix.org/python-dateutil) ottima libreria, che implementa un sacco di buone idee su problematiche di data e ora (in particolare, la classe relativedelta e/o la rrule risolvono in maniera egregia il problema in questione).

Kaamos
01-03-2013, 19:21
Originariamente inviato da MItaly
... è arrivato marzo senza che me ne accorgessi! :stordita:

(maledizione, credevo di avere altri tre giorni prima della fine del mese, tocca ritoccare il programma di preparazione degli esami :incupito: )

A tal proposito: universitari e non che frequentate questo forum, cosa studiate? Siete soddisfatti/insoddisfatti/indifferenti?

Io studio Informatica a Genova, II anno (ma li faccio tutti e 5, da me è comunque un 3+2 ma se si vuol far la magistrale bisogna deciderlo già dopo il I anno... è un po' intricata la cosa), ed è stata la scelta migliore che abbia fatto fin'ora, mi trovo bene. M'interessavo già, ma con l'università ho decisamente trovato la mia strada. E pensare che mi sono iscritto all'ultimo minuto giusto per non avere futuri rimpianti (le superiori mi avevano tolto tutta la voglia di studiare), e invece ora mi ritrovo anche relativamente secchione. :D

P.S.: c'è qualcun altro che si diletta con www.projecteuler.net ?

goatboy
01-03-2013, 20:22
Io frequento l'Università di Salerno, Ingegneria Informatica (II Anno). Mi trovo bene, le materie mi interessano molto (anche se non proprio tutte :D ). Mi avvio verso 3 mesi a ferro e fuoco, sto preparando 5 esami: Programmazione ad Oggetti, Calcolatori Elettronici, Matematica I e II e Basi di Dati. Tornerò a sorridere ad Ottobre , spero :D
Io vorrei sapere se tra di voi c'è qualche sviluppatore di software. Se sì, vorreste dare qualche consiglio, o semplici informazioni, su come si svolge questo lavoro (lavoro in team, o singolo, paga, consigli utili, tempi medi per lo sviluppo, testing, software che avete sviluppato, ecc..) ?

Marco1995
03-03-2013, 19:36
P.S.: c'è qualcun altro che si diletta con www.projecteuler.net ?

Io...ma molto spesso mi si pianta il programma per la complessità dei calcoli :/

Scara95
03-03-2013, 19:44
Originariamente inviato da Marco1995
Io...ma molto spesso mi si pianta il programma per la complessità dei calcoli :/
Tutti i problemi sono fatti in modo che il calcolo possa avvenire in un breve periodo...
Forse dovresti soffermarti di più sull'analisi del problema prima di passare alla risoluzione :mem:

Loading