Java ist häufig in der Wissenschaft zu finden. Was ist der Grund dafür?
real
Welt nutzt, ist weder für die Studenten noch für die Unternehmen von Vorteil, die die Studenten einstellen möchten.
Java ist häufig in der Wissenschaft zu finden. Was ist der Grund dafür?
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.
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.
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.
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.
*
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).
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.
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.
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)
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.
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)
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.