|
|
|
![]() |
|
Strumenti |
![]() |
#141 | |||||||
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
Quote:
![]() Ad oggi la diffusione di java in ambito enterprise non ha eguali. E non dimentichiamo la nuova linfa vitale fornita dalla grandissima base di utilizzatori, tra cui ad esempio il Google Web Toolkit, usato per applicativi quali Google Maps e che è anche capace di girare in modalità offline risolvendo così uno dei + annosi problemi di AJAX. Quindi sinceramente tanto superato non mi pare ![]() Quote:
![]() Quote:
Ognuno cerca di prendere il meglio dal competitor e penso che salti subito agli occhi la grande similarità tra Java e C# ![]() Quote:
![]() E quindi non vedo cosa ci sia di male a migliorare il linguaggio ![]() Quote:
![]() Quote:
che Java sia portabile, multipiattaforma e che abbia rimosso diversi difetti del C++ credo sia innegabile. Come è altrettanto innegabile che con l'avvento del JIT e l'abbandono definitivo dell'interprete della VM le prestazioni sono molto + vicine al C++ di quanto si pensi e cmq sono senz'altro molto superiori a python/ruby, SOPRATTUTTO quando si ha a che fare con i multi-core, che checchè se ne dica si stanno diffondendo moltissimo viste le varie riduzioni di prezzo di AMD e INTEL (e cmq parlando di applicazioni di una certa grandezza ovviamente). Quote:
E x me java prima di quella versione non era propriamente ben fornito degli strumenti giusti. E cmq non vedo il punto dato che anche in python sono state introdotte innumerevoli possibilità passando da una release alla successiva. è la naturale evoluzione dei linguaggi e non mi pare proprio una cosa negativa. ![]()
__________________
![]() |
|||||||
![]() |
![]() |
![]() |
#142 | |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Certamente. Ecco qua:
Codice:
print "Calcolo delle radici di un'equazione di secondo grado nella forma aX^2 + bX + c" a = float(raw_input('Inserire il coefficiente a: ')) b = float(raw_input('Inserire il coefficiente b: ')) c = float(raw_input('Inserire il coefficiente c: ')) Delta = b ** 2 - 4 * a * c RadiceDiDelta = complex(Delta) ** 0.5 x1 = (-b + RadiceDiDelta) / (2 * a) x2 = (-b - RadiceDiDelta) / (2 * a) print "Le soluzioni dell'equazione sono", x1, 'e', x2 Adesso fammi vedere come lo faresti in C o in Pascal, visto che sostenevi che "sono semplicissimi da usare e ti permettono di introdurre solo i concetti strettamente necessari facendoti concentrare solamente sugli algoritmi". Quote:
Vatti a rileggere tutto quello che abbiamo scritto e, se hai qualcosa da dire, quota e contesta pure.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
![]() |
![]() |
![]() |
#143 | |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
Quote:
O almeno x me di solito è così. Certo tra l'iniziare a programmare in un linguaggio e saperlo usare al meglio ce ne passa, ma quantomeno le basi dovrebbero essere di immediata comprensione.
__________________
![]() |
|
![]() |
![]() |
![]() |
#144 | ||
Senior Member
Iscritto dal: Dec 2005
Messaggi: 7249
|
Quote:
per il resto niente da dire a parte che raw_input come dice il termine stesso è grezzo ![]() Quote:
per me rimane preferibile il pascal però, perchè con il C bisognerebbe usare già i puntatori. il problema del python è che come tu stesso hai detto tutto è un oggetto, solo che questo non è visibile al programmatore (almeno in un primo momento) qua è tutta aria fritta dalla prima all'ultima pagina, solo voi non l'avete capito |
||
![]() |
![]() |
![]() |
#145 | |
Senior Member
Iscritto dal: Oct 2006
Messaggi: 1105
|
Quote:
|
|
![]() |
![]() |
![]() |
#146 | |||||||
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Dalle mie parti un'equazione di secondo grado non può avere il coefficiente pari a 0.
![]() Quote:
Quelle complesse sono ugualmente le radici dell'equazione. Quote:
Quello che ho postato è una soluzione perfettamente valida al problema: "Calcolo delle radici di un'equazione di secondo grado nella forma aX^2 + bX + c" com'era chiaramente attestato nella prima riga del codice. Non c'erano altri vincoli, se non che l'equazione dev'essere di secondo grado. Quindi le soluzioni complesse erano incluse, visto che sono soluzioni dell'equazione; non era specificato da nessuna parte che avrei dovuto estrarre soltanto quelle reali. Quote:
![]() Comunque sempre per la tua gioia raw_input() diventerà input() in Python 3.0 (sempre se non ricordo male). Prova a chiedere al comitato dell'ANSI C se cambiano scanf() in inputf() o simile... Quote:
Quote:
![]() Quote:
Quote:
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|||||||
![]() |
![]() |
![]() |
#147 | ||
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
Quote:
![]() ehmm.. veramente non ci sono divisioni per zero se l'equazione è nella forma ax^2 + bx + c ![]() Quote:
in C ti saresti fatto 2 palle così a scrivere quel codice... o no? ![]()
__________________
![]() |
||
![]() |
![]() |
![]() |
#148 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
No, perché C e Pascal "sono semplicissimi da usare e ti permettono di introdurre solo i concetti strettamente necessari facendoti concentrare solamente sugli algoritmi".
![]()
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
![]() |
![]() |
![]() |
#149 | |
Senior Member
Iscritto dal: Dec 2005
Messaggi: 7249
|
Quote:
è aria fritta perchè l'ho già spiegato che la scelta del linguaggio con cui iniziare non è una cosa oggettiva. inoltre anche volendo non si può fare un confronto tra linguaggi perchè non ci è dato sapere quali caratteristiche sono bene e quali sono male, e nel caso quanto bene e quanto male. ogni linguaggio è un opportuno compromesso di caratteristiche ed è inevitabile visto che molte caratteristiche sono in contrasto fra loro. ecco le due palle che mi sono fatto ![]() Codice:
#include <stdio.h> #include <math.h> int main() { float a, b, c; float delta; printf("Calcolo delle radici di un'equazione di secondo grado nella forma aX^2 + bX + c\n"); printf("inserire il coefficiente a: "); scanf("%f", &a); printf("inserire il coefficiente b: "); scanf("%f", &b); printf("inserire il coefficiente c: "); scanf("%f", &c); delta = b*b-4*a*c; if(delta < 0) { printf("l'equazione non ha soluzioni reali"); } else if(delta == 0) { float x = -b/(2*a); printf("l'equazione ha un'unica soluzione reale: %f", x); } else { float x1 = (-b-sqrt(delta))/(2*a); float x2 = (-b+sqrt(delta))/(2*a); printf("l'equazione ha due soluzioni reali: %f e %f", x1, x2); } return 0; } ![]() ![]() Codice:
#include <stdio.h> #include <math.h> int main() { float a, b, c; printf("Calcolo delle radici di un'equazione di secondo grado nella forma aX^2 + bX + c\ninserire il coefficiente a: "); scanf("%f", &a); printf("inserire il coefficiente b: "); scanf("%f", &b); printf("inserire il coefficiente c: "); scanf("%f", &c); printf("le soluzioni sono: %f e %f", (-b-sqrt(b*b-4*a*c))/(2*a), (-b+sqrt(b*b-4*a*c))/(2*a)); } il pascal è preferibile per il solo fatto di non richiedere l'uso del puntatore, ma sono dettagli |
|
![]() |
![]() |
![]() |
#150 | |||||||||
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Quote:
Quote:
Codice:
Qual è la differenza rispetto al codice di cui sopra? Che per esprimere la stessa cosa Codice:
sono state richieste diverse linee di codice (in particolare con assembly / linguaggio macchina il listato sarebbe piuttosto lungo) che portano a: - maggior possibilità di bug; print "hello world" Quanti bug ci sono in quelle cento linee? Induttivamente, se ti chiedessi di scriverlo centomila volte quanti errori commetteresti? Io dico zero. La quantità di codice è di per sè irrilevante. Codice:
- dispersività nella rappresentazione e comprensione del concetto. Codice:
Se vuoi una definizione formale di quello che ho detto non te la posso dare, perché sai bene che nel campo della programmazione si va spesso per esperienza / "best practices". Un po' come quando si afferma che la programmazione orientata è una "cosa buona e giusta". Quote:
Quote:
Quote:
Quote:
Codice:
Concordi, poi, che l'approccio "tradizionale" alla modellazione della realtà facendo uso di oggetti si è rivelato fallimentare? Codice:
Questa http://java.sun.com/docs/books/tutor...een/index.html quando ho lavorato a Diamonds funzionava soltanto con Windows. Su Linux non andava, e non perché mancasse adeguata accelerazione video. Quote:
Quote:
Quote:
![]()
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|||||||||
![]() |
![]() |
![]() |
#151 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Eridaje. Se qui qualcuno ha fornito argomentazioni vi assicuro che a me sono sfuggite. Quanto a Eckel, sul dizionario alla voce "argomentazione" mi risulta sotto "contrari".
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#152 | ||||||||
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Quote:
Comunque su questo avevamo già parlato (anche con te, che però hai preferito abbandonare velocemente questo ramo della discussione) e avevo anche suggerito di utilizzare il linguaggio macchina dell'Itanium di Intel per il paradigma imperativo, Lisp per quello funzionale e Perl per quello a oggetti. Sei d'accordo che è tranquillamente possibile utilizzare questi linguaggi per iniziare con quei paradigmi? Quote:
Quote:
Quote:
Da notare, comunque, che hai dovuto aggiungere degli #include per poter utilizzare alcune funzioni di libreria, e col significato tutt'altro che semplice da apprendere. Questo per dovere di cronaca. Quote:
Codice:
print "Calcolo delle radici di un'equazione di secondo grado nella forma aX^2 + bX + c" a = float(raw_input('Inserire il coefficiente a: ')) b = float(raw_input('Inserire il coefficiente b: ')) c = float(raw_input('Inserire il coefficiente c: ')) print "Le soluzioni dell'equazione sono", (-b + complex(b ** 2 - 4 * a * c) ** 0.5) / (2 * a), 'e', (-b - complex(b ** 2 - 4 * a * c) ** 0.5) / (2 * a) Quote:
Quote:
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
||||||||
![]() |
![]() |
![]() |
#153 | ||||||||||||||
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Quote:
La "comunicazione" di quel che si sta facendo, invece, avviene in forme diverse. Quote:
Portare un esempio in cui tale misura è pari a zero nulla toglie alla realtà speriementale, con applicazioni reali, che dipingono un quadro ben diverso (che ho riportato io). Ti faccio anche presente che applicando lo stesso principio che hai esposto (partire da codice "sicuramente senza bug" e combinarlo ad libidum), induttivamente dovremmo poter costruire un'intera applicazione, complessa quanto si vuole, che in linea teorica dovrebbe essere sempre priva di bug, ma ho il non vago sospetto che qualche rogna prima o poi capiterà. Quote:
Sempre per quanto mi riguarda, rappresentare qualcosa con meno informazioni aiuta nella comprensione del quadro generale in cui sono collocati questi concetti: faccio meno fatica a tenere traccia di ciò che sto facendo. Il tutto senza rinunciare alla chiarezza e alla leggibilità (in soldoni: roba come whitespace o brainfuck sono da scartare). Più aumenta la lunghezza del codice, più la rappresentazione e la comprensione di un concetto tendono a disperdersi. Nuovamente cito il caso dell'assembly: per rappresentare la stessa cosa ho bisogno di molte più istruzioni, e la comprensione di ciò che sto facendo diventa più problematica. Viceversa, con Perl posso esprimere le stesse cose in maniera molto più compatta, ma a scapito di chiarezza e leggibilità. Ricapitolando, per quanto mi riguarda il codice dovrebbe essere quanto più compatto, ma senza rinunciare a chiarezza e leggibilità. Questo è il mio punto di vista. C'è qualcosa che non va in quello che ho scritto? Quote:
Quote:
Quote:
A parte questo, non vedo perché sarebbe un punto a sfavore (se non per una maggiore immediatezza e semplicità della forma attuale): print diventerebbe un oggetto come un altro in Python, quindi rendendo il linguaggio più coerente da questo punto di vista. Quote:
Non conosco Scala, per cui non so di cosa parli in quel contesto. Comunque non hai risposto sull'ereditarietà ed estensione multipla: ti piace? Non ti piace? Ed eventualmente perché. Quote:
Quote:
Ma hai parlato anche di VM, e qui non ero d'accordo sulla portabilità e ti ho fatto un paio di esempi che mi sono venuti in mente. Tutto qui. Quote:
![]() Quote:
![]() Quote:
![]() Quote:
![]() Tanto le checked exception sono peggio del cancro dello scrivano, anche se non lo ammetterai mai. ![]() ![]()
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
||||||||||||||
![]() |
![]() |
![]() |
#154 | ||||||
Senior Member
Iscritto dal: Dec 2005
Messaggi: 7249
|
Quote:
![]() ![]() Quote:
Quote:
Quote:
questo è completo: Codice:
#include <stdio.h> #include <math.h> #include <complex.h> int main() { float a = 0, b, c; float delta; printf("Calcolo delle radici di un'equazione di secondo grado nella forma aX^2 + bX + c\n"); while(a == 0) { printf("inserire il coefficiente a (diverso da 0): "); scanf("%f", &a); } printf("inserire il coefficiente b: "); scanf("%f", &b); printf("inserire il coefficiente c: "); scanf("%f", &c); delta = b*b-4*a*c; if(delta > 0) { float x1 = (-b-sqrt(delta))/(2*a); float x2 = (-b+sqrt(delta))/(2*a); printf("l'equazione ha due soluzioni reali: %f e %f", x1, x2); } else if(delta == 0) { float x = -b/(2*a); printf("l'equazione ha un'unica soluzione reale: %f", x); } else { float _Complex x1 = (-b-csqrt(delta+0*I))/(2*a); float _Complex x2 = (-b+csqrt(delta+0*I))/(2*a); printf("l'equazione ha due soluzioni complesse: %f%fi e %f+%fi", creal(x1), cimag(x1), creal(x2), cimag(x2)); } return 0; } Quote:
Quote:
ho sempre consigliato pascal infatti, ma anche imparare il C non è la fine del mondo Ultima modifica di k0nt3 : 09-10-2007 alle 22:01. |
||||||
![]() |
![]() |
![]() |
#155 | ||||||||||
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Quote:
Quote:
Quote:
Per il resto, il contesto era quello di "iniziare a programmare", e la scelta dev'essere ben ponderata. Altrimenti torniamo al discorso di cui sopra su linguaggio macchina, Lisp e Perl. Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Ah, dimenticavo: per Delta = 0 si hanno DUE soluzioni, reali e coincidenti. ![]()
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
||||||||||
![]() |
![]() |
![]() |
#156 | ||
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
Quote:
Quote:
![]() Nel caso in cui quel coefficiente sia uguale a zero è semplicemente un'errore di chi ha inserito i dati. Si potrebbe criticare il fatto di non avere introdotta una gestione delle eccezioni per presentare meglio all'utente l'errore da lui commesso.. ma mi pare che il discorso non verteva sulla forma dell'errore da presentare all''utente quanto piuttosto sulla risoluzione di equazioni di secondo grado. Se poi si vuole estendere il programma per risolvere equazioni di grado diverso dal secondo quello è un altro requirement che non è stato in alcun modo specificato.
__________________
![]() |
||
![]() |
![]() |
![]() |
#157 | |
Senior Member
Iscritto dal: Dec 2005
Messaggi: 7249
|
Quote:
non facciamoci un processo su sta cosa.. l'unica specifica era che l'equazione doveva essere di secondo grado (quindi con a <> 0) Ultima modifica di k0nt3 : 10-10-2007 alle 08:45. |
|
![]() |
![]() |
![]() |
#158 | |||
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Il problema, quindi, era BEN POSTO, e la soluzione che ho proposto ASSOLUTAMENTE CORRETTA. Quote:
Il "contratto" stipulato fra programmatore e utente è chiarissimo: si parla di equazioni di secondo grado. In QUESTO contesto il programma funziona alla perfezione. Quote:
Io, da buon programmatore, mi sono attenuto strettamente e perfettamente al problema.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|||
![]() |
![]() |
![]() |
#159 | |
Member
Iscritto dal: Dec 2004
Città: Una palla di fango abitata da scimmie sognatrici
Messaggi: 128
|
Quote:
![]()
__________________
"Contro la stupidità gli stessi dei lottano invano" Friedrich Schiller "Chi rinuncia alla libertà per raggiungere la sicurezza non merita né la libertà né la sicurezza" Benjamin Franklin "Guardati dalla furia di un uomo tranquillo" John Dryden |
|
![]() |
![]() |
![]() |
#160 | ||||||||
Senior Member
Iscritto dal: Dec 2005
Messaggi: 7249
|
Quote:
considerare il linguaggio macchina ha poco senso perchè per prima cosa è un linguaggio di natura diversa e richiede la conoscenza dell'hardware su cui gira. in ogni caso l'asm (non il linguaggio macchina) può essere una scelta se si è interessati a questo tipo di programmazione e si conosce l'architettura della cpu. Quote:
![]() Quote:
Quote:
![]() Quote:
![]() Quote:
Quote:
Quote:
non mi sembra il caso di fare dell'umorismo |
||||||||
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:53.