Für eine Java-IDE fallen keine Lizenzkosten wie für das Microsoft-Ökosystem an. Mehr von Ihren massiven Studiengebühren an die Uni.
Mjhilton
16
Was? Sie können Microsoft Visual Studio Express kostenlos erhalten.
quant_dev
12
Tatsächlich können Sie Visual Studio die meiste Zeit kostenlos herunterladen, wenn Sie Student sind und jede andere Microsoft-App.
Erin
5
weil du geld verdienen willst wenn du graduierst oder? Vier Jahre lang Dinge zu studieren, die niemand auf der realWelt nutzt, ist weder für die Studenten noch für die Unternehmen von Vorteil, die die Studenten einstellen möchten.
5
@JarrodRoberson, nur einige Unternehmen verwenden Java. Die Universitäten sollten Sie wirklich in einer größeren Vielfalt von Sprachen unterrichten, damit Sie besser auf die reale Welt vorbereitet sind. Sie möchten nicht nur ein Java-Programmierer sein, wenn es so viele andere Denk- und Entwicklungsweisen gibt.
CaffGeek
Antworten:
73
Ein paar Universitäten haben jemand, der hinlänglich bekannt ist , dass viele (wenn nicht die meisten) Entscheidungen drehen sich um die diese Person Vorlieben, Abneigungen, Meinungen, Geschmack, usw. Nur zum Beispiel Texas A & M Bjarne Stroustrup auf Personal hat; Es ist wahrscheinlich keine Überraschung für jeden, dass sein Lehrplan dazu tendiert, C ++ zu betonen.
Die meisten Universitäten sind jedoch etwas anders. Erstens werden Entscheidungen oft viel mehr zum Wohle der Fakultät als zum Wohle der Studenten getroffen. Das größte Einzelkriterium ist in vielen Fällen "Welche Sprache erfordert von unserer Seite die geringste Anstrengung?". Die meisten von ihnen sind auch vorsichtig in ihrer Faulheit - sie möchten nicht nur, dass die Sprache mit den wenigsten fortgeschrittenen Konzepten gelernt wird, sondern auch eine Sprache, die (zum Beispiel) am langsamsten innoviert, aktualisiert oder Neues annimmt.
Zweitens werden die meisten Entscheidungen vom Ausschuss getroffen. Dies bedeutet, dass die endgültige Entscheidung selten (wenn überhaupt) von irgendjemandem gewünscht wird - es ist nur das, was die wenigsten Mitglieder des Komitees (insbesondere diejenigen mit dem größten Einfluss) als besonders anstößig empfanden. Es ist, als würde man sich ein Eis aussuchen. Einer mag Erdbeeren, ein anderer ist allergisch gegen Erdbeeren. Ein anderer liebt Schokolade wirklich, aber ein anderer kann es nicht aushalten. Noch ein anderer findet Rum-Rosinen großartig, aber die anderen beiden befürchten, dass die Erwähnung von "Rum" als Ermutigung zum Alkoholmissbrauch interpretiert wird - so dass sie am Ende Vanille bekommen, auch wenn dies eigentlich niemand wollte.
Schließlich müssen (oder wollen) sie im Allgemeinen als Reaktion auf die Bedürfnisse der Industrie angesehen werden , auch wenn dies normalerweise den meisten der beiden vorherigen Kriterien für sich genommen direkt zuwiderläuft.
Java ist der Schnittpunkt dieser drei:
Jedes Konzept, das es verkörpert, war 1980 bekannt. Über die grundlegendste Vorstellung von OOP hinaus gibt es nicht viel zu wissen.
Es ist die geschmacksneutrale, geruchsneutrale, ungiftige, biologisch abbaubare und politisch korrekte Wahl.
Fast die einzige andere Sprache in der Geschichte, die so lange existiert und (wahrscheinlich) weniger innoviert hat, ist SQL. COBOL und Fortran haben mehr als Java innoviert, auch wenn sie kaum als sich schnell bewegende Ziele zu bezeichnen sind.
Es ist weit verbreitet. Profs und PHBs haben ähnliche Kriterien.
Beachten Sie, dass ich nicht wirklich sage (zum Beispiel), dass es über Java nicht mehr zu wissen gibt als die grundlegendste Vorstellung davon, was OOP ist - nur, dass dies alles ist, was für eine akzeptable Lehrtätigkeit erforderlich ist.
Viele Kommentare wurden von hier entfernt, da die Meinungen zu dieser Antwort geteilt sind.
Anzeigename
1
FWIW, ich bevorzuge Vanille.
Leichtigkeit Rennen mit Monica
Ich habe mich registriert, um deine Antwort zu unterstützen
user2445942
22
Ich habe in den frühen neunziger Jahren Informatik studiert, kurz bevor Java herauskam. Der Ansatz unserer Professoren war der folgende.
Erstes Jahr: Einführungskurs in Programmierung und Algorithmen in Pascal. Warum Pascal? Weil es eine saubere Sprache ist, die entwickelt wurde, um die Konzepte des Programmierens ohne Möglichkeiten zum Hacken zu lehren. Natürlich wussten wir Studenten, dass die beliebteste Sprache zu dieser Zeit C war und dass es eine neue Sprache mit wachsender Beliebtheit gab: C ++. Also haben wir die ganze Zeit über diese Sprachen gelesen und diskutiert und kleine Projekte mit ihnen alleine gemacht. Die Idee war also: Im Unterricht machen wir die seriöse Theorie (Pascal), während wir zu Hause lernen, wie man hackt (C). :-)
Im zweiten Jahr hatten wir einen Betriebssystemkurs, in dem wir gebeten wurden, die Übungen in C und Assembler zu machen. Der Professor gab uns keinen vollständigen Kurs über C (nur ein paar Lektionen), weil (1) wir bereits im ersten Jahr einen Kurs über Programmierung hatten und (2) er sagte, dass jeder Informatiker, der die Konzepte der Programmierung kennt, dies tun sollte in der Lage sein, ein Buch zu lesen und eine neue Programmiersprache zu lernen. Der Kurs verlief ziemlich reibungslos und wir alle fanden es normal, dass C und Montage praktische Themen waren, die Sie selbst lernen oder im Korridor mit anderen Studenten besprechen, für die es sich jedoch nicht lohnte, einen Kurs zu machen.
Während des dritten Jahres hatten wir einen Kurs über Programmiersprachen, in dem wir die verschiedenen Paradigmen von Programmiersprachen (imperativ, funktional, logisch, objektorientiert) studierten, allgemeine Konzepte und Implementierungstechniken lernten und wichtige Programmiersprachen überarbeiteten (Pascal, C, Modula2, Simula, Lisp, C ++, Prolog). Zu Beginn des Kurses sagte uns unser Professor: Sie sollten diesen Kurs nicht bewerten, indem Sie sich überlegen, wie viele Programmiersprachen Sie am Ende des Kurses kennen, sondern über all die allgemeinen Konzepte, die Sie gelernt haben und wie sie sind zueinander in Beziehung gesetzt, wozu sie gut sind, wie sie in welchen Sprachen verwendet werden. Zum Erlernen einer bestimmten Sprache müssen Sie lediglich ein Buch lesen, den vorhandenen Code anzeigen, versuchen, ihn für ein bestimmtes Projekt zu verwenden usw.
Ich fand diesen Ansatz sehr angemessen und effektiv. Ich denke nicht, dass die Universität darauf abzielen sollte, gute Programmierer vorzubereiten, sondern ein gutes Wissen zu vermitteln, das es ermöglicht, Programmieren und Programmiersprachen zu verstehen. Ein guter Programmierer zu werden, ist nur ein Nebeneffekt davon. Jetzt überlege ich mir, mich für einen Job zu bewerben, für den Ada erforderlich ist, und ich habe keine Angst davor, obwohl ich noch nie ernsthaft in Ada programmiert habe.
Zurück zu der Frage, wie man Java unterrichtet. Ich denke, Java wird oft für den Unterricht verwendet, weil es neutral genug ist und es erlaubt, die Prinzipien der Programmierung mit einer Sprache zu erklären, die auch der Welt der Industrie nahe kommt.
Persönlich würde ich für einen ersten Kurs immer noch Pascal oder eine ähnliche Sprache verwenden, da ich so zwischen Kontrollstrukturen und Datenstrukturen unterscheiden könnte, die in Java / objektorientierten Sprachen eng integriert sind. Meiner Meinung nach würde Pascal eine schrittweise Einführung in die Grundkonzepte der Programmierung ermöglichen.
Außerdem sollten ein Informatiker (und ein guter Programmierer) grundlegende Mechanismen / Laufzeitstrukturen wie den Stack, den Heap, die Parameterübergabe, die Speicherzuweisung, Zeiger oder die Implementierung abstrakter Datentypen kennen, ohne die integrierten Funktionen des Sprache (Listen, Mengen usw.). Java nimmt Programmierern viel davon ab (das ist natürlich gut), aber Anfänger sollten etwas über diese Dinge lernen. Vielleicht sollte man nach einem ersten Programmierkurs in Java auch einen allgemeineren Kurs über Programmiersprachenkonzepte belegen.
Als ich im ersten Jahr an der Uni war, haben wir Ada für die Programmierkurse gemacht (einige Assembler im Computersystemkurs). 2. Jahr war ziemlich ähnlich Sprachstil. Im dritten Jahr wurde uns genau gesagt: "Jeder Informatiker, der die Konzepte der Programmierung kennt, sollte in der Lage sein, ein Buch zu lesen und eine neue Programmiersprache zu lernen." Bis Ende des Jahres hatten wir Autodidakt in C, C ++, Java und in welcher Sprache auch immer Sie Ihr Projekt durchgeführt haben (meins war Python). Es war die beste Vorbereitung, die ich je für die reale Welt bekommen habe, wie man schnell und schnell lernt
Amy
(+1) Pascal-bezogene Programmiersprachen sind besser für den Programmierunterricht geeignet, da ihr Vater "Niklaus Wirth" sie sorgfältig für den Unterricht entwirft. ;-)
umlcat
@umlcat: Danke. Ja, ich denke, es ist gut, C oder C ++ zu haben, wo man die Regeln brechen und hacken kann. Aber bevor Sie die Regeln brechen, müssen Sie wissen, welche Regeln Sie brechen. Dafür ist es sehr nützlich, eine saubere Programmiersprache wie Pascal zu haben, um zu lernen, wie man in einer "idealen Welt" programmieren sollte. Dann wissen Sie zumindest, was Sie tun, wenn Sie hacken. :-)
Giorgio
@ Giorgio: Ich denke, den Schülern sollte zuerst Pascal und später C / C ++ und später Java beigebracht werden. Ich meine nicht nur das eine oder andere, sondern alle in einer bestimmten Reihenfolge. Einige Schulen geben den Unterricht zugunsten eines anderen auf. PD Ich arbeite auch in C und Java. Hoffe es hilft ;-)
umlcat
@umlcat: Da stimme ich voll und ganz zu. Ich möchte auch Lisp, Haskell, Prolog hinzufügen: Je mehr Programmierparadigmen man kennt, desto besser.
Giorgio
10
Ich war in der Schule, als Java herauskam. Und meine Universität hat sich fast über Nacht verändert. Die Leute waren in der akademischen Welt in Java ziemlich aufgeregt. Ich war ein Jr, als es herauskam, und als mein Abschlussjahr begann, bewegten sich fast alle Akademiker schnell, um ihren Lehrplan zu ändern. Nicht nur an meiner Universität, sondern überall. Es war wirklich so schnell. Unser zweiter Einführungskurs war Pascal, und dieser wurde in weniger als einem Jahr schnell auf Java umgestellt. Warum haben sie so schnell konvertiert? Zwei große Gründe.
Ein Wissenschaftler möchte Theorie und Algorithmen vermitteln. Am besten eignen sich Sprachen, die Ihnen das Erlernen von Algorithmen erleichtern, für deren Bedienung nicht viel Erfahrung erforderlich ist: Schema, Python, Java, Smalltalk usw. Je mehr die Sprache vom Erlernen der echten Algorithmen abgelenkt wird. Zu der Zeit waren Skriptsprachen Bürger zweiter Klasse, die von Arbeitgebern als billig oder schnell und schmutzig missbilligt wurden. Akademiker sahen sie als Nachahmerkatze, aber was die Arbeitgeber wollen, hat auch mit Akademikern zu tun.
Das bringt uns zum nächsten Grund. Arbeitgeber wollen bestimmte Sprachkenntnisse, und das war zu der Zeit C / C ++. C / C ++ erfordert jedoch eine Menge Erfahrung, und es gibt eine Menge Eckfälle und ablenkende Anden oder Aber. Wir haben Kurse in C / C ++ gelernt, aber nicht in den unteren Stufen. Zu der Zeit waren die Arbeitgeber sauer auf CS-Programme, weil die Studenten nicht als C / C ++ - Gurus herauskamen.
Java eroberte die Branche fast so schnell wie die Wissenschaft. Die Akademie bekam also endlich das, was sie wollte. Eine Sprache auf hohem Niveau, die leichter zu erlernen war, und eine Sprache, die Arbeitgeber wollten. Es war alles zu perfekt. Ich hatte einen Freund, der vielleicht 3 Jahre nach meiner Abreise an die Akademie zurückkehrte, und er sagte, man könne in jedem CS-Fach ein Java-Buch finden. So schnell hat Java die Wissenschaft übernommen.
Persönlich denke ich, dass Java CS nicht verdorben hat. Ich denke, es war eine gute Sache, weil Schüler CS lernen, an Open Source teilnehmen und Arbeit finden können, selbst während sie in der Schule sind. Ich glaube immer noch, dass Sie als CS-Student viele Sprachen lernen sollten, und das sollte nicht nur Java sein. Aber wenn sie alle Python benutzen würden, würde Joel auch Python hassen.
Wenn Ihre Schule Mitte der 90er Jahre noch Pascal verwendete, waren sie für eine Überholung sowieso überfällig. Meine ersten CS-Kurse waren in Pascal, aber das war 1980! Interessanterweise handelte es sich jedoch nur um die Einführungskurse - die höheren Klassen verwendeten C (für OS-Interna), Modula (für Compiler-Design), Prolog und einige Graduiertenkurse verwendeten sogar Ada. Ich verstehe nicht, warum Schulen das noch nicht tun.
TMN
1
die meisten oder alle benutzten Pascal noch 1995, einige waren nach Modula gewechselt. Meins führte 1995 C ++ für Senioren ein, Pascal für Junioren. Ich denke, sie haben Pascal inzwischen durch Java ersetzt (sie benötigen eine einfache Sprache, da ein Großteil der Arbeit die Interaktion mit der Hardware umfasst, sodass C ++ wahrscheinlich noch vorhanden ist).
16.
Wir haben C / C ++ ein gutes Stück nach dem Einführungskurs von Pascal verwendet. Prolog, LISP, Schema, Smalltalk, Assembly wurden alle in den Klassen der Mittelstufe verwendet. Als die Bedeutung des staatlichen Konsums von Technologie in den 1990er Jahren abnahm, wurde Ada schrittweise eingestellt und erst Ende der 1990er Jahre erwähnt. Ich denke, die Gefahren von Java haben nichts mit Java zu tun, sondern mit Monokultur und Lernen. Ich bin jetzt ein Flex-Entwickler und Adobe hat letzte Woche meine Fähigkeit beendet, damit seinen Lebensunterhalt zu verdienen. Ich mache mir keine Sorgen, weil ich seit langem nicht nur eine Sprache verwende. Ich kann auf Java, Ruby, Php und Python zurückgreifen.
Chubbsondubs
8
Dafür gibt es einige Gründe, darunter:
Allgegenwärtigkeit auf dem Arbeitsmarkt - Wenn Universitäten möchten, dass ihre Studenten eine Anstellung finden (und der Universität mehr Studenten empfehlen), müssen sie relevante Sprachen unterrichten.
Vereinfacht den Lehrplan
Einfacher zu benoten und einfacher, Ihre Hausaufgaben darin umzusetzen.
Der Müll wurde eingesammelt, sodass Sie keine Zeiger und keine manuelle Speicherverwaltung lernen müssen
Beachten Sie, dass es eine Reihe von Schulen gibt, die aus den gleichen Gründen C # unterrichten. Es gibt noch viele weitere Gründe, von denen einige spezifischer für die einzelne Schule sind. Im Wesentlichen ist Java das objektorientierte "BASIC" von gestern geworden.
Es gibt auch großartige Java-Bücher, die OOP beschreiben, wie Java first object using BlueJ. In C # habe ich jedoch keine solchen Lernbücher gesehen, die Sie von Grund auf neu und auf gute Weise lernen. Stimmst du mir zu?
Goma
Ich werde. Der Unterricht ist eine sehr schwierige Aufgabe, und die Lehrer lernen immer noch, wie man am besten unterrichtet. Hier finden Sie eine Reihe von Online-Schulen wie Strayer, die sich an C # halten, und stationäre Schulen tendieren zu Java. Wahrscheinlich, weil Online-Schulen für Schüler geeignet sind, die bereits arbeiten. Grundlegende Programmierbücher können auf jede Sprache angewendet werden, daher stehen Materialien zur Verfügung.
Berin Loritsch
"Der Müll wurde eingesammelt, so dass Sie keine Zeiger und manuelle Speicherverwaltung lernen müssen." Wenn Sie als Softwareentwickler keine Kenntnisse über Zeiger und Speicherverwaltung haben oder nicht wissen, wie sie funktionieren, fehlen Ihnen einige sehr wichtige Kenntnisse.
Rightfold
Java hat möglicherweise nicht die *Syntax, aber es wäre sehr schwer zu verwenden, ohne ein grundlegendes Verständnis von Zeigern.
Dan04
@WTP und deshalb wird Java häufig für Einführungskurse verwendet (wo zuvor Pascal oder Modula verwendet wurden), und später wird C (++) eingeführt.
16.
6
Ich mag Joel Spolskys Beitrag mit dem Titel The Perils Of Java Schools . Ich denke, Berin Loristch hat Recht, wenn es darum geht, den Lehrplan zu vereinfachen und auch für die reale Welt anwendbar zu sein.
Ich habe das Folgende oft gehört: "Ein Informatik-Abschluss ist kein Abschluss, um Programmieren zu lernen, sondern um die Theorie zu lernen." Die Sprache muss nicht unbedingt von Bedeutung sein (obwohl sie nicht im Weg stehen sollte), solange die Theorie gelernt wird. Java ist eine relativ einfach zu erlernende Sprache, so dass mehr Zeit für das Erlernen der Theorie hinter allem aufgewendet werden kann. Dies ist einer der Gründe, warum MIT Scheme verwendet (wie ich gehört habe).
@nate c - ya ich war nicht sicher. Trotzdem ist Python auch ziemlich einfach zu erlernen. Vielen Dank für den Link!
Jetti
Ich würde mich komplett mit meinen Schülern anlegen, wenn ich eine Klasse unterrichten würde. Ich würde Sie ermutigen, Ihre eigene Programmiersprache zu schreiben, und Sie können diese Programmiersprache nur während des gesamten Kurses verwenden.
berlinbrown2
1
@Berlin - Ich denke, das ist der Grund, warum du dann kein Lehrer bist :)
Jetti
3
Viele der oben gegebenen Antworten sind gut, aber sie lassen etwas aus.
Java ist eine Multiplattformsprache. Ein Student kann seinen Mac verwenden, ein anderer seinen PC und ein anderer seinen Studenten-Unix-Account. Der gleiche Code wird das gleiche tun. Überlegen Sie, wie viel einfacher es für den Lehrer und die IT-Abteilung der Schule ist, dies zu unterstützen.
Dies war die wahre Bedeutung von Java, als es herauskam. Der Witz lautete "Code einmal, überall debuggen", aber es nimmt wirklich Hardware und Betriebssysteme aus der Gleichung.
Vielleicht erklärt dies, warum Java anstelle von C, C ++ oder C # gewählt wird, aber Ruby und Python (unter anderem) funktionieren problemlos plattformübergreifend.
Eric Wilson
Guter Punkt. Ich glaube, dass CS-Abteilungen aus mehreren Gründen auch stark typisierte Sprachen bevorzugen. Außerdem hatte Java in den USA einen Vorsprung. Ruby hat es hier erst 1999 oder später wirklich geschafft, und Python war ziemlich eingeschränkt, bis 2.0 herauskam.
Matthew Flynn
1
Ich habe Professoren sagen hören, dass sie Java verwenden, um zu unterrichten, weil:
verwendet die neueren Paradigmen (OOP, einige Generika)
syntaktisch sehr einfach, wenn auch recht ausführlich
Keine fortgeschrittenen Konzepte wie Funktionen höherer Ordnung, Schließungen, Currys oder Fortsetzungen, die Menschen verwirren könnten, die noch grundlegende Konzepte lernen
viele Bibliotheken sind dafür geschrieben
Studenten sind beim Debuggen von Speicherlecks nicht so festgefahren, da es einen gc gibt
Persönlich bin ich froh, dass ich CS in Berkeley absolviert habe, als sie Scheme zum Unterrichten verwendeten. Obwohl mir erst einige Jahre später klar wurde, wie elegant eine Sprache wirklich war.
Ich nahm an der einzigen Java-Klasse teil, die an unserer Schule angeboten wurde. Dies war Ende der 90er bis Anfang 2000. Java wuchs, war aber noch nicht beinahe auf dem Vormarsch. Da ich viel in C entwickelt habe, war ich ein wenig frustriert über den Code, der für die Einrichtung und den Betrieb von Java erforderlich ist. Ich konnte mich nicht auf meine Aufgabe konzentrieren. Ich konnte nicht einfach eine Datei mit "open" öffnen. Ich musste die Klasse definieren und dann die Importe usw. usw.
Ich war Computertechniker, also nahm ich zuerst die Assembler-Programmierung und dann C und dann C ++, Schema und diesen einen Java-Kurs. Es war hauptsächlich ein C-orientiertes Schulprogramm. Die Algorithmusklasse wurde mit C unterrichtet.
Als ich in die Industrie ging, war Java eindeutig der dominierende Akteur. Vielleicht war es der einzige Player bei der Umstellung von Backend-COBOL-Systemen auf Java-Web-Business-Anwendungen. Java hat in den frühen 2000 Tagen enorme Fortschritte in der Geschäftswelt gemacht.
Gleichzeitig kannte ich nicht alle Java-Frameworks, wusste aber, wie man programmiert und sich an die Java-Umgebung anpasst. Wenn ich Schulungen zu guten Java-Codierungsstandards absolviert hätte, hätte ich wahrscheinlich mit einem besseren Java-Stil oder Kenntnissen des Java-Ökosystems beginnen können.
Rückblickend denke ich nicht, dass es wichtig ist.
Um Ihre Frage zu beantworten: Warum studieren wir Java an der Universität?
Java sollte unterrichtet, aber nicht in allen Kursen verwendet werden:
Sie sollten Java irgendwann im College lernen, wenn Sie Informatik lernen. Es ist beliebt in der Geschäftswelt. Sie sollten Java und vielleicht C # lernen. Ich würde nicht ABSOLUT Java nicht als Einführungskurs in die Programmierung unterrichten. Und Java sollte auf keinen Fall die Hauptsprache aller Kurse sein.
Zur Java-Kritik:
Java wird viel kritisiert und hat es immer. Ich habe Java-Magazine gelesen, in denen Java mit dem Fragezeichen "Ist Java bereit für das Unternehmen?" Die Java-Plattform ist nach wie vor eine weit verbreitete Plattform. Bei den meisten allgemeinen Programmieraufgaben funktioniert Java jedoch einwandfrei. Und es gibt keine größeren Probleme bei der Verwendung von Java. Es wird Ihre Fähigkeiten nicht verletzen. Es könnte sein, dass Sie sich nur auf die Java-Bibliotheken verlassen, ohne zu lernen, was darunter vor sich geht. Java verursacht jedoch keinerlei Hirnschäden (einige Entwickler glauben, dass dies der Fall ist).
Warum greifen Entwickler nicht C oder C ++ an? Oder zumindest C ++. Die Paradigmen der imperativen Programmierung sind sehr ähnlich. Und ich würde nie darüber nachdenken, eine Webapp in C ++ zu schreiben, aber vielleicht mit Java.
So würde ich einen Lehrplan aufstellen:
Einführungskurs: Schema, Python, Assemblersprache, C (alle drei)
Algorithmenkurs: C, Haskell, Python (alle drei)
Betriebssystemkurs / Netzwerkkurs: C / C ++
GUI-Entwicklung: Java Swing, C ++ unter Win32
Objektorientierte Programmierung: (Dies ist schwierig, ich hätte keinen OOP-Kurs). C ++, Java, C #
Unternehmen? Entwicklung: Java, C #, Python
Sprachdesign, Compiler: Haskell, Scala, C, Assembly, Schema, Common Lisp, Prolog.
Die Sprachen, die ich in meinem Lehrplan aufgeführt habe, sind ziemlich verbreitet. Viele Schulen unterrichten mehrere Sprachen ohne Probleme. In der Industrie werden Sie viele verschiedene Programmiersprachen verwenden. Sie werden Sprachen verwenden, von denen Sie noch nicht einmal gehört haben.
Das Thema Java in Schulen ist kein Thema, es sei denn, sie möchten Sie vollständig vor Java schützen oder sie möchten NUR Java unterrichten. In beiden Fällen sind die Schulen ungerechtfertigt.
(-1) "Assemblersprache" zu komplex für "Einführungskurs". Ich meine nicht "unterrichte es nicht", ich meine "wir werden es später unterrichten"
umlcat
1
Sorry, langweilige Antwort nur:
(1) Meinten Sie:
"Warum studieren wir Java an der Universität als erste Programmiersprache?"
(2) Oder meinst du:
"Warum studieren wir überhaupt Java an der Universität, auch wenn wir vor Java andere Programmiersprachen lernen?"
Klingt so, als würdest du wirklich beide Fragen meinen.
Im Falle von (1):
Ich denke nicht, dass Java (oder .NET C # und Visual Basic) als erste Programmiersprache unterrichtet werden sollte. Structured & Modular Pascal sollte an erster Stelle stehen, auch wenn es alt und veraltet klingt.
Viele Leute denken, wir sollten den Leuten sofort objektorientiertes Programmieren oder funktionales Programmieren beibringen, nur weil es "Hype" oder "Trend" ist.
Ich lerne Structured Pascal als kleine Version von "Object Oriented Programming", nicht als ähnliches. Ich sehe ein strukturiertes Programm als ein einzelnes kleines Objekt.
Danach schlage ich vor, mit Functional Languages und Object Pascal fortzufahren.
Und später C, C ++, C #, VB.Net, Java.
Die Hauptgründe, warum ich Java oder C # als erste Programmiersprache nicht mag, sind die Tatsache, dass sie selbst Mischkonzepte für "Zeiger", "Zeiger auf Objekte" und "Objekte" ("Referenzen") haben.
Ich glaube, dass die Schüler die Unterschiede und Ähnlichkeiten zwischen diesen Konzepten berücksichtigen sollten. Der Vergleich von Strings-Objekten in Java ist ein gutes Beispiel für diese Eigenart:
String A ="Mars";String A ="Venus";// pointer comparison or object comparison ???if(A == B){DoSomething();}
Im Falle von (2):
Ich denke, Java oder C # sollten in der Schule unterrichtet werden, da sie über mehrere aktualisierte gute Funktionen verfügen und gleichzeitig eine reale Nutzung haben.
Sie sollten Java irgendwann im College lernen, wenn Sie Informatik lernen. Es ist beliebt in der Geschäftswelt. Sie sollten Java und vielleicht C # lernen. Ich würde nicht ABSOLUT Java als Einführungskurs in die Programmierung unterrichten. Und Java sollte sicherlich nicht die Hauptsprache sein, die in allen Kursen verwendet wird.
Ich kann nicht mehr widersprechen. Java war eine Sprache an meinem College, die Sie mitnehmen mussten, um am CS & E-Programm an meiner Schule teilzunehmen. Java ist extrem einfach zu unterrichten. Weil Sie sich auf bestimmte Konzepte beschränken können, die "Nicht-Programmierer" lernen können.
Ich kann auch nicht sagen, ob Sie Java ABSOLUT als einführenden Programmierkurs unterrichten würden oder nicht. Sie sagten im Grunde, Sie würden es NICHT ABSOLUT UNTERRICHTEN ?
Der einfache Grund wurde bereits erläutert. Java hat keine Lizenzgebühren. Sie können es mit einem einfachen Testeditor unterrichten. Es wird mit Sicherheit aus den falschen Gründen verwendet.
Ich bin mit einer früheren Antwort nicht einverstanden, dass Java die Schüler nicht "dümmer" gemacht hat, es zeigt wirklich, wenn sie Probleme mit wirklich einfachen Konzepten wie Arrays und Listen in C ++ haben.
Ich möchte darauf hinweisen, dass Unwissenheit nicht dasselbe ist wie "dumm" zu sein. Leute, die Java "bestehen", kennen diese "einfachen Konzepte" möglicherweise nicht, weil sie nicht unterrichtet wurden. Es bedeutet nicht, dass sie es nicht bekommen würden, wenn sie sich etwas Zeit nehmen würden, um es herauszufinden.
Jetti
0
Die Umstellung von C auf Java erfolgte zum falschen Zeitpunkt .
Irgendwo um 2000. Ich war in der letzten C-Klasse an meiner Universität.
C ++ hatte zu viele Funktionen , um einen Anfänger nicht zu verwirren. (Und es tut es immer noch. Und plant, einige hinzuzufügen.)
.NET war nicht reif genug und war noch mehr teurer als heute.
Ziel C war alt und Apples Gebrauch davon flog unter dem Radar (es gab kein iPhone in der Nähe)
Andere .NET-Probleme zu der Zeit? Keine tragbare Laufzeit - es war kein Mono verfügbar.
ZJR
Keine Texteditor- Neutralität. ( Texteditor-Kriege sind hässlich, aber echt) Und eine Standard-IDE, die die Schüler dazu bringt, sich dem Boilerplating hinzugeben .
ZJR
Übrigens hätte ich es vorgezogen, wenn die Welt den Objective C- Pfad eingeschlagen hätte, Apple wäre nicht das einzige Kind in diesem Ballpark, und selbst sein Geschäftsmodell wäre etwas weniger verrückt.
ZJR
0
Ich fühle mich gezwungen, die Antworten hier zu ergänzen, da ich keine dieser Antworten wirklich sehe, die meine Perspektive abdecken.
Ich bin ein Hobby-Programmierer. Ich war der Kurve weit voraus, wenn es um "Computer" und "Programmierung" ging. Ich habe mein Bachelor - Studium 2007 und das Masterstudium ungefähr zwei Jahre später 2009 abgeschlossen. Ich habe mit einer Vielzahl von Sprachen gearbeitet, darunter Assembly, QuickBASIC, C, C ++, Java, PHP, Perl, Python, BASH - Skripte, Javascript, COBOL usw .
IMHO, die Sprache, die verwendet wird, um den Schülern das Programmieren beizubringen, ist ein Indikator für die Zeit, in der wir gegenwärtig leben. In den 1980er Jahren war Assembly die Muttersprache, während C als Hochsprache angesehen wurde.
In den neunziger Jahren gewannen C ++, Java, Perl und solche Sprachen an Bedeutung, vor allem, weil sie viel höher lagen als C und Prinzipien der schnellen Entwicklung verkörperten. Also hörten sie auf, den CS-Schülern Assembly beizubringen, und lehrten C, um Algorithmen auszudrücken. Langsam hat sich dies im letzten Jahrzehnt geändert, als C als zu einfache Sprache betrachtet wurde, um die Essenz von Algorithmen effektiv und ohne zu viel System-Know-how zu erfassen. Dies ist äußerst wichtig, da der Schwerpunkt eines CS-Lehrplans eher theoretisch als praktisch sein sollte und jedes Mal, wenn jemand einen Algorithmus schreiben möchte, er / sie mit Speicherzuweisungen und Zeigerarithmetik überfrachtet ist, wird er / sie nicht erhalten irgendwo.
Sogar heute, wenn Sie in einem Master-CS-Programm sind, müssten Sie bestimmte "System" -Anforderungen erfüllen (zumindest in den USA und dies sollte für US-Universitäten nicht sehr unterschiedlich sein), die Studenten benötigen, um in der Lage zu sein, Anwendungen auf Systemebene und zu programmieren In bestimmten Fällen reicht das Hacken auf Kernel-Ebene aus, um die Anforderungen tatsächlich zu erfüllen. Also, obwohl C nicht ist die Defacto-Sprache ist, die in Schulen unterrichtet wird, ist es relevant, wenn Sie sich auf Systeme oder Hochleistungsrechnen oder solche Nischen spezialisieren möchten.
Ich möchte auch erwähnen, dass das C viel Disziplin erfordert, um die Dinge in Ordnung zu bringen, während Sprachen wie Java in Bezug auf solche Einschränkungen ein wenig entspannt sind. Dies erleichtert das Durchführen von Kursen, ohne dass die RA / TAs GDB starten müssen, um das Programm eines Studenten zu debuggen :)
Ich denke, ein großer Teil davon ist das, was in der Industrie verwendet wird.
Mein CS-Programm hatte einen industriellen Beirat, der sich aus leitenden Mitarbeitern lokaler Technologie- und Luftfahrtunternehmen zusammensetzte, und sie hatten viel Einfluss auf den Lehrplan. Die Intro-CS-Klassen ließen Pascal in dem Jahr, in dem ich anfing (1986), zugunsten von C fallen, größtenteils auf Geheiß des IAB. In ähnlicher Weise gab es einen Drang, Ada in einigen Kursen auf höherer Ebene zu unterrichten, da die lokalen Luft- und Raumfahrtunternehmen sie für DoD-Arbeiten verwenden mussten.
Java ist jetzt ziemlich allgegenwärtig, besonders jetzt, wo Android-Geräte abheben. Aus didaktischer Sicht ist das scheiße, aber dann auch C.
Weil sie hoffen, dass weniger Studenten den Kurs nicht bestehen, was meiner Meinung nach ein FEHLER für sich ist. Vielleicht einer der Gründe, warum fast niemand mehr den Hochschulabschluss ernst nimmt, zumindest hier.
Java ist eine zu einfache Sprache und lehrt nicht, dass der PC ein Paradigma mit begrenzten Ressourcen hat. Während zur gleichen Zeit in "es gibt nichts, was nicht mit einer anderen Abstraktionsschicht gelöst werden kann" Linie des Denkens zwingt.
Ja, es ist gut für OOP-Konzepte und Spielzeugprobleme, aber es lehrt, die Probleme aus dem falschen Blickwinkel zu betrachten. Verwenden Sie hier ordentliches Konstrukt, schrauben Sie den Rest.
Die Wissenschaft ist jedoch dafür bekannt, von KI, OWL und anderen Spielzeugtechnologien träumerisch zu sein. Während sie solche Dinge erforschen, erfindet manchmal jemand dort auch etwas Erstaunliches, aber wenn Sie ein guter Entwickler sein wollen, müssen Sie das unabhängig lernen.
real
Welt nutzt, ist weder für die Studenten noch für die Unternehmen von Vorteil, die die Studenten einstellen möchten.Antworten:
Ein paar Universitäten haben jemand, der hinlänglich bekannt ist , dass viele (wenn nicht die meisten) Entscheidungen drehen sich um die diese Person Vorlieben, Abneigungen, Meinungen, Geschmack, usw. Nur zum Beispiel Texas A & M Bjarne Stroustrup auf Personal hat; Es ist wahrscheinlich keine Überraschung für jeden, dass sein Lehrplan dazu tendiert, C ++ zu betonen.
Die meisten Universitäten sind jedoch etwas anders. Erstens werden Entscheidungen oft viel mehr zum Wohle der Fakultät als zum Wohle der Studenten getroffen. Das größte Einzelkriterium ist in vielen Fällen "Welche Sprache erfordert von unserer Seite die geringste Anstrengung?". Die meisten von ihnen sind auch vorsichtig in ihrer Faulheit - sie möchten nicht nur, dass die Sprache mit den wenigsten fortgeschrittenen Konzepten gelernt wird, sondern auch eine Sprache, die (zum Beispiel) am langsamsten innoviert, aktualisiert oder Neues annimmt.
Zweitens werden die meisten Entscheidungen vom Ausschuss getroffen. Dies bedeutet, dass die endgültige Entscheidung selten (wenn überhaupt) von irgendjemandem gewünscht wird - es ist nur das, was die wenigsten Mitglieder des Komitees (insbesondere diejenigen mit dem größten Einfluss) als besonders anstößig empfanden. Es ist, als würde man sich ein Eis aussuchen. Einer mag Erdbeeren, ein anderer ist allergisch gegen Erdbeeren. Ein anderer liebt Schokolade wirklich, aber ein anderer kann es nicht aushalten. Noch ein anderer findet Rum-Rosinen großartig, aber die anderen beiden befürchten, dass die Erwähnung von "Rum" als Ermutigung zum Alkoholmissbrauch interpretiert wird - so dass sie am Ende Vanille bekommen, auch wenn dies eigentlich niemand wollte.
Schließlich müssen (oder wollen) sie im Allgemeinen als Reaktion auf die Bedürfnisse der Industrie angesehen werden , auch wenn dies normalerweise den meisten der beiden vorherigen Kriterien für sich genommen direkt zuwiderläuft.
Java ist der Schnittpunkt dieser drei:
Beachten Sie, dass ich nicht wirklich sage (zum Beispiel), dass es über Java nicht mehr zu wissen gibt als die grundlegendste Vorstellung davon, was OOP ist - nur, dass dies alles ist, was für eine akzeptable Lehrtätigkeit erforderlich ist.
quelle
Ich habe in den frühen neunziger Jahren Informatik studiert, kurz bevor Java herauskam. Der Ansatz unserer Professoren war der folgende.
Erstes Jahr: Einführungskurs in Programmierung und Algorithmen in Pascal. Warum Pascal? Weil es eine saubere Sprache ist, die entwickelt wurde, um die Konzepte des Programmierens ohne Möglichkeiten zum Hacken zu lehren. Natürlich wussten wir Studenten, dass die beliebteste Sprache zu dieser Zeit C war und dass es eine neue Sprache mit wachsender Beliebtheit gab: C ++. Also haben wir die ganze Zeit über diese Sprachen gelesen und diskutiert und kleine Projekte mit ihnen alleine gemacht. Die Idee war also: Im Unterricht machen wir die seriöse Theorie (Pascal), während wir zu Hause lernen, wie man hackt (C). :-)
Im zweiten Jahr hatten wir einen Betriebssystemkurs, in dem wir gebeten wurden, die Übungen in C und Assembler zu machen. Der Professor gab uns keinen vollständigen Kurs über C (nur ein paar Lektionen), weil (1) wir bereits im ersten Jahr einen Kurs über Programmierung hatten und (2) er sagte, dass jeder Informatiker, der die Konzepte der Programmierung kennt, dies tun sollte in der Lage sein, ein Buch zu lesen und eine neue Programmiersprache zu lernen. Der Kurs verlief ziemlich reibungslos und wir alle fanden es normal, dass C und Montage praktische Themen waren, die Sie selbst lernen oder im Korridor mit anderen Studenten besprechen, für die es sich jedoch nicht lohnte, einen Kurs zu machen.
Während des dritten Jahres hatten wir einen Kurs über Programmiersprachen, in dem wir die verschiedenen Paradigmen von Programmiersprachen (imperativ, funktional, logisch, objektorientiert) studierten, allgemeine Konzepte und Implementierungstechniken lernten und wichtige Programmiersprachen überarbeiteten (Pascal, C, Modula2, Simula, Lisp, C ++, Prolog). Zu Beginn des Kurses sagte uns unser Professor: Sie sollten diesen Kurs nicht bewerten, indem Sie sich überlegen, wie viele Programmiersprachen Sie am Ende des Kurses kennen, sondern über all die allgemeinen Konzepte, die Sie gelernt haben und wie sie sind zueinander in Beziehung gesetzt, wozu sie gut sind, wie sie in welchen Sprachen verwendet werden. Zum Erlernen einer bestimmten Sprache müssen Sie lediglich ein Buch lesen, den vorhandenen Code anzeigen, versuchen, ihn für ein bestimmtes Projekt zu verwenden usw.
Ich fand diesen Ansatz sehr angemessen und effektiv. Ich denke nicht, dass die Universität darauf abzielen sollte, gute Programmierer vorzubereiten, sondern ein gutes Wissen zu vermitteln, das es ermöglicht, Programmieren und Programmiersprachen zu verstehen. Ein guter Programmierer zu werden, ist nur ein Nebeneffekt davon. Jetzt überlege ich mir, mich für einen Job zu bewerben, für den Ada erforderlich ist, und ich habe keine Angst davor, obwohl ich noch nie ernsthaft in Ada programmiert habe.
Zurück zu der Frage, wie man Java unterrichtet. Ich denke, Java wird oft für den Unterricht verwendet, weil es neutral genug ist und es erlaubt, die Prinzipien der Programmierung mit einer Sprache zu erklären, die auch der Welt der Industrie nahe kommt.
Persönlich würde ich für einen ersten Kurs immer noch Pascal oder eine ähnliche Sprache verwenden, da ich so zwischen Kontrollstrukturen und Datenstrukturen unterscheiden könnte, die in Java / objektorientierten Sprachen eng integriert sind. Meiner Meinung nach würde Pascal eine schrittweise Einführung in die Grundkonzepte der Programmierung ermöglichen.
Außerdem sollten ein Informatiker (und ein guter Programmierer) grundlegende Mechanismen / Laufzeitstrukturen wie den Stack, den Heap, die Parameterübergabe, die Speicherzuweisung, Zeiger oder die Implementierung abstrakter Datentypen kennen, ohne die integrierten Funktionen des Sprache (Listen, Mengen usw.). Java nimmt Programmierern viel davon ab (das ist natürlich gut), aber Anfänger sollten etwas über diese Dinge lernen. Vielleicht sollte man nach einem ersten Programmierkurs in Java auch einen allgemeineren Kurs über Programmiersprachenkonzepte belegen.
Dies sind nur meine Erfahrungen und Meinungen.
quelle
Ich war in der Schule, als Java herauskam. Und meine Universität hat sich fast über Nacht verändert. Die Leute waren in der akademischen Welt in Java ziemlich aufgeregt. Ich war ein Jr, als es herauskam, und als mein Abschlussjahr begann, bewegten sich fast alle Akademiker schnell, um ihren Lehrplan zu ändern. Nicht nur an meiner Universität, sondern überall. Es war wirklich so schnell. Unser zweiter Einführungskurs war Pascal, und dieser wurde in weniger als einem Jahr schnell auf Java umgestellt. Warum haben sie so schnell konvertiert? Zwei große Gründe.
Ein Wissenschaftler möchte Theorie und Algorithmen vermitteln. Am besten eignen sich Sprachen, die Ihnen das Erlernen von Algorithmen erleichtern, für deren Bedienung nicht viel Erfahrung erforderlich ist: Schema, Python, Java, Smalltalk usw. Je mehr die Sprache vom Erlernen der echten Algorithmen abgelenkt wird. Zu der Zeit waren Skriptsprachen Bürger zweiter Klasse, die von Arbeitgebern als billig oder schnell und schmutzig missbilligt wurden. Akademiker sahen sie als Nachahmerkatze, aber was die Arbeitgeber wollen, hat auch mit Akademikern zu tun.
Das bringt uns zum nächsten Grund. Arbeitgeber wollen bestimmte Sprachkenntnisse, und das war zu der Zeit C / C ++. C / C ++ erfordert jedoch eine Menge Erfahrung, und es gibt eine Menge Eckfälle und ablenkende Anden oder Aber. Wir haben Kurse in C / C ++ gelernt, aber nicht in den unteren Stufen. Zu der Zeit waren die Arbeitgeber sauer auf CS-Programme, weil die Studenten nicht als C / C ++ - Gurus herauskamen.
Java eroberte die Branche fast so schnell wie die Wissenschaft. Die Akademie bekam also endlich das, was sie wollte. Eine Sprache auf hohem Niveau, die leichter zu erlernen war, und eine Sprache, die Arbeitgeber wollten. Es war alles zu perfekt. Ich hatte einen Freund, der vielleicht 3 Jahre nach meiner Abreise an die Akademie zurückkehrte, und er sagte, man könne in jedem CS-Fach ein Java-Buch finden. So schnell hat Java die Wissenschaft übernommen.
Persönlich denke ich, dass Java CS nicht verdorben hat. Ich denke, es war eine gute Sache, weil Schüler CS lernen, an Open Source teilnehmen und Arbeit finden können, selbst während sie in der Schule sind. Ich glaube immer noch, dass Sie als CS-Student viele Sprachen lernen sollten, und das sollte nicht nur Java sein. Aber wenn sie alle Python benutzen würden, würde Joel auch Python hassen.
quelle
Dafür gibt es einige Gründe, darunter:
Beachten Sie, dass es eine Reihe von Schulen gibt, die aus den gleichen Gründen C # unterrichten. Es gibt noch viele weitere Gründe, von denen einige spezifischer für die einzelne Schule sind. Im Wesentlichen ist Java das objektorientierte "BASIC" von gestern geworden.
quelle
*
Syntax, aber es wäre sehr schwer zu verwenden, ohne ein grundlegendes Verständnis von Zeigern.Ich mag Joel Spolskys Beitrag mit dem Titel The Perils Of Java Schools . Ich denke, Berin Loristch hat Recht, wenn es darum geht, den Lehrplan zu vereinfachen und auch für die reale Welt anwendbar zu sein.
Ich habe das Folgende oft gehört: "Ein Informatik-Abschluss ist kein Abschluss, um Programmieren zu lernen, sondern um die Theorie zu lernen." Die Sprache muss nicht unbedingt von Bedeutung sein (obwohl sie nicht im Weg stehen sollte), solange die Theorie gelernt wird. Java ist eine relativ einfach zu erlernende Sprache, so dass mehr Zeit für das Erlernen der Theorie hinter allem aufgewendet werden kann. Dies ist einer der Gründe, warum MIT Scheme verwendet (wie ich gehört habe).
quelle
Viele der oben gegebenen Antworten sind gut, aber sie lassen etwas aus.
Java ist eine Multiplattformsprache. Ein Student kann seinen Mac verwenden, ein anderer seinen PC und ein anderer seinen Studenten-Unix-Account. Der gleiche Code wird das gleiche tun. Überlegen Sie, wie viel einfacher es für den Lehrer und die IT-Abteilung der Schule ist, dies zu unterstützen.
Dies war die wahre Bedeutung von Java, als es herauskam. Der Witz lautete "Code einmal, überall debuggen", aber es nimmt wirklich Hardware und Betriebssysteme aus der Gleichung.
quelle
Ich habe Professoren sagen hören, dass sie Java verwenden, um zu unterrichten, weil:
Persönlich bin ich froh, dass ich CS in Berkeley absolviert habe, als sie Scheme zum Unterrichten verwendeten. Obwohl mir erst einige Jahre später klar wurde, wie elegant eine Sprache wirklich war.
quelle
Ein bisschen Hintergrund
Ich nahm an der einzigen Java-Klasse teil, die an unserer Schule angeboten wurde. Dies war Ende der 90er bis Anfang 2000. Java wuchs, war aber noch nicht beinahe auf dem Vormarsch. Da ich viel in C entwickelt habe, war ich ein wenig frustriert über den Code, der für die Einrichtung und den Betrieb von Java erforderlich ist. Ich konnte mich nicht auf meine Aufgabe konzentrieren. Ich konnte nicht einfach eine Datei mit "open" öffnen. Ich musste die Klasse definieren und dann die Importe usw. usw.
Ich war Computertechniker, also nahm ich zuerst die Assembler-Programmierung und dann C und dann C ++, Schema und diesen einen Java-Kurs. Es war hauptsächlich ein C-orientiertes Schulprogramm. Die Algorithmusklasse wurde mit C unterrichtet.
Als ich in die Industrie ging, war Java eindeutig der dominierende Akteur. Vielleicht war es der einzige Player bei der Umstellung von Backend-COBOL-Systemen auf Java-Web-Business-Anwendungen. Java hat in den frühen 2000 Tagen enorme Fortschritte in der Geschäftswelt gemacht.
Gleichzeitig kannte ich nicht alle Java-Frameworks, wusste aber, wie man programmiert und sich an die Java-Umgebung anpasst. Wenn ich Schulungen zu guten Java-Codierungsstandards absolviert hätte, hätte ich wahrscheinlich mit einem besseren Java-Stil oder Kenntnissen des Java-Ökosystems beginnen können.
Rückblickend denke ich nicht, dass es wichtig ist.
Um Ihre Frage zu beantworten: Warum studieren wir Java an der Universität?
Java sollte unterrichtet, aber nicht in allen Kursen verwendet werden:
Sie sollten Java irgendwann im College lernen, wenn Sie Informatik lernen. Es ist beliebt in der Geschäftswelt. Sie sollten Java und vielleicht C # lernen. Ich würde nicht ABSOLUT Java nicht als Einführungskurs in die Programmierung unterrichten. Und Java sollte auf keinen Fall die Hauptsprache aller Kurse sein.
Zur Java-Kritik:
Java wird viel kritisiert und hat es immer. Ich habe Java-Magazine gelesen, in denen Java mit dem Fragezeichen "Ist Java bereit für das Unternehmen?" Die Java-Plattform ist nach wie vor eine weit verbreitete Plattform. Bei den meisten allgemeinen Programmieraufgaben funktioniert Java jedoch einwandfrei. Und es gibt keine größeren Probleme bei der Verwendung von Java. Es wird Ihre Fähigkeiten nicht verletzen. Es könnte sein, dass Sie sich nur auf die Java-Bibliotheken verlassen, ohne zu lernen, was darunter vor sich geht. Java verursacht jedoch keinerlei Hirnschäden (einige Entwickler glauben, dass dies der Fall ist).
Warum greifen Entwickler nicht C oder C ++ an? Oder zumindest C ++. Die Paradigmen der imperativen Programmierung sind sehr ähnlich. Und ich würde nie darüber nachdenken, eine Webapp in C ++ zu schreiben, aber vielleicht mit Java.
So würde ich einen Lehrplan aufstellen:
Die Sprachen, die ich in meinem Lehrplan aufgeführt habe, sind ziemlich verbreitet. Viele Schulen unterrichten mehrere Sprachen ohne Probleme. In der Industrie werden Sie viele verschiedene Programmiersprachen verwenden. Sie werden Sprachen verwenden, von denen Sie noch nicht einmal gehört haben.
Das Thema Java in Schulen ist kein Thema, es sei denn, sie möchten Sie vollständig vor Java schützen oder sie möchten NUR Java unterrichten. In beiden Fällen sind die Schulen ungerechtfertigt.
(Sorry Ruby lang)
quelle
Sorry, langweilige Antwort nur:
(1) Meinten Sie:
"Warum studieren wir Java an der Universität als erste Programmiersprache?"
(2) Oder meinst du:
"Warum studieren wir überhaupt Java an der Universität, auch wenn wir vor Java andere Programmiersprachen lernen?"
Klingt so, als würdest du wirklich beide Fragen meinen.
Im Falle von (1):
Ich denke nicht, dass Java (oder .NET C # und Visual Basic) als erste Programmiersprache unterrichtet werden sollte. Structured & Modular Pascal sollte an erster Stelle stehen, auch wenn es alt und veraltet klingt.
Viele Leute denken, wir sollten den Leuten sofort objektorientiertes Programmieren oder funktionales Programmieren beibringen, nur weil es "Hype" oder "Trend" ist.
Ich lerne Structured Pascal als kleine Version von "Object Oriented Programming", nicht als ähnliches. Ich sehe ein strukturiertes Programm als ein einzelnes kleines Objekt.
Danach schlage ich vor, mit Functional Languages und Object Pascal fortzufahren.
Und später C, C ++, C #, VB.Net, Java.
Die Hauptgründe, warum ich Java oder C # als erste Programmiersprache nicht mag, sind die Tatsache, dass sie selbst Mischkonzepte für "Zeiger", "Zeiger auf Objekte" und "Objekte" ("Referenzen") haben.
Ich glaube, dass die Schüler die Unterschiede und Ähnlichkeiten zwischen diesen Konzepten berücksichtigen sollten. Der Vergleich von Strings-Objekten in Java ist ein gutes Beispiel für diese Eigenart:
Im Falle von (2):
Ich denke, Java oder C # sollten in der Schule unterrichtet werden, da sie über mehrere aktualisierte gute Funktionen verfügen und gleichzeitig eine reale Nutzung haben.
quelle
Ich kann nicht mehr widersprechen. Java war eine Sprache an meinem College, die Sie mitnehmen mussten, um am CS & E-Programm an meiner Schule teilzunehmen. Java ist extrem einfach zu unterrichten. Weil Sie sich auf bestimmte Konzepte beschränken können, die "Nicht-Programmierer" lernen können.
Ich kann auch nicht sagen, ob Sie Java ABSOLUT als einführenden Programmierkurs unterrichten würden oder nicht. Sie sagten im Grunde, Sie würden es NICHT ABSOLUT UNTERRICHTEN ?
Der einfache Grund wurde bereits erläutert. Java hat keine Lizenzgebühren. Sie können es mit einem einfachen Testeditor unterrichten. Es wird mit Sicherheit aus den falschen Gründen verwendet.
Ich bin mit einer früheren Antwort nicht einverstanden, dass Java die Schüler nicht "dümmer" gemacht hat, es zeigt wirklich, wenn sie Probleme mit wirklich einfachen Konzepten wie Arrays und Listen in C ++ haben.
quelle
Die Umstellung von C auf Java erfolgte zum falschen Zeitpunkt .
Irgendwo um 2000. Ich war in der letzten C-Klasse an meiner Universität.
C ++ hatte zu viele Funktionen , um einen Anfänger nicht zu verwirren. (Und es tut es immer noch. Und plant, einige hinzuzufügen.)
.NET war nicht reif genug und war noch mehr teurer als heute.
Ziel C war alt und Apples Gebrauch davon flog unter dem Radar (es gab kein iPhone in der Nähe)
quelle
Ich fühle mich gezwungen, die Antworten hier zu ergänzen, da ich keine dieser Antworten wirklich sehe, die meine Perspektive abdecken.
Ich bin ein Hobby-Programmierer. Ich war der Kurve weit voraus, wenn es um "Computer" und "Programmierung" ging. Ich habe mein Bachelor - Studium 2007 und das Masterstudium ungefähr zwei Jahre später 2009 abgeschlossen. Ich habe mit einer Vielzahl von Sprachen gearbeitet, darunter Assembly, QuickBASIC, C, C ++, Java, PHP, Perl, Python, BASH - Skripte, Javascript, COBOL usw .
IMHO, die Sprache, die verwendet wird, um den Schülern das Programmieren beizubringen, ist ein Indikator für die Zeit, in der wir gegenwärtig leben. In den 1980er Jahren war Assembly die Muttersprache, während C als Hochsprache angesehen wurde.
In den neunziger Jahren gewannen C ++, Java, Perl und solche Sprachen an Bedeutung, vor allem, weil sie viel höher lagen als C und Prinzipien der schnellen Entwicklung verkörperten. Also hörten sie auf, den CS-Schülern Assembly beizubringen, und lehrten C, um Algorithmen auszudrücken. Langsam hat sich dies im letzten Jahrzehnt geändert, als C als zu einfache Sprache betrachtet wurde, um die Essenz von Algorithmen effektiv und ohne zu viel System-Know-how zu erfassen. Dies ist äußerst wichtig, da der Schwerpunkt eines CS-Lehrplans eher theoretisch als praktisch sein sollte und jedes Mal, wenn jemand einen Algorithmus schreiben möchte, er / sie mit Speicherzuweisungen und Zeigerarithmetik überfrachtet ist, wird er / sie nicht erhalten irgendwo.
Sogar heute, wenn Sie in einem Master-CS-Programm sind, müssten Sie bestimmte "System" -Anforderungen erfüllen (zumindest in den USA und dies sollte für US-Universitäten nicht sehr unterschiedlich sein), die Studenten benötigen, um in der Lage zu sein, Anwendungen auf Systemebene und zu programmieren In bestimmten Fällen reicht das Hacken auf Kernel-Ebene aus, um die Anforderungen tatsächlich zu erfüllen. Also, obwohl C nicht ist die Defacto-Sprache ist, die in Schulen unterrichtet wird, ist es relevant, wenn Sie sich auf Systeme oder Hochleistungsrechnen oder solche Nischen spezialisieren möchten.
Ich möchte auch erwähnen, dass das C viel Disziplin erfordert, um die Dinge in Ordnung zu bringen, während Sprachen wie Java in Bezug auf solche Einschränkungen ein wenig entspannt sind. Dies erleichtert das Durchführen von Kursen, ohne dass die RA / TAs GDB starten müssen, um das Programm eines Studenten zu debuggen :)
quelle
Ich denke, ein großer Teil davon ist das, was in der Industrie verwendet wird.
Mein CS-Programm hatte einen industriellen Beirat, der sich aus leitenden Mitarbeitern lokaler Technologie- und Luftfahrtunternehmen zusammensetzte, und sie hatten viel Einfluss auf den Lehrplan. Die Intro-CS-Klassen ließen Pascal in dem Jahr, in dem ich anfing (1986), zugunsten von C fallen, größtenteils auf Geheiß des IAB. In ähnlicher Weise gab es einen Drang, Ada in einigen Kursen auf höherer Ebene zu unterrichten, da die lokalen Luft- und Raumfahrtunternehmen sie für DoD-Arbeiten verwenden mussten.
Java ist jetzt ziemlich allgegenwärtig, besonders jetzt, wo Android-Geräte abheben. Aus didaktischer Sicht ist das scheiße, aber dann auch C.
quelle
Weil sie hoffen, dass weniger Studenten den Kurs nicht bestehen, was meiner Meinung nach ein FEHLER für sich ist. Vielleicht einer der Gründe, warum fast niemand mehr den Hochschulabschluss ernst nimmt, zumindest hier.
Java ist eine zu einfache Sprache und lehrt nicht, dass der PC ein Paradigma mit begrenzten Ressourcen hat. Während zur gleichen Zeit in "es gibt nichts, was nicht mit einer anderen Abstraktionsschicht gelöst werden kann" Linie des Denkens zwingt.
Ja, es ist gut für OOP-Konzepte und Spielzeugprobleme, aber es lehrt, die Probleme aus dem falschen Blickwinkel zu betrachten. Verwenden Sie hier ordentliches Konstrukt, schrauben Sie den Rest.
Die Wissenschaft ist jedoch dafür bekannt, von KI, OWL und anderen Spielzeugtechnologien träumerisch zu sein. Während sie solche Dinge erforschen, erfindet manchmal jemand dort auch etwas Erstaunliches, aber wenn Sie ein guter Entwickler sein wollen, müssen Sie das unabhängig lernen.
quelle