Το καλύτερο του 2018 στο Tech Talks

Τα τελευταία δύο χρόνια δημοσιεύομαι μια λίστα από τις αγαπημένες μου τεχνολογικές συνομιλίες από το προηγούμενο έτος (εδώ είναι η έκδοση του 2016 αυτής της δημοσίευσης και εδώ είναι η έκδοση του 2017).

Αυτός ο κατάλογος δεν είναι καθόλου περιεκτικός και είμαι βέβαιος ότι υπάρχουν πολλές τεχνολογικές συνομιλίες από το 2018 που θα ανακαλύψω πολύ αργότερα. Αλλά μεταξύ των συνομιλιών που παρακολούθησα ή παρακολούθησα, αυτά ήταν μερικά από τα καλύτερα (σε καμία συγκεκριμένη σειρά).

  1. Το μέλλον των μικροεπεξεργαστών, Σόφι Γουίλσον

Η Sophie Wilson, φημισμένη πρωτοπόρος του αρχικού τσιπ ARM, φαίνεται να έχει την πεποίθηση ότι ο νόμος του Moore έρχεται στο τέλος του (μαζί με ορισμένους άλλους που αναφέρονται στη συνέχεια σε αυτό το post). Αυτή ήταν μια φαινομενική συζήτηση από τον JuliaCon που πηγαίνει στην ιστορία, την εξέλιξη και το μέλλον των μικροεπεξεργαστών.

βίντεο

2. Η πεταλούδα του τυφώνα: Επεξεργασία παθολογικά παθολογικά συστήματα, Bryan Cantrill

Δύο από τις συνομιλίες που κατέληξαν στον κατάλογο του προηγούμενου έτους ήταν η Zebras σε όλη την κατεύθυνση και η απομάκρυνση των πυρκαγιών υπό πυρκαγιά: Κρατώντας το κεφάλι σας όταν τα συστήματα έχουν χάσει το μυαλό τους. Αυτή ήταν μια ομιλία σε παρόμοια φλέβα και παραδόθηκε με την πεμπτουσία Cantrillian flair, vim και σθένος που έχουμε μεγαλώσει να περιμένουμε. Το λογισμικό είναι χτισμένο ως μια στοίβα αφαίρεσης, με φαινομενικά δευτερεύοντα ζητήματα σε ένα στρώμα (οι πεταλούδες) που έχουν τη δυνατότητα να μετατραπούν σε συστηματικά παθολογικά προβλήματα επιδόσεων σε ένα άλλο (ο τυφώνας). Με δεδομένο έναν τέτοιο τυφώνα, πώς μπορεί κανείς να βρει τις πεταλούδες;

Ολίσθηση βίντεο

3. Close Loops & Opening Minds: Πώς να πάρει τον έλεγχο των συστημάτων, Big & Small, Colm MacCarthaigh

Βεβαίως δεν έχω παρακολουθήσει όλες τις συνομιλίες από την AWS: Invent, αλλά από εκείνες που έβλεπα, αυτή ήταν ίσως η αγαπημένη μου ομιλία. Καθορίζει μερικές αρχές σχεδίασης για την κατασκευή εξαιρετικά σταθερών και αξιόπιστων συστημάτων (όπως τα επίπεδα ελέγχου).

  1. Ελέγξτε όλα τα πράγματα
  2. Κρυπτογραφικός έλεγχος ταυτότητας
  3. Κύτταρα, κελύφη και "δοκιμαστές δηλητηρίων"
  4. Ασύγχρονη σύζευξη
  5. Κλειστούς κύκλους ανάδρασης
  6. Μικρές εκτοξεύσεις και μεγάλα τράβηγμα (για διαμόρφωση)
  7. Αποφύγετε τις ψυχρές εκκινήσεις και τις κρύες κρύπτες
  8. Στόχοι
  9. Δέλτα
  10. Μοντελοποίηση και Σταθερή Εργασία

Ήταν συναρπαστικό να μάθουμε πώς ορισμένα αντι-σχέδια και απρόσεκτοι σχεδιασμοί θα μπορούσαν στην πραγματικότητα να βοηθήσουν στη βελτίωση της σταθερότητας των συστημάτων. Ενδεχομένως το πιο ενδιαφέρον κομμάτι της ομιλίας ήταν η ιδέα ότι τα σταθερά συστήματα ελέγχου απαιτούν ένα "PID loop" - αναλογικά, αναπόσπαστα, παράγωγα εξαρτήματα και ότι είναι σε θέση να εξετάσει το σχεδιασμό ενός συστήματος και το σημείο εάν λείπει ο καθένας από αυτά είναι υπερδύναμη. Αυτή είναι η πρώτη φορά που ακούω για αυτό το "PID loop". η συζήτηση συνιστά το βιβλίο Σχεδιασμός Κατανεμημένων Συστημάτων Ελέγχου για να μάθετε περισσότερα για το πώς οι αρχές της θεωρίας ελέγχου μπορούν να εφαρμοστούν στη μηχανική κατανεμημένων συστημάτων.

Ήταν επίσης ενδιαφέρον να μάθουμε την ιεραρχία ή τις προτεραιότητες στο AWS: ασφάλεια, αντοχή, διαθεσιμότητα, ταχύτητα.

Διαφάνειες βίντεο

4. Μια Χρυσή Εποχή για την Αρχιτεκτονική Υπολογιστών, ο David Patterson και ο John Hennessy

Αυτή ήταν μια φανταστική συζήτηση σχετικά με την ιστορία και την εξέλιξη των μικροεπεξεργαστών, τη μετάβαση από τα CISC σε μηχανές RISC μέχρι το τέλος του Νόμου του Moore και της κλίμακας Dennard, η οποία με τη σειρά της παρουσιάζει πρωτοφανείς ευκαιρίες για πρόοδο στον χώρο "συγκεκριμένης αρχιτεκτονικής". Η "αρχιτεκτονική συγκεκριμένου τομέα" περιλαμβάνει τόσο την πρόοδο του υλικού (επεξεργαστές νευρωνικών δικτύων για εκμάθηση μηχανών, όπως TPU's, GPUs της NVIDIA σε FGPAs) μαζί με το ειδικό λογισμικό τομέα (όπως το Swift for TensorFlow). Η συζήτηση ολοκληρώνεται με την ιστορία της έναρξης και ανάπτυξης του RISC V ISA.

Για εκείνους που προτιμούν ένα γραπτό άρθρο σε ένα βίντεο, οι επικοινωνίες του ACM αυτού του μήνα είναι ένα άρθρο που συντάχθηκε από τους Hennessy και Patterson (συγγραφείς του διάσημου βιβλίου Computer Architecture) σε αυτό το ίδιο θέμα. Ο νόμος του Moore για τα τρανζίστορ μπορεί να έχει τελειώσει, αλλά φαίνεται να υπάρχει μια νόμιμη αύξηση του νόμου του Moore στον αριθμό των εγγράφων μηχανικής μάθησης που δημοσιεύονται τα τελευταία χρόνια.

Βίντεο [Hennessy στο Στάνφορντ, ~ 1 ώρα]

Βίντεο [Patterson στο @Scale Conference στο Facebook ~ 30 λεπτά]

5. Συμπεριφορά ασφαλούς πελάτη, Ariel Goh

Αυτό πρέπει να είναι προφανές στα παλαιά χέρια των κατανεμημένων συστημάτων, αλλά αξίζει να επαναλάβουμε ότι οι πελάτες αποτελούν σημαντικό μέρος ενός κατανεμημένου συστήματος και πρέπει συνεπώς να συμμετάσχουν σε προσπάθειες ευελιξίας. Αυτή είναι μια φανταστική συζήτηση από την SRECon Ασία / Αυστραλία σχετικά με τις βέλτιστες πρακτικές σχεδιασμού πελατών για τη βελτίωση της ανθεκτικότητας ολόκληρου του συστήματος. Οι προτεινόμενες τεχνικές περιλαμβάνουν τα αιτήματα πελατών που προκαλούν jittering, προσθέτοντας τυχαία στοιχεία, έτσι ώστε όλοι οι πελάτες να μην καταλήγουν τυχαία σε συγχρονισμό όταν κάνουν αιτήματα, πότε να μην προσπαθήσουν, να επαναλάβουν τα jittering, να επαναλάβουν με εκθετικά backoffs (και ταυτόχρονα gotchas) ), μετακίνηση κάποιου ελέγχου στο διακομιστή και δημιουργία ενός βρόχου ανατροφοδότησης μεταξύ του διακομιστή και των πελατών, προσαρμοστικός περιορισμός στους πελάτες και πολλά άλλα.

βίντεο

6. Πώς να εξυπηρετήσετε και να προστατεύσετε (με απομόνωση πελάτη), Frances Johnson

Αυτή είναι μια άλλη εξαιρετική ομιλία από την SRECon Asia / Australia για την προστασία μιας υπηρεσίας όπως οι Χάρτες Google (με πληθώρα εσωτερικών και εξωτερικών πελατών) από υπερφόρτωση. Η συζήτηση αγγίζει προβλήματα όπως η υπερβολική επιβάρυνση του συστήματος (και τα συνοδευτικά προβλήματα όπως οι downstreams που αγνοούν την υπερφόρτωση ενός συστήματος), η αποτυχία σε βήματα, οι παγίδες των στατικών ποσοστώσεων, τα πλεονεκτήματα και τα μειονεκτήματα της εφαρμογής τεχνικών χαλαρής αποικοδόμησης σε διαφορετικά επίπεδα της στοίβας άκρο, πρόσοψη, backend).

βίντεο

7. Θεωρία εφαρμοσμένης απόδοσης, Kavya Joshi

Αυτή είναι μια απίστευτη ομιλία (όπως πάντα) από τον Kavya από την QCon London για τον τρόπο χρήσης των τεχνικών μοντελοποίησης της απόδοσης για να μπορέσουν να απαντήσουν σε ερωτήματα όπως το πρόσθετο φορτίο που μπορεί να υποστηρίξει ένα σύστημα χωρίς υποβαθμισμένο χρόνο απόκρισης και τον εντοπισμό των σημείων συμφόρησης του συστήματος. Η συζήτηση αρχικά περνάει από ένα τυπικό παράδειγμα διακομιστή ιστού για να δείξει πώς να αναλύσει την απόδοση σε "ανοικτά συστήματα" ακολουθούμενη από ένα παράδειγμα "κλειστών συστημάτων" και πώς εξαρτώνται και οι δύο από διαφορετικές παραδοχές και απαιτούν διαφορετικές τεχνικές ανάλυσης.

Ολίσθηση βίντεο

8. Amazon Aurora: Σχεδιαστικές εκτιμήσεις για βάσεις δεδομένων σχετικές με σύννεφο-φυσική σχεδίαση, Sailesh Krishnamurthy

Αυτή ήταν μια απολύτως ραγισμένη συζήτηση από το @Scale Conference του Facebook σχετικά με μερικές από τις αποφάσεις σχεδιασμού και tradeoffs που υποστηρίζουν Amazon Aurora, ο μηχανισμός αποθήκευσης που τροφοδοτεί πολλές δημοφιλείς προσφορές βάσεων δεδομένων AWS. Η Aurora αξιώνει την αυτόματη κλιμάκωση έως και 64TB ανά βάση βάσης δεδομένων και προσφέρει υψηλή απόδοση και διαθεσιμότητα με έως 15 αντίγραφα ανάγνωσης με χαμηλή καθυστέρηση, ανάκτηση χρόνου σε σημείο, συνεχή δημιουργία αντιγράφου ασφαλείας στο S3 και αναπαραγωγή σε τρεις ζώνες διαθεσιμότητας.

Υπάρχουν δύο [1] [2] συνοδευτικές λευκές εφημερίδες που δημοσιεύονται από την Amazon στην Aurora. Η συζήτηση αναφέρεται σε πολλά σημεία από το δεύτερο έγγραφο ειδικότερα, με το κύριο διορθωτικό αποτέλεσμα να είναι ότι η κατανεμημένη συναίνεση σκοτώνει την απόδοση και ότι το τοπικό κράτος μπορεί πράγματι να είναι καλό. Με τη χρήση ενός αμετάβλητου ημερολογίου ως πηγή της αλήθειας, η Aurora αποφεύγει τη διανεμημένη συναίνεση για τις αλλαγές στις ιδιότητες του μέλους, εκμεταλλευόμενη ορισμένες "οάσεις συνεκτικότητας" με τη χρήση εποχών ως φύλακες ως μορφή απαρτίας γραφής και αποφυγής της απαρτίας. Είναι ενδιαφέρον σε μια εποχή όπου τα συναλλακτικά συστήματα κάνουν κάτι σαν επιστροφή και το κήρυγμα της Google για το γιατί πρέπει να επιλέξουμε ισχυρή συνέπεια, όποτε είναι δυνατόν, η Amazon επιλέγει διαφορετικές συμφωνίες.

βίντεο

9. Το μέλλον του Layer αποθήκευσης του FoundationDB, Steve Atherton

Αυτή ήταν μια συναρπαστική συζήτηση για το μέλλον του Layer Storage του FoundationDB από τη συνάντηση κορυφής του FoundationDB. Το FoundationDB είναι ένα κατανεμημένο, διατεταγμένο αποθηκευτικό κλειδί αξίας, αλλά το ίδιο το στρώμα αποθήκευσης είναι μη διανεμημένο και προσπελάζεται με μία μόνο διαδικασία από ένα μόνο νήμα. Η συζήτηση μεταβιβάζεται στις απαιτήσεις μιας νέας μηχανής αποθήκευσης, μη απαιτήσεων (παράλληλοι συγγραφείς, χαμηλή καθυστέρηση δέσμευσης), εξετάζει έπειτα τα πλεονεκτήματα και τα μειονεκτήματα πολλών δομών δεδομένων du jour (B + δένδρων, δέντρων LSM) και τους λόγους πίσω από τη συλλογή Redwood έκδοση B + δέντρο.

βίντεο

Μια άλλη σπουδαία ομιλία από τη διάσκεψη κορυφής του FoundationDB ήταν αυτή του στρώματος εγγράφων, το βίντεο του οποίου βρίσκεται εδώ.

10. Αυτόνομη Δοκιμή και το Μέλλον της Ανάπτυξης Λογισμικού, Will Wilson

Πρώτα απ 'όλα, ο Will είναι ίσως ένας από τους καλύτερους ομιλητές που έχω δει ποτέ να μιλάει (η προηγούμενη ομιλία του σχετικά με τη Δοκιμή Κατανεμημένων Συστημάτων με Προσδιοριστική Προσομοίωση από το Strangeloop 2014 είναι ένα από τα αγαπημένα μου όλων των εποχών).

Πρόκειται για μια φαινομενική συζήτηση από την εναρκτήρια σύνοδο κορυφής του FoundationDB, η οποία αποτελεί μια πολύ επίπονη περίπτωση για μια προσέγγιση που βασίζεται στον AI στις δοκιμές. Η συζήτηση εντοπίζει 3 βασικά προβλήματα με τη δοκιμασία: ευπάθεια (η δοκιμή σας βασίζεται στις ιδιότητες του συστήματός σας που είναι περιστασιακές - δεν είναι αυτές που σκέφτηκα ότι δοκιμάσατε), η έλλειψη εξαντλητικότητας και η λεπτότητα.

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

βίντεο

11. Σχεδιασμός κατανεμημένων συστημάτων με TLA +, Hillel Wayne

Αυτή ήταν μια θαυμάσια προσιτή συζήτηση από το CodeMesh σχετικά με τη χρήση τυπικών προδιαγραφών για το σχεδιασμό κατανεμημένων συστημάτων. Σκεφτείτε το ως μια απαλή εισαγωγή στο TLA +. Οι αποσβέσεις περιλαμβάνουν:

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

βίντεο

12. Τι λάθος είχαμε: Διδάγματα από τη γέννηση των μικροεπιχειρήσεων στο Google, Ben Sigelman

Αυτή ήταν μια φωνητική συζήτηση για το κύριο μέρος της κατανεμημένης πληροφορικής στο Google, αγγίζοντας τα πάντα που η Google πήρε το δικαίωμα σε πρακτικές που δεν ήταν αρκετά, αλλά είχαν ισχυρές παραλληλισμούς με αυτό που γνωρίζουμε ως "μικροσυντηρήσεις" αυτές τις μέρες. Η συζήτηση υπογραμμίζει πού η ευρύτερη βιομηχανία κάνει πραγματικά κάποια πράγματα καλύτερα από το πώς το έκανε το Google (όπως τα μάτια των υπηρεσιών), πότε και γιατί η εξομοίωση των τεχνολογικών επιλογών και πρακτικών της Google δεν λειτουργεί καλά για τους υπόλοιπους και γιατί είναι ιδιαίτερα σημαντικό να να είναι σε θέση να απαντήσει σε ορισμένα είδη ερωτήσεων πριν υιοθετήσουν αρχιτεκτονικά παραδείγματα du jour (όπως "serverless").

Διαφάνειες βίντεο

13. Εργαστήριο Σχεδιασμού Σχεδιασμένου Εργαλείου Διανομής, Λάουρα Νολάν, Φίλιπ Τισχλέρ, Σαλίμ Βιρτζί

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

Το βιβλίο εργασίας SRE (ελεύθερα διαθέσιμο σε απευθείας σύνδεση) από την Google έχει ένα ολόκληρο κεφάλαιο που ονομάζεται Non-Abstract Large Design System αφιερωμένο σε αυτό ακριβώς το θέμα και έχω ακούσει ότι είναι η κρίσιμη συνέντευξη σε ολόκληρο το Google SRE βρόχο συνέντευξης, καθώς είναι αυτός που είναι στατιστικά πιο πιθανό να καταρρίψει έναν υποψήφιο που ακολουθείται από τις κωδικοποιητικές συνεντεύξεις. Προσωπικά, πιστεύω ότι αυτό δεν είναι μόνο σχετικό με τα SRE, αλλά θα πρέπει να απαιτείται ανάγνωση για όλους όσους χτίζουν και λειτουργούν κατανεμημένα συστήματα.

Δυστυχώς, δεν κατάφερα να βρω ένα βίντεο για αυτό.

Διαφάνειες

14. Εξισορρόπηση φορτίου σε Hyper Scale, Alan Halachmi και Colm MacCarthaigh

Αυτή είναι μια πραγματικά συναρπαστική ομιλία από τη συνδιάσκεψη FacebookScale του Facebook σχετικά με την εξέλιξη της εξισορρόπησης φορτίου στο AWS. Φωτίζει το HyperPlane, ένα σύστημα που βασίζεται στον S3 Load Balancer του AWS, στο VPC NAT Gateway και στο PrivateLink, και πολλά άλλα. Μου άρεσε ιδιαίτερα η εκμάθηση για την προτεινόμενη αρχή SHOCK (Self Healing ή Constant Work), η οποία υποδηλώνει ότι όταν χτίζεις ένα σύστημα, θα πρέπει να είναι ανθεκτικό ακόμη και σε μεγάλες διαταραχές. Ή τοποθέτησε διαφορετικά, "αν κάτι μεγάλο αλλάξει, το σύστημα θα πρέπει να μπορεί να συνεχίσει κανονικά". Η συζήτηση προτείνει:

1. Η σταθερή προσπάθεια και η αποκατάσταση από την αποτυχία είναι οι φυσικές καταστάσεις
2. Πάντοτε να λειτουργεί σε κατάσταση επισκευής. Όταν ένας κόμβος αποτύχει, το Hyperplane κάνει πραγματικά λιγότερη εργασία!
3. Κατά το σχεδιασμό συστημάτων μεγάλης κλίμακας, δεν θέλουμε να είναι περίπλοκα. Θέλουμε να είναι όσο το δυνατόν απλούστερες. Για το σκοπό αυτό, θέλουμε όσο το δυνατόν λιγότερους τρόπους λειτουργίας (το Hyperplane δεν έχει λειτουργία επανάληψης, για παράδειγμα, είναι το piggybanks στο εγγενές μηχανισμό επανάληψης του TCP). Η συσσώρευση σε διαφορετικούς τρόπους λειτουργίας οδηγεί σε συνδυαστική έκρηξη πολυπλοκότητας, με αποτέλεσμα το σύστημα να είναι εξαιρετικά δύσκολο να δοκιμαστεί. Θέλουμε ένα σύστημα που να είναι συνεπές και να εκτελεί πάντα τον τρόπο που περιμένουμε.
4. Η ομιλία εισάγει επίσης την ιδέα της shuffle sharding, μιας τεχνικής μετριασμού της DDoS (όπου η απομόνωση είναι η κύρια τεχνική μετριασμού) που είναι τώρα εκτεταμένη σε πολλές υπηρεσίες AWS.

βίντεο

15. Απομόνωση χωρίς δοχεία, Tyler McMullen

Μία από τις περιοχές που ενδιαφέρει είναι αυτό που περιγράφω στους φίλους ως το "φάσμα των υπολογισμών" - VM, microVMs, ένθετα VM, δοχεία (και γεύσεις "δοχείων με άμμο" όπως τα δοχεία Kata) και "serverless" ως υπηρεσία). Ενδιαφέρομαι ιδιαίτερα για το "φάσμα της απομόνωσης" αυτών των προσφορών - από την αυστηρή διεργασία απομόνωσης σε απομόνωση μέσω ενός sandbox όπως ένα V8. Πολλές τεχνολογίες έχουν προκύψει τα τελευταία χρόνια στον χώρο εικονικοποίησης όπως ο gVisor (ένας hypervisor που υλοποιεί ένα υποσύνολο του API του πυρήνα του Linux στο χώρο του χρήστη) στο Firecracker - ένα εικονικό μηχάνημα που έχει σχεδιαστεί για να τρέχει ελαφρύ και χωρίς διακομιστές φόρτος εργασίας σε μικρο-VMs , η οποία κατασκευάστηκε στην κορυφή του crosvm (Virtual Machine Monitor του Chrome OS). Μία από τις πιο συναρπαστικές εξελίξεις σε αυτό το χώρο είναι η WebAssembly. Αρχικά σχεδιαστεί ως στόχος για τον εγγενή κώδικα να εκτελείται σε προγράμματα περιήγησης, το WASM αξιοποιείται τώρα από τους παρόχους CDN για την εκτέλεση αυθαίρετου κώδικα χωρίς οποιαδήποτε μορφή απομόνωσης που βασίζεται στη διαδικασία. Παρόλο που εξακολουθώ να πιστεύω ότι η κριτική επιτροπή έχει βγάλει το ερώτημα εάν αυτή η μορφή απομόνωσης πραγματικά περάσει, αυτό ήταν μια συναρπαστική ομιλία από το Strangeloop σχετικά με αυτό το θέμα, το οποίο εξηγεί τα χαρακτηριστικά του WASM που το καθιστούν κάπως εφικτό.

βίντεο

16. Πώς λειτουργούν οι Debuggers C ++, Simon Brand

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

βίντεο

17. Μια Φιλοσοφία Σχεδιασμού Λογισμικού, John Ousterhout

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

Βιντεοκλίπ

18. Clangd: αρχιτεκτονική ενός κλιμακούμενου διακομιστή γλώσσας C ++, Ilya Biryukov

Μία από τις πιο ενδιαφέρουσες εξελίξεις από τη Microsoft τα τελευταία χρόνια ήταν το Πρωτόκολλο Γλώσσας Server. Η έκδοση 5.0 του μεταγλωττιστή clang εισήγαγε την εφαρμογή Clangd, LLVM για το πρωτόκολλο γλωσσικού διακομιστή. Το Clangd είναι μια εφαρμογή του πρωτοκόλλου γλωσσικού διακομιστή, για να παρέχει λειτουργίες όπως συμπλήρωση κώδικα, fix-its, goto ορισμός, μετονομασία κ.λπ. για πελάτες όπως C / C ++ source editors. Αυτό ήταν μια καλή ομιλία από την CPPCon που άγγιξε ορισμένους από τους περιορισμούς του libclang, και εξηγεί τα κίνητρα πίσω από την ανάπτυξη του Clangd, καθώς και τη γενική αρχιτεκτονική του.

19. Αντιπροσωπείες Coroutine και ΑΒΙ στο LLVM, John McCall

Το Coroutines στο LLVM προστέθηκε για πρώτη φορά από τον Gor Nishanov της Microsoft και σχεδιάστηκε γύρω από τις ανάγκες των C ++ coroutines TS. Αυτή ήταν μια απίστευτη ομιλία από τη Συνάντηση του Προγραμματιστή LLVM, η οποία πηγαίνει σε μερικά από τα πλεονεκτήματα και τα μειονεκτήματα των διαφόρων παραμέτρων εφαρμογής, όπως η μεταβίβαση ελέγχου (μετατόπιση πλαισίου, διάσπαση κορουστίνων με κοινές επαναλήψεις και λειτουργίες επανάληψης απόδοσης), αποθήκευση τοπικού κράτους (stackful coroutines , πλευρική κατανομή, συγκατοίκηση στοίβας), καθώς και οι προκλήσεις της δημιουργίας κώδικα γλωσσικών χαρακτηριστικών που τροφοδοτούνται από κορουτίνες όπως οι γεννήτριες. Η ομιλία εξετάζει έπειτα μερικές από τις λεπτομέρειες ενός διαφορετικού τύπου μείωσης που ονομάζεται "επιστρεφόμενη γεύση συνέχειας" για τη γλώσσα προγραμματισμού Swift, όπου κάποιες από τις βελτιστοποιήσεις συμβαίνουν στο στρώμα SIL του Swift και όχι απευθείας στο επίπεδο LLVM.

βίντεο

PS: Όλες οι συνομιλίες από τη συνάντηση του προγραμματιστή LLVM είναι βαθιά εκπαιδευτικές. Έχω παρακολουθήσει μόνο αυτή τη μία ομιλία, αλλά είμαι βέβαιος ότι θα συνιστούσα ευτυχώς σε όλους τους άλλους, μόλις έρθω να τα παρακολουθήσω.

20. Ανάπτυξη της υποδομής Kotlin / Native with LLVM / Clang, Nikolay Igotti

Το Kotlin Native είναι μια εξαιρετικά ενδιαφέρουσα εξέλιξη τα τελευταία χρόνια που επιτρέπει στον κώδικα Kotlin να καταρτιστεί σε δυαδικά αρχεία πλατφόρμας (ELF, Mach-O, WASM κ.λπ.), έτσι ώστε να μπορεί να τρέχει και να είναι ικανός να τρέχει μέσα σε ένα JVM. Αυτή ήταν μια πολύ καλή δουλειά από την ευρωπαϊκή συνάντηση προγραμματιστών LLVM για τους μηχανικούς της Kotlin / Native, συμπεριλαμβανομένων μερικών από τις προκλήσεις της εφαρμογής της διαχείρισης μνήμης έξω από την JVM, χειρισμού εξαιρέσεων και μετάδοσης στο WASM (που δεν έχει χρόνο εκτέλεσης, χωρίς εξαιρέσεις κ.λπ.), καθώς και μερικά από τα γενικά προβλήματα που αντιμετωπίστηκαν με το LLVM (αργός κώδικας και σύνδεσμος, λείπει το δημόσιο API plugin LLDB κ.λπ.).

Ολίσθηση βίντεο

21. Φρέσκος Async Με τον Kotlin, Roman Elizarov

Το φάσμα του ασύγχρονου προγραμματισμού είναι ευρύ και ποικίλο. Αυτή ήταν μια φανταστική ομιλία από το Goto της Κοπεγχάγης για τις προκλήσεις που υποστηρίζουν ορισμένα από αυτά τα παραδείγματα του ασύγχρονου προγραμματισμού, και συγκεκριμένα την προσέγγιση που βασίζεται στο callback με τα Futures. Η συζήτηση συνεχίζεται για να αντιμετωπίσει το πώς ο Kotlin στοχεύει στην επίλυση αυτού του προβλήματος με τις κορουτίνες παρέχοντας μια σύγχρονη διεπαφή στον χρήστη (μέσω του ανασυγκροτημένου πρωτόγονου) ενώ βρίσκεται κάτω από την κουκούλα χρησιμοποιώντας συνέχειες και σημεία ανάρτησης για την κατασκευή μιας μηχανής κατάστασης. Το πιο συναρπαστικό μέρος της ομιλίας ήταν η σύγκριση μεταξύ της προσέγγισης Kotlin και της προσέγγισης C # της async / await, με το mainspring πίσω από τις επιλογές σχεδιασμού της Kotlin να είναι ότι η συνάφεια είναι δύσκολη και πρέπει να είναι σαφής. Η συζήτηση τελειώνει με το πώς μπορούν να υλοποιηθούν ακόμη και CSP πρότυπα πρότυπα χρησιμοποιώντας τα πρωτότυπα Coruto των Kotlin.

βίντεο

22. Μοντέλο φυσικής συνάφειας Kotlin, Νικολάι Ιγκότι

Ο Kotlin δεν έχει πρωτόγονα συγχρονισμού σε επίπεδο γλώσσας. Οι κορθουτίνες Kotlin όπως περιγράφεται σε μια παραπάνω ομιλία είναι μια κατασκευή με βάση τη βιβλιοθήκη που στοχεύει στην JVM. Το Kotlin / Native αποφεύγει το σωρό κοινόχρηστων αντικειμένων του JVM και το κλείδωμα διατηρώντας ένα αμετάβλητο ότι ένα αντικείμενο ανήκει είτε σε ένα μόνο πλαίσιο εκτέλεσης είτε είναι αμετάβλητο (κοινό XOR μεταβλητό). Αυτή ήταν μια μεγάλη συζήτηση από το KotlinConf που πηγαίνει στο πώς αυτό επιτυγχάνεται με "όχι εξωτερικά αναφερόμενα υπογράμματα αντικειμένου"

Επιπλέον, ο Kotlin ως γλώσσα δεν έχει ενσωματωθεί στο σύστημα τύπου. Η μετατόπιση επιτυγχάνεται με την έννοια της κατάψυξης, η οποία καθιστά το μεταβατικό κλείσιμο όλων των αντικειμένων που είναι προσβάσιμα από ένα δεδομένο αντικείμενο αμετάβλητο. Επιπλέον, το Kotlin / Native επιτρέπει επίσης τη μεταφορά ιδιοκτησίας αντικειμένων σε περιβάλλοντα εκτέλεσης. Η συζήτηση εισάγει τα βασικά ασφαλή πρωτόκολλα συγχρονισμού που παρέχονται από την Kotlin / Native όπως "αποσπάσιμα γραφικά αντικειμένων", ατομικά και ηθοποιού "εργαζόμενοι", πώς λειτουργεί η διαχείριση μνήμης με βάση τη μέτρηση αναφοράς στο Kotlin / Native καθώς και πώς επιτυγχάνει διαλειτουργικότητα με άλλα runtimes.

Ολίσθηση βίντεο

23. Είναι καιρός να γράψω ένα λειτουργικό σύστημα στο Rust, Bryan Cantrill

Έχω υποβληθεί συχνά σε κάποιον ή σε άλλη πολυθρόνα θεωρώντας ότι η Rust είναι "μια γλώσσα σχεδιασμένη να γράφει έναν πυρήνα".

Λοιπόν, έτσι;

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

Ολίσθηση βίντεο

24. Τι εννοείς "safe-thread"; Geoffrey Romer

Αυτή ήταν μια θαυμάσια ομιλία από την CPPCon, η οποία στοχεύει να αποσαφηνίσει όρους όπως "ασφαλές για νήματα" ή ακριβέστερους όρους όπως "φυλή δεδομένων" και "κατάσταση κούρσας" που συχνά λειτουργούν σε λάθος επίπεδο αφαίρεσης. Η συζήτηση προτείνει τη χρήση της έννοιας της "φυλής API" και των invariants που μπορούν να χτιστούν γύρω από μια "φυλή API", ακολουθούμενες από συστάσεις τόσο για τη βιβλιοθήκη C ++ όσο και για τους συγγραφείς εφαρμογών γύρω

βίντεο

25. Γρήγορη ασφαλή κατάσταση, Ben Cohen

Όταν πρόκειται για μεταβλητή κατάσταση, είναι σημαντικό να θυμηθούμε ότι είναι κοινή μεταβλητή κατάσταση που είναι κακή, όχι μεταβλητή κατάσταση per se. Αυτή ήταν μια θαυμάσια ομιλία από τη συνδιάσκεψη Functional Swift για το πότε και πώς να χρησιμοποιήσετε την τοπική μεταβλητή κατάσταση χωρίς να θυσιάζετε την ασφάλεια ή την απόδοση. Η συζήτηση περνάει μέσα από κάποια από τα γλωσσικά χαρακτηριστικά του Swift που του προσδίδουν μια συγκεκριμένη λειτουργική γεύση εμποδίζοντας ορισμένες κατηγορίες σφαλμάτων που είναι δυνατόν να μεταλλαχθούν σε λειτουργίες.

βίντεο

26. Το Dos και το Donts of Error Handling, Joe Armstrong

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

Θα σας συγχωρούσαμε για να το σκεφτείτε ως 45 λεπτά εξήγηση για την ύπαρξη της γλώσσας προγραμματισμού Erlang.

βίντεο

27. QUIC: Ανάπτυξη και ανάπτυξη μιας αντικατάστασης TCP για τον Ιστό, Ian Swett και Jana Iyengar

Αυτή ήταν μια σπουδαία συζήτηση από το NetDev, η οποία δίνει μια εισαγωγή στο πρωτόκολλο QUIC που αναπτύχθηκε στο Google, τις αποφάσεις σχεδιασμού (γιατί το στρώμα πάνω από UDP, καλύτερη αποκατάσταση ζημιών, ευέλικτο έλεγχο συμφόρησης) είναι εξέλιξη καθώς και μυριάδες περιπέτειες, .

Ολίσθηση βίντεο

28. Παρουσίαση του Network.framework: Μια σύγχρονη εναλλακτική λύση στα Sockets, Josh Graessley, Tommy Pauly, Eric Kinnear

Οι υποδοχές μπορεί να είναι δύσκολο να χρησιμοποιηθούν όταν πρόκειται για εγκατάσταση ή μεταφορά δεδομένων (ακόμη και με πρίζες χωρίς μπλοκάρισμα) ή κινητικότητα.

Το Network.framework είναι ένα σύγχρονο API μεταφορών που αποτελεί εναλλακτική λύση για τις υποδοχές στις πλατφόρμες της Apple. Αυτό ήταν ένα μεγάλο βήμα από το WWDC 2018 που περπάτησε το ένα μέσα από την ανατομία μιας αρχικής εγκατάστασης σύνδεσης στον κύκλο ζωής μιας σύνδεσης, μαζί με τις μυριάδες βελτιστοποιήσεις που έγιναν σε διαφορετικά στάδια. Είναι, επίσης, ίσως η καλύτερη παρουσίαση σε αυτή τη λίστα.

βίντεο

29. Kubernetes και το μονοπάτι χωρίς διακομιστές, Kelsey Hightower

Είναι μια ομιλία του Kelsey Hightower.

Πρέπει να πω πια; Νομίζω πως όχι.

βίντεο

30. Χρησιμοποιώντας το Rust για την ανάπτυξη παιχνιδιών, Catherine West

Η συζήτηση ξεκινάει λέγοντας "Αυτή είναι ίσως η πιο βαρετή ομιλία ..."

Δεν είναι.

Ίσως να είναι η καλύτερη ομιλία σε αυτόν τον κατάλογο.

βίντεο