Perché studiamo Java all'università? [chiuso]


25

Java si trova spesso nel mondo accademico. Qual è la ragione dietro questo?


9
Non ci sono costi di licenza per un IDE Java come lo sono per l'ecosistema Microsoft. Più delle tue enormi tasse universitarie all'università.
mjhilton,

16
Che cosa? puoi ottenere Microsoft Visual Studio Express gratuitamente.
quant_dev,

12
In realtà la maggior parte delle volte puoi ottenere Visual Studio gratuitamente se sei uno studente e ogni altra app Microsoft.
Erin,

5
perché vuoi fare soldi quando ti laurei giusto? Trascorrere 4 anni a studiare cose che nessuno usa nel realmondo non è un vantaggio per gli studenti o le aziende che vogliono assumere gli studenti.

5
@JarrodRoberson, solo alcune aziende usano Java, le università dovrebbero davvero educarti su una più ampia varietà di lingue in modo da essere meglio preparato per il mondo reale. Non vuoi rimanere bloccato solo come programmatore Java quando ci sono molti altri modi di pensare e sviluppare.
CaffGeek,

Risposte:


73

A poche università hanno qualcuno che è sufficientemente noto che molti (se non la maggior parte) le decisioni ruotano intorno a quella della persona piace, antipatie, opinioni, gusti, ecc Basta per esempio, Texas A & M ha Bjarne Stroustrup sul personale; probabilmente non è una sorpresa per nessuno che il loro curriculum tenda a enfatizzare il C ++.

La maggior parte delle università è un po 'diversa però. In primo luogo, le decisioni sono spesso prese molto di più a beneficio della facoltà rispetto agli studenti. Il criterio più grande in molti casi è "quale lingua richiede il minimo sforzo da parte nostra?" Molti di loro sono anche attenti alla loro pigrizia: vogliono imparare non solo la lingua con il minor numero di concetti avanzati, ma anche quella che è (ad esempio) la più lenta a innovare, aggiornare o abbracciare qualcosa di nuovo.

In secondo luogo, la maggior parte delle decisioni vengono prese dal comitato. Ciò significa che la decisione finale è raramente (se mai) ciò che qualcuno voleva davvero - è proprio quello che il minor numero di membri del comitato (specialmente quelli con la maggiore influenza) ha ritenuto particolarmente discutibile. È come scegliere un sapore di gelato. A uno piace davvero la fragola, ma un altro è allergico alle fragole. Un altro ama davvero il cioccolato, ma qualcun altro non lo sopporta. Ancora un altro pensa che l'uvetta al rum sia ottima, ma gli altri due temono che la menzione del "rum" sia interpretata come incoraggiante l'abuso di alcol - quindi finiscono con la vaniglia, anche se non è quello che qualcuno voleva davvero.

Infine, sebbene di solito vada direttamente in contrasto con la maggior parte di ciò che i due precedenti criteri avrebbero prodotto isolatamente, in genere hanno bisogno (o almeno vogliono) di essere visti come rispondenti alle esigenze dell'industria.

Java è l'intersezione di questi tre:

  1. Ogni concetto che incarna era ben noto nel 1980. Non c'è molto da sapere oltre la nozione più elementare di cosa sia OOP.
  2. È la scelta insipida, inodore, non tossica, biodegradabile, politicamente corretta.
  3. Quasi l'unico altro linguaggio nella storia che sia esistito da tempo e (probabilmente) meno innovatore è SQL. Anche se difficilmente sono quelli che chiameresti obiettivi in ​​rapido movimento, COBOL e Fortran hanno ancora entrambi innovato più di Java.
  4. È ampiamente usato. Quando si arriva a questo, prof e PHB hanno criteri simili.

Si noti che non sto davvero dicendo (ad esempio) che non c'è niente di più da sapere su Java della nozione più elementare di ciò che è OOP - solo che è tutto ciò che è necessario per fare ciò che passa per un lavoro accettabile di insegnamento.


un sacco di commenti sono stati rimossi da qui, poiché le opinioni su questa risposta sono divise.
Visualizza nome

1
FWIW, preferisco la vaniglia.
Corse di leggerezza con Monica

Mi sono registrato per votare la tua risposta
user2445942

22

Ho studiato Informatica nei primi anni novanta proprio prima che uscisse Java. L'approccio seguito dai nostri professori è stato il seguente.

Primo anno: corso introduttivo sulla programmazione e algoritmi in Pascal. Perché Pascal Perché è un linguaggio pulito progettato per insegnare i concetti di programmazione senza strumenti per l'hacking. Ovviamente noi studenti sapevamo che la lingua più popolare all'epoca era il C e che c'era una nuova lingua con crescente popolarità: il C ++. Quindi stavamo leggendo e discutendo continuamente di queste lingue e facendo piccoli progetti usandoli da soli. Quindi l'idea era: in classe facciamo la teoria seria (Pascal) mentre a casa impariamo come hackerare (C). :-)

Durante il secondo anno abbiamo tenuto un corso sul sistema operativo in cui ci è stato chiesto di fare gli esercizi in C e assemblaggio. Il professore non ci ha dato un corso completo su C (solo alcune lezioni) perché (1) avevamo già tenuto un corso di programmazione durante il primo anno e (2) ha detto che ogni scienziato informatico che conosce i concetti di programmazione dovrebbe essere in grado di leggere un libro e imparare un nuovo linguaggio di programmazione. Il corso è andato abbastanza bene e tutti abbiamo trovato normale che C e assemblea fossero argomenti pratici che hai imparato da solo o che hai discusso nel corridoio con altri studenti ma che non valeva la pena fare su un corso.

Durante il terzo anno abbiamo tenuto un corso sui linguaggi di programmazione, in cui abbiamo studiato i diversi paradigmi dei linguaggi di programmazione (imperativo, funzionale, logico, orientato agli oggetti), abbiamo appreso concetti generali e tecniche di implementazione e rivisto i principali linguaggi di programmazione (Pascal, C, Modula2, Simula, Lisp, C ++, Prolog). Ciò che il nostro professore ci ha detto all'inizio del corso è stato: non dovresti valutare questo corso pensando a quanti linguaggi di programmazione conosci alla fine del corso, ma piuttosto a tutti i concetti generali che hai imparato, come sono in relazione tra loro, a cosa servono, come vengono utilizzati in quali lingue. Quindi, imparare una lingua specifica è solo una questione di leggere un libro, guardare il codice esistente, provare a usarlo su un progetto specifico e così via.

Ho trovato questo approccio molto appropriato ed efficace. Non penso che l'università debba mirare a preparare buoni programmatori, ma piuttosto a fornire una buona conoscenza che consenta di comprendere i linguaggi di programmazione e di programmazione. Diventare un buon programmatore arriverà come un effetto collaterale di ciò. Ora sto pensando di candidarmi per un lavoro in cui è richiesto Ada e non ne ho paura, anche se non ho mai fatto una programmazione seria in Ada prima.

Tornando alla questione dell'insegnamento di Java. Immagino che Java sia spesso usato per insegnare perché è abbastanza neutrale e permette di spiegare i principi della programmazione usando un linguaggio che è anche vicino al mondo dell'industria.

Personalmente userei ancora Pascal o un linguaggio simile per un primo corso, perché ciò mi consentirebbe di distinguere tra strutture di controllo e strutture di dati, che in Java / linguaggi orientati agli oggetti sono strettamente integrati. Quindi, secondo me, Pascal consentirebbe un'introduzione più graduale ai concetti di base della programmazione.

Inoltre, un informatico (e un buon programmatore) dovrebbe conoscere i meccanismi di base / le strutture di runtime come lo stack, l'heap, il passaggio dei parametri, l'allocazione della memoria, i puntatori o come implementare tipi di dati astratti senza utilizzare le funzionalità integrate del lingua (elenchi, set e così via). Java toglie gran parte di questo ai programmatori (va bene, ovviamente), ma un principiante dovrebbe conoscere queste cose. Forse dopo un primo corso di programmazione in Java uno dovrebbe anche seguire un corso più generale sui concetti dei linguaggi di programmazione.

Questa è solo la mia esperienza e opinioni.


1
Quando ero all'università il 1 ° anno, abbiamo fatto Ada per i corsi di programmazione (alcuni incontri nel corso sui sistemi informatici). Il 2 ° anno è stato uno stile linguistico abbastanza simile. 3 ° anno, ci è stato detto esattamente questo, "ogni scienziato informatico che conosce i concetti di programmazione dovrebbe essere in grado di leggere un libro e imparare un nuovo linguaggio di programmazione". Alla fine dell'anno eravamo autodidatti in C, C ++, Java e in qualunque lingua tu abbia mai realizzato il tuo progetto (il mio era Python) Era la migliore preparazione che io abbia mai avuto per il mondo reale, come imparare velocemente e al volo
Amy,

(+1) I linguaggi di programmazione relativi a Pascal, sono meglio usati per insegnare programmazione, perché suo padre "Niklaus Wirth" li progetta attentamente, per insegnare. ;-)
umlcat,

@umlcat: grazie. Sì, penso che sia bello avere C o C ++ dove puoi infrangere le regole e hackerare. Ma prima di infrangere le regole devi sapere quali regole stai infrangendo. Per questo è molto utile avere un linguaggio di programmazione pulito come Pascal per imparare a programmare in un "mondo ideale". Quindi almeno sai cosa stai facendo quando fai hack. :-)
Giorgio,

@Giorgio: penso che agli studenti dovrebbe essere insegnato prima Pascal e, successivamente, C / C ++ e successivamente Java. Non intendo solo l'uno o l'altro, ma tutti in un ordine particolare. Alcune scuole abbandonano l'insegnamento a favore di un'altra. PD Lavoro anche in C e Java. Spero che sia d'aiuto ;-)
umlcat,

@umlcat: sono totalmente d'accordo. Aggiungerei anche alcuni Lisp, Haskell, Prolog: più paradigmi di programmazione si conoscono, meglio è.
Giorgio,

10

Ero a scuola quando uscì Java. E la mia università è quasi cambiata dall'oggi al domani. La gente era fuori di testa a Java in università. Ero un Jr quando è uscito, e al momento del mio ultimo anno, quasi tutto il mondo accademico si stava rapidamente spostando per cambiare il loro curriculum. Non solo nella mia università ma ovunque. È stato davvero così veloce. Il nostro secondo corso introduttivo fu Pascal, che si convertì rapidamente in Java in meno di un anno. Perché si sono convertiti così in fretta? Due grandi motivi.

Un accademico vuole insegnare la teoria e gli algoritmi. Le lingue che ti facilitano l'apprendimento di quegli algoritmi che non richiedono molta esperienza per funzionare sono le migliori: Schema, Python, Java, Smalltalk, ecc. Più la lingua si intromette, più sei distratto dall'apprendimento degli algoritmi reali. All'epoca i linguaggi di scripting erano cittadini di seconda classe disapprovati dai datori di lavoro come economici, veloci e sporchi. Gli accademici li vedevano come un altro gatto esemplare, ma ciò che i datori di lavoro vogliono ha influenzato anche gli accademici.

Questo ci porta al prossimo motivo. I datori di lavoro desiderano una certa esperienza linguistica, e al momento era C / C ++. Ma, C / C ++ richiede molta esperienza per imparare e ha molti casi angolari e se e ma o ma che sono fonte di distrazione. Abbiamo imparato corsi in C / C ++ ma non ai livelli inferiori. All'epoca i datori di lavoro erano arrabbiati con i programmi CS perché gli studenti non uscivano come guru C / C ++.

Java stava attraversando il settore troppo velocemente quasi quanto il mondo accademico. Quindi finalmente il mondo accademico stava ottenendo ciò che volevano. Una lingua di alto livello che era più facile da imparare, e una lingua desiderata dai datori di lavoro. Era tutto troppo perfetto. Forse un amico è tornato al mondo accademico forse 3 anni dopo che me ne sono andato, e ha detto che potresti trovare un libro su Java in ogni argomento CS. Ecco quanto velocemente Java ha preso il controllo del mondo accademico.

Personalmente penso che Java non abbia stupito CS Penso che in realtà sia stata una buona cosa perché gli studenti possono studiare CS, partecipare a Open Source e trovare lavoro anche mentre sono a scuola. Credo ancora che dovresti studiare molte lingue come studente CS e che non dovrebbe essere solo Java. Ma, se tutti avessero usato il pitone, anche Joel avrebbe odiato il pitone.


Se la tua scuola utilizzava ancora Pascal a metà degli anni '90, erano comunque in ritardo per una revisione. Le mie prime lezioni di CS erano in Pascal, ma era il 1980! È interessante notare, tuttavia, che erano solo i corsi introduttivi - le classi di livello superiore utilizzavano C (per gli interni del sistema operativo), Modula (per la progettazione del compilatore), Prolog e alcuni corsi di laurea utilizzavano persino Ada. Non capisco perché le scuole non lo facciano ancora.
TMN il

1
quasi tutti usavano ancora Pascal nel 1995, alcuni si erano trasferiti a Modula. Il mio ha iniziato a introdurre C ++ nel 1995 per gli anziani, mantenendo Pascal per i giovani. Penso che abbiano ormai sostituito Pascal con Java (hanno bisogno di un linguaggio di basso livello poiché gran parte del lavoro prevede l'interazione con l'hardware, quindi probabilmente C ++ è ancora in circolazione).
jwenting

Abbiamo usato C / C ++ un po 'dopo il corso introduttivo di Pascal. Prolog, LISP, Scheme, Smalltalk, Assembly sono stati tutti utilizzati nelle classi di medio livello. Man mano che l'importanza del consumo pubblico di tecnologia diminuiva negli anni '90, Ada fu gradualmente eliminata e menzionata alla fine degli anni '90. Penso che i pericoli di Java non abbiano nulla a che fare con Java, ma con la monocultura e l'apprendimento. Sono uno sviluppatore Flex ora e Adobe ha terminato la mia capacità di guadagnarci da vivere la scorsa settimana. Non sono preoccupato perché ho una lunga storia di non usare solo 1 lingua. Ho Java, Ruby, Php, Python su cui contare.
Chubbsondubs,

8

Ci sono alcuni motivi per questo, tra cui:

  • Ubiquità nel mercato del lavoro - se le università vogliono che i loro studenti vengano assunti (e raccomandano più studenti all'università) devono insegnare le lingue pertinenti.
  • Semplifica il curriculum
  • Più facile da valutare e più facile da implementare i compiti.
  • Immondizia raccolta quindi non è necessario insegnare i puntatori e la gestione manuale della memoria

Nota che ci sono un certo numero di scuole che insegnano C # per molte delle stesse ragioni. Ci sono molte altre ragioni, alcune delle quali più specifiche per la singola scuola. In sostanza, Java è diventato l'oggetto "BASIC" orientato agli oggetti di una volta.


Ci sono grandi libri Java e semplifica OOP come il primo oggetto Java usando BlueJ. Tuttavia, in C # non ho visto tali libri di apprendimento che ti prendono da zero e ti imparano in modo positivo. Sei d'accordo con me?
Goma,

Lo farò. Insegnare è un compito molto difficile e gli insegnanti stanno ancora imparando come insegnare meglio. Troverai un certo numero di scuole online come Strayer che si tengono in C # e le scuole di mattoni e miti tendono verso Java. Probabilmente perché le scuole online soddisfano gli studenti che stanno già lavorando. I libri di programmazione di base possono essere applicati a qualsiasi lingua, quindi sono disponibili materiali.
Berin Loritsch,

"Immondizia raccolta quindi non è necessario insegnare i puntatori e la gestione manuale della memoria." se come ingegnere del software non conosci i puntatori e la gestione della memoria o non sai come funzionano, ti stai perdendo alcune conoscenze molto importanti.
destra,

Java potrebbe non avere la *sintassi, ma sarebbe molto difficile da usare senza una conoscenza di base dei puntatori.
dan04

@WTP ed è per questo che Java viene spesso utilizzato per i corsi introduttivi (dove prima venivano usati Pascal o Modula), e successivamente viene introdotto C (++).
jwenting

6

Mi piace il post di Joel Spolsky intitolato The Perils Of Java Schools . Penso che Berin Loristch abbia ragione nel semplificare il cirricolo e anche applicarlo al mondo reale.

Ho sentito molte volte dire quanto segue: "una laurea in Informatica non è una laurea per imparare la programmazione, è per imparare la teoria". La lingua non ha necessariamente bisogno di essere importante (anche se non dovrebbe interferire) finché la teoria viene appresa. Java è un linguaggio relativamente facile da imparare e che consente di dedicare più tempo all'apprendimento della teoria alla base di tutto. Questo è uno dei motivi per cui il MIT utilizza Scheme (quindi ho sentito).


2
Mit ha smesso di usare Scheme alcuni anni fa - cemerick.com) / 2009/03/24 /…
nate c

@nate c - ya non ero sicuro. Tuttavia, Python è anche abbastanza facile da imparare. Grazie comunque per il link!
Jetti,

Avrei rovinato completamente i miei studenti se stessi insegnando in una classe. Incoraggerei a scrivere il tuo linguaggio di programmazione e puoi usare quel linguaggio di programmazione solo durante il corso della lezione.
berlinbrown2,

1
@Berlin - Immagino sia per questo che non sei un insegnante allora :)
Jetti

3

Molte delle risposte fornite sopra sono buone, ma tralasciano qualcosa.

Java è un linguaggio multipiattaforma. Uno studente può usare il suo Mac, un altro il suo PC e un altro il suo account Unix da studente. Lo stesso codice farà la stessa cosa. Pensa a quanto sia più semplice supportare sia l'insegnante che il dipartimento IT della scuola.

Questa è stata la vera importanza di Java quando è uscito. Lo scherzo era "Codice una volta, debug dappertutto", ma toglie davvero l'hardware e i sistemi operativi dall'equazione.


Forse questo spiega perché Java è scelto su C, C ++ o C #, ma Ruby e Python (tra gli altri) funzionano bene su più piattaforme.
Eric Wilson,

Buon punto. Credo che i dipartimenti CS preferiscano anche linguaggi fortemente tipizzati, per una serie di ragioni. Inoltre, Java ha avuto un vantaggio negli Stati Uniti. Ruby non ce l'ha fatta qui fino al 1999 o successivamente, e Python è stato piuttosto limitato fino all'uscita della 2.0.
Matthew Flynn,

1

Ho sentito professori dire che usano java per insegnare perché:

  • usa i paradigmi più recenti (OOP, alcuni generici)
  • sintatticamente molto semplice, anche se abbastanza dettagliato
  • nessun concetto avanzato come funzioni di ordine superiore, chiusure, curry o continuazioni che possano confondere le persone che stanno ancora imparando i concetti di base
  • molte biblioteche scritte per questo
  • gli studenti non si impantanano nel debug delle perdite di memoria poiché esiste un gc

Personalmente sono contento di aver preso CS a Berkeley quando hanno usato Scheme per insegnare. Anche se non mi rendevo conto di quanto fosse elegante una lingua fino a pochi anni dopo.


1

Un piccolo sfondo

Ho preso l'unica lezione di Java offerta nella nostra scuola. Era tra la fine degli anni '90 e l'inizio del 2000. Java stava crescendo ma non era quasi decollato. Venendo da un sacco di sviluppo in C, ero un po 'frustrato da tutto il codice di caldaia necessario per far funzionare Java. Non riuscivo a concentrarmi sul mio compito. Non potevo semplicemente aprire un file con "apri". Ho dovuto definire la classe e quindi le importazioni, ecc. Ecc.

Mi occupavo di ingegneria informatica, quindi ho seguito prima la programmazione di assemblaggio e poi C e poi C ++, Scheme e quel corso Java. Era principalmente un programma scolastico orientato al C. La classe degli algoritmi è stata insegnata usando C.

Quando sono entrato nel settore, Java era chiaramente il giocatore dominante. Forse è stato l'unico giocatore durante la conversione dai sistemi COBOL back-end alle applicazioni business web Java. Java ha fatto passi da gigante nel mondo degli affari nei primi 2000 giorni.

Allo stesso tempo, non conoscevo tutti i framework Java ma sapevo come programmare e adattarmi all'ambiente Java. Se avessi seguito corsi di formazione su buoni standard di codifica Java, probabilmente avrei potuto iniziare con un migliore stile Java o conoscenza dell'ecosistema Java.

In retrospettiva, non penso che importi.

Per rispondere alla tua domanda: perché studiamo Java all'università?

Java dovrebbe essere insegnato ma non utilizzato in tutti i corsi:

Dovresti imparare Java ad un certo punto al college se stai imparando l'informatica. È popolare nel mondo degli affari. Dovresti imparare Java e forse C #. Non ASSOLUTAMENTE non insegnerei Java come corso introduttivo di programmazione. E Java non dovrebbe certamente essere la lingua principale utilizzata in tutti i corsi.

Sulla critica di Java:

Java riceve molte critiche e lo ha sempre fatto. Ho letto le riviste Java che menzionano Java con un punto interrogativo, "Java è pronto per l'impresa?". La piattaforma Java è ancora una piattaforma ampiamente utilizzata. Ma, per la maggior parte delle attività di programmazione generali, Java funziona bene. E non ci sono problemi importanti con l'utilizzo di Java. Non farà male al tuo skillset. Potrebbe fare affidamento solo sulle librerie Java senza sapere cosa succede sotto. Ma Java non provoca alcun tipo di danno cerebrale (alcuni sviluppatori in realtà credono che ciò sia vero).

Inoltre, perché gli sviluppatori non attaccano C o C ++? O almeno C ++. I paradigmi di programmazione imperativa sono molto simili. E non prenderei mai in considerazione la possibilità di scrivere una webapp in C ++, ma potrei farlo con Java.

Ecco come impostare un curriculum:

  1. Corso introduttivo: Schema, Python, Assembly Language, C (tutti e tre)
  2. Algorithms Course: C, Haskell, Python (tutti e tre)
  3. Corso di sistema operativo / corso di networking: C / C ++
  4. Sviluppo della GUI: Java Swing, C ++ su Win32
  5. Programmazione orientata agli oggetti: (è difficile, non avrei un corso OOP). C ++, Java, C #
  6. Enterprise? Sviluppo: Java, C #, Python
  7. Language Design, Compilatori: Haskell, Scala, C, Assembly, Scheme, Common Lisp, Prolog.

Le lingue che ho elencato nel mio curriculum sono piuttosto comuni. Molte scuole insegnano più lingue senza problemi. Nell'industria utilizzerai molti linguaggi di programmazione diversi. Userai lingue di cui non hai nemmeno sentito parlare.

L'argomento di Java nelle scuole non è un problema se non vogliono completamente proteggerti da Java o non vogliono insegnare SOLO Java. In entrambi i casi, le scuole sono ingiustificate.

(Mi dispiace Ruby lang)


(-1) "Assembly Language" troppo complesso per "Corso introduttivo". Non intendo "non insegnarlo", intendo "Lo insegneremo più tardi"
umlcat,

1

Siamo spiacenti, solo una lunga risposta noiosa:

(1) Intendevi forse:

"Perché studiamo Java all'università, come primo linguaggio di programmazione?"

(2) O vuoi dire:

"Perché studiamo Java all'università, comunque, anche se impariamo altri linguaggi di programmazione, prima di Java?"

Sembra che tu intenda davvero entrambe le domande.

In caso di (1):

Non credo che Java (o .NET C # e Visual Basic) debbano essere insegnati come primi linguaggi di programmazione. Il Pascal strutturato e modulare dovrebbe essere il primo, anche se sembra vecchio e obsoleto.

Molte persone pensano che dovremmo insegnare alle persone la programmazione orientata agli oggetti o la programmazione funzionale immediatamente, proprio perché il suo "hype" o "tendenza".

Imparo Pascal strutturato come una piccola versione di "Programmazione orientata agli oggetti", non come qualcosa di simile. Vedo un programma strutturato come un singolo piccolo oggetto.

Successivamente, suggerisco di continuare Linguaggi funzionali e Object Pascal.

E più tardi, C, C ++, C #, VB.Net, Java.

Le ragioni principali per cui non mi piacciono Java o C #, come primo linguaggio di programmazione, è che hanno concetti "puntatori", "puntatori su oggetti" e "oggetti" stessi ("riferimenti").

Credo che gli studenti dovrebbero avere in mente le differenze e le somiglianze tra questi concetti. Il confronto degli oggetti Strings in Java è un buon esempio di quella stranezza:

String A = "Mars";
String A = "Venus";

// pointer comparison or object comparison ???
if (A == B)
{
  DoSomething();
}

In caso di (2):

Penso che Java o C # debbano insegnare a scuola, perché hanno diverse buone funzionalità aggiornate e, allo stesso tempo, hanno un uso reale.


0

Dovresti imparare Java ad un certo punto al college se stai imparando l'informatica. È popolare nel mondo degli affari. Dovresti imparare Java e forse C #. Non ASSOLUTAMENTE non insegnerei Java come corso introduttivo di programmazione. E Java non dovrebbe certamente essere la lingua principale utilizzata in tutti i corsi.

Non posso essere più in disaccordo. Java era una lingua del mio college che dovevi prendere per entrare nel programma CS&E nella mia scuola. Java è estremamente facile da insegnare. Perché puoi limitarti a determinati concetti che i "non programmatori" possono imparare.

Inoltre non so dire se insegneresti ASSOLUTAMENTE a Java come corso introduttivo di programmazione. Fondamentalmente hai detto che NON ASSOLUTAMENTE NON LO INSERIRESTI ?

Il semplice motivo è già stato spiegato. Java non ha costi di licenza. Puoi insegnarlo usando un editor di test di base. È usato per le ragioni sbagliate certamente.

Non sono d'accordo con una risposta precedente, secondo cui Java non ha reso gli studenti superandoli "più stupidi", mostra davvero quando hanno problemi con concetti realisticamente semplici come array e liste in C ++.


Vorrei sottolineare che l'ignoranza non è la stessa cosa di essere "stupido". Le persone che "passano" a Java potrebbero non conoscere questi "concetti semplici" perché non sono stati istruiti. Ciò non significa che se avessero preso del tempo per capirlo, non avrebbero capito.
Jetti,

0

Il passaggio da C a Java è avvenuto nel momento sbagliato .

Intorno al 2000. Ero nell'ultima classe C della mia università.

  • Il C ++ aveva troppe funzionalità per non confondere un principiante. (E lo fa ancora. E prevede di aggiungerne alcuni.)

  • .NET non era abbastanza maturo ed era persino più costoso di oggi.

  • L'obiettivo C era vecchio e l'utilizzo di Apple stava volando sotto il radar (non c'era iPhone in giro)


Altri problemi di .NET al momento? Nessun runtime portatile: non era disponibile il mono .
ZJR,

Nessuna neutralità dell'editor di testo . (le guerre dell'editor di testo sono brutte, ma reali) E un IDE predefinito che induce gli studenti a dedicarsi alla placcatura .
ZJR,

A proposito, avrei preferito che il mondo avesse intrapreso il percorso dell'Obiettivo C , Apple non sarebbe stata la sola bambina in quel campo da baseball e anche il suo modello di business sarebbe stato leggermente meno pazzo.
ZJR

0

Mi sento obbligato ad aggiungere le risposte qui perché non vedo davvero nessuna di queste risposte che copra effettivamente la mia prospettiva.

Sono un programmatore hobbista. Ero molto avanti rispetto alla curva quando si trattava di "computer" e "programmazione". Ho completato i miei studi universitari - Bachelor - nel 2007 e Master circa due anni dopo - 2009. Ho lavorato con una pletora di lingue tra cui Assembly, QuickBASIC, C, C ++, Java, PHP, Perl, Python, BASH Scripts, Javascript, COBOL etc .

IMHO, la lingua usata per insegnare la programmazione agli studenti è un indicatore dei tempi in cui viviamo attualmente. Ad esempio, durante gli anni '80, Assembly era la lingua di basso livello mentre C era considerata una lingua di alto livello.

Durante gli anni '90, C ++, Java, Perl e tali linguaggi acquisirono importanza principalmente perché di livello molto più elevato di C e incorporarono principi di sviluppo rapido. Quindi hanno smesso di insegnare Assembly agli studenti CS e hanno insegnato C come un modo di esprimere algoritmi. Lentamente è cambiato nell'ultimo decennio in cui C è considerato un linguaggio di livello troppo basso per catturare l'essenza degli algoritmi in modo efficace e senza troppo know-how dei "sistemi". Questo è in realtà estremamente importante in quanto il focus di un curriculum CS dovrebbe essere più "teorico" che pratico e ogni volta che qualcuno vuole scrivere un algoritmo, se si impantana con allocazioni di memoria e aritmetica del puntatore, non otterrai in qualunque posto.

Anche oggi se partecipi a un programma Masters CS, dovresti completare alcuni requisiti di "Sistemi" (almeno negli Stati Uniti e questo non dovrebbe essere molto diverso per le università statunitensi) che ha bisogno che gli studenti siano in grado di programmare applicazioni a livello di sistemi e in alcuni casi profondo come l'hacking a livello di kernel per passare effettivamente i requisiti. Quindi, sebbene C non sia il linguaggio defacto che viene insegnato nelle scuole, è rilevante se desideri specializzarti in sistemi o Informatica ad alte prestazioni o in tali nicchie.

Vorrei anche menzionare un altro punto: la C richiede molta disciplina per ottenere le cose giuste mentre lingue come Java sono un po 'rilassate riguardo a tali vincoli. Ciò semplifica lo svolgimento di corsi senza richiedere agli RA / TA di avviare GDB per eseguire il debug del programma di uno studente :)


0

Penso che gran parte di ciò sia ciò che viene utilizzato nel settore.

Il mio programma CS aveva un comitato consultivo industriale, composto da personale senior di aziende tecnologiche e aerospaziali locali e avevano un sacco di input nel curriculum. Le lezioni di introduzione al CS lasciarono cadere Pascal a favore di C l'anno in cui iniziai (1986), in gran parte per volere dello IAB. Allo stesso modo, c'è stata una spinta per insegnare Ada in alcuni dei corsi di livello superiore poiché le compagnie aerospaziali locali dovevano usarlo per il lavoro del Dipartimento della Difesa.

Java è abbastanza onnipresente ora, soprattutto ora che i dispositivi Android stanno decollando. Fa schifo dal punto di vista didattico, ma poi anche C.


0

Perché sperano che meno studenti falliranno il corso, che è un FAIL in sé, IMHO. Forse uno dei motivi per cui quasi nessuno prende più sul serio i titoli di studio, almeno qui.

Java è un linguaggio troppo semplice e non insegna che il PC abbia un paradigma delle risorse limitato. Mentre allo stesso tempo costringe a "non c'è nulla che non possa essere risolto con un altro strato di astrazione" linea di pensiero.

Sì, fa bene ai concetti di OOP e ai problemi dei giocattoli, ma insegna ad affrontare i problemi da un'angolazione sbagliata. Usa un costrutto pulito qui, avvita il resto.

Ma il mondo accademico è noto per essere sognatore di AI, OWL e altre tecnologie giocattolo. Mentre continuano a ricercare queste cose, a volte qualcuno inventa qualcosa di straordinario anche lì, ma se vuoi essere un buon sviluppatore devi impararlo in modo indipendente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.