Heim  >  Artikel  >  Java  >  Sagen Sie ein Wort für Java

Sagen Sie ein Wort für Java

伊谢尔伦
伊谢尔伦Original
2016-12-03 09:15:381061Durchsuche

Einige Leute haben mich gefragt, welche guten Empfehlungen es unter den vorhandenen Sprachen gibt? Ich sagte: „Java.“ Sie waren überrascht: „Was? Java!“ Also erkläre ich es jetzt.

Java hat alle „dynamischen Sprachen“ übertroffen, die es verflucht haben

Vielleicht aufgrund der rebellischen Psychologie junger Menschen nehmen die Menschen ihre Einführungssprachen nicht ernst. Schon sehr früh nutzten Informatikstudenten Scheme oder Pascal, um damit anzufangen. Mittlerweile verwenden die meisten Schulen Java. Dies mag der Grund sein, warum viele Leute Java hassen und auf Leute herabschauen, die Java verwenden. Wenn es um Java geht, fühlt es sich an, als würde es von der Generation meines Großvaters verwendet. Man sagt, Java sei altmodisch, groß, komplex und aufgebläht.

Bestimmte Python-Programmierer erklären Anfängern in Foren die Vorteile von Python. Einer der Gründe ist: „Weil Python nicht Java ist!“ Sie propagieren es gerne so: „Sehen Sie, wie einfach und klar Python ist.“ Es besteht keine Notwendigkeit, Typen zu schreiben ...“ Ihr unvernünftiger Hass und ihre blinde Ablehnung von Java haben dazu geführt, dass sie die wichtigen Vorteile von Java nicht erkannt haben und sich verirrt haben. Obwohl es in Bezug auf die Dynamik die Oberhand hat, ist Python als Programmiersprache überhaupt nicht in der Lage, mit Java zu konkurrieren.

In Bezug auf die Leistung ist Python Dutzende Male langsamer als Java. Aufgrund des Fehlens wichtiger Funktionen wie der statischen Typisierung ist es schwierig, Fehler im Python-Code zu erkennen und nach der Erkennung schwierig zu debuggen. Daher kann Python nicht zum Aufbau großer und komplexer Systeme verwendet werden. Möglicherweise stellen Sie fest, dass der Hauptcode einiger Startup-Unternehmen in Python geschrieben ist, die Qualität der Software dieser Unternehmen ist jedoch tatsächlich recht gering. In reifen Unternehmen wird Python höchstens zum Schreiben von Tool-ähnlichen Dingen oder kleinen Skripten verwendet, die die Systemzuverlässigkeit nicht beeinträchtigen.

Das Fehlen statischer Typen macht es Python auch unmöglich, eine gute IDE-Unterstützung zu haben, und Sie können Python-Code nicht vollständig zuverlässig umgestalten. PyCharm stellt eine große Verbesserung gegenüber der frühen Python-Programmierumgebung dar. Die Theorie besagt jedoch, dass grundlegende Refaktorierungsoperationen wie das „Umbenennen von Variablennamen“ nicht vollständig zuverlässig durchgeführt werden können.

Vom Design her sind Python und Ruby tatsächlich viel komplexer als Java. Viele wichtige Funktionen fehlen und es gibt noch viel mehr fehlerhafte „leistungsfähige Funktionen“. Aufgrund der blinden Bewunderung des sogenannten „authentischen objektorientierten“ Ansatzes, des sogenannten „Late-Binding“, gibt es in diesen Sprachen zu viele Stellen, die mit Semantik „überladen“ werden können, und Alles kann neu definiert werden, was zu einer großen Codekomplexität führt. Python- und Ruby-Code kann leicht missbraucht werden, ist schwer zu verstehen, chaotisch und anfällig für Probleme.

Viele JavaScript-Programmierer verachten Java auch blind, aber tatsächlich ist JavaScript schlechter als Python und Ruby. Sie weisen nicht nur all ihre Mängel auf, sondern es mangelt ihnen auch an vielen notwendigen und praktischen Funktionen, wie etwa grundlegenden Klassendefinitionen. Nach und nach tauchen verschiedene „WEB-Frameworks“ von JavaScript auf, und es scheint, als würden sie ständig neue einführen, aber tatsächlich tappen sie alle im Dunkeln. Die JavaScript-Community ist notorisch naiv. Oft wird auf Konferenzen von JavaScript-„Experten“ ein ganz grundlegender gesunder Menschenverstand gepredigt, als wäre es eine große Entdeckung. Ich sehe keinen Sinn darin, diese Treffen in der JavaScript-Community abzuhalten, da sie nur dem Aufbau von Verbindungen und der Jobsuche dienen.

Die „Nachfolger“ von Java konnten es nicht übertreffen

In letzter Zeit interessieren sich viele Menschen für neue Sprachen wie Scala, Clojure, Go usw. Sie denken, dass dies mehr sind moderner und fortschrittlicher als Java-Sprachen und dachten, sie würden irgendwann Java ersetzen. Diese Enthusiasten stellten jedoch nach und nach fest, dass Scala, Clojure und Go nicht die Probleme lösten, die sie zu lösen vorgaben, sondern ihre eigenen Probleme mit sich brachten. Viele dieser Probleme gibt es in Java nicht.

Ich habe viel über Go kommentiert. Wer Interesse hat, kann hier nachlesen. Kurz gesagt, Go ist das Produkt ziviler Wissenschaft und Arroganz, daher werde ich hier nicht viel darüber sagen.

Ich kenne einige Leute, die Scala zunächst bewunderten, als wäre es eine Art Retter. Ich schlage vor, dass sie mit der Aufregung aufhören und einfach Java verwenden. Er hörte mir nicht zu und beschimpfte Scala schließlich den ganzen Tag wegen aller möglichen Probleme. Aber das gibt es auf keinen Fall, das Projekt wurde raubkopiert und wir müssen es weiterhin verwenden. Ich mache keine persönlichen Angriffe, aber ich finde, dass die Qualität einer Sprache oft vom Niveau, dem Charakter und der Motivation ihres Entwicklers abhängt. Oft ist meine Intuition gegenüber Menschen so genau, dass ich anhand meines ersten Eindrucks vom Sprachdesigner vorhersagen kann, wie sich die Sprache in Zukunft entwickeln wird. Hier möchte ich über meine Ansichten zu den Designern von Scala und Clojure sprechen.

Obwohl Martin Odersky, der Designer von Scala, große Erfolge auf dem Gebiet der Programmiersprachen erzielt und viele scheinbar fortgeschrittene wissenschaftliche Arbeiten veröffentlicht hat (tatsächlich sind viele davon Unsinn), legt er keinen besonderen Wert auf „ Design" der Sprache. Gut darin. Daher war ich überrascht, dass Scala einige grundlegende Dinge falsch gemacht hat. Da Odersky ein Universitätsprofessor mit einem guten Ruf ist, möchten viele Menschen einen Doktortitel bei ihm erwerben. Deshalb spricht er darüber und fügt Scala gerne einige unklare und potenziell problematische „Funktionen“ hinzu. Der Zweck besteht darin, Artikel zu veröffentlichen und zu vermischen auf. Dies führte dazu, dass Scala übermäßig komplex war und viele Funktionen hinzufügte, die sich später als wenig nützlich erwiesen und stattdessen Probleme verursachten. Die Schüler fügen dem Scala-Compiler eine Code-Implementierung hinzu und lassen sie nach dem Abschluss in Ruhe, sodass im Scala-Compiler jede Menge historischer Müll und Fehler zurückbleiben.

Reden wir über Clojure. Als Clojure zum ersten Mal herauskam, wurde es mir von einigen Leuten begeistert empfohlen. Also habe ich mir das Video eines Werbevortrags angesehen, den der Designer Rich Hickey gehalten hat. Zu diesem Zeitpunkt hatte ich nur eine vage Vorstellung von seinen Brustschlagfähigkeiten und war sehr beeindruckt. Rich Hickey wurde tatsächlich auf halbem Weg zum Mönch, ohne auch nur einen CS-Abschluss zu haben. Aber sein Schwung war, als ob andere Sprachdesigner nichts verstanden hätten und er der Einzige wäre, der die Wahrheit sah. Aber nur solche Menschen können „Religion“ schaffen, oder? Die „Merkmale“, die Clojure energisch fördert (wie z. B. faules, reines, transaktionales Gedächtnis), sind alle vom Hörensagen in anderen Sprachen kopiert, aber sie verstehen ihr Wesen nicht tiefgreifend. Einige Merkmale „funktionaler Sprachen“ sind von Natur aus problematisch, wurden jedoch aus Gründen der „Korrektheit der Doktrin“ wahllos kopiert. Am Ende stellt man fest, dass diese Sprache Hundefleisch mit Schafskopf verkauft. Sie ist klar und logisch gesagt, aber in der Verwendung ist sie so lahm.

Die Clojure-Community war damit beschäftigt, Ideen aus den Scheme- und Racket-Communitys zu kopieren, möchte sie aber auch als ihre eigene Erfindung beanspruchen. Typed Clojure plagiiert beispielsweise Typed Racket unverändert. Einige der gleichen Grundkonzepte gibt es schon seit Jahrzehnten in Scheme, daher müssen wir sie in andere Namen ändern, damit Sie nicht herausfinden, dass sie zuerst in Scheme eingeführt wurden. Einige Leute haben sogar alle Codes in berühmten Büchern wie SICP und The Little Intrigant in Clojure neu geschrieben. Dadurch sind die Einfachheit und das Wesentliche des Originalwerks völlig verloren gegangen. Am Ende stellen Sie fest, dass alle guten Dinge in Clojure bereits in Scheme verfügbar sind und fast alle neuen Funktionen in Clojure Probleme bereiten. Ich habe an einigen Clojure-Treffen teilgenommen, aber später habe ich herausgefunden, dass es alle möglichen Anfänger gab, die große Slogans riefen, alle möglichen arroganten Zivilwissenschaften, und sie waren äußerst ignorant.

Viele Menschen, die Scala und Clojure blind bewundern, stellten schließlich fest, dass fast alle „neuen Funktionen“ in diesen Sprachen Mängel aufweisen. Die wichtigsten und nützlichsten Funktionen davon sind tatsächlich bereits in Java enthalten. Einige Leute sagten zu mir: „Sehen Sie, Java kann das nicht!“ Später, nach meiner Analyse, stellte ich fest, dass sie bereits unbewusst festgelegt hatten, dass sie einige der neuesten und coolsten Sprachfunktionen verwenden mussten, um ihre Ziele zu erreichen. Java verfügt nicht über diese Funktionen, daher denken sie, dass Java das nicht kann und dass sie eine andere Sprache verwenden müssen. Wenn Sie das Problem aus einem anderen Blickwinkel betrachten, sich nicht zu sehr mitreißen lassen und sich auf die Lösung des Problems konzentrieren, anstatt die neueste und coolste „Schreibmethode“ zu verfolgen, können Sie es tatsächlich mit Java lösen und lösen ordentlich.

Wenn Sie jetzt ein System erstellen möchten, verwenden Sie lieber Java, als Ihre Zeit mit Scala oder Clojure zu verschwenden. Die falschen Leute haben die falsche Sprache entworfen und mit ihrer Verwendung die Zeit aller verschwendet.

Es gibt nichts besonders Ärgerliches an Java

Java mag einige praktische Funktionen vermissen lassen, aber Java wurde für den Unterricht, die Arbeit in Java und die Entwicklung der Sprachen PySonar, RubySonar, Yin usw. verwendet. Ich fand, dass Java nicht so hasserfüllt ist, wie viele Leute sagen. Ich habe festgestellt, dass mehr als 95 % der von mir gewünschten Funktionen in Java auf relativ einfache Weise verwendet werden können. Die restlichen 5 % können das Problem immer noch mit einem etwas dümmeren Ansatz lösen.

Viele Leute hassen Java. Das liegt tatsächlich daran, dass die frühen GoF-Designmuster versucht haben, aussagekräftige Vorlagen zu entwickeln, was dem Programm unnötige Komplexität verschaffte. Allerdings ist die Java-Sprache selbst nicht wirklich gleichbedeutend mit Design Patterns. Die Designer von Java und die Designer von Design Pattern sind völlig unterschiedliche Menschen. Sie können sehr einfachen Code in Java schreiben, ohne Design Patterns zu verwenden.

Java bietet hervorragende IDE-Unterstützung

Normalerweise verwende ich IntelliJ, um Java-Code zu schreiben. Ich habe festgestellt, dass es in IntelliJ einige sehr gute Designideen gibt. Viele dieser Funktionen übertreffen tatsächlich alle Texteditoren (Emacs, VIM...). IntelliJ macht Java noch leistungsfähiger und sorgt dafür, dass sich die Entwicklung wie im Flug anfühlt.

Wenn Sie IntelliJ verwenden, müssen Sie sich keine Gedanken über Dinge wie „Variablen benennen“ machen. Da IntelliJ über eine sehr leistungsstarke und benutzerfreundliche Refactoring-Funktion verfügt, können Sie Variablennamen sehr schnell ersetzen. Wenn Sie also zum ersten Mal eine Variable erstellen, müssen Sie sich keine Gedanken über den perfekten Namen machen. Verwenden Sie einen anständigen Namen, schreiben Sie den Code schnell und das Experiment ist erfolgreich. Gehen Sie dann zurück, sehen Sie sich den Code an und ändern Sie den Namen in einen passenderen.

IntelliJ kann auch sehr schnelle Strukturtransformationen durchführen, sodass Sie wie ein Künstler wirken, der eine Skulptur konstruiert. Ich kann am Anfang mutig sein und den Code in eine grobe Form zerhacken, ihn dann sorgfältig verfeinern und in eine bessere, leichter verständliche und attraktivere Form kneten.

Fazit

Welche Tools Sie zum Programmieren verwenden, ist wichtig, aber die Tools sind schließlich nicht so wichtig wie Ihre eigene Technologie. Viele Leute verbringen zu viel Zeit damit, sich mit verschiedenen neuen Sprachen herumzuschlagen, in der Hoffnung, dass sie die Codequalität auf wundersame Weise verbessern, und am Ende nichts herauszuholen. Die wichtigste Voraussetzung für die Wahl einer Sprache sollte „einfach genug zu bedienen“ sein, denn der Erfolg des Projekts hängt letztlich von den Menschen ab, nicht von der Sprache.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn