Sostituire C con JavaScript come linguaggio di programmazione introduttivo [chiuso]

2

Sono un nuovo insegnante al politecnico, dove insegniamo sviluppo web e programmazione software di base.

Per anni, l'istituzione dove insegno ha insegnato C come linguaggio di programmazione introduttivo a persone che si presume non abbiano alcuna conoscenza in programmazione.

Sto indagando se esiste un'opzione migliore e sto pensando a JavaScript perché copre la maggior parte di una struttura simile a quella che insegniamo in C.

Il motivo per cui stavo pensando a JS è che gran parte del percorso che insegniamo va nello sviluppo web e JavaScript è usato piuttosto pesantemente nel mondo di sviluppo del web di oggi.

L'unica differenza diretta che incontrerei sarebbe che manchi l'input dell'utente tramite console che può essere fatto in C. Suppongo che dovrebbe essere sostituita da una semplice pagina HTML, quindi non è un grosso problema.

C'è qualche ragione per la tua esperienza, perché JavaScript sarebbe un brutto modo di iniziare, date le informazioni limitate che ti ho dato? O perché sarebbe un buon inizio?

Riesco a vedere come pro e contro il cambiamento, quindi sono alla ricerca di altre opinioni dei programmatori.

Inoltre, anche se C è la lingua di introduzione e non lascia l'interfaccia della riga di comando nel documento, gli studenti sono quindi tenuti a trasferire tale conoscenza in JavaScript e C # nell'anno seguente in altri 2 argomenti.

    
posta Jeff Kranenburg 30.07.2015 - 11:23
fonte

6 risposte

11

Penso che JavaScript non sia la lingua migliore per iniziare ad apprendere i concetti di programmazione, principalmente a causa del suo approccio al prototipo "insolito".

C è nel frattempo completamente là era assemblatore era in giorni precedenti. Quindi penso che non sia molto interessante per la maggior parte degli studenti. Dove penso che il C ++ ora abbia preso il ruolo di C. Ma penso che il C ++ non sia così interessante o di fantasia per gli studenti.

Quello che penso sia importante per insegnare ai tuoi studenti sono i concetti di base di: Debugger, Breakpoints, Memory ecc.

Penso che Microsoft's Community Edition insieme a C # come lingua sarebbe una scelta abbastanza buona. Ogni studente può anche installarlo gratuitamente sul proprio computer.

Se ti tuffi direttamente in JavaScript, perdi molte delle parti fondamentali che qualcuno che ha a che fare con il Software dovrebbe sapere. Un'applicazione console C # penso sia un buon inizio.

Ma un altro punto: immergersi direttamente nello sviluppo del web non credo sia una buona strategia. È troppo complesso, penso. I tuoi studenti non capirebbero il significato di cosa significhi veramente codificare e eseguire il debug di qualcosa.

Se vuoi ancora utilizzare JavaScript, penso che lo sviluppo di NodeJS potrebbe essere piuttosto interessante per i tuoi studenti.

    
risposta data 30.07.2015 - 11:34
fonte
8

Tutto dipende dallo scopo del corso.

Se l'obiettivo è insegnare i fondamenti della programmazione, la considerazione sull'effettiva utilità della lingua dovrebbe essere ampiamente ignorata. Javascript è bello perché è usato nei browser. D'altra parte ha un sacco di problemi che distraggono i tuoi studenti dal messaggio principale del tuo corso. Imparare javascript in seguito non è così difficile una volta capito i fondamenti della programmazione.

In questa prospettiva, una soluzione migliore sarebbe quella di attenersi a c (perché è di basso livello), usare python (perché è semplice e coerente, e si sarà in grado di concentrarsi sul design), lisp (uguale ma più astratto), haskell (se vuoi concentrarti sui tipi di sistemi) ecc.

Se l'obiettivo è di consentire ai web designer di migliorare le loro competenze, ovviamente javascript è la strada da percorrere.

    
risposta data 30.07.2015 - 11:38
fonte
3

Ti consiglierei di rimanere incollato a:

"Start simple. Build complexity on top of it."

JS con la sua ereditarietà basata su prototipi è solo complesso per cominciare. IMHO una buona classe di programmazione dovrebbe iniziare a bassa complessità, a basso livello (C-console - come già si fa - per esempio) e passare lentamente a complessità elevata, alto livello (C ++ OOP, JS, PHP, ecc.) - se riesci in qualche modo a collegare in modo significativo i passaggi tra loro, questo è un enorme plus. È molto più importante che insegnare l'ultimo IMHO in hype.

Insegnare più di una lingua (se c'è abbastanza tempo per essa) può essere particolarmente utile per mostrare i diversi approcci che le lingue assumono: interpretazione vs. compilazione, tipizzazione strong vs. debole, OOP vs. funzionale, classe vs. prototipo ereditarietà basata, ecc.

Vorrei dirvi come sono stato introdotto allo sviluppo ¹ - Mi è piaciuto molto e penso che sia stato un concetto ben pensato e ha tenuto la classe molto motivata in qualsiasi momento:

  • Abbiamo iniziato con un sacco di sviluppi teorici (compilatori, debugging, ecc.). e poi lentamente ha iniziato a creare app per console c.
  • Nel passaggio successivo ci è stato consegnato un lettore RFID collegato via RS232 per scrivere un software di controllo degli accessi basato su schede RFID ( - > un po 'introduzione alla comunicazione di componenti di basso livello) .
  • Abbiamo quindi aggiunto un database per la registrazione e la gestione degli utenti ( - > introduzione a livello di voce per SQL ).
  • Successivamente il nostro obiettivo era quello di costruire una GUI per aggiungere / modificare le carte base utente e treno / programma (- > introduzione agli IDE usando Borland C ++ Builder)
  • Abbiamo quindi ottenuto un secondo lettore e ci hanno detto che i due avrebbero dovuto lavorare insieme e uno dovrebbe gestire a livello centrale l'autenticazione ( - > introduzione alla programmazione dei socket ).
  • ... (Ci sono stati altri passaggi, ma non voglio annoiarvi - immagino che otteniate ciò che sto cercando di evidenziare ...
  • Il progetto finale passava da C / C ++ a PHP² per costruire un sito web dinamico per controllare il sistema tramite un'interfaccia web (l'app PHP parlava tramite socket TCP con la build del server di controllo precedente).

Ciò che vorrei sottolineare: è stato un grande progetto dal (semplice) inizio alla fine, impilando sempre parti più complesse su quelle precedenti³.

(¹) - Nei miei 3,5 anni di formazione professionale a un amministratore di sistema, quindi la programmazione non era il nostro obiettivo principale di studio.

(²) - Il passaggio da C a PHP è particolarmente facile, perché condividono molto della sintassi.

(³) - Che ovviamente mostrava spesso i limiti delle precedenti soluzioni semplici.

    
risposta data 30.07.2015 - 13:16
fonte
2

JavaScript è un linguaggio orribilmente mal progettato, con un sacco di strani trucchi. Lo eviterei come prima lingua di insegnamento. Eviterei anche C. Penso che sia la complessità e l'opacità nascondono i concetti che vorrete concentrare.

Preferirei Python. E 'abbastanza alto da rendere facile focalizzarsi sui concetti chiave, ha alcuni strumenti accessibili di alta qualità che ti permettono di introdurre il debugger nella fase iniziale, e la modalità immediata significa che è facile "giocare" al suo interno, il che aiuta molto nell'apprendimento .

Tuttavia, dal momento che questi studenti intendono andare in C #, perché non dovresti iniziare con quello? È un linguaggio abbastanza buono da scrivere, gli strumenti sono eccellenti e puoi iniziare a costruire cose davvero utili all'inizio.

    
risposta data 30.07.2015 - 16:52
fonte
1

Penso che dipenda da quanto rigorosi vuoi essere con i tuoi corsi introduttivi, Khan Academy ha una sezione di programmazione che usa Javascript per insegnare i concetti di programmazione e funziona piuttosto bene perché tu fai un bel po 'di cose per iniziare a fare' cool cose '(che sono generalmente gestite da framework esterni o API HTML5) e apprendono le basi di variabili, funzioni, parametri, loop, ecc.

Se vuoi parlare di ereditarietà, strutture dei dati e scoping sebbene Javascript possa interferire invece di semplificare le cose ... Dovrai anche rinviare l'immersione in tipi e generici perché non avrai loro.

Sono sorpreso che nessuno abbia menzionato Java come alternativa ancora: il programma CS presso la scuola in cui sono stato avviato con Java, quindi spostato in C con un po 'di assembly prima di espandersi in altre lingue.

Non mi piace molto Java, ma ho pensato che fosse un utile punto di partenza per l'apprendimento perché:

  • usa la sintassi in stile C (a differenza di Python)
  • ti consente di iniziare a pensare in una mentalità orientata agli oggetti (a differenza di C o Javascript)
  • il suo tipo di sistema è abbastanza standard e facile da capire
  • non richiede la gestione manuale della memoria (come C o anche C ++)
  • generalmente evita molti paradigmi linguistici o aree problematiche, esempi includono: list comprehensions e tuple assignment in Python, ereditarietà prototipale e scope scope in JavaScript, metodi di estensione e delegati in C #

C # e Java sono entrambi abbastanza simili, ma il supporto multipiattaforma per il CLR non era molto maturo quando ho iniziato a prendere lezioni - anche se questo è stato migliorato di recente.

Ho anche preso l'intro di Udacity per il corso di programmazione in Python e ho pensato che fosse davvero abbastanza buono ... e Python di solito è semplicemente divertente scrivere piccoli programmi con.

    
risposta data 30.07.2015 - 15:56
fonte
-3

Non è una buona idea.

Dato che non hai il sistema dei tipi in JavaScript.

I tuoi studenti non sapranno mai perché ci sono 3 diversi livelli di float int e double

    
risposta data 30.07.2015 - 16:05
fonte

Leggi altre domande sui tag