Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 10198|Απάντηση: 1

Πλεονεκτήματα και μειονεκτήματα του προγραμματισμού στο Go

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 27/5/2019 9:57:10 π.μ. | | |
Πόσο δημοφιλής είναι η γλώσσα Go; Ξένες χώρες όπως η Google, η AWS, η Cloudflare, η CoreOS κ.λπ., και εγχώριες εταιρείες όπως η Qiniu και η Alibaba έχουν αρχίσει να χρησιμοποιούν τη γλώσσα Go για να αναπτύξουν τα προϊόντα τους που σχετίζονται με το cloud computing σε μεγάλη κλίμακα. Τι ναι και τι πρέπει να προσέχω όταν χρησιμοποιώ τη γλώσσα Go;

Πρόσφατα, γράψαμε ένα API χρησιμοποιώντας τη γλώσσα Go, μια γλώσσα προγραμματισμού ανοιχτού κώδικα που κυκλοφόρησε από την Google το 2009. Στη διαδικασία χρήσης του Go for development, έχουμε αποκτήσει μεγάλη εμπειρία και εμπειρία και θέλουμε να τη μοιραστούμε με τους αναγνώστες, γι' αυτό έχουμε αυτό το άρθρο.

Όταν επιλέγετε μια γλώσσα προγραμματισμού για ένα έργο, συνιστούμε πάντα να κατανοείτε σε τι θα ενσωματωθεί το έργο πριν σκεφτείτε σε ποια γλώσσα προγραμματισμού θα βασιστείτε. Αφήστε το προϊόν να είναι ο καθοριστικός παράγοντας για το πώς πρέπει να κατασκευαστεί.

Ακολουθούν μερικά από τα πλεονεκτήματα και τα μειονεκτήματα που βρήκαμε κατά την ανάπτυξη με το Go για να σας βοηθήσουμε να καταλάβετε εάν είναι κατάλληλο για το επόμενο έργο σας.

Τι αγαπάμε στο Go

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

Η γλώσσα Go είναι πολύ γρήγορη

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

Εύκολο να κυριαρχήσει

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

Γλώσσα ορισμού στατικού τύπου

Η Go είναι μια ισχυρή στατική γλώσσα που ορίζει τύπους. Υπάρχουν βασικοί τύποι όπως int, byte και string. Υπάρχουν επίσης τύποι κατασκευών. Όπως συμβαίνει με κάθε γλώσσα με ισχυρούς τύπους, το σύστημα τύπων επιτρέπει στον μεταγλωττιστή να βοηθήσει στον εντοπισμό σφαλμάτων για ολόκληρη την κλάση. Η γλώσσα Go έχει επίσης ενσωματωμένους τύπους λίστας και αντιστοίχισης και είναι επίσης εύκολη στη χρήση.

Τύπος διεπαφής

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

Τυπική βιβλιοθήκη

Η γλώσσα Go έχει μια αρκετά καλή τυπική βιβλιοθήκη. Παρέχει βολικές ενσωματωμένες λειτουργίες για το χειρισμό βασικών τύπων. Ορισμένα πακέτα διευκολύνουν τη δημιουργία ενός διακομιστή ιστού, το χειρισμό I/O, τη χρήση κρυπτογράφησης και τον χειρισμό ακατέργαστων byte. Η σειριοποίηση και η αποσειριοποίηση JSON που παρέχεται από την τυπική βιβλιοθήκη είναι πολύ απλή. Χρησιμοποιώντας "tags", μπορείτε να καθορίσετε το όνομα του πεδίου JSON δίπλα στο πεδίο struct.

Υποστήριξη δοκιμών

Η δοκιμαστική υποστήριξη είναι ενσωματωμένη στην τυπική βιβλιοθήκη και δεν απαιτεί πρόσθετες εξαρτήσεις. Εάν έχετε ένα αρχείο που ονομάζεται thing.go, γράψτε δοκιμές σε ένα άλλο αρχείο που ονομάζεται thing_test.go και εκτελέστε το "go test". Το Go θα εκτελέσει αυτές τις δοκιμές γρήγορα.

Εργαλεία στατικής ανάλυσης

Τα εργαλεία στατικής ανάλυσης για τη γλώσσα Go είναι πολλά και ισχυρά. Ένα συγκεκριμένο εργαλείο είναι το gofmt, το οποίο μορφοποιεί τον κώδικα σύμφωνα με το προτεινόμενο στυλ του Go. Αυτό μπορεί να ομαλοποιήσει πολλές από τις απόψεις του έργου, επιτρέποντας στον διαχειριστή βραβείων της ομάδας να επικεντρωθεί στη δουλειά που έχει κάνει ο κώδικας. Εκτελούμε gofmt, golint και vet σε κάθε κατασκευή και αν βρούμε προειδοποιήσεις, η κατασκευή θα αποτύχει.

Αποκομιδή σκουπιδιών

Κατά το σχεδιασμό της γλώσσας Go, η διαχείριση μνήμης σχεδιάστηκε σκόπιμα ώστε να είναι ευκολότερη από τη C και τη C++. Το αντικείμενο της δυναμικής κατανομής είναι η συλλογή απορριμμάτων. Η γλώσσα Go κάνει τη χρήση του δείκτη πιο ασφαλή, επειδή δεν επιτρέπει λειτουργίες δείκτη. Παρέχεται επίσης η δυνατότητα χρήσης τύπων τιμών.

Ευκολότερο μοντέλο ταυτοχρονισμού

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

Τι δεν μας αρέσει στο Go

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

Δεν υπάρχουν γενόσημα φάρμακα

Πρώτον, αυτό το πρόβλημα, όπως ένας ελέφαντας σε ένα δωμάτιο, είναι ένα προφανές και παραγνωρισμένο γεγονός. Δεν υπάρχουν γενόσημα στη γλώσσα Go. Για προγραμματιστές από γλώσσες όπως η Java, η μετάβαση στο Go είναι ένα τεράστιο εμπόδιο που πρέπει να ξεπεραστεί. Αυτό σημαίνει ότι το επίπεδο επαναχρησιμοποίησης του κώδικα μειώνεται. Ενώ η γλώσσα Go έχει συναρτήσεις πρώτης κατηγορίας, εάν γράψετε συναρτήσεις όπως "map", "reduce" και "filter", οι οποίες έχουν σχεδιαστεί για να λειτουργούν σε έναν τύπο συλλογής, δεν μπορείτε να χρησιμοποιήσετε ξανά αυτές τις συναρτήσεις για άλλους διαφορετικούς τύπους συλλογών. Υπάρχουν πολλοί τρόποι επίλυσης αυτού του προβλήματος, αλλά όλοι καταλήγουν να γράφουν περισσότερο κώδικα, γεγονός που μειώνει την παραγωγικότητα και τη συντηρησιμότητα.

Η διεπαφή είναι σιωπηρή

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

Κακή υποστήριξη βιβλιοθήκης

Η υποστήριξη της βιβλιοθήκης Go είναι άνιση. Το API μας ενσωματώνεται με το Contentful, αλλά το τελευταίο δεν διαθέτει επίσημα υποστηριζόμενο Go SDK. Αυτό σημαίνει ότι πρέπει να γράφουμε (και να διατηρούμε!) Πολύς κώδικας για να ζητήσετε και να αναλύσετε δεδομένα στο Contentful. Πρέπει επίσης να βασιστούμε σε βιβλιοθήκες Elasticsearch τρίτων. Τα Go SDK που παρέχονται από προμηθευτές δεν είναι τόσο δημοφιλή όσο τα αντίστοιχα Java, Ruby ή JavaScript.

Η επικοινωνία με την κοινότητα είναι δύσκολη

Η κοινότητα Go ενδέχεται να μην δέχεται προτάσεις. Σκεφτείτε αυτό στο αποθετήριο GitHub του golint:Η σύνδεση με υπερσύνδεσμο είναι ορατή., ένας χρήστης ζήτησε από το golint να μπορεί να αποτύχει στην κατασκευή όταν βρήκε μια προειδοποίηση (κάτι που κάνουμε στο έργο). Οι υπερασπιστές απέρριψαν αμέσως την ιδέα. Ωστόσο, δεδομένου ότι πάρα πολλοί άνθρωποι σχολίασαν το θέμα, μετά από ένα χρόνο, οι συντηρητές έπρεπε τελικά να προσθέσουν τα ζητούμενα χαρακτηριστικά.

Στην κοινότητα Go δεν φαίνεται να αρέσουν ούτε τα πλαίσια ιστού. Ενώ η βιβλιοθήκη HTTP της γλώσσας Go καλύπτει πολλές πτυχές, δεν υποστηρίζει παραμέτρους διαδρομής, έλεγχο εισόδου και επικύρωση, ούτε υποστηρίζει οριζόντιες ανησυχίες που είναι κοινές σε εφαρμογές Ιστού. Οι προγραμματιστές της Ruby έχουν το Rails, οι προγραμματιστές Java έχουν το Spring MVC και οι προγραμματιστές της Python έχουν το Django. Ωστόσο, πολλοί προγραμματιστές Go επιλέγουν να αποφύγουν τη χρήση πλαισίων. Ωστόσο, η πραγματικότητα είναι ότι δεν υπάρχουν πλαίσια, αντιθέτως είναι πολλά. Αλλά μόλις αρχίσετε να χρησιμοποιείτε ένα πλαίσιο για ένα έργο, είναι σχεδόν αδύνατο να αποφύγετε τη μοίρα της εγκατάλειψης.

Κατακερματισμένη διαχείριση εξαρτήσεων

Για πολύ καιρό, η γλώσσα Go δεν είχε σταθερό, επίσημο διαχειριστή πακέτων. Μετά από χρόνια επαιτείας της κοινότητας, το έργο Go μόλις πρόσφατα κυκλοφόρησε το godep. Πριν από αυτό, υπήρχαν ήδη πολλά εργαλεία για να καλυφθεί αυτό το κενό. Χρησιμοποιούμε έναν πολύ ισχυρό κυβερνήτη στο έργο μας, αλλά αυτό σημαίνει ότι η κοινότητα είναι διχασμένη, κάτι που μπορεί να προκαλέσει μεγάλη σύγχυση στους προγραμματιστές που είναι νέοι στη γλώσσα Go. Επιπλέον, σχεδόν όλοι οι διαχειριστές πακέτων τροφοδοτούνται από αποθετήρια Git και το ιστορικό των αποθετηρίων Git μπορεί να αλλάξει ανά πάσα στιγμή. Συγκρίνετε το με το Maven Central, το οποίο ποτέ δεν διαγράφει ή αλλάζει τις βιβλιοθήκες από τις οποίες εξαρτάται το έργο σας.

Αποφασίστε εάν θα χρησιμοποιήσετε το Go ή όχι

Μερικές φορές, πρέπει να σκεφτείτε το μηχάνημα. Όταν στέλνετε και λαμβάνετε byte. Όταν διαχειρίζεστε χιλιάδες ταυτόχρονες διαδικασίες. Μπορεί επίσης να γράφετε ένα λειτουργικό σύστημα, ένα σύστημα κοντέινερ ή έναν κόμβο blockchain. Σε αυτές τις περιπτώσεις, πιθανότατα δεν θα σας ενδιαφέρουν τα γενόσημα. Επειδή είστε απασχολημένοι με τη συμπίεση της απόδοσης ανά νανοδευτερόλεπτο από το τσιπ.

Ωστόσο, πολλές φορές, πρέπει να σκεφτείτε τους ανθρώπους. Δεδομένα επιχειρηματικής περιοχής με τα οποία πρέπει να συνεργαστείτε: πελάτες, εργαζόμενοι, προϊόντα, παραγγελίες. Πρέπει να γράψετε την επιχειρηματική λογική που λειτουργεί σε αυτές τις οντότητες τομέα και πρέπει να διατηρήσετε αυτήν την επιχειρηματική λογική για πολλά χρόνια. Και πρέπει να αντιμετωπίσει τις μεταβαλλόμενες ανάγκες, και όσο πιο γρήγορα τόσο το καλύτερο. Για αυτές τις περιπτώσεις, η εμπειρία του προγραμματιστή είναι σημαντική.

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

Όταν αποφασίζετε εάν θα χρησιμοποιήσετε τη γλώσσα Go, λάβετε υπόψη τους ακόλουθους εμπειρικούς κανόνες:

  • Εάν έχετε να κάνετε με byte, τότε η γλώσσα Go μπορεί να είναι μια καλή επιλογή.
  • Εάν έχετε να κάνετε με δεδομένα, τότε η γλώσσα Go μπορεί να μην είναι καλή επιλογή.


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





Προηγούμενος:Διαμόρφωση Common.LoggingLog
Επόμενος:c# discuz POST
Δημοσιεύτηκε στις 27/5/2019 10:09:35 π.μ. |
Αν και δεν είχα μεγάλη επαφή με τη γλώσσα Go, ήταν καλογραμμένη
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com