Pour réfléchir "Quelle langue devrais-je étudier ensuite?", J'ai dressé une liste des langues dans lesquelles un logiciel familier est écrit. La liste est entièrement à ma discrétion et je n'ai pas l'intention de le faire. La perspective est plus proche du middleware que de l'application. La classification par genre est également appropriée.
Genre | Nom | Langue |
---|---|---|
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 |
(Je n'ai pas l'intention de rejeter une langue en particulier) C La plupart des middlewares existants sont en C, donc la connaissance du langage C et des outils associés (make, gdb, ldd, etc.) est nécessaire pour le dépannage et la correction. La plupart des modules de langage de script qui nécessitent de la vitesse sont implémentés en C. (Perl XS, extension PHP, gemme Ruby) Il est très important que le noyau Linux soit écrit en langage C, et cela semble être la même chose pour le moment.
C++ Tout le monde n'utilise pas MongoDB, node.js, HHVM, etc., donc si vous n'utilisez pas d'outils C ++ sur le terrain, vous pourrez peut-être passer sans étudier. Il semble probable qu'il sera remplacé par go and rust à l'avenir.
Java Je ne peux considérer Jenkins que comme l'outil Java le plus populaire. On pensait qu'il était un peu désuet dans le bon vieux langage, mais il semble que Java 8 ait retrouvé sa sensation de scintillement, de sorte qu'il peut progressivement prendre fin.
Perl Je ne pense pas avoir beaucoup entendu parler des outils Perl ces jours-ci. Dans le passé, il y avait une image de Sabakan = Perl, mais ces dernières années, il semble que le marché ait été emporté par Ruby / Go. C'est vrai.
PHP Il n'y a presque aucun outil / middleware créé par PHP. Il y a beaucoup de choses comme PhpMyAdmin, Wordpress et «applications». Les programmeurs PHP ne peuvent pas se passer d'étudier d'autres langages, mais d'autres programmeurs de langage peuvent se passer d'étudier PHP. C'est pourquoi personne ne peut écrire du PHP avec rebuildfm.
Ruby Si vous utilisez l'infrastructure en tant que code, vous devez être capable de lire et d'écrire un peu. Avec l'avènement de Chef / Vagrant / Fluentd, il semble qu'il soit devenu tout à fait établi en tant que langage d'infrastructure. La facilité d'écriture DSL et la facilité de création d'un mécanisme de plug-in semblent avoir été les principaux facteurs décisifs pour l'adoption dans les systèmes d'infrastructure.
Python Python est désormais le seul langage de script pré-chargé avec les principales distributions Linux. Il fonctionne comme un héros méconnu dans la partie près du noyau du système d'exploitation, comme yum / apt / firewalld. ~~, mais j'ai l'impression que le nombre d'outils récents créés par python diminue. ~~ ~~ Il y a aws-cli qui est largement utilisé, mais je pense qu'il sera remplacé par le langage Go à l'avenir. ~~ ~~ python peut être capable de gérer sans étudier. ~~
À l'origine largement utilisé en Europe et aux États-Unis, les bibliothèques de calculs scientifiques étaient abondantes, mais avec le fort vent arrière de l'apprentissage automatique, il semble devenir plus important à l'avenir.
Go
De nombreux outils CLI écrits après 2014 sont fabriqués par Go. Dans le domaine CLI, il y a un élan qui dépasse Ruby.
Par exemple, la commande hub
a été créée à l'origine par Ruby, mais elle est symbolisée par le fait qu'elle a été réécrite en langage Go à partir de la version 2.
De plus, comme il est souvent utilisé dans les systèmes de conteneurs, il est inévitable de creuser plus profondément dans la technologie des conteneurs.
Rust Il existe un concept / possibilité qui remplace les langages C et C ++. On ne sait pas jusqu'où la puissance se développera à l'avenir.
Est-ce à propos de C / Go / Ruby / Rust que je devrais étudier à partir de maintenant? (Il est également nécessaire d'étudier séparément JS / Java / Swift en tant que langage d'application)
Recommended Posts