Warum ist Java an so vielen Institutionen die Verkehrssprache? [geschlossen]

22

EDIT: Diese Frage scheint zunächst Java zu Bashing, und ich denke, an diesem Punkt ist es ein bisschen. Allerdings ist der größere Punkt den ich versuche zu machen, warum jeder eine einzige Sprache als ein Ende gewählt wird alle alle Lösung für alle Probleme sein. Zufällig wird Java verwendet, also musste ich es hier übertreffen, aber ich bin nicht gewollt, Java neu zu rippen :)

Ich mag Java in den meisten akademischen Situationen nicht. Ich sage nicht, dass die Sprache selbst schlecht ist - sie hat einige äußerst wünschenswerte Aspekte, vor allem die Fähigkeit, auf den meisten Plattformen ohne Neukompilierung ausgeführt zu werden. Es ist nichts falsch daran, die Sprache für Ihre nächste App ^ TM zu verwenden. (Nicht etwas, was ich persönlich tun würde, aber das ist mehr, weil ich weniger Erfahrung damit habe, als dass das Design schlecht ist.)

Ich halte es für eine Verschwendung, dass High-Level-CS-Kurse unter Verwendung von Java als Sprache unterrichtet werden. Zu viele meiner Kommilitonen kann nicht Programm Pfifferling wert, weil sie nicht wissen, wie man Arbeit in einer nicht-Garbage Collection Welt. Sie verstehen die Maschinen, für die sie programmieren, grundsätzlich nicht. Wenn jemand außerhalb einer müllsammelnden Welt arbeiten kann, kann er innerhalb einer arbeiten, aber nicht umgekehrt. GC ist ein Werkzeug, keine Krücke. Aber die Art und Weise, wie Informatikstudenten unterrichtet werden, ist wie eine Krücke.

Informatik sollte nicht eine ganze Reihe von Kursen unterrichten, die auf eine Sprache zugeschnitten sind. Die Schüler verlassen die Idee, dass alle einen gutes Design idiomatisches Java-Design ist, und dass Objektorientiertes Design ist der ein wahrer Weg, der einzige Weg ist, die Dinge getan werden können. Andere Sprachen, mindestens einer von ihnen kein Müll gesammelt Sprache zu sein, sollte in der Lehre eingesetzt werden, um den Absolventen ein besseres Verständnis der Maschinen zu geben.

Es ist eine Schande, dass jemand mit einem PHD in CS aus einer angesehenen Institution nicht ihren Weg aus einer Papiertüte programmieren.

Schlimmer noch: Wenn ich mit CS-Professoren spreche, die tatsächlich verstehen, wie die Dinge funktionieren, teilen sie die folgenden Gefühle, dass wir unseren Schülern einen schlechten Dienst erweisen, indem wir alles in Java erledigen. (Beachten Sie, dass das oben Genannte gleich wäre, wenn ich es durch eine andere Sprache ersetzen würde. Im Allgemeinen ist die Verwendung einer einzigen Sprache das Problem, nicht Java selbst.)

Insgesamt habe ich das Gefühl, dass ich keinen Abschluss mehr respektieren kann - wenn ich nicht sehe, dass meine Mitmenschen in der Lage sind, sich aus Fizzbuzz-Problemen herauszuprogrammieren.

Warum / wie kam es so sein?

Billy ONeal
quelle
9
Mach dir keine Sorgen. Geben Sie Oracle eine halbe Chance und sie werden Abhilfe schaffen :) Ihre Klagen gegen Android und Apache sind nur der Anfang, Entwickler zu vertreiben. Ich unterrichte an einer Institution, die das oben Genannte zum Anlass genommen hat, Python in Erwartung des zukünftigen Marktes zu unterrichten.
SamGoody
3
Auf welche akademischen Einstellungen beziehen Sie sich? Ich offhand nicht überall, wo CSci Studenten erwartet werden , nur eine Sprache zu lernen. (Als ich das letzte Mal in der Schule war, hättest du mit C und Scheme klar kommen können, wenn du dein Hauptfach und deine Klassen sorgfältig ausgewählt hättest, aber du würdest mindestens zwei verschiedene Sprachen verwenden.)
David Thornley
16
Können Sie erklären, wie Ihr L1-Cache funktioniert? Können Sie eine ALU entwerfen? Können Sie Maxwells Gleichungen erklären? Was ist mit den thermodynamischen Eigenschaften des Motherboards? Könnten Sie ein USB-Laufwerk bauen? Wissen Sie WIRKLICH, wie Ihr Computer funktioniert? Oder haben Sie eine Abstraktionsebene ausgewählt, die Ihren Interessen entspricht, und sind von dort aus gegangen?
MetricSystem
5
Die Entscheidung, dass Sie die Speicherverwaltung verstehen müssen, um "die Maschinen, für die sie programmieren, grundlegend zu verstehen", ist völlig willkürlich. Wenn es nicht notwendig ist, die Probleme zu verstehen, an denen Sie interessiert sind, ist es oft besser, Ihre Zeit mit dem zu verbringen, was Sie interessiert (da niemand genug Zeit hat, um alles zu lernen). Und jedes Argument, das Sie vorbringen, warum Java-Programmierer das Speichermanagement lernen müssen, könnte unendlich erweitert werden, bis jeder die Atomphysik kennen muss, um etwas zu "verstehen".
MetricSystem
7
Wenn hier jemand ein Strohmann-Argument hat, dann sind Sie es auch, da ich noch nie von einem einzigen CS-Programm gehört habe, das nur Java als Programmiersprache darstellt.
MetricSystem

Antworten:

30

Dies ist kein Java Problem, es ist ein Lehr Problem. Nicht zu wissen, wie man programmiert, ist kein Sprachfehler, sondern der Fehler der Schüler. Das Gleiche gilt für alle Ihre Fragen, GC, Wissen Basismaschine, wie die Dinge funktionieren „unter der Haube“ sozusagen.

Ihre Haupt meckern über Garbage Collection wirft mich leicht. Es sei denn, Sie tun C oder C ++ Garbage Collection ist in der Regel sehr gut und kein Problem. Möchtest du lieber, dass sie alle Montage lernen? Höhere Sprachen zwar streng sind, sind für den Unterricht sehr nützlich. Es gibt Ihnen die Flexibilität von Bibliotheken, Paketen und anderen Feinheiten, wenn Sie es benötigen, ohne die verwirrende Sprache "Zucker", die in den meisten anderen höheren Sprachen (PHP, Ruby, Python, Perl) vorhanden ist.

Josh K
quelle
5
Ich sage nicht, dass die höheren Sprachen nicht unterrichtet werden sollten. Aber ich sage , dass etwas niedrigeres Niveau (in der Größenordnung von C oder Fortran oder anderen Systemen Programmiersprache) sollte auch unterrichtet werden. (Gehen niedriger als C weniger nützlich ist , weil unter diesem Niveau , was Sie lernen , es wird spezifisch für eine einzelne Maschine Architektur sein). Ich sage nicht, dass alle CS-Absolventen großartige Low-Level-Programmierer sein sollten. Aber ich sage , dass mit einem niedrigen Niveau Problem konfrontiert , wenn sie es nicht sollten Sputter und sterben, wie alle Schüler um mich herum scheinen zu tun.
Billy ONeal
3
@Billy: Es ist schwierig, das ursprüngliche Lernniveau zu senken. Ich schaue mir C ++ / C-Code an und habe ein bisschen Spaß dabei , meinen Kopf darum zu wickeln. Erwarten Sie keine Wunder, aber erwarten Sie auch keine Engel. Programmierer müssen einen Antrieb haben, dem es fehlt, dass sie alle ziemlich schnell "sputtern und sterben", egal auf welcher Ebene das Problem liegt.
Josh K
5
@ Josh: Ziemlich gut genug, aber IMHO formale Exposition gegenüber mindestens einer anderen Programmierumgebung sollte eine Notwendigkeit sein, ein CS - Grad gegeben. Der Abschluss sagt nicht "Ich verstehe Java", sondern "Ich verstehe CS". Die beiden sind nicht die gleichen, und man kann nicht ein umfassendes Verständnis der CS mit Hilfe von Java (oder was das betrifft, erreichen jede Sprache) allein. (Übrigens, +1)
Billy ONeal
2
@JoshK: Die Unfähigkeit , zu debuggen auf einem niedrigen Niveau, und eine stark reduzierte Fähigkeit, richtig Grund , sich über die Auswirkungen der Code , den sie schreiben.
Mason Wheeler
1
Ich kenne Programmierer, die nur Java gelernt haben und Angst vor C ++ oder C haben, weil sie Zeiger verwenden müssen. Ich weiß nicht , ob jemand, der mit Zeigern nicht Programm kann einen echten Programmierer in Betracht gezogen werden, schließlich alle modernen Computer und Laufzeiten sind nach wie vor auf der Grundlage einer Basisarchitektur beteiligt Register, Hauptspeicher, Stapel, Haufen. Also habe ich in Java - Programm lieber als in C ++ (es ist auf jeden Fall leichter , Dinge zu erledigen , wenn Sie müssen über die Speicherverwaltung nicht stören) , aber ich zustimmen sollte , dass der Unterricht auf jeden Fall nicht auf Java beschränkt werden.
Giorgio
12

Tun die Universitäten das wirklich ? Oder ist dies nur eine Wahrnehmung, die die Leute bekommen, wenn sie einen schlechten Kandidaten für ein Vorstellungsgespräch bekommen?

Ich habe vor 4 Jahren meinen CS-Abschluss gemacht und während Java in den Einführungskursen verwendet wurde, wurde es danach nicht besonders betont. Aus der Spitze von meinem Kopf, der Kern erforderlichen Kurse erforderlich Sie Java, C, C ++, SML (funktionale Programmiersprache), Montag, Matlab und CAST (Schaltungsbeschreibungssprache) zu lernen. Dies gilt nicht berücksichtigt alle mathematischen und theoretischen CS Kurse und natürlich mehr die Hälfte Dutzend Wahl CS-Kurse, die Sie zu einem ganzen Bündel ausgesetzt wäre. Nach Gesprächen mit Freunden an verschiedenen Universitäten klang es nicht so, als wäre das, was sie taten, viel anders.

Wenn es Universitäten gibt, die ausschließlich Java unterrichten, dann ist das in der Tat eine Tragödie. Nicht weil Java schlecht ist, sondern weil es nur ein Werkzeug von vielen ist, das einem Programmierer zur Verfügung stehen sollte. Ein Entwickler, der nur Java kennt, ist gleichbedeutend mit einem Tischler, der nur weiß, wie man einen Hammer benutzt. Es fällt mir jedoch schwer zu glauben, dass dies wirklich der Fall ist, zumindest für angesehene Universitäten. Ich vermute, dass dies nur die Wahrnehmung ist, schlechte Kandidaten zu sehen und die Schule für die Inkompetenz der Kandidaten verantwortlich zu machen, anstatt den eigenen Mangel an Antrieb / Motivation / Neugier / Professionalität usw.

Jewgenij Brikman
quelle
2
Einverstanden. Ich habe gerade vor ein paar Jahren meinen Abschluss gemacht, und während die meisten meiner Kurse mit Java unterrichtet wurden, war es schwierig, einen Abschluss zu machen, ohne eine Klasse zu belegen, die mit C oder C ++ unterrichtet wurde, und wir hatten auch einen Programmiersprachkurs, der die Verwendung von Haskell hervorhob .
mipadi
In meinem Abschluss haben wir zuerst Pascal gemacht, dann Java als OO-Sprache. Nach dem 2. Jahr war es 90% der Profis egal, welche Sprache Sie verwendeten. Einige von uns verwendeten C / C ++ / Ruby / C # / Python / sogar Haskell, aber die meisten Leute hielten an dem fest, was sie wussten, Java. Nur eine Handvoll Kurse, die mit assembly / c / c ++ benötigt werden, sind Dinge wie unser (optionaler) 3D-Grafikkurs, der C / C ++ für OpenGL in hohem Maße erzwungen hat. Und offensichtlich erzwang der Basissystemkurs die SPARC-Montage (weil wir absichtlich arbeiteten und ein niedriges Niveau hatten). Ich habe gehört, dass sie im ersten Jahr nach Python / C ++ gewechselt sind ...
Aren
11

Ich bin wirklich überrascht, dass dies die Situation so vieler Schulen ist. Als ich meinen CS-Abschluss machte, hatte ich eine Reihe von Sprachkursen, die alle gängigen Sprachen des Tages umfassten (dies war vor fast 40 Jahren): Assembler (Univac 1108 und MIX), FORTRAN IV, SNOBOL4, COBOL, Lisp und Algol 68. Ich kann mir nicht vorstellen, dass nur eine Sprache unterrichtet wird. Oder wie ich verstehen konnte, was Compiler tun mussten, ohne Assembler-Programme geschrieben zu haben.

Wir haben Algol und FORTRAN für die meisten Daten- und Algorithmuskurse verwendet. Ich hätte gern mehr Zeit mit Lisp verbracht hat - stattdessen hatten wir eine Einführung nur und jetzt sind versucht, einige der Konzepte neu zu lernen. Wir haben SNOBOL4 zum Schreiben von Parsern verwendet - und der Pattern Matching mit Backtracking bildete eine gute Grundlage für die spätere Arbeit der Regex-Bibliotheken, die in vielen modernen Sprachen enthalten sind.

Diese Einführung in ein halbes Dutzend Sprachen hat ein Interesse an mir geweckt, das seitdem andauert.

pro Sekunde
quelle
8

Um den wahren Grund herauszufinden, müssten Sie die Leute fragen, die diese Institutionen leiten (und selbst dann sagen sie es Ihnen vielleicht nicht).

Mehrere mögliche Gründe (und ich verteidige hier niemanden und beschuldige ihn auch nicht):

Sie können sich was in Java getan

Java ist eine Allzwecksprache und kann als solche verwendet werden, um viele Probleme zu lösen.

Viele Lehrer verstehen Java

Es ist schwierig, eine Sprache zu lehren, dass Sie nicht verstehen,

Java ist beliebt

Das bedeutet, dass es viele Java-Ressourcen gibt - Bücher, eine aktive Community, Codebibliotheken usw.

Java ist einfach

Sie müssen nicht viel über einfache Dinge oder Theorien wissen, um Java zu machen. Sie können es vielleicht nicht gut machen , aber zumindest können Sie Dinge erledigen.

Java ist allgegenwärtig

Sie können es auf mehr oder weniger alles ausführen.

Es gibt Jobs für Java-Programmierer

Es gibt viele Jobs, die Java brauchen - Lehrer sollen Schüler auf die reale Welt vorbereiten.

Die Zeit ist begrenzt

In vielen Kursen fehlt die Zeit, um mehrere Sprachen, Theorien, einfache Konzepte usw. zu unterrichten.

Es ist das, was die Schüler wollen

Viele Studenten haben bereits von Java gehört (und sogar Java verwendet). Sie mögen, weil es vertraut ist.

Kramii setzt Monica wieder ein
quelle
6

Darum hat die Branche gebeten. Es gab einen Mangel an Java-Entwicklern, sodass die Schulen damit begannen, sie zu erstellen. Unternehmen haben Entwickler, die ihre Arbeit aufnehmen können, sobald sie durch die Tür gegangen sind.

Wie auch immer, die Sprache spielt keine Rolle. Sie könnten eine Nicht-GC-Sprache unterrichten und trotzdem schlechte Programmierer hervorbringen. Die Verwendung der Sprachschulen ist ein Implementierungsdetail. Schulen sollten Konzepte vermitteln. Wenn dies nicht der Fall ist, dann ist es die Schule, die das Problem ist, nicht die Sprache, mit der sie unterrichten. Nur weil jemand nicht weiß, was ein Zeiger ist, heißt das nicht, dass er kein effektiver Programmierer sein kann.

GC ist sowieso der Weg der Zukunft.

Henry
quelle
4
Sie müssen nicht wissen, was ein Zeiger ist. Sie müssen jedoch in der Lage sein, das Konzept relativ schnell zu verstehen. Das Nichtverstehen von Zeigern oder von Konzepten, die Zeigern ähnlich sind, deutet auf ein Unverständnis der Informatik als Ganzes hin. Ich sage nicht, dass alle CS-Absolventen großartige Low-Level-Programmierer sein müssen, aber ich sage, sie sollten zumindest ein konzeptionelles Verständnis dafür haben, was vor sich geht, wenn sie einen 4-jährigen Universitätsabschluss erhalten.
Billy ONeal
1
In CS geht es nicht um Programmierung.
Javier
1
@Javier: Wie geht es CS nicht um Programmierung? Sicher gibt es die Niederlassung von CS, „Theoretische Informatik“, das nicht über die Programmierung, sondern zum größten Teil es ist über die Programmierung.
Billy ONeal
1
@ Billy ONeal: Die Wikipedia-Definition ist etwas lang, aber der Teil, der der Programmierung am nächsten kommt, ist "das Studium praktischer Techniken für ihre Implementierung". Das heißt, es geht nicht um die Implementierung (Programmierung), sondern um das Erlernen der Implementierungstechniken (Algorithmen, Strukturen, Sprachen usw.)
Javier
1
@Javier: Ich denke, "das Studium der Programmierung" und "die Aktion der Programmierung" sind ein und dasselbe. Schließlich wird Code viel häufiger gelesen als geschrieben. Aber das ist nebensächlich - wenn Sie einen CS-Abschluss erhalten, werden Sie am Ende nur noch programmieren.
Billy ONeal
4

Faulheit und Gewinnmotiv. Mit Java bekommen die meisten Leute 80% des Weges, mit 20% des Aufwandes. Dies führt jedoch häufig dazu, dass Voodoo-Programmierer "Affen sehen Affen tun", die nicht genau wissen, was passiert, und nicht in der Lage sind, tiefer zu graben als Werkzeuge auf hoher Ebene.

C / C ++ richtig zu unterrichten ist schwierig. Selbst wenn dies gut gemacht wird, werden einige Konzepte auf niedriger Ebene wie Zeiger nicht vollständig verstehen (es gibt Studien dazu). Darüber hinaus scheint es auf dem Arbeitsmarkt nicht unmittelbar relevant zu sein.

dbkk
quelle
2
Aber wenn Sie Zeiger verstehen, können Sie Verweise viel leichter verstehen.
Michael K
3

Ich stimme meistens aber bis zu einem gewissen Grad zu.

Wenn Sie CS unterrichten möchten, konzentrieren Sie sich auf Datenstrukturen oder Algorithmen. Das meiste unnötige Zeug aus dem Weg zu räumen, ist eine gute Sache. Sie wollen nicht, dass die Schüler sich mit einfachen Dingen auseinandersetzen, wenn sie Konzepte auf hohem Niveau erlernen.

Auf der anderen Seite sollte auch Low-Level-Zeug unterrichtet werden. Nur damit wir mehr Allround-Programmierer bekommen.

Kugel
quelle
Ich spreche nicht von einem einzigen Kurs. Für einen einzelnen Kurs ist das in Ordnung. Für einen ganzen Lehrplan ist es nicht.
Billy ONeal
3

Wie immer ist es eine Frage, was Sie unterrichten möchten und wie viel Zeit Sie dafür haben.

Wenn Sie Dinge in Java tun, müssen Sie sich nicht mit verirrten Zeigern und free / malloc auseinandersetzen. Das bedeutet, dass es weniger schwer zu findende Bugs gibt.

Dies bedeutet nicht, dass Sie sich nicht mit der zugrunde liegenden Maschine auseinandersetzen sollten - was Sie für das Handwerk benötigen -, sondern dass Sie vielleicht das richtige Werkzeug für den Job auswählen sollten. Hochwertige Algorithmen sind möglicherweise nicht das beste Thema für den Assembler-Kurs.

user1249
quelle
Für einen Einführungskurs in die Programmierung oder einen Kurs über Datenstrukturen ist Java in Ordnung. Nicht für ein ganzes 4-Jahres-Curriculum.
Billy ONeal
@ Billy. Einverstanden. Ich erwähne nur, dass Sie mit Java einige Dinge kaufen, über die Sie sich keine Sorgen machen müssen. Sie sollten die Grundlagen in anderen Kursen ohne Java lernen.
2

Ist es zu viel verlangt, ihnen etwas darüber beizubringen, wie Computer wirklich funktionieren? Für mich macht es keinen Sinn, dass ein CS-Kurs keine Betriebssysteme oder Computerarchetekturen enthält. Ich sage nicht, dass Sie in der Lage sein sollten, einen Computer auf der Rückseite eines Umschlags zu entwerfen, aber eine allgemeine Übersicht lässt alle Sprachen in Betracht ziehen. Ich meine, Java läuft in einer virtuellen Maschine!

Michael K
quelle
1
Gibt es gute Informatik-Programme, die keinen OS-Kurs und keinen Computer-Organisationskurs enthalten?
mipadi
Ich hoffe es nicht!
Michael K
0

Ehrlich gesagt denke ich nicht, dass Sie den Respekt für alle Grade verlieren sollten und besonders nicht für CS, da die einzige gelehrte Sprache Java ist.

Jeder anständige comp. sci-Student versteht, dass sein CS-Abschluss nichts anderes als ein Stück Papier ist und dass echtes Wissen aus persönlichen Projekten und persönlichem Studium resultiert. Ich würde gerne glauben, dass die guten Schüler wissen, dass sie C kennen müssen und lernen, wie man Dinge unter Linux / Unix macht und wie man NICHT von modernen Sprachen beherrscht wird.

user40362
quelle
-1

Ich sehe kein Problem mit der Verwendung von Java. Das größte Problem (wie Sie bereits erwähnt haben) ist, dass Universitäten Imperative Programmierung als beste und einzige Möglichkeit zur Lösung all Ihrer Probleme lehren. Dies ist sehr weit von der Wahrheit entfernt. Anstatt beispielsweise drei imperative Sprachen (oder schlimmstenfalls dieselbe Sprache) für drei verschiedene Kurse zu verwenden, sollten sie drei verschiedene Programmierparadigmen verwenden. Ein Beispiel ist Java (imperativ), Prolog (deklarativ) und Haskell (funktional).

Was den Grund angeht, denke ich, dass dies eine Kombination aus (1) Politikern, die nicht aufgeschlossen sind oder persönliche Vorteile / Sponsoren haben, und (2) Faulheit ist. Professoren waren einst Studenten und unterrichten, was immer sie wissen oder mögen.

Sakisk
quelle
-1

Calvin College in Grand Rapids Mi.Nr. Als sie zu Einführungskursen von Java zu Python wechselten, sagte der ungläubige Professor gegen Ende seines Semesters zu einer Gruppe von uns: "Viele von ihnen können tatsächlich programmieren, es ist unglaublich." Sein Erstaunen stand im Gegensatz zu den bisherigen Erfahrungen mit Java. Dies macht Java nicht zu einer schlechten Sprache, nur schwer von Grund auf zu verstehen. Ich würde das Gleiche über C oder C ++ oder eine Sprache argumentieren, die genaue Kenntnisse über Speicherzuweisungsschemata oder -typen erfordert.

Ben DeMott
quelle
1
Ähm, Python erfordert genaue Kenntnisse der Typen, genau wie die anderen Sprachen, die Sie erwähnt haben.
Billy ONeal
Ich erwarte, dass Sprachen mit Dolmetschern viel einfacher zu erlernen sind, da die Schüler eine Aussage für eine Aussage erhalten können, anstatt eine Aussage für eine Aussage zu kompilieren.
Kevin Cline
@BillyONeal Du hast mich falsch verstanden. Der Kontext war die Speicherzuweisung in meinem letzten Satz. Ich habe mir noch keine Gedanken über die Größe oder Anzahl der Elemente eines str () oder dict () oder tuple () oder list () oder set () gemacht ... Ich benutze sie einfach.
Ben DeMott
@ kevincline Danke Kevin - das war es, was ich rüberbringen wollte. Gemessen an den Abstimmungen muss ich an meinen Kommunikationsfähigkeiten arbeiten;)
Ben DeMott
-2

Ich habe einen Abschluss in Computersystemtechnik, also habe ich Baugruppen, Mikroprozessoren, VHDL studiert, was die Logikgatter sind und wie man daraus ein Flip-Flop erstellt, ich habe elektrische Schaltungen, Operationsverstärker, Tiefpassfilter und Amplitude studiert Modulation, baute eine Schaltung in einem Labor, die wie eine Telefontastatur klingt, mit einem Logikanalysator vermischt, nahm einige Physikstunden. Auf der Linux-Seite habe ich vorher einen Kernel neu kompiliert, einen winzigen Gerätetreiber und ein Hausaufgaben-Dateisystem geschrieben.

Aber dann merkte ich, dass ich mehr High-Level-Sachen viel mehr mag. Ich bevorzuge Python gegenüber C. Ich mag C # und ich liebe den Garbage Collector. Ich mag Mathematik und Algorithmen und Datenstrukturen, aber ich bin kein besonderer Fan von Zeigern - ich kann mich mit ihnen anlegen; Ich will einfach nicht.

Sie denken also, dass die Universität mehr C und weniger Java unterrichten sollte. Jemand anderes meint, dass sie alles im Schema unterrichten sollten. Spolsky wird beides nehmen.

Ja, es stimmt, dass ein Universitätsabschluss nur ein Stück Papier ist, aber "lassen Sie nicht zu, dass der Schulbesuch Ihre Ausbildung beeinträchtigt". Es gibt immer Wikipedia, Stack Overflow, Coursera.org usw. Es sieht so aus, als würden die traditionellen Universitäten an Bedeutung verlieren.

Wenn ich einen Bachelor machen könnte, wäre ich auf eine andere Schule gegangen, ich hätte keine Elektrotechnik studiert, sondern Mathe, Nebenfach Physik und Französisch. Scratch Französisch; Ich hätte im Ausland in der Schweiz studieren und dabei 5 natürliche Sprachen lernen sollen. Ich würde auch zurückgehen und eine Person finden, die mich davon überzeugt hat, dass ich unbedingt eine Einführung in den Wirtschaftsunterricht am College machen muss, um in der realen Welt zu überleben und ihm mit meiner Sammlung von Milton Friedmans Büchern (den wenigen) auf den Kopf zu schlagen Bücher zum Thema Wirtschaft, die ich lese, die nicht saugen). Ich würde auch kein Geld für das Buch Freakonomics 1 oder ein Buch über Perl-Sprache bezahlen.

Im Nachhinein hätte ich vieles anders gemacht. Alles, was ich jetzt tun kann und das empfehle ich Ihnen, ist, Ihr eigenes Abenteuer zu wählen: http://www.codinghorror.com/blog/2008/03/choosing-your-own-adventure.html

Im Nachhinein hätte ich 100 Milliarden Dollar an der Börse verdient und in die Krebsforschung investiert. Ich hätte Wissenschaftler engagiert, um die Welt von Plastikmüll zu befreien. Ich hätte genug Geld für die Kampagne von Ron Paul gespendet, damit der Krieg im Nahen Osten vor mehr als 3 Jahren sein würde.

Erkennen Sie jetzt, dass Sie Ihre Zeit nie mehr zurückbekommen. Versuchen Sie also, sie mit Bedacht einzusetzen.

Job
quelle
Downvoter, bitte erläutern.
Job
-2

Vor ein paar Jahren las ich irgendwo, dass in Großbritannien die Java-Entscheidung getroffen wurde, mehr Studenten zum Programmieren zu bewegen. Anscheinend war es für das Gehirn einfacher, weil es an fiesen Zeigern und Speichermanagement usw. mangelte. Ich würde vermuten, dass dies der Grund ist, warum Python schnell als neues "Lernwerkzeug" eingeführt wird. Ich bin der Meinung, dass Ihr typischer Uni-Kurs Sie nicht zum Programmierer machen wird. Alles, was es tun soll, ist, Sie mit einem gewissen Maß an Wissen auszustatten und Sie für die Programmierung vorzubereiten. Der Tag, an dem man sich selbst als Programmierer bezeichnen kann, kommt in der Regel ein wenig später, und wenn dieser Tag kommt, sollten Zeiger, Garbage Collection und andere Programmierparadigmen als OOP kein Problem sein.

Fing
quelle
-2

Warum wird Java verwendet?

Drei Gründe:

  1. Java verwendet eine C-Syntax. Viele Programmierer sind damit vertraut, so dass sich die Lernkurve verkürzt.

  2. Geld wurde ausgegeben, um Java als cool und modern zu vermarkten. Aber im Gegensatz zu Lisp lebt Java in der Steinzeit.

  3. Die JVM. JVM ist die einzig coole Sache an Java, die legitim ist, nicht nur Marketing-Hype. Obwohl die JVM als Plattform für die Ausführung von Programmen gelobt werden sollte, verdient sie nicht die Existenz der Java-Sprache. Sie können theoretisch und praktisch viele verschiedene Sprachen für die JVM kompilieren.

LispIsTheGodLanguage
quelle
1
Herzlich willkommen. Dies sieht so aus, als wäre dies Ihr erster Beitrag für Stack Exchange-Programmierer. Bitte besuchen Sie die FAQ-Seite programmers.stackexchange.com/faq, um Ratschläge zum Thema Reputation zu erhalten und Fragen zu stellen und zu beantworten. Ein wichtiger Punkt ist, dass die Antworten informativ und nicht provokativ sein sollten. Wenn Sie behaupten, Java sei Steinzeit und Lisp ist modern, erklären Sie, warum. Viele Leser wissen vielleicht, dass Lisp 1958 spezifiziert wurde und nur wenig jünger als FORTRAN ist. Wenn Sie sagen möchten, dass etwas über Java, das mit FORTRAN oder Algol geteilt wird, das Design beeinflusst und einschränkt, beschreiben Sie es.
DeveloperDon
-3

Ihre Frage stützt die Erkenntnisse einer anderen Person, die einen Aufsatz geschrieben hat, in dem es heißt, Java sei so cool, aber nicht schwer genug für wissenschaftliches Rechnen. Ich denke, er sollte einfach Big Decimal mit all seinen feinen Genauigkeiten, NANs usw. verwenden und damit weitermachen.

Ich möchte nur in einer automatischen Müllsammelwelt leben. Es ist gesünder, sauberer, gepflegter und ästhetischer und verhindert, dass Geld für Gesundheitskosten verschwendet wird. Es ist wünschenswerter - Sie müssen etwas nicht als unerwünscht markieren - indem Sie es einfach dereferenzieren oder auf null setzen oder wenn ich den Bereich verlasse, wird das Objekt automatisch abgerufen markiert für Müllabfuhr ..

Ok, jetzt spreche ich nur über Java, aber es wäre sehr hilfreich, wenn dies auch im richtigen Müllszenario funktioniert. Java wird irgendwo einmal ausgeführt, was für mich gut genug ist, um als Sprache in Schulen verwendet zu werden. Keine Speicherverluste und von glücklichen Programmierern gemocht zu werden, die nicht Zeit damit verbringen möchten, jedes von ihnen verwendete Objekt mit Tags zu versehen und aufhören möchten, sich selbst zu verwenden, ist eine gute Logik für Java.

Java hat Zeiger - nun, wir nennen sie Referenzen. String s1 = "Hello"; String s2 = "Hallo"; String s3 = neuer String ("Hallo");

s1 und s2 zeigen auf dasselbe String-Objekt - dies ist durch Verweis s1 == s2, s1.equals (s3), aber s1 == s3 ist falsch, weil s3 ein neues Referenzobjekt ist - dies ist eine Java-Arithmetik von Referenzen und I Verstehe das alles so leid, ich möchte nicht als jemand bezeichnet werden, der die zugrunde liegenden Komplexitäten der Zeigerarithmetik von C oder C ++ nicht versteht.

Uma
quelle
2
Referenzen sind keine Verweise. Sie können sie nicht arithmetisch verwenden, und Sie können sie nicht verwenden, um ein Erinnerungsstück neu zu interpretieren, auf das sie verweisen. Und natürlich, egal wie sehr Sie in einer Müllsammelwelt leben möchten, ist die Tatsache, dass die Welt keine Müllsammelwelt ist. Ich sage nicht, dass Java eine schlechte Sprache ist oder dass die Leute kein Java verwenden sollten. Wenn Sie es mögen, verwenden Sie es, es gibt Dinge, die großartig sind. Ich denke nur, dass es als Anfängersprache ungeeignet ist, weil es Dinge verbirgt, die für neue Programmierer wichtig sind, um sie zu verstehen.
Billy ONeal