Python e solo Python per quasi tutte le attività di programmazione! [chiuso]

7

Mi sbaglio se penso che Python sia tutto ciò di cui ho bisogno per padroneggiare, al fine di risolvere la maggior parte delle attività di programmazione comuni?

Modifica Non sto bene con l'apprendimento di nuovi linguaggi di programmazione se non mi insegnano nuovi concetti di programmazione e risoluzione dei problemi; da qui l'idea di padroneggiare un moderno, in rapida evoluzione, con un ricco set di librerie di classi, ampiamente utilizzato e documentato, e naturalmente ha un linguaggio di programmazione "amichevole" per la curva di apprendimento.

Penso che nel settore tecnologico in rapida evoluzione la specializzazione sia la chiave del successo.

    
posta wassimans 28.10.2010 - 19:25
fonte

15 risposte

32

Hai ragione e torto.

Giusto: conoscere un singolo strumento molto bene è molto negoziabile e desiderabile. E Python è buono per OO, per gli script, per la programmazione funzionale-ish, e ha eccellenti librerie matematiche e scientifiche.

Sbagliato: Python non ti insegna tutto ciò che un buon sviluppatore dovrebbe sapere. A volte è necessario JavaScript per fornire alcune funzionalità lato client. A volte devi capire cosa sta succedendo ad un livello più fondamentale, come il C sotto il Python. E a volte devi imparare a pensare in modi diversi, come faresti con Haskell o Clojure.

    
risposta data 28.10.2010 - 20:37
fonte
35

Sarebbe sbagliato pensare che ogni singola lingua possa fare tutto senza considerare altre lingue.

I think that in the fast evolving tech industry, specialization is key to success.

Non riesco a pensare a un modo migliore per spararti ai piedi. Imparare e padroneggiare una lingua è grandioso, ma parli di non essere a tuo agio con l'apprendimento di nuove lingue se loro "non mi insegnano nuovi concetti di programmazione e risoluzione dei problemi".

Le lingue non ti insegnano questi concetti, spessi tomi polverosi e molti anni che lavorano a stretto contatto con le persone meglio di te stesso. Questi modelli, concetti e principi di base del design trascendono i linguaggi e possono essere applicati in molti ambiti diversi.

    
risposta data 28.10.2010 - 19:38
fonte
9

Potresti riuscire a risolvere molti problemi ma non sarà sempre lo strumento migliore per il lavoro.

    
risposta data 28.10.2010 - 19:42
fonte
7

Non necessariamente so che c'è qualcosa di sbagliato in questo, ma non lo consiglierei per il gusto della tua carriera. Ci sono un paio di problemi a cui riesco a pensare:

  1. Python è caldo ora, ma lo sarà tra 5-10 anni? Non so voi, ma non desidero diventare l'equivalente futuro di un programmatore di mainframe COBOL.
  2. Python non sarà abbastanza veloce per ogni compito. Puoi fare molto con esso, ma ci sono sono attività là fuori che Python da solo non è abbastanza veloce per. In questi casi, avrai bisogno di conoscere C (se c'è una parte specifica del codice che sta per rallentare) o una lingua JVM (se hai bisogno che l'intera faccenda sia veloce o che riguardi la sicurezza).

I'm not OK with learning new programming languages if they don't teach me new concepts of programming and problem solving

Personalmente non ho visto molti vantaggi nel provare il cibo greco finché non l'ho fatto. Una volta provato, mi dispiacque di averlo rimandato per così tanto tempo. Certo, gli alimenti non sono linguaggi di programmazione, ma l'analogia in realtà non è poi così lontana. Spesso, l'unico modo per vedere i vantaggi di imparare una nuova lingua è provarlo.

Paul Graham lo ha definito il "paradosso di Blub" :

Programmers get very attached to their favorite languages, and I don't want to hurt anyone's feelings, so to explain this point I'm going to use a hypothetical language called Blub. Blub falls right in the middle of the abstractness continuum. It is not the most powerful language, but it is more powerful than Cobol or machine language.

And in fact, our hypothetical Blub programmer wouldn't use either of them. Of course he wouldn't program in machine language. That's what compilers are for. And as for Cobol, he doesn't know how anyone can get anything done with it. It doesn't even have x (Blub feature of your choice).

As long as our hypothetical Blub programmer is looking down the power continuum, he knows he's looking down. Languages less powerful than Blub are obviously less powerful, because they're missing some feature he's used to. But when our hypothetical Blub programmer looks in the other direction, up the power continuum, he doesn't realize he's looking up. What he sees are merely weird languages. He probably considers them about equivalent in power to Blub, but with all this other hairy stuff thrown in as well. Blub is good enough for him, because he thinks in Blub.

When we switch to the point of view of a programmer using any of the languages higher up the power continuum, however, we find that he in turn looks down upon Blub. How can you get anything done in Blub? It doesn't even have y.

By induction, the only programmers in a position to see all the differences in power between the various languages are those who understand the most powerful one. (This is probably what Eric Raymond meant about Lisp making you a better programmer.) You can't trust the opinions of the others, because of the Blub paradox: they're satisfied with whatever language they happen to use, because it dictates the way they think about programs.

Se ne hai l'opportunità, ti consiglio di leggere l'intero articolo.

E infine, posso vedere il tuo punto in termini di voler specializzarsi. Ma non penso che sia quello che stai cercando di fare. Per definizione, fare "quasi tutti i compiti di programmazione" non è quello che considererei la specializzazione. Sembra che tu stia usando Python per generalizzare. Se stai cercando di specializzarti, ti consiglio di entrare in un campo specifico di programmazione come Machine Learning o Data Warehousing o Integrazione. Ma un linguaggio di programmazione non è di per sé una specializzazione.

    
risposta data 02.11.2010 - 09:31
fonte
6

Python (nonostante i miei dubbi su di esso) semplicemente non può ^H^H^H^H^H non dovrebbe essere usato per tutto, allo stesso modo in cui le mie pinze non sono usate come un cacciavite.

SQL? procedure memorizzate? Script di avvio? HTML (già menzionato) e XSLT? Wrapper di librerie C?

    
risposta data 28.10.2010 - 19:52
fonte
3

Non penso che Python sarà molto adatto ai microcontrollori embedded che potrebbero avere solo 32K di flash e 4K di RAM, ma devono gestire 25.000 interrupt al secondo.

(ps non ho nulla contro Python, infatti ho acquistato di recente Pycharm 1.0 da JetBrains. per esempio come C generale. Puoi scrivere tutto Python in sé stesso?)

    
risposta data 28.10.2010 - 23:11
fonte
3

Penso che tu abbia ragione, dato che Python, essendo un linguaggio di programmazione completo di Turing, dovrebbe permetterti di risolvere quasi tutti i task che i computer possono risolvere (specialmente con l'aiuto di alcune librerie). E probabilmente potresti riuscire a guadagnarti da vivere restando interamente all'interno della sfera di Python.

Tuttavia, penso che tu abbia torto su un numero di livelli:

  1. Ti stai attaccando a uno strumento. È come un meccanico che dice che un particolare tipo di chiave è tutto ciò di cui ha bisogno. Le lingue sono strumenti. Un buon programmatore dovrebbe usare lo strumento migliore per il compito (entro i limiti del suo ambiente, ovviamente), qualunque esso sia, e riconoscere che non esiste uno strumento che possa essere il migliore per tutte le attività.
  2. Stai limitando artificialmente i tuoi orizzonti. Le lingue sono strumenti, ma sono strumenti con personaggi e idee dietro di loro. Se ne usi solo uno per tutto, ti stai negando la possibilità di un nuovo sguardo sulle cose, un nuovo approccio alla risoluzione dei problemi, nuovi modi di pensare.
  3. Sembra che tu stia confondendo con il diventare bravo nella tua professione con l'utilizzo di uno strumento specifico. Un buon programmatore può utilizzare qualsiasi strumento, perché comprende i principi sottostanti che guidano la creazione e l'utilizzo di questi strumenti e può identificare come e perché distribuire ciascuno di essi. Penso che sia un errore concentrarsi sul diventare un buon programmatore Python invece di ottenere un buon programmatore (che potrebbe accadere di scrivere programmi in Python quando si presenta un'occasione). Non fraintendermi: il primo è OK, ma l'obiettivo finale dovrebbe essere quest'ultimo. E quest'ultimo è incompatibile con "Python è tutto ciò di cui ho bisogno".
  4. L'investimento emotivo nello strumento può portare a fanboyism, e fanboyism porterà a ignorare soluzioni più efficaci e invece a sprecare i tuoi sforzi per fare in modo che Python faccia cose che non è destinato a fare. Non fraintendermi: è divertente hackerare le cose per fargli fare ciò che non sono destinati a fare (come costruire un'automobile da una vecchia vasca da bagno e da un tagliafoglie o scrivere un kernel OS in Python), ma se e quando tu diventare una persona per prendere decisioni sui progetti che richiedono l'efficienza del mondo reale, devi conoscere sia la forza che la debolezza dei tuoi strumenti. E l'investimento emotivo ti fa esagerare i punti di forza e ignorare le debolezze.
risposta data 30.01.2011 - 05:39
fonte
2

Non direi che hai torto. Python è un linguaggio di programmazione multi-dominio e generico.

    
risposta data 28.10.2010 - 19:29
fonte
1

Dipende davvero dall'industria che intendi inserire. Direi che molti altri lavori sono disponibili in Java o .Net rispetto a Python (non che ci sia qualcosa di sbagliato in Python). Un numero maggiore di persone che utilizzano questi due linguaggi di applicazione significa che hanno, praticamente mani basse (a rischio di offendere qualcuno), la più ampia base di conoscenze e le strutture più espansive disponibili. Nel mondo delle app aziendali, il supporto di framework è una parte enorme del rimanere competitivo.

    
risposta data 28.10.2010 - 22:25
fonte
0

Python è un linguaggio di programmazione generico estremamente flessibile, è stato usato per scrivere quasi tutto immaginabile, eccetto il kernel del sistema operativo (QUICK UPDATE: infatti ha: link ).

Tuttavia, è sempre opportuno imparare nuove lingue, in particolare una molto diversa dalle lingue che già conosci.

    
risposta data 28.10.2010 - 19:38
fonte
0

Anche se hai ragione a dover padroneggiare almeno una lingua, imparare un'altra lingua è raramente, se non addirittura una perdita di tempo. Anche il linguaggio di programmazione più orribile (non dirò il nome perché questo potrebbe finire in una sanguinosa guerra religiosa :-)) ha alcune caratteristiche che mi hanno fatto pensare: "Ehi, perché non può Java / C / fare questo? ".

Inoltre, non esiste LA lingua perfetta di oggi. Anche se Python si avvicina molto a esso ^^.

    
risposta data 28.10.2010 - 22:00
fonte
0

Quando avrai padroneggiato Python, saprai se puoi fare tutto in esso.

La risposta ti verrà in modo naturale.

    
risposta data 02.11.2010 - 12:32
fonte
0

Questo sarebbe come un golfista che dice che giocherà solo con un ferro 5. Puoi farlo (o almeno così mi è stato detto) ma non è sempre la scelta migliore. Ci sono molte cose che Python fa bene, ma a volte non è lo strumento migliore per il lavoro!

    
risposta data 15.02.2011 - 18:11
fonte
0

IMO, sì, hai torto a pensare che hai solo bisogno di Python, anche se è davvero un linguaggio meraviglioso:

1) C-C ++ sono le basi di tutto nel mondo dei PC. IMO se non conosci C-C ++, non sai come programmare un PC. Considera il C-C ++ come il calcolo e le statistiche al college: un rito di passaggio.

2) Sii un GENERALISTA - porta il tuo dito nel maggior numero possibile di torte e osserva sempre le novità, senza essere coinvolto in alcuna particolare moda o idealizzazione.

Se hai intenzione di guadagnarti da vivere come programmatore, devi capire che probabilmente stai vivendo la vita "ai margini" il più delle volte - non sai cosa distruggerà il tuo attuale lavoro e tu non so da dove verrà il tuo prossimo ....

HTH

    
risposta data 11.07.2011 - 06:42
fonte
0

Voglio vederti scrivere in Python puro:

  1. Controllo del pavimento della fabbrica, sicurezza in tempo reale, tempo di reazione garantito 300 ms
  2. Firmware remoto per allarme auto, deve stare nel palmo della mano.
  3. Motore di database progettato per > 1000hits / s
  4. un sistema operativo, qualsiasi piattaforma hardware reale (fisica). Può essere molto semplice.
  5. un BIOS per PC,
  6. un competetive (= veloce) compilatore / interprete Python
  7. Riconoscimento di oggetti di feed video in tempo reale per 25 frame al secondo di feed video.
  8. Un motore di gioco moderno e competitivo per giochi FPS dinamici
  9. un divertente gioco webapp arcade dinamico
  10. un antivirus.

Completa metà di queste attività in Python e ammetto che Python è il re.

    
risposta data 11.07.2011 - 16:49
fonte

Leggi altre domande sui tag