Newsgroup: it.comp.macintosh
Titolo: SQL - Grafici - App

Ciao a tutti!
Ho un'esigenza un po' complessa.
Dovremmo costruire un programmino che ha in ingresso una mole enorme di
dati storici (milioni di righe di dati) da prelevare da un DB Oracle e
da usare per alcuni calcoli più o meno complessi.
Ad oggi il tutto è fatto su Access/Excel, ma vorrei fare qualcosa di
stand alone.
I conti di base sono molto semplici (somme, sottrazioni o poco più) ma
potenzialmente vorremmo sviluppare qualche cosa di più complesso che
generi delle previsioni, noti i dati storici. Per finire, servirebbe
un'interfaccia grafica per avviare le elaborazioni e visualizzare dati
su grafici.
Ora la mia conoscenza è di tipo scolastico sul C, cenni di BASIC, un po'
di programmazione su vba (cenni sulle interfacce) e conoscenza sommaria
di SQL (oracle):
potreste indirizzarmi all'uso di qualche linguaggio che possa aiutarmi
nell'impresa?
Conto più o meno alcuni mesi di lavoro, soprattutto nel tempo libero.
Se possibile vorrei qualcosa di funzionante su Mac e su Win, soprattutto
perché la scrittura del codice avverrà sul mio mac, poi se si riesce a
portare su Win tanto meglio.
Pensavo a Matlab, ma ha costi per me non accessibili al momento.
Python può fare al caso mio?
Vorrei evitare Java perché a pelle lo trovo estremamente lento e, data
la mole enorme di dati da trattare, servirebbe qualcosa di "veloce".
Spero di aver fatto più o meno capire le esigenze!
Grazie :-)


Innanzitutto, nella documentazione Oracle trovi una marea di consigli,
e spiegazioni dettagliate, sui linguaggi di programmazione che fanno
al caso tuo. Perché non leggerla? Comunque:
- senza l'interfaccia grafica, la parte delle "previsioni" può essere
scritta in qualsiasi linguaggio di programmazione in grado di
interfacciarsi al database Oracle. Scegli, quindi, il linguaggio che
conosci meglio (o meno peggio);
- discorso un po' meno semplice, invece, per quanto concerne
l'interfaccia grafica. Dici di voler evitare Java, ovvero il
linguaggio che con maggiore facilità ti permette di distribuire
interfacce portabili. Bene, scartiamo Java. A questo punto hai due
alternative: crei due interfacce distinte, ad esempio una con Visual
Studio e l'altra con XCode, oppure ricorri a un framework
multipiattaforma, ad es. Qt o wxWidgets con cui userai il C++, e crei
il progetto con un solo IDE.
Hai la rara fortuna di avere un'azienda e/o team di lavoro che ti
lascia carta bianca, quindi c'è l'imbarazzo della scelta. Buon lavoro.

 , che e' una specie di VisualBasic
multipiattaforma per mac, win e linux.
Se lavori dentro una azienda, allora ogni singola giornata ha un costo,
e la scelta di una soluzione o dell'altra non e' indifferente, ed e'
probabile che, date le tue esperienze di programmazione ed il
programma che ti sei preposto di fare, il tempo di realizzazione
con un ambiente visuale sia almeno la meta' di quello che
impiegheresti con un approccio C/C++.
Per quanto riguarda la sola parte di estrazione
e calcolo dei valori dal database oracle (quindi esclusa
la parte visuale), c'e' anche la possibilita' di scrivere delle
stored procedure su oracle stesso usando il suo linguaggio pl/sql,
abbastanza semplice da imparare, una volta che conosci l'sql.
Ciao

 
forse mi sono spiegato male, io sono l'utente finale, con l'unico
problema che prima di vedere qualcosa di pronto da parte dei sistemi
informativi passano 2-3 anni. Per carità, ottimi lavori, professionali,
ma il tempo necessario per questi sviluppi non è compatibile con le
esigenze del mercato e spesso le esigenze cambiano prima ancora di
vedere il prodotto funzionare. Motivo per cui spesso soluzioni
qualitativamente peggiori, scritte "in proprio" in un decimo del tempo
ma estremamente flessibili (vedi il vba) vanno meglio di quelle
"ufficiali" calate dall'alto.
Purtroppo non sono un programmatore, per cui vado un po' a tentoni.
Cercherò la documentazione su Oracle come mi hai consigliato. Tra ieri e
oggi mi sono letto un po' la documentazione di Python, per la mia
inesperienza, è un bel linguaggio. :)
Grazie!
-- 
You cannot connect the dots looking forward, you can only connect them
looking bakward (cit. S. Jobs)

 Grazie :-)
Si, devi fare della statistica.
Usa R (
www.r-project.org
).
Ciao Jack
-- 
Yoda of Borg am I! Assimilated shall you be! Futile resistance is, hmm?

 portare su Win tanto meglio.
si potrebbe pensare, ma è da verificare sul campo soprattutto per la 
velocità, di usare openoffice/libreoffice attraverso lo staroffice basic 
o python. è interfacciabile sql, i grafici possono essere fatti con i 
moduli di Calc o Draw, ed è multipiattaforma.
-- 
La nuova hypertext fiction di Mauro Mazzetti: 
http://goo.gl/6V2eL

 la mia inesperienza, è un bel linguaggio.
[1] 
http://learnpythonthehardway.org/book/

 la mole enorme di dati da trattare, servirebbe qualcosa di "veloce".
e la tua convinzione che "java e' lento" deriva da?


 e la tua convinzione che "java e' lento" deriva da?
Non ha scritto quello che hai messo tra doppi apici, ha detto che "a 
pelle" lo trova lento.

 il progetto con un solo IDE.
Ma direi proprio che non "usera'" C++. Per raggiungere livelli su cui
non e' vergognoso usare il termine decenza in C++ ci vanno *almeno* 3
anni. Ed e' una stima per difetto valida solo su uno sviluppatore molto
skillato. Prima e' solo imbarazzo.
-- 
-riko
http://www.enrico-franchi.org/
http://rik0-techtemple.blogspot.com/

 impiegheresti con un approccio C/C++.
Quindi ancora troppo lento. A parte che mettere insieme C e C++ e'
strano: sono due linguaggi profondamente diversi e a seconda del
progetto la differenza nei tempi di sviluppo puo' essere estremamente
significativa (in un senso o nell'altro, a seconda del chi e del cosa).
Oggi, sviluppare nella meta' del tempo di C++ vuole dire avere tempi di
sviluppo parecchio lenti. Poi voglio dire, deve elaborare dati: il
visual non gli serve ad una ceppa.
Viceversa il pezzo "tosto" della visualizzazione e' fare i grafici
(fatti bene). Incidentalmente conosco pacchi di librerie che fanno sta
cosa, ma nei vari "visual" il componente non c'e' -- non in real basic,
almeno; infatti sto proprio valutando se mi conviene aggiungerlo io --.
Quindi la parte "dura" rimane li. Si e' risolta la parte semplice. ;)


 e la tua convinzione che "java e' lento" deriva da?
Vecchi pregiudizi. In parte. Quello che posso dire e' che scrivere
codice che usa molta memoria, almeno potenzialmente, in Java e' spesso
difficile da fare bene. Bisogna settare bene la VM etc etc etc. In quei
casi (molta memoria e vm messa male) diventa VERAMENTE lento.
Per il resto con i JIT moderni e' imbarazzantemente veloce, in barba a
chi continua a menarsela con il codice nativo.
L'altro problema di Java per scrivere codice veloce e' che non e'
assolutamente banale misurare le performance delle singole funzioni che
sono troppo dipendenti dall'avere o meno jittato una certa cosa. 


 Python pu� fare al caso mio?
Si.


 vedere il prodotto funzionare. 
Se il Time to Market è essenziale puoi cambiare approccio e valutare uno
strumento come Servoy (
www.Servoy.com
).
È tutt'un'altra cosa rispetto a ciò che hai chiesto, ma i tempi di sviluppo
sono sorprendenti.
Per realtà molto soggette a cambiamenti legati al mercato può essere la
soluzione.
-- 
ciao, ric

 casi (molta memoria e vm messa male) diventa VERAMENTE lento.
sono d'accordo.
ma visto che il tipo sembra piuttosto a digiuno con la programmazione
(in generale), dargli in mano un qualsiasi linguaggio (ad oggetti
soprattutto) significa guai.
Per quello che gli ho proposto R prima e visto che stava pensando a
Matlab gli ho proposto dei cloni opensource.
Senza contare che in questo caso ha la parte visualizzazione
praticamente gratis.


 praticamente gratis.
Il fatto e' che numpy fa tutto cio' /meglio/. ;)


 skillato. Prima e' solo imbarazzo.
Gli anni di esperienza contano, suppongo che su questo siamo d'accordo 
tutti. Ma il concetto non vale solo per il C++...

 wrote:

Su Mac? F i l e M a k e r

 tutti. Ma il concetto non vale solo per il C++...
Non ti sto parlando di anni di esperienza per essere *bravo* o
*esperto*. Semplicemente quelli necessari per non fare codice che
funziona per miracolo.
In Java, per contro, avrei parlato di 6-12 mesi, altrettanti in C. In
Python o Ruby di 3. C++ e' estremamente piu' complesso.
