2009-12-03 16 views
8

mi sento come se stessi tornando all'età della pietra.come passare da C# a Python?

come faccio a imparare di nuovo a sviluppare senza intellisense (pydev intellisense non conta) .. in generale, come si lascia con successo il comfort dello studio visivo?

+0

Non sopporto di fare nulla senza intellisense ora lol – Cyclone

+5

Wow, ti affidi davvero tanto all'intelligenza? Questo è un brutto segno ... –

+10

Non essere così duro con Billy r. Se lavori sempre nello studio visivo (come fanno molti) in cui intellisense è sempre disponibile, ti ci abituerai. Potresti semplicemente usare il blocco note e diventare uno sviluppatore "migliore", ma non hai vinto molto. Non vergognarti dell'uso delle funzionalità disponibili. Diventare "dipendenti" dall'intelligenza è raramente una cosa volontaria. Ora sono completamente d'accordo sul fatto che dovresti essere in grado di farcela senza. È questione di FARLO. : D –

risposta

8

Recentemente ho imparato Python con un forte background in C#.

Il mio consiglio: Fallo e basta. Scusa, non ho potuto resistere ma sono anche serio. Installa python e leggi: Python.org documentation (v2.6). Potrebbe essere utile anche un libro: mi piace lo the Python PhraseBook. Da lì, ho iniziato a usare python per implementare soluzioni per varie cose. In particolare, domande ProjectEuler.net.

Mi ha costretto a considerare i linguaggi e le strutture dati incorporate.

Python è veramente facile da usare e intuitivo. Per imparare le basi, mi ci è voluta circa un'ora. Per ottenere abbastanza bene con esso, è durato circa 5 ore. Certo, c'è sempre altro da imparare.

Inoltre, desidero notare che scoraggeremo l'utilizzo di IronPython o Jython perché mi sento come se stessimo imparando il core, il normale python è il primo passo.

+0

Apprendimento di tutti gli strumenti nella libreria standard: potrebbero essere necessari diversi giorni o settimane, a seconda di cosa devi fare –

+0

Abbastanza buono entro 5 ore? Jeez Sto andando su un paio anni e Ill ammettono solo di essere "ok" –

0

Non ho molta familiarità con Python quindi darò qualche consiglio generale. Assicurati di stampare alcune pagine di riferimento di funzioni comuni. Tienili vicino a te (o attaccato a un muro o alla scrivania) in qualsiasi momento durante la programmazione. Sono tradizionalmente uno sviluppatore di "età della pietra" e dopo aver sviluppato in VS per alcuni mesi ho trovato che la mia programmazione per hobby è difficile senza intellisense .. ma tienilo a memoria per memorizzare le funzioni più comuni e alla fine sarà semplicemente naturale

Dovrai anche usare un po 'più "difficile" il debug (non sono sicuro di come funzioni con Python)

Mentre stai imparando, dovresti goderti la bontà (almeno rispetto a C#) di Python anche se non hai intellisense .. speriamo che questo ti motiverà!

5

Un passo alla volta?

Inizia con programmi semplici (cose che puoi scrivere con gli occhi chiusi in C#) e continua ... Finirai per conoscere l'API a memoria.

+0

Grande affermazione! Sì, più impari a conoscere Python guardando la sua documentazione della libreria standard, più ti impegnerai a memoria. Lo saprai a memoria con abbastanza pratica nella lingua. –

0

Ho sempre usato IDLE solo per lo sviluppo di Python e non è affatto divertente. Consiglierei di prendere il tuo editor di testo preferito, il mio è Notepad ++ e di pregare per un plugin decente per questo. Ho sempre dovuto andare da Eclipse a Visual Studio, quindi le mie opinioni sono generalmente non valide in questi contesti.

+0

Se pensi nella lingua e nella libreria standard che hai memorizzato, non è affatto difficile programmarlo in (IDLE). –

+0

Non ho detto che è stato difficile, ho appena detto che non è divertente :) – Woot4Moo

2

Si può sempre iniziare con IronPython e continuare a svilupparsi in Visual Studio.

+0

finché alla fine si esce e si avventurano in Cpython. –

+1

Visual Studio è terribile per IronPython :( – orip

2

L'ide del pitone di wingware è molto carino. Questo è quello che ho finito usando da Visual Studio C++ /. Net a fare python.

1

Non preoccuparti dell'intelligenza. Python è davvero semplice e non c'è molto da sapere, quindi dopo alcuni progetti penserai a codice Python mentre guidi, mangi, ecc., Senza nemmeno provarci. Inoltre, l'editor di testo (IDLE) integrato di Python ha una versione wimpy di intellisense che è sempre stata più che sufficiente per i miei scopi.Se mai andare in bianco e volete sapere quali sono i metodi/proprietà e oggetto ha, basta digitare questo in una sessione interattiva:

dir (myObject)

0

lo uso Komodo Edit e lo fa abbastanza bene indovinare al completamento automatico.

+1

In secondo luogo. Vorrei anche secondare i commenti sopra che suggeriscono di tenere aperta una finestra della console (o una in Komodo) per ispezionare classi e oggetti. – Tom

4

<rant>

Questa è una sorta di ragione che penso essere un buon utente di Visual Studio ti rende un cattivo sviluppatore. Invece di imparare un'API, guardi nel browser degli oggetti finché non trovi qualcosa che suona più o meno come quello che stai cercando, crea un'istanza e poi premi. e inizia a cercare ciò che sembra la cosa giusta da usare. Anche se questo è molto veloce, significa anche che ci vuole un'eternità per imparare un'API in qualsiasi profondità, il che spesso significa che si finisce per reinventare la ruota (perché la ruota è sepolta sotto una montagna di elettrodomestici e non avevi idea era lì), o semplicemente facendo le cose in modo sub-ottimale. Solo perché puoi trovare rapidamente la soluzione A, non significa che sia la LA MIGLIORE soluzione.

</rant>

Nel caso di .NET, fornito con circa un miliardo di API per tutto sotto il sole, questo è in realtà preferito. Hai bisogno di setacciare un sacco di rumore per trovare quello che stai cercando.

Il codice Pythonic favorisce un modo ovvio di fare qualsiasi cosa. Questo tende a rendere le API molto semplici e leggibili. Il trucco è imparare la lingua e imparare le API. Non è terribilmente difficile da fare, specialmente nel caso di Python, e anche se non si può fare affidamento su intellisense all'inizio potrebbe non essere facile, non dovrebbe volerci più di una settimana o due prima che ci si abitui a non esserci .

Imparare la lingua e le librerie standard di base con un buon libro. Quando si tratta di una nuova API di libreria, trovo che il REPL e alcuni codici di esplorazione possono farmi capire abbastanza rapidamente cosa sta succedendo.

+2

-1 Per il tuo rant. Gli sviluppatori imparano e comprendono l'API, molti altri apprendono l'intento generale del framework e saranno in grado di dedurre la probabile posizione dell'API che desiderano utilizzare: – Gregory

+1

Sto parlando di esperienza personale, quindi forse questo si applica solo a me. 3 anni di .net vs un anno di rubino. Posso fare un sacco di cose su .net, ma ci sono solo alcune aree che conosco a qualsiasi profondità. molto meno librerie e API ruby, ma quello che so lo so davvero bene. Quando si tratta di sbattere fuori, trovo che sono molto più veloce usando lo stack MS, quando si tratta di acquisire effettivamente esperienza, trovo che sia più facile con il materiale rubino. Dopo averci pensato per un po ', sono arrivato alla lavorazione degli utensili il motivo principale. –

6

Python dispone di funzionalità di "introspezione". In particolare, puoi scoprire molto sulle funzionalità integrate usando un comando chiamato help() dalla riga di comando di Python.

Supponiamo di voler utilizzare le espressioni regolari e di voler sapere come utilizzarle.

>>> import re 
>>> help(re) 

si ottiene una bella visualizzazione delle informazioni, mostrata automaticamente una pagina alla volta (premere la barra spaziatrice per vedere la pagina successiva).

Se sai già che si desidera utilizzare la funzione sub() dal modulo re, è possibile ottenere aiuto su proprio questo:

>>> help(re.sub) 

E questa caratteristica help() funziona anche sul proprio codice, a patto che definisci Python docstrings per i tuoi moduli, classi e funzioni.

È possibile abilitare le funzionalità nell'editor di vim (o gvim, o vim per Windows) che abilitano una funzionalità di completamento automatico "IntelliSense" ed è possibile utilizzare Exuberant Ctags per generare "tag" di collegamento ipertestuale per consentire di navigare rapidamente attraverso il proprio codice. Questi girano vim in qualcosa che è grosso modo potente come un IDE, con tutta la potenza di Vim per il montaggio.(Non v'è uno strumento di refactoring esplicito costruito a vim, ma there are options available.

E come altri hanno notato, è possibile ottenere IDE per Python troppo. Ho usato il Wingware IDE, e mi raccomando. Io cerco di faccio la maggior parte del mio lavoro con software open source gratuito, ma quello è un pezzo di software proprietario che sarei disposto ad acquistare, ho anche usato Eclipse con il plugin Pydev (ho usato il suo strumento di refactoring e ha funzionato bene)

PS Python ha un set di funzionalità più ricco di C#, anche se il tuo codice non sarà più veloce. Una volta abituato a Python, non ti sentirai più nell'età della pietra

+0

Assolutamente. Questo ti incoraggia anche a scrivere codice in modo interattivo, che può essere una buona fonte di codice di prova più tardi ... –

1

Nello stesso modo in cui si fa qualsiasi altra cosa che non ha IntelliStuff.

Scommetto che hai scritto quella domanda senza l'aiuto di un programma per computer IntelliEnglish che ti mostrava una lista di verbi che potevi usare e ad esempio aggiungeva automaticamente la punteggiatura alla fine delle tue frasi. :-)

1

Io uso Eclipse e PyDev, la maggior parte del tempo, e l'aiuto di completamento automatico limitato che fornisce è piuttosto utile.

Non arriverà mai al livello di IntelliSense di VS, e non può, a causa della natura dinamica di Python. Ma ci sono compensazioni, grandi.

Il più grande è l'interruzione del ciclo di compilazione del codice. È così facile scrivere e testare il codice del prototipo in IDLE che molto spesso è dove vado per primo: traccerò e testerò un paio di metodi che devono interagire, capisco che c'è qualcosa che non so, imparo, correggi il mio test, quindi porta tutto su PyDev e guardalo funzionare la prima volta.

Un altro è che è molto più semplice. È molto importante sapere quali sono i moduli standard e cosa fanno, ma per la maggior parte possono essere raccolti con una piccola lettura. Io uso solo una piccola manciata di moduli nella mia programmazione quotidiana - itertools, os, csv (sì, bene), datetime, StringIO - e tutto il resto è lì se ne ho bisogno, ma di solito non lo faccio.

Le cose che è davvero importante sapere sono cose che IntelliSense non potrebbe aiutarti comunque. Il completamento automatico non sta per fare

self.__dict__.update(kwargs) 

fare un po 'di senso; devi imparare quale sia una linea di codice sorprendente, e perché lo scrivi, da solo.

Poi penserai "come potrei iniziare a implementare qualcosa del genere in C#?" e rendersi conto che gli strumenti utilizzati da queste persone in età della pietra sono un po 'più sofisticati di quanto si pensi.

0

Altri hanno suggerito diversi editor che hanno capacità intellettuali. Provale.

Installare anche ipython e utilizzarlo per apprendere la lingua in modo interattivo. È come una versione truccata della normale shell interattiva di Python con molte e molte funzionalità aggiuntive, e una delle più utili è il suo completo completamento e aiuto per la scheda sensibile al contesto.

Ad esempio se si digita

import r<tab> 

questo mostrerà tutti i moduli è possibile importare iniziano con r

import re 
re.<tab> 

mostrerà tutti gli oggetti nel modulo re

re.compile? 

mostrerà la docstring e altre informazioni sulla funzione re.compile, la piping automaticamente tramite un cercapersone se è più lungo di una schermata.

re.compile?? 

mostrerà anche il codice sorgente, se disponibile.

Utilizzando ciò, trovo che è molto più veloce passare a ipython e interrogare gli oggetti direttamente piuttosto che cercare qualsiasi cosa nei documenti. Hai anche accesso al solito sistema python help().

ipython ha molte e molte altre funzionalità, troppe da coprire in un breve post.

0

Pyscripter svolge un lavoro ragionevole in auto-completamento/intellisense. L'ho usato recentemente quando ho iniziato a imparare Python/Django, dove sono stato principalmente uno sviluppatore C# negli ultimi anni.

0

Suggerisco di andare in cold turkey - linguaggi come Python shine con grandi editor di testo. Scegli quello che vuoi diventare fantastico (vim, emacs, ecc.) E non guardare mai indietro.

-3

Utilizzare un buon editor come emacs o vim.

0

Un errore che le persone provenienti da C# o Java fanno molto è ricreare una gerarchia di classi di grandi dimensioni come è comune in quelle lingue. Con Python questo non è quasi mai utile. Invece, impara a scrivere con le anatre. E non preoccuparti troppo della mancanza di tipizzazione statica: in pratica, non è quasi mai un problema.

Problemi correlati