Perché Python è raccomandato come linguaggio di programmazione entry-level? [chiuso]

16

Ho letto qui su P.SE altre domande in cui i principianti programmatori sono invitati a scegliere Python come loro primo linguaggio di programmazione.

Non fraintendermi, mi piace Python. Mi piace molto! Ma la sua filosofia ruota attorno a "Siamo tutti adulti consenzienti qui".

Da un punto di vista di esperienza / conoscenza, un programmatore principiante non è un adulto. Il che significa che è più facile spararti ai piedi e prendere cattive abitudini anche se sopravvivi alla ferita.

Penso che in un linguaggio "più statico" sarebbe più difficile sparare a te stesso in quanto sarà più restrittivo.

Torna alla mia domanda. Perché Python è raccomandato come linguaggio di programmazione entry-level?

Quali sono i punti che lo rendono utile per l'insegnamento di un linguaggio di programmazione. Oppure ... è la preferenza personale del consulente?

    
posta JohnDoDo 13.12.2011 - 12:31
fonte

11 risposte

30

IMO, i punti più importanti che parlano per Python come linguaggio entry-level sono questi:

  • ha una curva di apprendimento poco profonda - passare dal nulla a "Hello world" è molto più veloce che nella maggior parte delle altre lingue
  • è intuitivo - la sintassi è stata progettata per seguire il principio della sorpresa minima ed è molto consistente nel complesso (purtroppo le librerie standard non sempre seguono questa coerenza)
  • richiede pochissimo testo standard : un tipico "Hello world" è una riga di codice, e programmi semplici possono essere scritti senza alcun rumore di sottofondo aggiuntivo che deve essere spiegato (come le parole chiave di dichiarazione di funzione , istruzioni di importazione, costrutti di classe, direttive del preprocessore, ecc.)
  • ci sono eccellenti semplici strumenti per lavorare con il codice Python, specialmente con l'interprete interattivo; non hai bisogno di imparare un sistema di compilazione, IDE, editor di testo speciale o qualsiasi altra cosa per iniziare a usare python - un prompt dei comandi, l'editor interattivo e un semplice editor di testo, sono tutto ciò che serve
  • utilizza la tipizzazione dinamica , ma a differenza di molti altri linguaggi tipizzati dinamicamente, i tipi sono trasparenti e le insidie correlate al tipo sono rare
risposta data 13.12.2011 - 15:03
fonte
8

Il mondo Hello in Python:

 print "Hi there"

Ciao mondo in Java:

 class HelloWorldApp {
  public static void main(String[] args) {
    System.out.println("Hello World!"); // Display the string.
    }
  }

Ciao mondo in C:

  #include<stdio.h>
  int main(int argc, char** argv)
  {
    printf("Hello World");
   }

Getta nel dover parlare della compilazione per gli altri due, e Python è molto più semplice. Devo solo parlare della singola idea che mi interessa guardare, tutti i meccanismi che complicano la faccenda scompaiono in Python. Posso aspettare fino a quando non sono pronti per parlare dei moduli, non c'è bisogno di affrettarsi per ottenere stdio.h per i programmi semplici. Posso aspettare che siano pronti per argomenti come le classi, non c'è bisogno di affrettarli per i loro primi programmi. Ha un REPL per scherzare sulla riga di comando. Python è molto bravo a essere concettualmente minimale. Questa è una buona cosa perché aiuta i principianti a concentrarsi sul compito a portata di mano.

    
risposta data 13.12.2011 - 15:56
fonte
7

È un punto di vista insolito.

La cosa consenziente degli adulti è una parte molto piccola della filosofia di Python. Di certo non "gira" intorno a questo. Non fa nemmeno parte dello "Zen di Python" che ottieni se fai import this nell'interprete.

Altre cose, come "esplicito è meglio di implicito", "Semplice è meglio del complesso", e "I contatori di leggibilità" sono molto più centrali per Python e mostrano perché Python è una buona prima lingua.

Ad ogni modo, gli "adulti consenzienti" si riferiscono solo alla mancanza di oggetti privati in Python. Quale è, a mio parere, un'altra indicazione del perché è utile per i principianti: non devi preoccuparti di cose come le interfacce quando sei appena agli inizi.

    
risposta data 13.12.2011 - 12:49
fonte
4

Ci sono due diversi punti. Quando allevi un bambino, dovresti metterli in una bolla che contiene solo oggetti sicuri o lasciarli giocare nel cortile in cui potrebbero inciampare e cadere?

Essere dentro la bolla è molto restrittivo. Devi scrivere il tuo codice in un modo molto specifico per poterlo eseguire. Quando le persone iniziano per la prima volta, tutto ciò che non è lì per fare ciò che la persona vuole è visto come uno spreco. Questo può anche portare a "Non so perché sia lì, ma qualcuno mi ha detto che è necessario."

In Python, questo non esiste. Se vuoi dire "Hello World", ti basta print "Hello World" . L'uso di Python come punto di ingresso consente a qualcuno di andare a fondo in esecuzione e basta scrivere il codice di cui hanno bisogno per realizzare ciò che vogliono. Un programmatore per la prima volta non può capire il valore dell'incapsulamento prima di capire le basi della programmazione.

Inoltre, nei programmi piccoli, digitare la sicurezza non è un grosso problema. Qualsiasi codice che uno sviluppatore all'inizio scrive sarà piccolo e contenuto. Solo quando avrai una base di codice più ampia, con un sacco di sezioni che utilizzerai come livelli di astrazione e non ci pensi attivamente, quando la sicurezza del tipo dimostra che è vantaggioso assicurarti di fare ciò che ti serve. Quando tutto il codice si trova nello stesso file, è più semplice andare a guardare la funzione e vedere cosa hai sbagliato.

Altri vantaggi:

  • Un sacco di librerie che fanno un sacco di cose
  • Flessibilità nell'insegnare sia le tecniche di programmazione orientate agli oggetti che quelle funzionali senza far sembrare che uno sia stato forzato a inserirsi in un linguaggio progettato per fare l'altro.
risposta data 13.12.2011 - 13:09
fonte
3

Python è un ottimo linguaggio per i principianti perché rende semplici le cose semplici rendendo possibili cose abbastanza complicate da non essere considerato un inutile linguaggio giocattolo e persino i programmatori esperti trovano che sia lo strumento giusto per alcuni lavori. Nello specifico, le cose semplici includono:

  • Un minimo assoluto del codice di codice per programmi semplici.

  • Raccolta dati obsoleti.

  • Digitazione dinamica.

  • Sintassi pulita, semplice.

Confrontalo ad es. Java o C ++ e la difficoltà di spiegare tutti i concetti coinvolti in un programma "Hello, world". Le cose complicate includono:

  • Introspezione (equivalente a Python alla riflessione).

  • Modifica delle scimmie.

  • Le cose che si possono fare con l'enorme libreria standard.

Detto questo, nessuno che conosce solo Python è un buon programmatore perché nessuno che conosce solo una lingua o uno stile di linguaggio è un buon programmatore. Chiunque sia seriamente interessato alla programmazione dovrebbe eventualmente imparare qualcosa di livello inferiore, ma non mentre sta ancora tentando di eseguire il controllo del flusso, la ricorsione e altre nozioni di base.

    
risposta data 13.12.2011 - 22:28
fonte
2

Vedo Python come una buona scelta. In genere per la programmazione a livello di "entrata" si desidera qualcosa di semplice ma produttivo. Ricevere feedback rapidi supporta sia la motivazione che la velocità di apprendimento. Oserei dire che non si tratta di imparare la "strada giusta", ma piuttosto di "essere appassionato e innamorarsi della programmazione per la vita". Il resto arriverà piacevolmente più tardi attraverso l'esperienza, l'istruzione secondaria, qualunque cosa.

    
risposta data 13.12.2011 - 13:14
fonte
1

IMHO, insegnare alle persone a programmare in lingue "sicure" è una pessima idea. Le persone presumono che tutto sia facile e pensano solo ad aggiungere livelli e livelli di codice. E perdere ogni possibilità di essere in grado di eseguire il debug / correggere i problemi quando si presentano.

I bravi programmatori devono assolutamente conoscere C / C ++ o persino l'assembly. E la loro mentalità deve venire anche da quella parte. E non - "Oh, GC, Magic (tm) siamo fantastici, e perché C ++ non ha GC, è stupido." atteggiamento.

    
risposta data 13.12.2011 - 20:01
fonte
1

Per un programmatore principiante, la mancanza di tipi statici è una funzionalità, non un bug!

Quando imparare a programmare anche le cose più ovvie può essere difficile da capire. I sistemi di tipo dinamici sono molto semplici e fuori dagli argomenti più urgenti in un corso introduttivo, come la modularizzazione, il controllo del flusso, ecc.

Ci sono anche alcuni vantaggi concettuali alla digitazione dinamica in un contesto educativo:

  1. I tipi sono associati a valori, non variabili. Questo è probabilmente più intuitivo in quanto riflette il motivo per cui i programmi si bloccano effettivamente.

  2. I messaggi di errore sono molto più immediati e concreti. In Python si ottiene una bella traccia di stack e un messaggio che indica cosa effettivamente è andato storto. In un linguaggio tipizzato staticamente si ottiene un avvertimento del compilatore che dice cosa sarebbe sbagliato.

    Gli studenti che lavorano con un compilatore possono lavorare solo su programmi che comprendono pienamente, per evitare che affrontino un errore di compilazione che non possono risolvere.

  3. Il controllo degli errori di runtime consente di eseguire programmi incompleti. Ciò consente di avere più programmi incrementali in cui lo studente può prima preoccuparsi di rendere corretto l'inizio del programma e solo allora vedere cosa succede.

  4. Alcuni concetti importanti, come il polimorfismo parametrico e la digitazione anatra, vengono forniti gratuitamente in un linguaggio dinamico ma richiedono sistemi di tipi più complessi in un linguaggio statico.

Infine, mentre devi ancora gestire la stessa complessità, non ottieni tutti i vantaggi della digitazione statica quando inizi a programmare:

  • I programmi per principianti sono piccoli e non hanno molti percorsi di codice (quindi non ti devi preoccupare più di tanto di digitare bug nei bit di codice che si accedono raramente)

  • I programmi Begginer non usano le interfacce e le funzioni di alto livello così tanto non c'è molto da guadagnare nel reparto "usa il sistema di tipi per progettare il programma".

risposta data 13.12.2011 - 19:31
fonte
1

C'è una cosa molto, molto , molto su Python per i programmatori che tutti sembrano trascurati: forzare un indentation valido.

Come alcuni degli altri commentatori, ho insegnato ai principianti per alcuni anni. Era molto comune vedere cose del genere:

#include <stdio.h>

int main(char *args[])
                                                                     {
   int A = 1, B = 1, C;
for (int X = 0;X < 20;X++)
{
   printf("%d\n", A);
C = B + A;
      A = B;  B = C;
}
        }

Ora immagina questa orrenda incongruenza su un centinaio di righe di codice. Per alcuni studenti, l'insieme di tutti i loro progetti assomigliava a questo.

Non ho idea di come sono riusciti a farlo, e non li ha mai disturbati. Ogni volta che ho chiesto, la loro risposta era qualcosa del tipo "Beh, non importa perché il compilatore lo capirà." Anche quando mostro loro un bug ovvio correggendo il rientro, loro ancora non hanno mai trovato un indizio.

In Python, questo tipo di indentazione è semplicemente invalido. Sono costretti a usare qualcosa che sia almeno leggibile, anche se è un po 'incoerente. Dà loro un'abitudine che, si spera, continuerà quando alla fine impareranno un'altra lingua.

    
risposta data 12.03.2013 - 03:19
fonte
0

Python è un'ottima prima lingua per la maggior parte delle ragioni sopra esposte. In particolare, un requisito di una prima lingua è una curva di apprendimento delicata, che ha Python. Non devi sapere tutto sulle classi, ad esempio, per iniziare. Sotto questo aspetto è un po 'come il Basic su cui molti di noi hanno iniziato.

Una cosa che non è stata evidenziata finora è che molte lingue hanno una leggera curva di apprendimento, ma si imbattono rapidamente in un muro di mattoni quando si cerca di fare cose più avanzate. Il Basic di vecchia scuola ne è un buon esempio. Con Python puoi entrare in qualcosa di molto avanzato prima di sentire che un'altra lingua potrebbe essere una scelta migliore.

Da quel momento un principiante è in grado di capire di più sulle scelte e sui trade-off, ed è pronto per C / C ++, Java, Assembler, Prolog, Lisp, ecc. In realtà, anche Lisp potrebbe essere una buona prima lingua è piuttosto austero!

    
risposta data 12.03.2013 - 06:44
fonte
-1

Il problema chiave con Python come prima lingua sono la digitazione dinamica e la mancanza di dichiarazione delle variabili. IMHO sono l'unico grosso problema con la lingua.

La semplice aggiunta di una riga che dice che sto solo memorizzando una stringa nella variabile foo consente al programmatore, all'ambiente di sviluppo, alla lingua (e al "codice professionale" il povero pazzo che deve venire freddo e supporto in seguito) per lavorare insieme. Soprattutto per i normali sviluppatori e principianti non ha senso usare una variabile per più di un tipo. Raramente va bene nella rara occasione in cui ha senso utilizzare un tipo var / object esplicito che consente la digitazione dinamica.

    
risposta data 11.03.2013 - 17:24
fonte