mofflog.com

ブログやアフィリエイトなど副業に関する情報をメインに、お役立ち情報を備忘録も兼ねて発信しています。

巷でよく聞く流行のプログラミング言語の特徴・用途を超簡単にまとめる

f:id:moffle8:20190517112032p:plain

プログラミングとはコンピュータで作動するプログラムを作成することで、今自分たちが使っているWebサービスや公共のシステムなどもこのプログラムによって稼動・制御されています。

 

プログラムはプログラミング言語というコードによって動いていて、このプログラミング言語の数は細かいものまで含めると何百種類にもなっています。

 

 

プログラム言語の種類が多い理由

なぜこんなにも種類があるのかというとプログラミング言語にも構築したいシステムによって言語の向き不向きがあるからです。

 

たとえば現在注目されている人工知能・ディープランニングなどにはPythonが好んで使われますし、Web系ではJavascriptやPHPなどがよく使われます。

 

プログラミング言語の開発者もある程度の用途の方向性を決めて作られていて、今日のようにさまざまな言語が存在しています。たくさん種類があることによって構築したいシステムをより効率的に作成することができます。

 

しかし初心者の人によっては違いがわからないから何を選べばいいかわからない人もいる(自分がそうだった)ので、現在巷でメジャーで使われている言語を古いものから新しいものまでまとめていきたいと思います。

 

昔から使われているメジャーな言語

C

ソフトウェアだけでなくハードウェアにも用いられるほど汎用性も高く、派生も多い草分け的な存在です。

 

用途としてはOSや基幹システム、家電・ゲームなど幅広い分野で使われていて、コンピューターを使うものはだいたいC言語でできるといわれています。

 

Cしか使えない環境などもあるので今でも需要は高いですが、最新のプログラム言語と比べてしまうとやや利便性は落ちます。

Clang C Language Family Frontend for LLVM

 

C++

C言語をさらに拡張した言語で、簡単に言ってしまえば使える機能などが増えたCの進化版。

 

技術的には多少異なりますが、互換性もあるためC++のコンパイラではC言語でも書くことができます。

 

主な用途としてはC言語より発展的なプログラムを作成したいときに用います。たとえばゲームエンジンであるUnreal Engineでは実際にC++を使います。

Standard C++

 

C#

マイクロソフトが開発したC言語の派生系ですがCやC++と互換性はありません。

 

またC#はC++とJavaの影響も受けていることからこの両方の特徴を持っています。

 

C言語より柔軟なプログラミングが可能でゲーム関係にもよく使われ、ゲームエンジンであるUnityでもC#を使ってプログラミングできます。

C# リファレンス | Microsoft Docs

 

Objective-C

これもC言語をベースとしていて、さらにオブジェクト指向の機能を足したプログラミング言語です。

 

主にアップルがこれを採用しておりMacやiOSで動作するアプリを開発する際に使用されます。iOS開発環境であるXCODEにて用います。

About Objective-C

 

Java

JavaはC++の厳格なプログラミング作法をより柔軟に、単純にできるように設計されたプログラミング言語です。

 

CやC++との互換性は無いですが幅広い分野のプログラミングをより柔軟に行えるようになったので現在でも人気があり、求人なども多くあります。

 

Javaを用いたアプリやシステムは様々にありますが、有名なものには建築ゲームの「MineCraft」やimodeなどがあります。

無料Javaソフトウェアをダウンロード

 

JavaScript

主にWeb上で使われるプログラミング言語でJavaと付いているがまったく関係がありません。

 

JavaScriptを利用することによってポップアップやスライダー、オートスクロールなそ動的なデザインを作成することができる。

 

JavaScriptも汎用性があるのでブラウザ以外でも使え、node.jsなどのライブラリ・フレームワークも数多く存在します。

 

またChromeの拡張機能やUnityなどでもこのJavaScriptを使用することができます。HTMLやCSSから入った人はその延長線でこの言語を学ぶのもおすすめです。

JavaScript | MDN

 

PHP

PHPもJavaScript同様Webで使うことが多いインタプリタ式プログラミング言語です。

 

主にお問い合わせ機能や予約フォーム、ログイン機能・検索機能などサーバーと連携する機能によく用います。

 

JavaScriptがデザイン側のプログラミング言語(フロントエンド)であるのに対しPHPは目に見えない裏側のプログラミング言語(バックエンド)として区別します。

日本 PHP ユーザ会 (Japan PHP Users Group) :: メイン

 

Perl

C言語などの良いところを取って派生したインタプリタ方式のプログラミング言語で、主にWebで使われるCGI(アクセスカウンターのようなwebページとサーバー間の通信を用いたの動的な仕組み)の開発などでよく知られています。

 

開発では日本最大の掲示板であるにちゃんねる(2ch)がこれで開発されました。

The Perl Programming Language - www.perl.org

 

R

R言語は主に解析などが専門のプログラミング言語で、複雑なデータ構造でもあっても管理・構築が容易なのが特徴です。

 

もともとは解析や統計に用いられていましたが最近では機械学習のブームもあり再び注目されているプログラミング言語のひとつです。

R: The R Project for Statistical Computing

 

Lisp

Lispは高水準プログラム言語(機械語に近い)のひとつで、コンピュータープログラムを数学的に表記するために設計されました。

 

最初期の人工知能の研究でも好んで使われていて、最近のAI等の研究にもこのLispが活用され注目を集めています。

Common Lisp

 

Fortrun

Fortrunはコンピュータで広く使われた世界で最初の高級プログラミング言語であり、数値計算用として特化されているので、様々な計算を行う際に便利な機能が備わっています。

 

計算関連のプログラム処理に強く、普通の家庭用PCだけでなくスーパーコンピューターにもこのFortrunが使われます。

GFortranStandards - GCC Wiki

 

OCaml

もともとはMLというプログラミング言語から派生した関数型オブジェクト指向言語でMLと共通の特徴を多く持ちます。

 

型の表現が広く、その他の言語と比較しても高速な処理性能が特徴です。

OCaml.jp

 

Haskell

Haskellは純粋な関数型プログラミング言語で、遅延評価やカリー化など様々な特有の機能を持っていることで知られています。

 

このような機能をうまく活用することによって複雑な処理を簡潔に書けるようになったり、手続き型プログラミングを行ったりすることができます。

Haskell Language

 

 Elrang

汎用的に用いることができる並行処理志向・関数型のプログラミング言語でPCの処理スペックがあがり並行処理への可能性が広がったのでさらに注目を集めています。

 

主にネットワークや障害などに強くでWhatAppやLINEなどの大企業の横に広いサービスでも活用されています。

Erlang Programming Language

 

COBOL

 COBOLは事務処理用に開発されたプログラミング言語で理系で無い人材でもできるように設計されています。

 

プログラムがわからない人にも見やすい使用になっていますが、対してコードが長いので生産性は高くありません。

 

現在でも公共機関初め幅広く利用されていますが実際に扱う人口は少なくなってきています。

COBOLコンソーシアム − ホーム

 

割と新しい人気のモダン言語

Python

汎用性が高く、コートがシンプルかつ簡単に書けることから今最も注目集めているプログラミング言語のひとつで、本屋ではPythonだけでコーナーができていましたw

 

シンプルですが汎用性が高く人工知能・機械学習の応用にも用いられるので初学者から研究員までユーザー層も広いです。

 

求人の需要も高く、YouTubeやDropboxなど多くの企業がこのpythonを採用しています。

Welcome to Python.org

 

 Ruby

日本人が開発した日本発祥のインタプリタ方式オブジェクト指向型プログラミング言語で、プログラミングの自由度も高く記述量も少なくシンプルなので人気の高い言語のひとつです。

 

またRubyのフレームワークであるRuby on Railsはweb開発において非常に人気が高くクックパッドや食べログなどもこれを採用しています。

オブジェクト指向スクリプト言語 Ruby

 

Swift

新しくアップルによって発表されたiOSアプリ作成するために設計されたプログラミング言語で、従来より作られてきたObjective-Cと共存、もしくはそれに代わるものとして注目されています。

 

大きな特徴としてモダン・安全・高速。インタラクティブを挙げていてそれに見合った機能を持っています。

Swift - Apple Developer

 

Kotlin

Kotlinは主にandoidアプリ開発のために用いられる静的型付けのオブジェクト指向プログラミング言語です。

 

最近ではandroid studio3.0から正式にKotlinの開発がサポートされ、いっそう需要は高まっていくと思われます。

 

Javaから派生していているので共通している部分もありますが、なにより簡潔に記述できるのが特徴的です。

Android Developers

 

Scala

Scalaはオブジェクト指向言語と関数型言語の特徴を統合したプログラミング言語で、簡潔な表記や豊富な機能など生産性が重視されているのが特徴です。

 

WebサービスのLinkedinなどにも用いられていてその有用性が伺えますが残念ながら現在は開発が中断されています。

The Scala Programming Language

 

CoffeeScript

JavaScriptから派生したプログラミング言語で、ここで記述したプログラムはJavaScriptに変換されます。

 

パフォーマンスを下げずより短いコードで記述できることが特徴で、Rubyとの親和性も高く、Railsでは公式にサポートされています。しかしデバッグが難しいなどデメリットもあり賛否両論があります。

CoffeeScript

 

 TypeScript

マイクロソフトが開発したプログラミング言語。JavaScriptから派生したもので、静的型付けやオブジェクト指向をもっているのが特徴的です。

 

大規模なアプリのために設計されていて、既にあるJavaScriptのプログラムもすべてTypeScriptのものに変換されたり便利な機能がいろいろ備わっています。

TypeScript - JavaScript that scales.

 

Go

GoはGoogleが開発したプログラミング言語です。

 

コンパイル速度の速いことやメモリ安全性など、シンプルな使用などプログラミングをする上で高いパフォーマンスが発揮できるように設計されておりWebサーバーやアプリなどに多く用いられます。

 

herokuなどSaaS系の企業もこれを採用していて近年需要が高まっている言語のひとつです。

The Go Programming Language

 

Dart

Goと同じくGoogleからリリースされたプログラミング言語であり当初はDashと呼ばれていました。

 

主にWeb系においてJavaScriptの代わりなることを前提に設計されました現状あまり上手くいかず人気も高くはありません。

 

しかし最近Dart2が発表されたことや、クロスプラットフォームのモバイルアプリケーションフレームワークであるflutterに採用されて注目が集まっています。

Dart programming language | Dart

 

Elm

Elmは関数型言語で、Huskellから派生しているので共通した特徴も持っています。

 

主にウェブでのフロントデザインに用いられ、ユーザビリティ・パフォーマンス・堅牢性を重視していて実行時以外に例外(エラー)が起こらないことが特徴です。

 

これを上手く利用することで複雑なGUIやWebページがストレス無く作成することも可能です。

Elm home

 

Elixar

Elixerは関数型で並行処理等の機能を持つプログラミング言語でErlangから派生した言語です。

 

分散システム・障害耐性などが特徴的で、近年SNS等で大規模なユーザーをかかえるサービスーや大量の同時接続などを抱えるオンラインゲームのサーバーなどでよく活用されます。

Elixir

 

Rust

RustはFireFoxなどで知られるMozillaが支援しているマルチパラダイムプログラミング言語で速度・平行性・安全性が特徴で、C++の代替となることを目標としています。

 

マルチパラダイムであるためオブジェクト指向手続き型など様々な手法を実装することができます。ポストC++を目指しているため同じように、システムからゲームまで幅広く対応することができます。

Rust programming language

 

Clojure

LISPから派生した関数型・マルチパラダイムプログラミング言語で、汎用的かつマルチスレッドプログラムも容易にするのが特徴です。

 

LISPと比べても実用的でJVMで動作し、ウェブアプリケーション等でも用いられています。

Clojure

 

F#

 F#はマイクロソフトが開発したOCamlベースの.NET Framework向けマルチパラダイムプログラミング言語です。

 

OCamlの良いところを継承し、関数型とオブジェクト指向をもっています。ECサイトやCADなど幅広く使われています。

F# Software Foundation

 

 WebAssembly

 WebAssemblyはブラウザ上で動くプログラミング言語です。現在も開発は進行中でCとC++をブラウザ上で動かすことを目標にしています。

 

いままではJavaScriptオンリーでしたが、これが使えることによりブラウザ上で複雑なスクリプトをより早く動かすことができるようになります。

WebAssembly | MDN

 

まとめ

このようにプログラム言語は用途などによってさまざまな種類が存在し、それぞれに特有のキャラクターがついています。

 

ここに挙げただけでもかなりありますが細かく分類していくとさらにたくさんの種類のプログラミング言語が存在します。

 

それぞれの大まかなキャラクターを理解することによって自分が実現したいシステムに最適な言語なども見えてくるのきます。

 

大まかでもだいたいどんなプログラミング言語があって、どれが自分にあっているのかということを実際に手を動かしながら習得し、見つけていきましょう。

 

フレームワークについてはこちらから

www.mofflog.com