Domanda

Sbaglio se penso che Python è tutto quello che ho bisogno di maestro, al fine di risolvere la maggior parte delle attività di programmazione comune?

Modifica Io non sono OK con l'apprendimento di nuovi linguaggi di programmazione, se non mi insegnano nuovi concetti di programmazione e di problem solving; da qui l'idea dietro la padronanza di una moderna, in rapida evoluzione, con un ricco set di librerie di classi, ampiamente utilizzato e documentato, e, naturalmente, ha una "amichevole" imparare il linguaggio di programmazione della curva.

Credo che nel settore della tecnologia in rapida evoluzione, la specializzazione è la chiave per il successo.

È stato utile?

Soluzione

Sei giusto e sbagliato.

A destra: Conoscere un unico strumento molto bene è molto commerciabile e 'a desiderare. E Python è un bene per OO, per gli script, per la programmazione funzionale-ish, e ha ottime librerie matematiche e scientifiche.

Sbagliato: Python non vi insegnerà tutto ciò che un buon sviluppatore dovrebbe conoscere. A volte è necessario JavaScript per fornire alcune funzionalità sul lato client. A volte è necessario capire che cosa sta accadendo a un livello più fondamentale, come ad esempio il C sotto la Python. E a volte è necessario imparare a pensare in modo diverso, come si farebbe con Haskell e Clojure.

Altri suggerimenti

Si sarebbe sbagliato pensare che qualsiasi lingua singolo può fare tutto senza prendere in considerazione altre lingue.

Credo che nel settore della tecnologia in rapida evoluzione, la specializzazione è la chiave per il successo.

Non riesco a pensare ad un modo migliore per spararsi in un piede. L'apprendimento e la padronanza di una lingua è grande, ma parlare non si ha familiarità con l'apprendimento di nuove lingue se "non mi insegnano nuovi concetti di programmazione e di problem solving."

Lingue non ti insegnano questi concetti, spessi tomi polverosi e molti anni di lavoro a stretto contatto con le persone meglio di te stesso fa. Questi modelli di base, i concetti e principi di progettazione lingue trascendere e possono essere applicati in molti ambiti differenti.

Si può essere in grado di risolvere molti problemi con esso, ma non sarà sempre lo strumento migliore per il lavoro.

Non necessariamente so che ci sia qualcosa di sbagliato in questo, ma non vi consiglio per il bene della tua carriera. Ci sono un paio di problemi mi viene in mente:

  1. Python è caldo ora, ma sarà nel dire 5-10 anni? Io non so voi, ma io non desidero diventare il futuro equivalente di un programmatore COBOL mainframe.
  2. Python non sarà abbastanza veloce per ogni compito. Si può fare molto con esso, ma ci sono compiti là fuori che Python da sola non è abbastanza veloce per. In questi casi, si sia bisogno di sapere C (se c'è una parte specifica del codice che sta per eseguire lenta) o una lingua JVM (se avete bisogno di tutta la faccenda di essere veloce o si occupano di sicurezza).

Non sono OK con l'apprendimento di nuovi linguaggi di programmazione, se non mi insegnano nuovi concetti di programmazione e di problem solving

Io personalmente non ho visto molti vantaggi per provare la cucina greca fino a quando ho fatto. Una volta ho provato, ero dispiaciuto che ho messo fuori per così tanto tempo. Naturalmente, gli alimenti non sono linguaggi di programmazione, ma l'analogia in realtà non è poi così lontano. Spesso, l'unico modo per vedere i vantaggi di imparare una nuova lingua è quello di provarlo.

Paul Graham ha chiamato il "Blub paradosso" :

I programmatori ottenere molto attaccati alla loro lingue preferite, e io non voglio sentimenti feriti di nessuno, quindi per spiegare questo punto ho intenzione di usare un linguaggio ipotetica chiamata Blub. Blub cade proprio nel bel mezzo del continuum astrattezza. E non è la lingua più potente, ma è più potente di Cobol o linguaggio macchina.

E in effetti, il nostro ipotetico programmatore Blub sarebbe non utilizzare nessuno dei due. Naturalmente non sarebbe programmare in linguaggio macchina. Questo è ciò che i compilatori sono per. E per quanto riguarda Cobol, non sa come si possa ottenere qualche cosa fare con esso. Essa non ha nemmeno x (caratteristica Blub a vostra scelta).

Fino a quando il nostro ipotetico programmatore Blub è guardando in basso il continuum di potere, sa che sta guardando verso il basso. Lingue meno potente di Blub sono ovviamente meno potente, perché si perdono qualche caratteristica è abituato a. Ma quando i nostri ipotetici sguardi programmatore Blub nella direzione opposta, il continuum di potere, non si rende conto che sta guardando in alto. Ciò che vede sono solo lingue strane. Probabilmente li considera circa equivalente al potere per Blub, ma con tutte queste altre cose peloso gettato dentro pure. Blub è abbastanza buono per lui, perché pensa in Blub.

Quando si passa al punto di vista di un programmatore utilizzando una qualsiasi delle lingue più in alto il continuum potere, tuttavia, troviamo che a sua volta guarda dall'alto in basso Blub. Come si può ottenere nulla di fatto in Blub? Essa non ha nemmeno a.

Per induzione, gli unici programmatori in grado di vedere tutte le differenze di potere tra le varie lingue sono quelli che capiscono il più potente. (Questo è probabilmente quello che voleva dire Eric Raymond su Lisp che fate un programmatore migliore.) Non è possibile fidarsi delle opinioni degli altri, a causa del paradosso Blub: sono soddisfatti con qualunque lingua che capita di usare, perché determina il loro modo di pensare sui programmi.

Se ne avete la possibilità, vi consiglio di leggere l'intero articolo.

E, infine, posso vedere il tuo punto in termini di voler specializzarsi. Ma io non penso che è quello che stai cercando di fare. Per definizione, fare "quasi tutte le attività di programmazione" non è quello che vorrei prendere in considerazione la specializzazione. Sembra che si sta utilizzando Python generalizzare. Se stai cercando di specializzarsi, io consiglio di andare in un campo specifico di programmazione come Machine Learning o Data Warehousing o di integrazione. Ma un linguaggio di programmazione di per sé non è molto più di una specializzazione.

Python (nonostante le mie perplessità su di esso) semplicemente can't^H^H^H^H^Hshouldn't essere utilizzati per tutto, allo stesso modo i miei slittamento pinze comuni non sono utilizzati come un cacciavite.

SQL Le stored procedure? script di avvio? HTML (già citato) e XSLT? C libreria wrapper?

Non credo Python sta per essere una misura molto buona per microcontrollori integrati che potrebbero avere solo 32 KB di flash e 4K di RAM, ma necessità di gestire 25.000 interruzioni al secondo.

(ps non ho nulla contro Python, infatti Recentemente ho acquistato PyCharm 1.0 da JetBrains. I solo che non vedo come general-purpose come C, per esempio. si può scrivere tutti Python in se stessa?)

Credo che tu abbia ragione formalmente, come Python, essendo un linguaggio di programmazione Turing-complete, dovrebbe consentire di risolvere quasi tutti i computer compiti possono risolvere (in particolare con l'aiuto di alcune librerie). E probabilmente poteva comodamente fare una vita rimanere interamente all'interno Python sfera.

Tuttavia, credo che ti sbagli su una serie di livelli:

  1. hai trovato attaccato ad un utensile. E 'come un meccanico dicendo particolare tipo di chiave è tutto ciò di cui ha bisogno. Le lingue sono strumenti. Un programmatore buon dovrebbe usare lo strumento migliore per il compito (entro i limiti del suo ambiente, naturalmente), qualunque esso sia, e riconoscere non c'è strumento che può essere meglio per tutte le attività.
  2. Stai artificialmente limitando i vostri orizzonti. Le lingue sono strumenti, ma sono strumenti con i personaggi e le idee dietro di loro. Se si utilizza solo uno di loro per tutto, state negando se stessi la possibilità di un nuovo sguardo sul cose, nuovo approccio alla soluzione dei problemi, nuovi modi di pensare.
  3. Sembra che tu stia confondendo sempre bene nella vostra professione con ottenere bravo a usare qualsiasi strumento specifico. Buon programmatore può utilizzare qualsiasi strumento, perché capisce principi di fondo che la creazione guida e l'uso di questi strumenti e in grado di identificare come e perché distribuire ciascuno di essi. Penso che sia un errore concentrarsi su come diventare un buon Python programmatore invece di ottenere un buon programmatore (che possono accadere ai programmi di scrittura in Python, quando l'occasione presenta se stesso). Non fraintendetemi - il primo è OK, ma l'obiettivo finale dovrebbe essere la seconda. E quest'ultimo è incompatibile con "Python è tutto quello che ho bisogno".
  4. investimento emotivo nello strumento può portare a fanboyism, e fanboyism porterà ad ignorare le soluzioni più efficaci e invece di sprecare il vostro sforzo per rendere Python fare cose che non è destinata a fare. Non fraintendetemi - è divertente incidere le cose per farle fare quello che non sono destinate a (come la costruzione di una macchina da una vecchia vasca da bagno e un leafblower o la scrittura di un kernel del sistema operativo in Python), ma se e quando diventare una persona a prendere decisioni sui progetti che richiedono l'efficienza del mondo reale, è necessario conoscere la forza e la debolezza dei vostri strumenti. E investimento emotivo ti fa esagerare i punti di forza e di debolezza ignorare.

Non direi che si sbaglia affatto. Python è un multi-dominio, linguaggio di programmazione general-purpose.

In realtà dipende il settore si prevede di entrare. Direi che molti più posti di lavoro sono disponibili in Java o .Net di Python (non che ci sia qualcosa di sbagliato con Python). Sempre più persone utilizzano questi due lingue mezzo di applicazione che hanno, più o meno giù le mani (con il rischio di offendere qualcuno), la base di conoscenza più ampia e quadri espansive disponibili. Nel mondo degli affari app, supporto quadro è una parte enorme di rimanere competitivi.

Python è un linguaggio estremamente flessibile di programmazione general-purpose, è stato usato per scrivere quasi tutto immaginabile, tranne kernel del sistema operativo (rapido aggiornamento: infatti ha: http://mail.python.org/pipermail/python-announce-list/2004-July/003220.html ).

Tuttavia, è sempre bene a imparare nuove lingue, in particolare uno che è molto diversa dalle lingue che già si conosce.

Mentre si è giusto che si dovrebbe padroneggiare almeno una lingua, imparare un'altra lingua è raramente, se mai una perdita di tempo. Anche il linguaggio di programmazione più orribile (non voglio dire il nome perché questo potrebbe finire in una guerra di religione sanguinosa :-)) ha alcune caratteristiche che mi ha fatto pensare: "Ehi, perché non può Java / C / fare questo? ".

Inoltre, non v'è la lingua perfetta come di oggi. Anche se Python è molto vicino ad esso ^^.

Con il tempo che hai imparato Python, si saprà se si può fare tutto ciò che contiene.

La risposta verrà a voi, naturalmente.

Questo sarebbe come un giocatore di golf dicendo che giocherà solo con un 5 di ferro. Si può fare (o almeno così mi hanno detto), ma la sua non è sempre la scelta migliore. Ci sono molte cose che python fa bene, ma a volte non è lo strumento migliore per il lavoro!

IMO, sì, si è sbagliato pensare che hai solo bisogno di Python, anche se è davvero una lingua meravigliosa:

1) C-C ++ sono alla base di tutto ciò nel mondo dei PC. IMO, se non si conosce C-C ++, non si sa davvero come programma per un PC. Consideriamo C-C ++ come calcolo e statistica al college -. Un rito di passaggio

2) Essere un GENERALISTI - ottenere il vostro dito in tanti torte che puoi, e di essere sempre alla ricerca di ciò che è nuovo, senza essere coinvolti in una particolare moda o ideologia.

Se si ha intenzione di fare una vita come programmatore, si deve capire che si sono probabilmente intenzione di vivere la vita 'al limite' la maggior parte del tempo - non si sa che cosa sta per distruggere il tuo lavoro attuale e si non so dove il vostro prossimo verrà da ....

HTH

Voglio vedere voi a scrivere in puro Python:

  1. piano di controllo di fabbrica, la sicurezza in tempo reale, 300ms garantiti tempi di reazione
  2. dell'allarme dell'automobile remoto del firmware, deve adattarsi nel palmo della mano.
  3. motore di database destinato> 1000hits / s
  4. un sistema operativo, una vera e propria piattaforma hardware (fisico). Può essere molto semplice.
  5. un BIOS di un PC,
  6. un competitivo (= veloce) Python compilatore / interprete
  7. Video live riconoscimento di oggetti di alimentazione per 25 fotogrammi al secondo video di alimentazione.
  8. Un moderno, motore di gioco competitive per i giochi FPS dinamica
  9. un divertente dinamica webapp gioco arcade
  10. un antivirus.

Fine della metà di queste attività in Python e devo ammettere Python è il re.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
scroll top