|
|
|
![]() |
|
Strumenti |
![]() |
#221 | |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12093
|
Quote:
ho paura solo ad immaginare cosa sia dato che il BELLISSIMO visual studio nemmeno mi rinomina il nome delle classi in seguito ad una copia e mi sono accorto che aveva fatto un casino tremendo solo una volta che ho riaperto il file originale e non funzionava + una mazza dato che avevo fatto refactor -> rename a manetta.. ![]() meno male che c'è il santissimo SVN altrimenti sarebbe stata la volta buona che sarei partito dritto dritto per redmond... Ma cazzarola.. Un editor completamente gratuito come eclipse fa 'sta cosa da tempo immemore.. possibile che nel 2008 ancora devo smazzarmi le cose a mano io?!? ![]() ah.. ovviamente mi è capitato proprio in questo istante... per questo da quasto post traspare tutto il mio "amore" verso visual studio.... ![]()
__________________
![]() |
|
![]() |
![]() |
![]() |
#222 | |
Senior Member
Iscritto dal: Dec 2005
Messaggi: 558
|
Quote:
![]() ![]() ![]() |
|
![]() |
![]() |
![]() |
#223 | |
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3691
|
Quote:
Mi sto solo arrabbiando un po' con la parte grafica. Non mi hanno messo la possibilita' di disegnare un semplice punto. Ma perche'? Vabbe'. Sto per disegnare dei piccoli cerchi, e a sto punto li faccio tanto piu' grossi quanto piu' grande e' la loro massa. Putroppo non ho un compilatore Python sotto mano. Ho scaricato IronPython e me lo guardero' con calma. Sulla velocita' di sviluppo non lo metto in dubbio che sia piu' veloce del C. Devo dire pero' che lo pensavo piu' accattivante. Invece a conti fatti non e' proprio tanto stravolto rispetto al C++. Il codice della parte centrale, ovvero lo STEP di simulazione, e' venuto fuori cosi' Codice:
public List<Planet> PlanetList = new List<Planet>(); // Costruttore: vado a caricarmi un po' di pianeti da file XML. // Un passo di simulazione. public void Step() { int plength = PlanetList.Count; foreach (Planet p in PlanetList) p.ResetAccell(); // Per ciascuna coppia di pianeti calcolo l'interazione reciproca for(int t=0;t<plength;t++) { Planet p = PlanetList[t]; for(int u=t+1;u<plength;u++) { Planet q = PlanetList[u]; Interaction(p, q); } } // Applico l'accellerazione di ciascun pianeta. foreach(Planet p in PlanetList) { p.vinst += p.accell; p.coords += p.vinst; } } public const double G = 1d; //Interazione tra due pianeti. Calcolo dell'accellerazione su ciascuno dei 2 public void Interaction(Planet p1, Planet p2) { double dist2 = PointD.Dist2(p1.coords, p2.coords); double dist = Math.Sqrt(dist2); double F = G / dist2; PointD delta = (p1.coords - p2.coords) / dist; PointD deltaF = delta * F; p1.accell += deltaF*(-p2.m); p2.accell += deltaF*p1.m; } Ma non mi sembra molto diverso da come l'avrei scritto in C++ Il resto e' poco interessante, solo la definizione degli operatori di cui prima e la definizione della classe Planet (quasi una struttura in realta') In Python come e' venuto scritto?
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
![]() |
![]() |
![]() |
#224 | |||||||||
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Quote:
Quote:
In JavaScript mi sembra che un variabile mai assegnata assuma il valore "unknown" (se ricordo bene) una volta referenziata. In Python ciò scatena un errore (prima di essere referenziata dev'essere sempre assegnata). Quote:
Ricca varietà di tipi di dati predefiniti (riporto i più importanti e "particolari"): - interi (illimitati. Es: 1 << 256 = 115792089237316195423570985008687907853269984665640564039457584007913129639936L); - stringhe (queste devi provarle: per la manipolazione delle stringhe Python è particolarmente comodo e versatile; esempietto al volo: s = ', '.join(['Qui', 'Quo', 'Qua']) produce s = 'Qui, Quo, Qua'), con supporto anche allo unicode (quindi posso avere stringhe che contentono sequenze di byte, oppure sequenze di caratteri unicode; la gestione è esattamente la stessa); - tuple, cioé sequenza di oggetti immodificabile (per restituire più valori o s/impacchettarli; es: return 'Qui', 'Quo', 'Qua' in una funzione, oppure x, y, z = 'Qui', 'Quo', 'Qua' assegna x = 'Qui', y = 'Quo', y = 'Qua'); - liste; simili alle tuple, ma modificabili (es: x = [1, 2, 3]; y = [9, 8, 7, 6]; z = x + y assegna z = [1, 2, 3, 9, 8 ,7, 6])); - dizionari, cioé array associativi / hash map / hash table (es: x = {'Qui' : 1, 'Quo' : 2, 'Qua' : 3}; x['Quo'] restituisce 2; - set; simili alle liste, ma contengono valori unici e non ordinati, e inoltre supportano le operazioni su insiemi (unione, differenza simmetrica, intersezione, ecc.). - decimali (valori in virgola fissa illimitati). Ce ne sarebbero tanti altri, ma te li risparmio. La seconda "macroarea" verte sul carattere dinamico di Python. In parte l'avrai notato dagli esempi precedenti, dove le liste o dizionari non hanno specificato il/i tipo/i su cui lavorano. In soldoni: possono contenere valori di qualunque tipo. Esempio: L = [1, 'Qui', 3.14, {'Qui' : 1, 1 : 'Qui'}, set([1, 2, 3, 5, 7, 11])] Da nessuna parte devi specificare il tipo dell'oggetto. Ad esempio quando definisci una funzione (o metodo): def Somma(x, y): return x + y Non solo non definisci il tipo, ma più che una funzione hai appena definito un "comportamento", posto che x e y siano oggetti che supportano l'operazione di addizione (il primo o, in mancanza, il secondo oggetto). Insomma, è un'operazione "generica" / "universale". Un'utile conseguenza di ciò è che non hai bisogno di ricorrere alla definizione di un delegate quando devi "passare una funzione" a un'altra funzione. def Apply(Function, x, y): return Function(x, y) print Apply(Somma, 1, 2) Sulla "dinamicità" di Python ci sarebbe ancora parecchio da dire. Se ti ho stuzzicato l'appetito posso farti altri esempi (ci sarebbero argomenti molto più avanzati, come i "decoratori", ad esempio). Quote:
Quote:
Quote:
![]() ![]() Ci sono aziende come Google che non hanno certo progettini da due soldi e per i quali viene utilizzato Python... ![]() Abbiamo avuto esperienze diverse. Tutto qui. ![]() Quote:
![]() Quote:
![]() ![]() Però quando ti dico che esistono IDE e strumenti per Python che permettono di individuare velocemente l'errore in cui sei incappato non vuoi sentire ragioni... :|
__________________
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 |
|||||||||
![]() |
![]() |
![]() |
#225 |
Senior Member
Iscritto dal: Dec 2005
Messaggi: 558
|
oddio...devo dire che dato che l'ho preso come esercizio per l'università io ho usato l'algoritmo di runge kutta (al quart'ordine) e il formalismo hamiltoniano (quindi ho 2 coordinate e 2 momenti, il tutto fatto con coordinate angolari perchè è un problema quasi centrale e mi sembrava meglio) quindi mi sa che è venuto decisamente più illeggibile
![]() |
![]() |
![]() |
![]() |
#226 |
Senior Member
Iscritto dal: Dec 2005
Messaggi: 558
|
beh tanto per far vedere del codice:
ho la classe pianeta che anche nel mio caso è praticamente una struttura: Codice:
class pianetaClass: def __init__(self, nome, massa, r, theta, pr, ptheta): self.nome = nome self.massa = massa self.coord = dict([('r',r), ('theta',theta)]) self.mom = dict([('r',pr), ('theta',ptheta)]) def __str__(self): return self.nome + ": massa = " + str(self.massa) + ", posizione = (" + str(self.coord['r']) + ", " + str(self.coord['theta']) + "), momenti = (" + str(self.mom['r']) + ", " + str(self.mom['theta']) + ")" # Ritorna un pianeta con coordinate e momenti uguali a quelli di self + gli argomenti def aggiungiCost(self, r, theta, PR, PTheta): return pianetaClass(self.nome, self.massa, self.coord['r'] + r, self.coord['theta'] + theta, self.mom['r'] + PR, self.mom['theta'] + PTheta) # Ritorna la distanza (al quadrato) tra self e il pianeta in argomento def distanzaQ(self, pianeta): dist = self.coord['r']**2 + pianeta.coord['r']**2 - self.coord['r'] * pianeta.coord['r'] * math.cos(self.coord['theta'] - pianeta.coord['theta']) return math.sqrt(dist) Codice:
class sistemaSolareClass: def __init__(self, pianeti): self.pianeti = pianeti def __str__(self): toPrint = "Attuali posizioni e momenti dei pianeti all'interno del sistema solare:\n" for pianeta in self.pianeti: toPrint += str(pianeta) + "\n" return toPrint def evolvi(self, tempo, salvaOgni=1000): # questo metodo prende un centinaio di righe di codice piuttosto noiosette # che sono semplicemente l'implementazione dell'algoritmo di runge kutta def rPunto(self, pianeta): return (pianeta.mom['r'] / pianeta.massa) def thetaPunto(self, pianeta): return pianeta.mom['theta'] / (pianeta.massa * pianeta.coord['r']**2) def PRPunto(self, pianeta, altriPianeti): valore = - G*M * pianeta.massa / (pianeta.coord['r']**2) + pianeta.mom['theta']**2 / (pianeta.massa * pianeta.coord['r']**3) for altroP in altriPianeti: valore -= (1./2.) * G * altroP.massa * pianeta.massa / (pianeta.distanzaQ(altroP)**(3./2.)) * (2.*pianeta.coord['r'] - altroP.coord['r'] * math.cos(pianeta.coord['theta'] - altroP.coord['theta'])) return valore def PThetaPunto(self, pianeta, altriPianeti): valore = 0 for altroP in altriPianeti: valore -= (1./2.) * G * pianeta.massa * altroP.massa / (pianeta.distanzaQ(altroP)**(3./2.)) * pianeta.coord['r'] * altroP.coord['r'] * math.sin(pianeta.coord['theta'] - altroP.coord['theta']) return valore ![]() per inciso nel metodo che calcola runge kutta ho anche messo la scrittura su file dei risultati (in output ci sono solo x = r cos(theta) e y=r sin(theta) per poter essere visualizzati meglio, io uso gnuplot e vengono tante belle quasi-ellissi ![]() il programma "esterno" si riduce ad un qualcosa del genere: Codice:
a = pianetaClass("Terra", 1, 1, 0.4, 0.1, 0.5) b = pianetaClass("Mercurio", 0.3 0.4, 2, 0.03, 0.02) mySis = sistemaSolareClass((a, b)) mySis.evolvi(10, 100000) ![]() |
![]() |
![]() |
![]() |
#227 | |||
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11782
|
Quote:
Quote:
Quote:
![]() Si riscrive il codice. E si usa un linguaggio migliore.
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|||
![]() |
![]() |
![]() |
#228 | |||
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
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 |
|||
![]() |
![]() |
![]() |
#229 | ||
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3691
|
Quote:
Stocks!!! 100 righe nascoste pure. Comunque hai praticamente scritto la formula di evoluzione secondo newton qui Quote:
A cosa ti e' servito Runge Kutta?
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
||
![]() |
![]() |
![]() |
#230 | |
Member
Iscritto dal: Jul 2005
Messaggi: 282
|
Quote:
![]()
__________________
CPU: Intel Core 2 Quad Q6600 - Mobo: Asus P5E - RAM:4x2GB DDR2 - sk video: Power Color ATI Radeon HD3870 - HD:Western Digital 750GB |
|
![]() |
![]() |
![]() |
#231 | |
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3691
|
Quote:
Mi sa che non sono mica tanto diversi alla fine allora. Guarda qui: Codice:
var sorgente = new string[] { "bimbo", "Brutto", "Cattivo", "ﺹﻀﻏﻖﺦﺬﺡﺴ" }; var pippolone=string.Join(",", sorgente ); var Tupla=new{ Nome = "Pippo", age = 15 }; string PippoName=Tupla.Nome; int PippoAge=Tupla.age; int[] int1=new[]{1,2,3,4}; var int2=new[]{5,6,7,7}; var insieme=int1.Union(int2); Codice:
var quanti = insieme.Count(); var qualigrossi = insieme.Where( u => u>3); int quantigrossi = qualigrossi.Count(); var alcontrario = insieme.Reverse(); var piuuno = insieme.Select( u=>u+1 ); var diversi = insieme.Distinct(); bool celo = insieme.Contains(2); var manca = !insieme.Contains(9); int sommone = insieme.Sum(); var soloiprimi5 = insieme.Take(5); int dammiquesto = int1.Single(y => (y > 4) && (y < 6)); var comuni = int1.Intersect(int2); var subtract=int1.Where(t => !int2.Contains(t)); A questo punto, aggiungendo una funzione alla classe generica "array di interi" (penso che sia un concetto simile alla decorazione di cui accennavi) ho potuto scrivere anche Codice:
var oracelho=int1.MenoSoloPerInt(int2); Codice:
public static int[] MenoSoloPerInt(this int[] daquesti, int[] togliquesti) { return daquesti.Where(t => !togliquesti.Contains(t)).ToArray(); } public static IEnumerable<T> Meno<T>(this IEnumerable<T> daquesti, IEnumerable<T> togliquesti) { return daquesti.Where(t => !togliquesti.Contains(t)); } I dictionary ci sono, per implementare le Hashtable tipizzate. Ci sono anche i SortedDictionary per resituire velocemente le chiavi ordinate (quando servono), le LookUp che sono Dictionary con solo le chiavi, e altre. Conti fatti restano fuori gli interi lunghi e i virgola fissa lunghi (e magari altri che non hai citato) pero' ammetti che non si usano poi cosi' spesso. E soprattutto non fanno uso del coprocessore (molto probabilmente) quindi non saranno neppure molto performanti. Spero che gli interi normali si differenzino da questi. Pero' potrei mettere sul tavolo ancora una trentina (non esagero) di funzioni come le Where, Union, etc. di cui sopra, gia' in libreria e pronti all'uso, da applicare su oggetti enumerabili come le liste, etc. Se poi ci si mette si puo' scrivere anche qualcosa di molto carino, che sembra quasi SQL. Finisco dicendo che l'uso della keyword var lo limiterei proprio solo dove non se ne puo' fare a meno, ovvero dopo le creazioni al volo di oggetti di una classe senza nome (Come la Tupla di prima), oppure a seguito della restituzione di oggetti "anonimi" da funzioni che usano i generici. In pratica io sopra avrei esplicitato quasi tutte le dichiarazioni, ma solo perche' in seguito mi piace leggere le cose in quel modo. Il risultato sarebbe stato lo stesso.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. Ultima modifica di gugoXX : 27-03-2008 alle 23:55. Motivo: Messo un po' di caratteri non ASCII nella stringa |
|
![]() |
![]() |
![]() |
#232 | |
Senior Member
Iscritto dal: Dec 2005
Messaggi: 558
|
Quote:
![]() e te l'ho detto, ho usato la tua idea come banco di prova per provare a sviluppare un programmino di calcolo numerico in python (cosa che non avevo mai fatto) e per riprendere la mano con runge kutta che mi tocca utilizzare in un corso che sto facendo ora ![]() |
|
![]() |
![]() |
![]() |
#233 | |
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3691
|
Quote:
Semplicemente ad ogni passo calcolo l'interazione fra ciascuna coppia di pianeti (accellerazioni), aggiorno le velocita' di ciascuno, aggiorno di conseguenza le coordinate e ricomincio. Perche' non si conserverebbe l'energia? L'unica cosa che non considero e' la collisione (al posto di schiantarsi e inglobarsi si trapassano, e questo non e' ovviamente reale).
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
![]() |
![]() |
![]() |
#234 | |
Senior Member
Iscritto dal: Dec 2005
Messaggi: 558
|
Quote:
![]() ![]() |
|
![]() |
![]() |
![]() |
#235 | |
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3691
|
Quote:
Mi fido. E' ovvio che si tratti di un'approssimazione, ma pensavo che riducendo a piacere il DeltaT potessi raggiungere una precisione a piacere. Ma a questo punto mi sa che non e' cosi'. Ho finito la parte grafica. E' davvero carino. Velocissimo peraltro, non pensavo. Ci ho messo anche un attrito, senno' era noioso. Non succedeva nulla e i pianeti andavano avanti forse per sempre. Ora sto facendo girare un po' di pianeti in senso orario e un po' in senso antiorario. Funzionano pure i satelliti!!! Ma il sole non doveva stare sempre in uno dei 2 fuochi dell'ellisse? Non era una delle leggi di Keplero? Ad occhio mi sembra che ci siano casi che non sembrano proprio rispettarla... boh?
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. Ultima modifica di gugoXX : 27-03-2008 alle 23:25. |
|
![]() |
![]() |
![]() |
#236 |
Senior Member
Iscritto dal: Dec 2005
Messaggi: 558
|
bello! domani faccio anche io la gui va...carina l'idea dell'attrito
![]() |
![]() |
![]() |
![]() |
#237 |
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11782
|
Python, l'unico linguaggio che funziona senza neppure scaricare l'interprete... solo su... Rieducational Channel
![]()
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA Ultima modifica di fek : 28-03-2008 alle 00:13. |
![]() |
![]() |
![]() |
#238 | |
Senior Member
Iscritto dal: Jan 2003
Città: Milano - Udine
Messaggi: 9418
|
Quote:
Quei pochi che reggono il confronto sono sulle dita di una mano e in ogni caso non offrono la stessa varietà e produttività in termini di strumenti: lo stesso Eclipse, è sì ricco di plugin ma se si sviluppa in Java è un discorso, passando ai linguaggi C-like un altro (senza menzionare nemmeno il confronto tra Matisse e il tool integrato in Eclipse). Per quanto riguarda Mono sono rimasto piuttosto di sale anche io eppure sì è utilizzato anche i progetti grossi; al di là dei nomi che ha fatto fek ci sono Beagle, F-Spot, Zenworks Linux Management, lo stesso Moonlight (porting di Silverlight per Linux) ne è un suo "frutto". x cionci: scusa ma abbiamo capito che Python non lo digerisci, più o meno ad ogni menzione di questa parola scrivi un messaggio in cui si capisce piuttosto bene il tuo pensiero, tanto quanto Cesare invece lo loda. Basterà no? Posso capire che il suo atteggiamento sia un po' "oltranzista" (anche se poi tutto sommato ci si ride in tanti su ![]() Fek ha avuto un'esperienza completamente opposta, però ci hanno lavorato entrambe seppur con profitto differente e dal mio punto di vista hanno senz'altro più titolo per parlarne con cognizione di causa. E al di là del profilo tenuto, le critiche penso siano più solide di chi le fa sulla base delle caratteristiche del linguaggio ma senza (correggimi se sbaglio) averlo mai utilizzato nella sua esperienza lavorativa. D'altra parte il tuo non sapere che Python rientri nella famiglia NET, mi pare sia piuttosto indicativo, come tempo fa' non sapevi fosse disponibile il plugin per Eclipse. |
|
![]() |
![]() |
![]() |
#239 | ||||||||
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
![]() Quote:
![]() ![]() Quote:
Somma = (lambda x, y: x + y)(1, 2) ![]() Ma Python, come dicevo, non richiede che tu definisca un "delegate" per indicare che il parametro di una funzione è... una funzione: passi direttamente o il nome della funzione (se esiste una funzione) oppure ne crei al volo una con l'istruzione lambda. ![]() Quote:
Map = {'Qui' : 1, 'Quo' : 2, 'Qua' : 3} in C#. ![]() Quote:
E' chiaro che le prestazioni non posso essere paragonabili a quelle di C#, ma tieni presente che Python attualmente non usa nessuna forma di compilazione JIT: l'interprete esegue i byte code uno alla volta. Esistono poi progetti come Psyco http://psyco.sourceforge.net/ che permettono di ottenere delle buone prestazioni. Comunque Python non è nato per essere veloce, ma semplice: non ti devi preoccupare di quale tipo di intero da usare fra gli 8 (se non ricordo male) che un linguaggio come C# ti mette a disposizione (più eventuali altre classe per gestire "BigInt"). Quote:
![]() Quote:
![]() Comunque stare a fare confronti "sulla carta" lascia il tempo che trova: potrei stare qui per ore a raccontarti come si fa qualcosa in Python, e tu a rispondermi come la faresti in C#, ma non risolveremmo nulla. Dopo che avrai approfondito il tuo studio di C#, quando avrai tempo ti consiglio di smanettare con Python: è il modo migliore per poterti fare un'idea sul linguaggio, i suoi pregi e i suoi difetti. ![]() Quote:
Codice:
print "Permettimi, come consigli ad altri di studiare meglio Python, dai un'occhiata meglio alle possibilita' offerte da .NET prima di fare certe affermazioni.".replace('Python', 'C#').replace('.NET', 'Python') ![]() Python è costituito da 3 elementi fondamentali: la virtual machine, il "compilatore" (lo metto tra virgolette e ti spiego dopo il perché) e la libreria standard. Senza di queste non vai da nessuna parte: non puoi lavorare in Python. Il "compilatore" è un eseguibile (python.exe per Windows), ma non ha soltano questa funzionalità perché può: - compilare (e basta) un sorgente (specificando l'opzione che forza la sola compilazione); - compilare (se il sorgente è cambiato dall'ultima esecuzione) ed eseguire l'applicazione; - eseguire i comandi in maniera interattiva. Ecco perché ti dico che con Python la shell (interattiva) è già inclusa, mentre con linguaggi come C# (o Java, che ha javac.exe per compilare e java.exe per eseguire l'applicazione) devi andare a cercare soluzioni di terze parti. ![]() Poi è chiaro che "fuori" c'è di meglio: ci sono IDE molto più avanzati, ma anche shell interattive decisamente migliori. ![]()
__________________
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 |
||||||||
![]() |
![]() |
![]() |
#240 | |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
Obiettivamente, visti gli scopi di chi ha creato il thread, cioè creare un programma di monitoraggio e rilevamento della caratteristiche hardware, avresti consigliato Python ? Questo un giorno potrebbe avere la necessità di scrivere un driver...e gli si consiglia Python ? |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:17.