# バックエンドの開発言語・フレームワークについて
## コンパイラ言語
全てのコードを機械語に翻訳してから一気に実行する言語。
実行速度は速いが、コンパイルするまでエラーが把握できない。
### Java
1995年にサン・マイクロシステムズが開発した言語。
マシンに依存せず、あらゆる環境で実行できるように、コンパイラでコンパイルの後、JVM(Java Virtual Machine)という仮想マシンを通じて機械語をマシン独自の言語に置き換えて実行する。
大文字小文字区別や、文字型指定が厳格である。
### C++
1983年に登場したプログラミング言語。ハードウェアに直接扱う、C言語の機能や特徴を継承しつつ、オブジェクト指向プログラミングやジェネリックプログラミング、データ抽象などの複数の高度なパラダイムが組み合わさっている。
低水準でも高水準でも利用可能である。
## インタプリタ言語
コードを実行するたびに1行ずつ機械語に翻訳していく言語。
1行ずつ読み込むため、エラーが発生した時点ですぐにデバッグに取り掛かれる。一方で、実行速度は遅い。
### Ruby
まつもとゆきひろ氏によって開発されたオブジェクト指向スクリプト言語。
オブジェクト指向に特化しており、継承などの機能が使える。
Ruby on RailsというWebアプリケーションフレームワークが利用できる。
### Python
Guido van Rossum氏が開発したプログラミング言語。シンプルで覚えることが少なく、ライブラリ機能が豊富である。また、オブジェクト指向にも対応している。AIによる機械学習やWebアプリ開発で用いられる。
### PHP
HTMLと似たような性質で、シンプルさが特徴のプログラミング言語。
シンプルゆえに多様性に富んだ使い方が可能である。
WordPressは、同言語で開発されている。
## フレームワーク
### Spring Framework
Java向けのWebアプリケーションフレームワークである。
汎用性が高く、Web以外にもクラウド・モバイルなど幅広い開発に適している。
環境構築設定が複雑で、複数フレームワーク利用時に機能の使い分けが困難である。
### Spring boot
Spring Frameworkの「機能の使い分けの困難」を解消したフレームワーク。
複数のフレームワークを利用する際に定義する設定を、可能な限り自動化する。
また、アノテーション(注釈)機能が搭載されている。
### Ruby on Rails
Ruby向けのWebアプリケーションフレームワークである。
設定よりもルールが重視されており、他のフレームワークと比べて扱いやすい。
### Django
Python向けのWebアプリケーションフレームワークである。
AIを導入したWebサービス開発に向いている。
Instagramや日本経済新聞等が同フレームワークを用いている。
### Laravel
PHP向けのフレームワーク。
有名なWebフレームワークの良い部分を取り入れつつ、扱いやすさを重視している。
比較的最近登場した先進的なフレームワークである。
## 参考文献
* [インタプリタ言語とコンパイラ言語](https://qiita.com/tomokichi_ruby/items/73b0e7924a9f83fe45c6)
* [C++ Wikipedia](https://ja.wikipedia.org/wiki/C%2B%2B)
* TRAINOCATE Javaによるデータ構造とアルゴリズム p16~21
* [今さら聞けない!Rubyとは【初心者向け】|現役エンジニアが解説](https://techacademy.jp/magazine/6959)
* [Pythonってどんな言語なの?](https://www.atmarkit.co.jp/ait/articles/1904/02/news024.html)
* [Spring bootとは?Spring frameworkとの違いは?](https://hnavi.co.jp/knowledge/blog/spring-boot/)
* [Web開発におすすめの言語5選!3大Webフレームワークと一緒に徹底解説!](https://www.geekly.co.jp/column/cat-technology/1903_080/)
###### tags: `バックエンドへ`