C'è una ragione buona corsi Uni ancora usano linguaggi “accademici”, come Modula2?

StackOverflow https://stackoverflow.com/questions/2677326

  •  30-09-2019
  •  | 
  •  

Domanda

questa domanda mi spinge a chiedere - perché farlo università insegnano ancora in linguaggi come Modula2, quando migliorata lingue moderne sono disponibili gratuitamente?

Ci sono di UNI che ancora insegnano Pascal, per esempio? Voglio dire, è stato un bene 30 anni fa, ma ... ora? Perché?

Perché non Java, C #, Haskell?

correlati: E 'ancora indietro per LISP insegnare?


Si tratta di una domanda duplicato? In caso contrario, penso che dovrebbe essere un argomento comunità wiki.

È stato utile?

Soluzione

Il lavoro dell'università non è quello di insegnare un linguaggio di programmazione, è di insegnare la programmazione concetti. Il linguaggio che usano è rilevante solo in termini di materiale didattico che hanno già generato o l'uso da altre fonti.

immagino che rifare un curriculum è qualcosa di simile a riscrivere un'applicazione di grandi dimensioni -. Qualcosa che si fa solo se si ha un motivo valido, e anche allora si pensa su due volte

Altri suggerimenti

  

lingue moderne migliorate (Java, C #, Haskell) sono disponibili gratuitamente?

Quindi, "migliorato" intendi potente, carico di librerie esterne e dei quadri, e follemente complicato? Con un labirinto di caratteristiche tortuose piccoli in cui gli studenti che iniziano può facilmente perdersi? E quando si sono persi, ottengono i messaggi di errore che nessun principiante può forse capire?

buone università resistere alla pressione di insegnare le lingue popolari del giorno perché il nostro lavoro è quello di insegnare le verità senza tempo e le competenze che saranno ancora rilevanti in 50 anni. (Studenti universitari di oggi possono aspettarsi di lavorare almeno fino 70 anni) I nostri migliori strumenti per che sono la semplicità, la semplicità e la semplicità. Modula-2 è una scelta abbastanza buona. (Così è la lingua studente alle prime armi di PLT Scheme .

Amo Haskell, usa massicciamente nella ricerca, hanno insegnato nelle classi avanzate. Si potrebbe non pagare me abbastanza per insegnare in un corso-I'd mi taglierà la gola introduttivo.

  

Perché non Java, C #, ...

In assenza di requisiti di interoperare con basi di codice esistente, quale vantaggio fa Java o C # hanno più di, diciamo, Smalltalk? Sono un programmatore C # di giorno (e ex programmatore Java) e ci sono alcune cose buone su di esso e alcune cose cattive, ma una cosa che realmente attacca fuori è quanto incredibilmente complessa che è. Guardate quante domande ci sono qui circa i punti più fini di C # sintassi e semantica. Faresti sprecare il vostro intero semestre o un anno di insegnamento curiosità. Modula-2 è molto più semplice e perfettamente adeguata per molti problemi.

Hai bisogno di imparare il montaggio, troppo, e andando da Modula-2 per il montaggio è un passo molto più facile che C # per il montaggio. Non vorrei che a cercare di insegnare il montaggio ad un gruppo di studenti che conoscevano solo strumenti professionali di Microsoft.

  

correlati:? E 'ancora indietro per insegnare LISP

(ci sono circa 50 modi diversi per interpretare questo ...)

Non vedo che cosa è "indietro" su di esso, a meno che non si sta vedendo insegnato {prima, dopo} un linguaggio di basso livello e penso che dovrebbe essere insegnata {dopo, prima di} invece.

Potete suggerire un altro linguaggio che fa quello che fa? (???? Smalltalk Forth Icona Factor) Ad esempio, se si desidera vedere la progettazione di un vero e proprio sistema OO (e forse uno più potente di Java o C #), si può prendere AMOP e vedere il tutto in un libro breve, compreso il codice sorgente completo. (Common Lisp non è il più semplice dialetto Lisp, ma è molto più semplice di C # o Java, e AMOP utilizza un relativamente piccolo sottoinsieme di esso in ogni caso.) Come si insegna metaprogrammazione, o anche la spedizione multipla, con Java?

In alternativa: lo scopo originario di Lisp era quello di sostituire le macchine di Turing come un costrutto per la costruzione di algoritmi. (Succede solo per essere veramente utile per la scrittura di programmi veri!) Sta dicendo che si preferisce utilizzare le macchine di Turing per l'insegnamento algoritmi? O C # per la modellazione di calcolo? Una macchina di Turing è un 7-pla - Non riesco a immaginare quante componenti il ??# calcolo modello C avrebbe! Lisp colma il divario perfettamente, e ho visto solo una o due altre lingue in questo spazio -. Esce in mente, ma per qualsiasi motivo non è diventato popolare nel mondo accademico

  

... Haskell?

penso che sia una grande idea. L'ho imparato a scuola. Poi di nuovo, credo che qualsiasi membro di quella famiglia delle lingue avrebbe fatto bene. Se si impara a scuola ML invece, non credo che sarete qualsiasi la peggio. I concetti sono gli stessi.

E 'come studiare ingegneria meccanica a Berlino contro Chicago: la lingua può essere diversa, ma i concetti sono gli stessi. Ma se non si sa nulla, nemmeno una lingua, ha senso iniziare con il linguaggio più semplice possibile. Se si vuole essere un ingegnere a Berlino, ma parli nessun tedesco, ha senso di ingegneria studio e anche studiare il tedesco, ma il pensiero convenzionale è che è meno efficace per iniziare con le classi di ingegneria tedesca soli.

Due ragioni mi vengono in mente, uno buono, non uno. (E io ero un prof.)

La buona ragione: per semplificare l'insegnamento. Insegnare agli studenti intro è come pulcini pastorizia su un trampolino. Se c'è un modo per loro di cadere, lo faranno. Se dovessi insegnare a C, sarei strappando i capelli, quello che con char, unsigned char, char*, char**, char*[], char[10]*, e così via tutti di essere solo un paio di schegge di legge e diverse, e che sul legno della croce. Per un secondo o terzo corso, è una storia diversa.

La cattiva ragione: la libertà accademica. Abbiamo avuto una persona insegnare un linguaggio lontano-out interpretato perché gli piaceva. Un altro ha insistito sulla programmazione insegnamento foglio di calcolo, perché quello era il "onda del futuro".

Anche se questa domanda sembra essere stato maneggiato qualche tempo fa ho voluto aggiungere qualcosa (dal momento che io sono il richiedente della questione di cui :)) Perché impariamo Modula2 nel nostro primo anno: Oltre a tutti i motivi già citati, è per ottenere una presa su come base le cose (per esempio i puntatori) opera prima di farsi coinvolgere con qualcosa di simile a Java dove tutto ciò che roba è abbastanza invisibile al programmatore:)

Mi rendo conto che questa domanda è piuttosto vecchio e ci sono molte risposte buone. Tuttavia, mi piacerebbe carillon in.

La maggior parte delle risposte sono variazioni del "Modula-2 è più semplice, quindi più facile da insegnare / imparare" a tema. Anche se questo è corretto, non è la logica Questo squalifica-all-altrimenti perché un'università dovrebbe scegliere di insegnare Modula-2.

Il vantaggio più importante di insegnare Modula-2 per gli studenti di informatica di laurea è che è bene-assuefazione e la disciplina infondendo.

Vedere anche "Quali sono i vantaggi più importanti di Modula-2?" in:

http://modula-2.info/m2info/pmwiki.php/ Generale / Domanda

Ci sono pochissime lingue là fuori che disciplina insegnare rigorosa programmazione, l'aderenza a principi tecnici e le buone abitudini. La maggior parte delle lingue moderne, e particolarmente popolare in realtà fanno il contrario, insegnano le cattive abitudini.

Tra le lingue severe, Modula-2 è il più piccolo, e tra le piccole lingue, Modula-2 è la più rigorosa uno.

Questa combinazione rende Modula-2 la scelta perfetta per qualsiasi università che non si limita vuole essere una scuola professionale per la meccanica del software.

Questo può sembrare duro, ma se gli sviluppatori di software aspirano ad essere chiamato ingegneri del software, allora dovrebbero essere addestrati come gli ingegneri, la pensa come gli ingegneri e, soprattutto, si comportano come gli ingegneri quando si arriva a lavorare.

elettrico, ingegneri meccanici e civili hanno l'obbligo di cose di compilazione che sono prima di tutto sicuro ed affidabile. Con poche eccezioni, il software non abbastanza all'altezza a quel livello e la mancanza di una mentalità di ingegneria classica è un importante fattore qui. Per esempio la nozione popolare di "liberazione anticipata, correzione dopo" è diametralmente opposto a principi tecnici.

La questione di Lisp / ADA vs C / Java è lo stesso di informatica vs programmazione. Uno è una scienza, l'altro è un mestiere.

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