|
|
|
![]() |
|
Strumenti |
![]() |
#121 | |||||
Senior Member
Iscritto dal: Dec 2005
Messaggi: 7249
|
Quote:
Quote:
e fai male visto che non è prettamente un linguaggio a oggetti, ma è anche procedurale e funzionale Quote:
Quote:
Quote:
banalmente perchè non sono pensati per essere usati in questo modo |
|||||
![]() |
![]() |
![]() |
#122 | ||||||
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Comunque stai già affermando che qualunque linguaggio non va bene per imparare a programmare, visto che mi dici che sarebbe addirittura auspicabile partire da SUBITO con uno di alto livello: è evidente che la SCELTA del linguaggio, quindi, ha un ruolo fondamentale, al contrario di quello che hai sostenuto finora. Quote:
Quote:
- salto incondizionato; - salto condizionato; - salto a subroutine; - salto a routine del s.o. (supportato soltanto da alcune ISA); - loop (supportato soltanto da alcune ISA). Costrutti come if/then/else, switch, for, while, repeat, sono a un livello più alto, e non è necessario studiarli per imparare la programmazione strutturata (parlando sempre di assembly e linguaggio macchina). Quote:
Quote:
Quote:
La scelta del linguaggio, come anche tu lasci intendere sopra e contrariamente a quello che avevi affermato finora, è MOLTO importante (altrimenti non si capisce per quale motivo si dovrebbe iniziare da subito con un linguaggio di alto livello, come suggerivi). Io posso anche basare un corso di introduzione alla programmazione, partendo da quella strutturata, interamente sul linguaggio macchina, se la scelta può essere arbitraria, e quindi NON fermarmi soltanto al concetto di dato, variabile e istruzione, ma affrontare (molto più avanti ovviamente) persino il concetto di albero rosso-nero. Per far questo sceglierei l'ISA dell'Itanium di Intel, un particolare processore VLIW che esegue bundle a 128 bit contenenti 3 istruzioni debitamente sistemate al suo interno (perché esistono NUMEROSE regole e vincoli: le istruzioni non si possono "mischiare" a piacimento). Bada bene che ho sempre parlato di linguaggio macchina e mai di assembly. Il fatto che la scelta del linguaggio sia ritenuta del tutto arbitraria, mi permette di optare per il primo, e in particolare per l'ISA di cui sopra. Questo vuol dire anche rinunciare a tutte le comodità che forniscono gli assemblatori, in primis il calcolo degli offset per le istruzioni di salto e i dati, che col primo si devono necessariamente calcolare a mano e soprattutto ricalcolare ogni volta che vengono inserite nuove istruzioni e/o dati oppure ne vengano cancellate alcune. Un lavoro inumano che personalmente non augurerei nemmeno al mio peggior nemico (visto che c'ho lavorato per qualche tempo e so cosa significhi). Ma se la scelta è arbitraria, anche quella del linguaggio macchina per la programmazione strutturata è perfettamente valida. Come pure sarebbe valida quella di Perl per quella a oggetti, visto che offre la possibilità di lavorarci (guarda qui http://perldoc.perl.org/perlboot.html il tutorial per iniziare a programmare a oggetti con PERL; ci sono altri 3 link sul sito che lo affrontano in maniera più approfondita, ma te li sconsiglio vivamente; se hai poco tempo e vuoi farti velocemente un'idea di come si lavora con gli oggetti in Perl, qui http://www.garshol.priv.no/download/...erl.html#id3.5. trovi una rapidissima trattazione). In definitiva, quello che voglio ribadire ancora una volta è che la scelta di un linguaggio ha, invece, notevoli ricadute, e per questo non è vero che qualunque linguaggio che permetta di esprimere un particolare paradigma va bene, in particolare per iniziare. L'esempio del linguaggio macchina penso sia piuttosto eloquente, e ti assicuro che quello di Perl non è certo da meno. ![]()
__________________
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 |
||||||
![]() |
![]() |
![]() |
#123 | ||||||
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Pensavo di sì, allora per quanto riguarda le classi che usano riferimenti e le interfacce non vale quanto avevo scritto.
Quote:
Quote:
Comunque hai detto che andrebbe bene anche l'assembly, e allora ti voglio vedere a implementare un albero rosso-nero con questo linguaggio (e ringrazia che non t'abbia mostrato il codice di un particolare trie che mi sono inventato una dozzina d'anni fa per comprimere i dati: già in Pascal da implementare mi ha richiesto non poco tempo e codice ![]() Quote:
Quote:
![]() Quote:
Ripeto: non basta aver imparato la sintassi, e scritto qualche esercizio per passare un corso per poter affermare di conoscere Python. 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 |
||||||
![]() |
![]() |
![]() |
#124 | |
Senior Member
Iscritto dal: Oct 2006
Messaggi: 1105
|
Quote:
|
|
![]() |
![]() |
![]() |
#125 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Deformazione professionale.
![]() Mi è sufficiente che tu abbia affermato che esistono dei linguaggi "più adatti allo scopo". Quindi c'è un qualche criterio (per lo più personale, dovuto ad esperienza, studi et similia) che ci permette di valutare se un linguaggio è "più o meno adatto". Dunque la scelta di un linguaggio piuttosto che un altro per imparare a programmare HA SENSO, e quindi ha pure senso la discussione che è stata fatta finora e che ha portato alla selezione di Java e Python quali candidati "migliori"; fra i quali mi sembra che Python, con le argomentazioni che abbiamo fornito (vedi anche l'intervista a Eckel, che è molto utile allo scopo), si dimostra il più adatto.
__________________
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 |
![]() |
![]() |
![]() |
#126 | |
Senior Member
Iscritto dal: Oct 2006
Messaggi: 1105
|
Quote:
che python sia piuttosto adatto non lo discuto, non concordo invece sul fatto che sia il più adatto, perché ripeto che molto dipende dai contenuti specifici che si vogliono veicolare... detto questo, spero di non aver mai negato che sia un degno pretendente, anche se ho sollevato alcuni problemi nella sua adozione... senza che questo metta java automaticamente al primo posto, non essendo esente da problemi... a me interessa solo far notare come il linguaggio in sè sia secondario rispetto ai contenuti concettuali. tutto qua |
|
![]() |
![]() |
![]() |
#127 |
Senior Member
Iscritto dal: Oct 2006
Messaggi: 1105
|
|
![]() |
![]() |
![]() |
#128 | |||||
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Quote:
Quote:
Eckel ha trattato diversi punti, fra cui anche quelli di cui hai parlato, per cui t'invito a leggerti quei link. Anche Guido van Rossum, il creatore di Python, ne ha parlato in un'altra intervista sempre nello stesso sito e se hai tempo ti consiglio di leggere pure quella. Quote:
Python ha il vantaggio non indifferente di poter smanettare grazie al suo interprete interattivo, quindi di provare immediatamente quel che ci frulla per la testa. Io lo uso molto spesso per modellare "al volo" una soluzione a un problema, e dopo che ho la prova che il tutto funziona come penso, ricopio quello che ho scritto e lo incollo nel sorgente in cui mi serve. Non hai idea di quanto sia comodo e produttivo quest'approccio: è impagabile. 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 |
|||||
![]() |
![]() |
![]() |
#129 | ||||||
Senior Member
Iscritto dal: Oct 2006
Messaggi: 1105
|
Quote:
Quote:
Quote:
![]() anzi, se mi riposti il link del post di eckel e di guido te ne sarei grato, giusto per non dovermi rispolverare il thread ![]() Quote:
![]() Quote:
eventualmente apsso poi per un prototipo. Quote:
![]() ![]() |
||||||
![]() |
![]() |
![]() |
#130 | |||||||
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
![]() Già sviluppare delle applicazioni è difficile e usualmente subentrano quelle cose fastidiosissime chiamate bug: figuriamoci se ci limitassimo soltanto alla teoria. Poi non so quanto resisterebbe uno qualunque che inizia da zero a imparare a programmare, limitandosi alla sola teoria: farebbe il botto in poco tempo. Quote:
Quote:
![]() Comunque di questo, come ti dicevo, ne parlano bene Eckel e van Rossum. Quote:
http://www.artima.com/intv/aboutme.html http://www.artima.com/intv/prodperf.html http://www.artima.com/intv/typing.html http://www.artima.com/intv/tipping.html Per van Rossum trovi tutti i link qui http://www.artima.com/intv/guido.html Quote:
Quote:
- meditazione sul problema e individuazione delle possibili soluzioni (è quella in cui spendo più tempo; in ciò sposo la tesi di Nikola Tesla, ribaltando la massima di Edison: il genio è il 99% ispirazione e l'1% traspirazione ![]() - stesura del codice, facendo ricorso a micro-modelli per i casi che devo trattare. - testing / simulazione, possibilmente con dati reali. Ovviamente si tratta di un processo iterativo che vede la loro ripetizione fino al raggiungimento dello scopo. Da un po' di tempo le ultime due fasi tendo a "fonderle", scrivendo dei test e/o delle applicazioni "di controllo" (questo avviene quando l'applicazione è un server; in questo caso sviluppo sempre parallelamente una o più applicazioni client che testano tutte le API del server, una a una, con dati reali o inventati appositamente). Per come procedo, come dicevo prima, Python mi è estremamente utile perché mi permette di modellizzare velocemente il problema (ed eventuali sottoproblemi), producendo e testando anche il codice allo stesso tempo, grazie all'interprete interattivo. 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 |
|||||||
![]() |
![]() |
![]() |
#131 | |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
![]() Poi è che chiaro nel mondo reale le cose sono diverse. ![]()
__________________
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 |
|
![]() |
![]() |
![]() |
#132 | |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
![]() 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 |
|
![]() |
![]() |
![]() |
#133 | |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
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 |
|
![]() |
![]() |
![]() |
#134 | ||
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Quote:
Codice:
Nelle versioni successive il problema di presentare, in un pezzo di codice banale qual'è un HelloWorld, strutture che vengono accantonate temporaneamente, mi pare rimanga. E sarà sempre così a meno che Java non diventi un'altra cosa, che non sia Java. E questo nella didattica, come ho avuto modo di scrivere + volte, non credo sia il massimo per chi ha voglia di addentrarsi nella programmazione. Codice:
Stroustrup lo includiamo nella scuola scandinava? Perchè non mi risulta sia concorde con questa classificazione. La ragione per cui Java non possiede l'estensibilità multipla è piuttosto banale: non hanno voluto introdurre una regola in più per decidere quale tra due definizioni superiori avrebbe dovuto essere ereditata dalla definizione inferiore. Essendo le interfacce prive di definizione il problema non si pone (in accordo all'ereditarietà scandinava). Predicare che la portabilità di Java sia un falso mito significa avere in mano le carte per poterlo dimostrare. Specifiche alla mano, quali norme del linguaggio di programmazione Java ne limiterebbero la portabilità? Ripetere per la Java Virtual Machine. Intendiamo[ci], è possibilissimo che non lo sia e con la massima umiltà chiedo: perchè? Immagino che neppure qui otterrò risposta. Quote:
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! Ultima modifica di PGI-Bis : 08-10-2007 alle 20:31. |
||
![]() |
![]() |
![]() |
#135 | |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
Quote:
ma ho risolto prima con ruby ![]() questa può significare due cose: a) ruby era migliore di python per quello che mi serviva b) la documentazione di ruby migliore di quella di python e sono riuscito a scrivere quello che mi serviva con uno sforzo minore Probabilmente la risposta corretta è la seconda.. ma ammetto che questo non è che va proprio a favore di python ![]() P.S. Hai visto il thread della cena dei siciliani in piazzetta? ![]() magari dopo il nubifragio dell'anno scorso a milano potremmo riuscire finalmente ad incontrarci visto che ritorno definitivamente a RC ![]()
__________________
![]() |
|
![]() |
![]() |
![]() |
#136 | ||||||||
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Esprime un concetto ben preciso, in maniera chiara e compatta. Prova a tradurre lo stesso concetto in un altro linguaggio: Java, SmallTalk, e perfino in assembly / linguaggio macchina. Cos'è cambiato? La forma, perché il concetto è rimasto esattamente lo stesso. Qual è la differenza rispetto al codice di cui sopra? Che per esprimere la stessa cosa 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; - dispersività nella rappresentazione e comprensione del concetto. 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:
Comunque a partire da Python 3.0 diventerà una funzione come le altre built-in che offre il linguaggio, perché ci sono dei vantaggi non indifferenti nell'averla definita come tale (c'è un documento scritto da Guido van Rossum in proposito che espone le motivazioni). Questo per sottolineare che, a differenza di linguaggi come Java, la comunità Python non si fa problemi a rompere la compatibilità col passato pur di avere a disposizione un linguaggio che rispecchia una precisa "filosofia". Quote:
Concordi, poi, che l'approccio "tradizionale" alla modellazione della realtà facendo uso di oggetti si è rivelato fallimentare? Quote:
Quote:
A parte questo, le implementazioni per Windows x64 non sono complete: mancano delle librerie / funzionalità, e ciò mi ha costretto a dover installare sempre la versione a 32 bit. Non so se la situazione sia cambiata dall'ultima volta che ho controllato. 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 |
||||||||
![]() |
![]() |
![]() |
#137 | |||
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
![]() Quote:
Quote:
![]() Quando scendi mi farebbe piacere incontrarci, visto che è da un pezzo che rimandiamo. ![]()
__________________
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 |
|||
![]() |
![]() |
![]() |
#138 | |||||||
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
![]() In ogni caso non vedo problemi a gestire progetti anche con più di 100mila righe di codice in Python. Anzi, il fatto di avere codice compatto e chiaro per me lo pone in un netto vantaggio proprio per questioni di manutenibilità. Quote:
Quote:
Quote:
![]() Sulla documentazione, non sarà ottima come quella di Java, ma almeno non è incasinata e dispersiva. ![]() 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 |
|||||||
![]() |
![]() |
![]() |
#139 | |||
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Quote:
![]() Quote:
Parli di "concetti più avanzati" quando le cose che hai descritto con Python le risolvi in maniera MOOOOLTO più semplice rispetto a C e Pascal, e te lo posso dimostrare quando voglio. Mi chiedo quando imparerai a parlare soltanto di cose che conosci veramente. ![]()
__________________
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 |
|||
![]() |
![]() |
![]() |
#140 |
Senior Member
Iscritto dal: Dec 2005
Messaggi: 7249
|
dimostralo pure allora.
io ho detto che le argomentazioni sono fragili in entrambi i sensi (perlomeno intendevo dire), quindi non sono daccordo con chi dice che più è alto il livello e meglio è |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:08.