[RUBY] I tried to find out in which language that software that I always take care of is written

As a material for thinking "Which language should I study next?", I made a list of the languages in which the software around me is written. The list is entirely at my discretion and I have no intention of doing so. The perspective is closer to middleware than the application. Genre classification is also appropriate.

Genre name language
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

Impressions of listing

What to think about each language

(I have no intention of dismissing a particular language) C Most of the existing middleware is made of C, so knowledge of C language and its peripheral tools (make, gdb, ldd, etc.) is required for troubleshooting and patching. Most scripting language modules that require speed are implemented in C. (Perl XS, PHP extension, Ruby gem) It is very important that the Linux Kernel is written in C, and this will not change for the time being.

C++ Not everyone uses MongoDB, node.js, HHVM, etc., so if you're not using C ++ tools in the field, you might be able to go through without studying. It seems likely that it will be replaced by go and rust in the future.

Java I can only think of Jenkins as the most popular Java tool. It was thought to be a little out of date in the good old language, but it seems to have regained its glitter in Java 8, so it may be slowly coming up in the future.

Perl I don't think I've heard much about Perl tools these days. In the past, there was an image of Sabakan = Perl, but in recent years it seems that the market has been taken away by Ruby / Go. It's true.

PHP There is almost no tool / middleware made by PHP. There are many "application" things such as PhpMyAdmin and Wordpress. PHP programmers can't do it without studying other languages, but other language programmers can do it without studying PHP. That's why no one can write PHP with rebuildfm.

Ruby If you do Infrastructure as code, you need to be able to read and write a little. With the advent of Chef / Vagrant / Fluentd, it seems that it has become quite established as an infrastructure language. The ease of writing DSLs and the ease of creating plug-in mechanisms seem to have been the major deciding factors for adoption in infrastructure systems.

Python Python is now the only scripting language that comes pre-loaded with major Linux distributions. It works as an unsung hero in the part near the core of the OS such as yum / apt / firewalld. ~~, but I feel that the number of recent tools made by python is decreasing. ~~ ~~ There is aws-cli that is widely used, but I feel that it will be replaced by Go language in the future. ~~ ~~ python may be manageable without studying. ~~

Originally widely used in Europe and the United States, there was abundant scientific calculation libraries, but with the strong tailwind of machine learning, it seems to become more important in the future.

Go Most of the CLI tools written after 2014 are made by Go. In the CLI field, there is momentum that surpasses Ruby. For example, the hub command was originally made by Ruby, but it is symbolized by the fact that it has been rewritten in Go language from ver 2. Also, since it is often used in container systems, it is inevitable to dig deeper into container technology.

Rust There is a concept / possibility that replaces the C and C ++ languages. It is unknown how far the power will expand in the future.

Conclusion

Should I study C / Go / Ruby / Rust from now on? (Apart from that, you also need to study JS / Java / Swift as an application language)

Recommended Posts

I tried to find out in which language that software that I always take care of is written
I tried to find out if ReDoS is possible with Python
I tried to find out what I can do because slicing is convenient
I tried to find 100 million digits of pi
I used Python to find out about the role choices of the 51 "Yachts" in the world.
How to find out if there is an arbitrary value in "somewhere" of pandas DataFrame
[Natural language processing] I tried to visualize the remarks of each member in the Slack community
I tried to find the trend of the number of ships in Tokyo Bay from satellite images.
I tried to find out the outline about Big Gorilla
I tried to find the average of the sequence with TensorFlow
I tried to illustrate the time and time in C language
I tried to implement blackjack of card game in Python
I tried to find out if m is included in what is called a range type or range such as n..m and range (n, m).
I tried to find out the difference between A + = B and A = A + B in Python, so make a note
I tried to make an analysis base of 5 patterns in 3 years
I tried to display the analysis result of the natural language processing library GiNZA in an easy-to-understand manner
python beginners tried to find out
I tried to implement deep learning that is not deep with only NumPy
I tried to solve the 2020 version of 100 language processing [Chapter 3: Regular expressions 25-29]
I tried to automatically extract the movements of PES players with software
I tried to develop a Formatter that outputs Python logs in JSON
I tried to find the optimal path of the dreamland by (quantum) annealing
I tried various patterns of date strings to be entered in pandas.to_datetime
Find out the name of the method that called it from the method that is python
I tried to display the altitude value of DTM in a graph
I tried to implement a card game of playing cards in Python
I tried to wake up the place name that appears in the lyrics of Masashi Sada on the heat map
I tried to predict the number of people infected with coronavirus in consideration of the effect of refraining from going out
I tried to get the information of the .aspx site that is paging using Selenium IDE as non-programming as possible.
I tried to implement PLSA in Python
I tried to implement permutation in Python
I tried to implement PLSA in Python 2
I tried to implement ADALINE in Python
I tried to implement PPO in Python
I used gawk to find out the maximum value that goes into NF.
How to find out what kind of files are stored in S3 in Python
I tried to create a class that can easily serialize Json in Python
A programming beginner tried to find out the execution time of sorting etc.
I tried to predict the horses that will be in the top 3 with LightGBM
[Azure] I tried to create a Linux virtual machine in Azure of Microsoft Learn
How to find the coefficient of the trendline that passes through the vertices in Python
Correspondence of the event that the result of form.is_valid () is always False in Django2 system
I tried to solve the 2020 version of 100 language processing knocks [Chapter 1: Preparatory movement 00-04]
I tried to solve the 2020 version of 100 language processing knocks [Chapter 1: Preparatory movement 05-09]
I tried to make OneHotEncoder, which is often used for data analysis, so that it can reach the itch.
I tried to visualize the lyrics of GReeeen, which I used to listen to crazy in my youth but no longer listen to it.