[PYTHON] Features of programming languages [Memo]

Motivation for writing this article

I've just finished creating a portfolio for employment, and for the past few days I've been spending my time searching for companies to enter and studying interview preparation. Except for posting my own summary of the Rails tutorial last year and leaving a note about CicleCI last month, I haven't posted much, but the output is still important, so I'll write the contents of the handwritten notes. I decided to leave it for Qiita. For the time being, I will write about Web-based languages.

Web-based languages

There are various types of languages used in the Web industry, and each has its own characteristics and unsuitability. Some of them are currently popular in the engineering community and are being actively used, while others are gradually becoming legacy and are no longer used. Using a language that is popular and active in the community contributes to application performance, development efficiency, and usability, and also improves the ability as an engineer, so even if you do not actually use that language, It is useful to know the characteristics.

For dynamic typing and static typing, this article was helpful. Dynamic Type and Static Type

Dynamically typed language

Ruby --A language used in all fields, especially ** often found in start-up companies and media companies . In addition, PHP is often used in social games and EC systems for traditional reasons, and Java is often used in ad tech systems. - Existence of a web framework called Ruby on Rails ** --Many useful libraries (gems) are available --Abundant Japanese information and low learning cost (developer is Japanese) ――For the above reasons, it is popular, the community is active, and there is a high possibility that it will continue to be used in the future. However, it seems that the past few years have tended to go downhill.

PHP -** Wordpress has a big presence ** CMS (Content Management System) application (application for creating websites such as blogs) created using PHP -** Existence of web frameworks such as Laravel and CakePHP ** --Abundant Japanese information and low learning cost -** It was the de facto standard for social game development **. Therefore, there are many engineers who can use PHP, and there is an advantage that it is easy to attract developers (it can be said that there is a drawback that supply is large for demand considering the decline of social games themselves).

Python --More popular overseas than in Japan (** Google internal standard language ) - Existence of web frameworks such as Django and Flask ** -** De facto standard in machine learning ** There is no advantage over Ruby or PHP as a server-side language, but companies developing machine learning services use it for the purpose of unifying the machine learning language and the server-side language. doing --There is a mixed problem of version 2.7 series and 3 series

JavaScript -** Required for front-end development together with Node.js , which is a server-side execution environment --AltJS (an alternative language that treats JavaScript as a statically typed language) ** Typescript is popular ** and will become mainstream in the future - SPA (Single Page Application) is popular ** An application that performs data communication without transitioning from one page. ** SPA frameworks such as vue.js and React ** are very popular -Used for developing desktop apps and smartphone apps using tools such as ** Electron **

Statically typed language

Go(Golang) --A fairly popular language in recent years, often used in combination with ** microservices ** (such as Mercari) --Mainly used for ** developing high-speed API servers ** In developing API servers with only simple functions, high-performance web frameworks such as Rails and Laravel are unnecessary, and Go is highly suitable as a language for handling requests at high speed. --Used with Docker and Terraform ** It is compatible with Docker because it can make the image smaller ** -** Good compatibility with GCP services ** Used in GAE, a PaaS --Low learning cost and easy to introduce

JVM language

The JVM-based language is a compiled language, and the bytecode generated after compilation runs on a virtual machine called the JVM (Java Virtual Machine). Originally it was only Java, but if the generated bytecode is in the same format, it will run on the JVM, so languages such as Scala and Kotlin are used in addition to Java, and these are called JVM-based languages. ..

Java --High usage rate in SIer In the Web system, Kotlin has been given the mainstream position. It is not used for new service development in Web companies. --Many used by ad tech companies ――It is a legacy language, but ** has a lot of accumulated know-how **

Kotlin -** better First choice in Java ** (a language that is upward compatible with Java) -** Android official development language ** Popular and often used on the server side --Lower learning cost than Scala --Competitive with Go as a statically typed language As a JVM language, it is differentiated in that it can utilize Java know-how and assets.

Recommended Posts

Features of programming languages [Memo]
The popularity of programming languages
Understanding memo of collective intelligence programming
Basic writing of various programming languages (self-memo)
Basic level performance evaluation of programming languages
Transition animation of the most popular programming languages (#programming languages #popular)
[Note] Beginning of programming
Recruitment of programming masters
Features of Go language
Main features of ChainMap
Overview of 5 "colon" languages (ː ☆ 1)
10 Most Popular Programming Languages in 2020
[Personal memo] Auto-completion of bash
Linear programming + hands-on of pulp
Qiita memo of my thoughts
[Memo] Construction of cygwin environment
Story of trying competitive programming 2
Terminology for all programming languages
[For beginners] A word summary of popular programming languages (2018 version)
About the features of Python
1st month of programming learning
[Python] Operation memo of pandas DataFrame
[Python] [Table of Contents Links] Python Programming
Train_test_split of features held by dict
Confirmation of impulse response (personal memo)
Features of pd.NA in pandas 1.0.0 (rc0)
Environment construction memo of pyenv + conda
Python3 compatible memo of "python start book"
[Memo] Small story of pandas, numpy
Master the rich features of IPython
Re: Explains n major programming languages
Story of trying competitive programming Part 1
Separate display of Python graphs (memo)
Mastering the rich features of IPython (2)
Features of symbolic and hard links
Operation memo of Conda virtual environment
Learning history of programming transcendence beginners
About the order of learning programming languages (from beginner to intermediate) Part 2
Trends in programming languages from the perspective of GitHub (updated semi-annual changes)