Προγραμματισμός

Java vs. Google's Go: Μια επική μάχη για το μερίδιο του προγραμματιστή

Το Go εναντίον της Java δεν είναι μια καλή αντιστοιχία μεταξύ ίσων. Το ένα είναι ένα τερατώδες βαρέων βαρών που κυριαρχεί στη βιομηχανία εδώ και χρόνια. Ο άλλος είναι ένας άκαμπτος, ελαφρύς νεοεισερχόμενος που δείχνει πολλή νεολαία και υπόσχεση, αλλά έχει μόνο λίγες γροθιές.

Η Java και η Go αντιμετωπίζουν επίσης διαφορετικές θέσεις. Το ένα απευθύνεται ακριβώς σε εφαρμογές ιστού από διακομιστή, μια περιοχή όπου η άλλη ήταν κάποτε σημαντικός παίκτης. Ο άλλος έχει ξεπεράσει τη ζωή στα ράφια και είναι πλέον μια δημοφιλής επιλογή για συσκευές.

Αλλά δεν έχουν απομακρυνθεί όλοι από την Java από την πλευρά του διακομιστή εφαρμογών ιστού, η περιοχή Go επιτίθεται, τρώει μακριά στη βάση της Java. Και ο διακόπτης δεν είναι ένα φοβερό άλμα, καθώς τα δύο είναι παρόμοια από πολλές απόψεις. Και οι δύο αγαπούν τα αφιερώματα στον C, αν όχι κάτω, τουλάχιστον στην επιφάνεια όπου πολλοί προγραμματιστές περνούν τη ζωή τους παλεύοντας με σύνταξη. Είναι και οι δύο απλοί και επιτακτικοί με αρκετές δομικές ομοιότητες που δεν είναι δύσκολο να μετατρέψετε κώδικα μεταξύ των δύο. (Το έργο TardisGo, για παράδειγμα, είναι ένα εργαλείο που θα μετατρέψει τη μετάβαση σε Java, C # ή JavaScript.)

Θεωρήστε αυτό έναν αγώνα κλουβιού που χωρίζει δύο ξαδέλφια από διαφορετικές πλευρές των κομματιών προγραμματισμού που ανταγωνίζονται για την επόμενη στοίβα εφαρμογών σας.

Η μακρά ιστορία της Java φέρνει εφέ δικτύου που βοηθούν όλους

Η Java υπάρχει από το 1995, προσελκύοντας περισσότερο μερίδιο στο μυαλό κάθε χρόνο. Τα πάντα, από μικροσκοπικούς ενσωματωμένους επεξεργαστές έως τεράστια τσιπ διακομιστή, εκτελούν Java γρήγορα και αποτελεσματικά, χάρη στην ευέλικτη εικονική μηχανή του ακριβώς-σε-χρόνο. Το Android έχει γίνει πλεονέκτημα για την Java, ως η πιο δημοφιλής πλατφόρμα στον κόσμο των κινητών. Αυτός είναι ο λόγος για τον οποίο η Java παραμένει κορυφαία θέση στις κατατάξεις όπως ο δείκτης Tiobe και η PyPL. Αυτή η ευρεία υιοθέτηση σημαίνει ότι υπάρχει άφθονος κώδικας για επαναχρησιμοποίηση και μεγάλο μέρος του είναι ανοιχτού κώδικα για να απλοποιήσετε τη ζωή σας. Θα σταθείτε στους ώμους των γιγάντων όταν αρχίσετε να συνδυάζετε τις γραμμές bazillion ελεύθερου διαθέσιμου κώδικα Java.

Το σύντομο ιστορικό του Go το καθιστά άμεσα σχετικό

Σίγουρα, είναι ωραίο να βάζεις κώδικα Java χωρίς snarf από τον ιστό. Αλλά περιμένετε, είναι γραμμένο για Java 1.3 και το αφεντικό σας θέλει να χρησιμοποιήσετε το Java 1.8. Μην ανησυχείτε, πιθανότατα μπορείτε να το επαναφέρετε με λίγη επανεγγραφή. Ας μετακινήσουμε ξανά αυτήν την προθεσμία ... και ξανά. Ο παλιός κώδικας μπορεί να μοιάζει με δώρο, αλλά δεν είναι πάντα ένα slam dunk, και μερικές φορές είναι περισσότερο πρόβλημα από ό, τι αξίζει.

Το σύντομο ιστορικό του Go, από την άλλη πλευρά, σημαίνει ότι είναι γραμμένο για τα σημερινά πρότυπα ιστού. Δεν έχει απομείνει τέχνη από τις ημέρες που οι μικροεφαρμογές θα κυριαρχούσαν στον κόσμο. Δεν υπάρχουν ξεχασμένες ιδέες όπως το Java Beans ή το J2EE που κάθονται σαν δελεαστικές ενοχλήσεις. Είναι απλά νέο και σχεδιασμένο για το πώς οι άνθρωποι δημιουργούν τον ιστό σήμερα.

Η Java σάς επιτρέπει να αγγίζετε άλλες γλώσσες

Το JVM είναι το θεμέλιο για δεκάδες ενδιαφέρουσες γλώσσες που εξαρτώνται από την Java κατά το χρόνο εκτέλεσης. Ο καθένας μπορεί να συνδεθεί εύκολα με τον κωδικό σας, επιτρέποντάς σας να γράψετε ένα μέρος στο Kotlin, ένα άλλο στη Scala, και ίσως να κολλήσετε όλα μαζί με το Clojure. Εάν θέλετε να χρησιμοποιήσετε γλώσσες όπως Python, JavaScript ή Ruby, και οι τρεις μπορούν να εκτελεστούν απευθείας στη γη της Java χρησιμοποιώντας εξομοιωτές που είναι συχνά η πρώτη επιλογή. Η Java σας δίνει την ελευθερία να αφήσετε σε κάθε υποομάδα και υποέργο να επιλέξει τη σωστή γλώσσα για την εργασία ενώ εξακολουθεί να εκτελείται στο ίδιο JVM. Δεν χρειάζεται να το χρησιμοποιήσετε, αλλά η ευκαιρία είναι πάντα εκεί.

Το Go προάγει την αρμονία

Ναι, μπορείτε να συνδυάσετε μια εφαρμογή superclever που συνδυάζεται με το καλύτερο από το νέο και το μοντέρνο, επιλέγοντας την απόλυτα καλύτερη γλώσσα για κάθε μέρος του υπέροχου σας μεγαλοπρεπούς έργου στο JVM. Μπορείτε ακόμη και να κάνετε μίξη σε παλιούς όπως το Rexx και το Common Lisp για να τιμήσετε τη θέση τους στην ιστορία των υπολογιστών της δεκαετίας του '70. Καλή τύχη να βρεις κάποιον με τα ίδια γούστα και ταλέντα που θα διατηρήσει αυτόν τον Πύργο της Βαβέλ. Εκτός από την ανάμειξη σε μερικές καλοσχεδιασμένες βιβλιοθήκες, δεν είναι πάντα καλό σχέδιο να μιμηθούμε τον Rube Goldberg όταν σχεδιάζεις καλό κώδικα. Μερικές φορές είναι βολικό και απαραίτητο, αλλά αυτό δεν σημαίνει ότι είναι καλό σχέδιο. Η αρμονία και η συνέπεια κάνουν τη ζωή ευκολότερη για όλους. Ο κόσμος Go το παραδίδει αυτό.

Το JVM της Java είναι άπαχο και ισχυρό

Τα αρχεία κλάσης Java συχνά μετρώνται σε εκατοντάδες byte. Τα αρχεία JAR που τα συνδέουν είναι συνήθως μόνο μερικά megabyte. Ο ίδιος ο κώδικας Java είναι μικρός, επειδή η εικονική μηχανή διαθέτει τόσο μεγάλη ισχύ για διαχείριση και ασφάλεια μνήμης. Εάν σκοπεύετε να μετακινήσετε πολλούς κώδικες, είναι λογικό να αφήσετε τη λειτουργικότητα σε ένα κοινό εργαλείο χρόνου εκτέλεσης. Υπάρχουν και άλλα πλεονεκτήματα στη συγκέντρωση. Εάν εμφανιστεί πρόβλημα ασφαλείας στα χαμηλότερα επίπεδα της Java, δεν χρειάζεται να μεταγλωττίσετε και να επανασυνδέσετε όλο τον κωδικό σας. Πολλά προβλήματα επιλύονται με την αναβάθμιση του JVM μόνο.

Το Go δημιουργεί το πλήρες πακέτο

Το JVM είναι υπέροχο μέχρι να διαπιστώσετε ότι έχετε εγκαταστήσει λάθος έκδοση. Εάν θέλετε να εκτελέσετε ένα JAR γεμάτο με Java 1.8, αλλά έχετε μόνο την έκδοση 1.6 του JVM, δεν θα πάτε πουθενά μέχρι να το βρείτε. Ο μεταγλωττιστής Go παράγει δυαδικά αρχεία που είναι έτοιμα για εκτέλεση. Ναι, είναι λίγο μεγάλα, αλλά αυτό οφείλεται στο γεγονός ότι η Go προσθέτει όλο τον επιπλέον κώδικα στο δυαδικό για εσάς. Είναι όλα εκεί σε ένα εύκολο πακέτο.

Η Java κάνει τα νήματα απλά απλά

Η ανεξάρτητη εκτέλεση διαφόρων τμημάτων ενός προγράμματος δεν είναι εύκολη υπόθεση. Η Java κέρδισε πρώιμους θαυμαστές επειδή το μοντέλο της για νήματα ήταν αρκετά απλό για να το καταλάβει, ενώ αρκετά ισχυρό για να είναι χρήσιμο. Το JVM κάνει καλή δουλειά χαρτογράφηση νήματα σε διαφορετικούς πυρήνες του μηχανήματος. Δεν είναι εύκολο να το κάνουμε, αλλά αυτό οφείλεται στην πολυπλοκότητα του προβλήματος και όχι στο Java. Οι χρήστες του Go μπορεί να αγαπούν τις γορουτίνες και τα κανάλια τους, αλλά προσθέτουν ένα άλλο περίπλοκο επίπεδο πολυπλοκότητας σε ένα ήδη περίεργο χάος. Θα αναρωτηθείτε αν πρόκειται για πράσινο νήμα ή νήμα λειτουργικού συστήματος. Στη συνέχεια, θα αναρωτηθείτε για την πολυπλοκότητα των καναλιών συγχρονισμού. Η Java είναι πιο απλή.

Το Go ελαφρύνει το φορτίο του νήματος, έξυπνα

Τα νήματα της Java και τα πρωτόγονα συγχρονισμού μπορεί να κάνουν τη δουλειά, αλλά με βαρύ κόστος. Η δημιουργία και η καταστροφή νημάτων είναι τόσο επίπονη και απαιτούμενη μνήμη, ώστε οι προγραμματιστές Java να τα ανακυκλώνουν πάντα με ομάδες νήματος. Η Java έχει χάσει την πρόσφυση στον διακομιστή επειδή κάθε επίσκεψη στον ιστότοπο χρειάζεται το δικό της νήμα. Το Go έχει ελαφρύτερο βάρος και πιο ευέλικτα αντικείμενα που ονομάζονται γορουτίνες και συνδέονται με έξυπνες ουρές συγχρονισμού που ονομάζονται κανάλια. Ενώ οι περισσότεροι διακομιστές φαίνεται να ξεπερνούν τα 1.000 ή ίσως 10.000 νήματα Java, οι άνθρωποι αναφέρουν τακτικά ότι εκτελούν εκατοντάδες χιλιάδες γορουτίνες στο ίδιο υλικό.

Το μοντέλο του Go είναι πιο εξελιγμένο και μοντέρνο γιατί είναι νεότερο. Το πεδίο έχει μάθει πολλά για την παροχή εξελιγμένων αλγορίθμων πολλαπλών επεξεργαστών και ίσως να το εκμεταλλευτείτε.

Τα εργαλεία Java είναι δοκιμασμένα και αληθινά

Η ωριμότητα της Java σημαίνει ότι έχετε πολλές εξαιρετικές επιλογές για εργαλεία: Eclipse, IntelliJ και άλλα. Υπάρχουν εξελιγμένα εργαλεία κατασκευής όπως το Ant και το Maven, και τα κύρια αποθετήρια είναι βελτιστοποιημένα για να χειρίζονται κώδικα Java. Υπάρχουν επίσης μετα-κώδικες ανάλυσης για τα πάντα, από την επιβολή κανόνων κώδικα έως την αναζήτηση συνθηκών αγώνα. Μπορεί να μην λειτουργούν με την έκδοση του κώδικα που χρησιμοποιείτε, αλλά συχνά συμβαίνουν. Αυτός είναι ο λόγος για τον οποίο η Java είναι τόσο ζογκλέρ.

Τα εργαλεία Go είναι μοντέρνα και νέα

Το Go δημιουργήθηκε για τον σύγχρονο κόσμο πολλαπλών νημάτων και τα εργαλεία κώδικα βελτιστοποιούνται για τις σημερινές προκλήσεις. Υπάρχει ένας ανιχνευτής συνθηκών αγώνα ενσωματωμένος στο πρόγραμμα εντοπισμού σφαλμάτων και στο χρόνο εκτέλεσης, οπότε είναι πολύ πιο απλό να αντιμετωπίσετε δυσάρεστα προβλήματα. Ο πηγαίος κώδικας μπορεί να ελεγχθεί από το golint και έναν στατικό αναλυτή που ονομάζεται "go vet" που έχει μια σειρά ευρετικών για την αλίευση κακού ή ακόμη και κακώς γραμμένου κώδικα Go. Όλα αυτά και πολλά άλλα είναι βελτιστοποιημένα για να διατηρείται ο κώδικάς σας σε γρήγορη εκτέλεση σε ένα μηχάνημα πολλαπλών πυρήνων.

Η Java έχει τις κατασκευές που θέλετε

Με την πάροδο των ετών, η κοινότητα Java επιθυμούσε πολλά χαρακτηριστικά. κάποια στιγμή, έχουν παραχωρηθεί. Προστέθηκαν κλεισίματα, γενόσημα, λάμδα και άλλα. Εάν υπάρχει μια νέα ιδέα στις γλώσσες προγραμματισμού, υπάρχει μια καλή πιθανότητα κάποιος να το έχει κρυώσει στον κόσμο της Java. Μπορεί να μην είναι ιδανικό, αλλά οι επιλογές είναι εκεί. Μπορείτε να γράψετε τον εξαιρετικό κώδικα που ο εγκέφαλός σας φαντάζει χάρη στη συνεχή εξέλιξη της Java.

Πηγαίνετε αποφεύγετε τη σύγχυση

Η ελευθερία χρήσης δεκάδων έξυπνων δομών κωδικοποίησης ακούγεται υπέροχη έως ότου αρχίσει να το κάνει όλοι στην ομάδα. Στη συνέχεια, η ανάγνωση του κωδικού κάποιου άλλου γίνεται δυσκολότερη επειδή χρησιμοποιεί την έξυπνη λειτουργία Α ενώ ο εγκέφαλός σας έχει εγκλιματιστεί στο έξυπνο χαρακτηριστικό Β. Η συνδυαστική σύγχυση συνδυάζεται με κάθε προγραμματιστή που ρίχνει στην αγαπημένη του κατασκευή στο μείγμα.

Το Go, από την άλλη πλευρά, σχεδιάστηκε για να είναι απλό. Κατασκευάστηκε ρητά έτσι ώστε ένας καλός προγραμματιστής να μπορεί να μάθει το Go σε λίγες ώρες. Δεν υπάρχουν δεκάδες έξυπνες ιδέες που γεμίζουν εκατοντάδες σελίδες τεκμηρίωσης. Αυτό μπορεί να είναι περιοριστικό κατά τη σύνταξη κώδικα, αλλά είναι χαλαρό όταν διαβάζετε κώδικα από άλλους στην ομάδα. Όλοι χρησιμοποιούν τα ίδια ιδιώματα επειδή όλοι χρησιμοποιούν τις ίδιες βασικές δυνατότητες. Δεν είναι απλώς μια εμπειρία δημιουργίας ομάδων, όπως το Outward Bound. Πρόκειται για αποτελεσματικότητα.

Η Java είναι ώριμη

Η ηλικία φέρνει σοφία, ωριμότητα και σταθερότητα - όλους τους λόγους για την επιλογή μιας ευρείας, καλά σχεδιασμένης βάσης κώδικα που έχει βάθος πάνω από δύο δεκαετίες. Τα παιδιά σήμερα συνεχίζουν να μαθαίνουν Java στην αρχή του ταξιδιού τους με την επιστήμη των υπολογιστών και η πιο κυρίαρχη πλατφόρμα, το Android, είναι χτισμένη σε αυτήν. Εάν δεν υπάρχει καλός λόγος να αλλάξετε, θα πρέπει να διατηρήσετε το καλύτερο.

Το Go είναι μια καθαρή πλάκα

Μερικές φορές είναι καλύτερο να αφήσουμε πίσω το παρελθόν. Σε τελική ανάλυση, η πρόοδος σημαίνει συχνά ξεκινώντας φρέσκο. Η Go σας προσφέρει την ευκαιρία να εργαστείτε με ένα καθαρό, τραγανό, μοντέρνο εργαλείο που έχει βελτιστοποιηθεί για αυτό που κάνουμε σήμερα. Σας επιτρέπει να απολαύσετε την απλότητα και την ελευθερία να αφήσετε το παρελθόν πίσω.

Και απλώς και μόνο επειδή η Google ξεκίνησε το Go για να φέρει κάποια απλότητα στην κωδικοποίηση για τα ατελείωτα σύνολα διακομιστών τους, δεν σημαίνει ότι δεν μπορεί να το ξεπεράσει. Μερικοί το χρησιμοποιούν ήδη για να τρέξουν drone, ρομπότ και άλλες συσκευές. Μπορούν τα smartphone να είναι πολύ πίσω;

Σχετικά Άρθρα

  • Πατήστε τη δύναμη της γλώσσας Go της Google
  • Τα καλύτερα IDE και συντάκτες γλώσσας Go
  • Ανασκόπηση: Συγκρίθηκαν τα τέσσερα μεγάλα IDE Java
  • Angular vs. React: Μια επική μάχη για το μερίδιο του προγραμματιστή
  • Java εναντίον Node.js: Μια επική μάχη για το μερίδιο του προγραμματιστή
  • PHP εναντίον Node.js: Μια επική μάχη για το μερίδιο του προγραμματιστή
  • Python εναντίον R: Η μάχη για το μυαλό των επιστημόνων δεδομένων
  • 21 καυτές τάσεις προγραμματισμού - και 21 κρύες
  • 9 ψέματα προγραμματιστές λένε στον εαυτό τους
  • Παραβιάσεις καριέρας: Οι επαγγελματίες πρέπει και δεν πρέπει να κάνουν για προγραμματιστές
$config[zx-auto] not found$config[zx-overlay] not found