Als Denkmaterial für "Welche Sprache soll ich als nächstes lernen?" Habe ich die Sprachen aufgelistet, in denen vertraute Software geschrieben ist. Die Liste liegt ganz in meinem Ermessen und ich habe nicht die Absicht, dies zu tun. Die Perspektive ist näher an der Middleware als an der Anwendung. Eine Genreklassifizierung ist ebenfalls angemessen.
Genre | Name | Sprache |
---|---|---|
OS | Linux Kernel | C |
OS | Windows | C++ |
RDBMS | MySQL | C/C++ |
RDBMS | PostgreSQL | C |
WebServer | Apache | C |
WebServer | Nginx | C |
WebServer | h2o | C |
KVS | redis | C |
KVS | memcached | C |
KVS | tokyotyrant/tokyocabinet | C |
KVS | kyototycoon | C++ |
DB | MongoDB | C++ |
DB | ElasticSearch | Java |
Logger | Fluentd | Ruby |
Tool | Embulk | Java |
CI | Jenkins | Java |
PackageManager | yum | python |
PackageManager | apt | python |
PackageManager | homebrew | ruby |
Firewall | firewalld | python |
Browser | GoogleChrome | C++ |
ImageManipulation | ImageMagick | C |
VCS | git | C |
Language | Perl | C |
Language | PHP | C |
Language | Ruby | C |
Language | HHVM/Hack | C++ |
Language | go | go |
Language | node/v8 | C++ |
Tool | Gnu coreutils | C |
Tool | AWS CLI | python |
DevTool | peco | go |
DevTool | ghq | go |
DevTool | Vagrant | Ruby |
ProccessManager | supervisord | Python |
Provisioning | Ansible | Python |
Provisioning | Chef | Ruby |
Provisioning | Berkshelf | Ruby |
Provisioning | ServerSpec | Ruby |
Container | Docker | go |
Container | kubernetes | go |
Container | rkt | go |
(Ich habe nicht die Absicht, eine bestimmte Sprache zu entlassen) C Der größte Teil der vorhandenen Middleware besteht aus C, daher sind für die Fehlerbehebung und das Patchen Kenntnisse der C-Sprache und ihrer peripheren Tools (make, gdb, ldd usw.) erforderlich. Die meisten Skriptsprachenmodule, die Geschwindigkeit erfordern, sind in C implementiert. (Perl XS, PHP-Erweiterung, Ruby Gem) Es ist sehr wichtig, dass der Linux-Kernel in C-Sprache geschrieben ist, und dies scheint vorerst dasselbe zu sein.
C++ Nicht jeder verwendet MongoDB, node.js, HHVM usw. Wenn Sie also keine C ++ - Tools im Feld verwenden, können Sie möglicherweise ohne Studium durchgehen. Es ist wahrscheinlich, dass es in Zukunft durch Go and Rust ersetzt wird.
Java Ich kann mir Jenkins nur als das beliebteste Java-Tool vorstellen. Es wurde angenommen, dass es in der guten alten Sprache etwas veraltet ist, aber es scheint, dass Java 8 sein glitzerndes Gefühl wiedererlangt hat, so dass es allmählich zu Ende gehen kann.
Perl Ich glaube, ich habe heutzutage nicht viel über Perl-Tools gehört. In der Vergangenheit gab es ein Bild von Sabakan = Perl, aber in den letzten Jahren scheint Ruby / Go den Markt weggenommen zu haben. Das ist wahr.
PHP Es gibt fast kein Tool / Middleware von PHP. Es gibt viele Dinge wie PhpMyAdmin, Wordpress und "Anwendungen". PHP-Programmierer können nicht ohne das Erlernen anderer Sprachen auskommen, aber andere Sprachprogrammierer können ohne das Erlernen von PHP auskommen. Deshalb kann niemand PHP mit Rebuildfm schreiben.
Ruby Wenn Sie Infrastruktur als Code verwenden, müssen Sie in der Lage sein, ein wenig zu lesen und zu schreiben. Mit dem Aufkommen von Chef / Vagrant / Fluentd scheint es sich als Infrastruktursprache etabliert zu haben. Die einfache Schreibweise von DSL und die einfache Erstellung eines Plug-in-Mechanismus scheinen die entscheidenden Faktoren für die Einführung in Infrastruktursystemen gewesen zu sein.
Python Python ist jetzt die einzige Skriptsprache, die mit den wichtigsten Linux-Distributionen vorinstalliert ist. Es funktioniert als unbesungener Held in dem Teil nahe dem Kern des Betriebssystems wie yum / apt / firewalld. ~~, aber ich habe das Gefühl, dass die Anzahl der kürzlich von Python erstellten Tools abnimmt. ~~ ~~ Es gibt aws-cli, das weit verbreitet ist, aber ich denke, dass es in Zukunft durch die Go-Sprache ersetzt wird. ~~ ~~ Python kann möglicherweise ohne Studium auskommen. ~~
Ursprünglich in Europa und den Vereinigten Staaten weit verbreitet, gab es zahlreiche wissenschaftliche Berechnungsbibliotheken, aber mit dem starken Rückenwind des maschinellen Lernens scheint es in Zukunft wichtiger zu werden.
Go
Viele nach 2014 geschriebene CLI-Tools werden von Go erstellt. Im CLI-Bereich gibt es eine Dynamik, die Ruby übertrifft.
Zum Beispiel wurde der Befehl hub
ursprünglich von Ruby erstellt, aber er wird durch die Tatsache symbolisiert, dass er ab Version 2 in der Sprache Go neu geschrieben wurde.
Da es häufig in Containersystemen verwendet wird, ist es unvermeidlich, tiefer in die Containertechnologie einzutauchen.
Rust Es gibt ein Konzept / eine Möglichkeit, die die Sprachen C und C ++ ersetzt. Es ist nicht bekannt, wie weit die Macht in Zukunft expandieren wird.
Geht es um C / Go / Ruby / Rust, das ich von nun an lernen sollte? (Es ist auch notwendig, JS / Java / Swift als Anwendungssprache separat zu lernen.)
Recommended Posts