Οι Γλώσσες Προγραμματισμού ως Κοινωνικό Δίκτυο

0
Οι Γλώσσες Προγραμματισμού ως Κοινωνικό Δίκτυο
Λαγός «Χωρίς σφάλματα». Συγγραφέας: Λαγός «Χωρίς σφάλματα». Ακολουθηστε: ΚελάδημαFacebook
Τίτλος εργασίας: Σαρκαστικός Αρχιτέκτονας
Χόμπι: Σκέψη φωναχτά, Διαφωνία με Διευθυντές, Ενοχλητικά HR,
Αποκαλώντας ένα Μπαστούνι, Κρατώντας τη γλώσσα στο μάγουλο
Οι Γλώσσες Προγραμματισμού ως Κοινωνικό Δίκτυο

Η ιδέα

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

τι γίνεται αν θεωρήσουμε τις γλώσσες προγραμματισμού ως ένα είδος κοινωνικού δικτύου και τις οπτικοποιήσουμε ως ένα τέτοιο δίκτυο;

Μεθοδολογία

  • Πήρα αρκετές, λίγο πολύ, δημοφιλείς γλώσσες προγραμματισμού (33 για την ακρίβεια). Ωστόσο, περιορίστηκα ρητά σε γλώσσες προγραμματισμού περισσότερο ή λιγότερο γενικής χρήσης. Αυτό εξαλείφει τα DSL όπως το R, καθώς και όλες τις διαλέκτους των SQL, HTML, CSS και MATLAB.
  • Για κάθε γλώσσα, πήρα ένα άθροισμα κανονικοποιημένων βαρών από τρεις πηγές: [TIOBE][Stack Overflow][IEEE]και το πήρε ως «βάρος» της γλώσσας προγραμματισμού.
  • Για να θεωρήσουμε τις γλώσσες προγραμματισμού ως ένα είδος κοινωνικού δικτύου, χρειάζεται μια μέτρηση για να εκφράσουμε τις αλληλεπιδράσεις τους. Αποφάσισα να χρησιμοποιήσω την αναζήτηση Google στο (α) vs και vs (αναφέρεται!), προσθέστε αριθμούς επιστρεφόμενων σελίδων όπως αναφέρεται από την Google και θεωρήστε αυτό ως μέτρηση για αλληλεπίδραση μεταξύ δύο γλωσσών (Σημείωση: οποιαδήποτε αιτήματα χωρίς εισαγωγικά άρπαξαν πάρα πολλά σκουπίδια – όπως σελίδες που συζητούν τον Dudley C Haskell όταν ζητούν χωρίς εισαγωγικά C Haskell).
  • Αφού συγκεντρώθηκαν τα αρχικά δεδομένα, πήρα το R (το οποίο κατά ειρωνικό τρόπο εξαλείφθηκε από την ανάλυση όπως συζητήθηκε παραπάνω) και έφτιαξα ένα γράφημα, με τις γλώσσες να είναι κορυφές (με βάρη) και τα δεδομένα διασύνδεσης από την Google να είναι τα βάρη των άκρων του γραφική παράσταση.
  • Στη συνέχεια, χρησιμοποίησα το R igraph πακέτο για να οπτικοποιήσετε το γράφημα, χρησιμοποιώντας τον αλγόριθμο Fruchterman-Reingold (αρκετά τυπικό για αυτού του είδους τις απεικονίσεις) για να σχεδιάσετε το γράφημα.
    • Σημείωση: όπως με κάθε τέτοια οπτικοποίηση, το αποτέλεσμα είναι εγγενώς τυχαίο, επομένως είναι δυνατές διαφορετικές εικόνες με βάση τα ίδια δεδομένα. Πειραματίστηκα λίγο και τράβηξα τη φωτογραφία που θεωρούσα πιο ελκυστική οπτικά.
  • Όλα τα ακατέργαστα δεδομένα και τα προγράμματα που χρησιμοποιούνται για την οπτικοποίηση είναι διαθέσιμα και πρόκειται να τα δημοσιεύσω επίσης σύντομα.

Το αποτέλεσμα φαίνεται στην παραπάνω εικόνα.

Έλεγχος υγιεινής

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

  • C-C++-Rust (γλώσσες χαμηλού επιπέδου χωρίς GC)
    • Ένα πιο χαλαρό σύμπλεγμα Delphi-asm-Lua-C-C++-Rust (ενσωματωμένο)
  • C#-Java (Συλλογή σκουπιδιών με στατική πληκτρολόγηση)
  • Python-JS-PHP (δυναμικά πληκτρολογημένο κάπως σχετικό με τον ιστό)
  • Objective-C/Swift (Apple)
  • Elixir-Erlang-Haskell-Scala-Clojure-F#-OCaml (κυρίως-λειτουργικό)
  • Racket-Scheme-LISP-Clojure (όπως LISP)

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

συμπέρασμα

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

Αναγνώριση

Κινούμενα σχέδια του Sergey GordeevIRL από Gordeev Animation GraphicsΠράγα.

Schreibe einen Kommentar