はじめに
株式会社インプルの奈良です。
プログラミング言語は様々あり、それぞれに得意な領域や特徴があります。プログラミング未経験・初学者の方はどの言語から学び始めればいいかと疑問に思われますよね。
当記事では初学者の方々がプログラミングを学ぶ際の参考として、そもそもプログラミング言語とは何かについてと代表的なプログラミング言語でできること・得意領域・特徴・具体的な利用例・主要なフレームワークの5点を以下に紹介します。
プログラミング言語とは
プログラミング言語は、人とコンピュータとの間のコミュニケーションの手段として開発されました。私たち人間が理解しやすい形で指示を書くことができ、その指示は後でコンピュータが解釈・実行できる形に変換されます。
通訳の役割
私たちが日常的に使用する自然言語(例:英語や日本語)は、コンピュータには直接理解できません。プログラミング言語は、私たちの意図をコンピュータが解釈・実行できる指示に変換する「通訳」の役割を果たします。
多様性
プログラミング言語は、私たちが日常で使う日本語や英語と同様に、特定の目的や状況に最適化されて設計されています。これは、言葉を使って人々とのコミュニケーションを取る際の選択に似ています。
たとえば、日本人同士の日常の会話には日本語が適しているように、プログラミングの世界でも、特定のタスクや目的に合わせて最適な言語を選ぶことが大切です。
具体的には、ウェブページを作成して動きを加えるためにはJavaScriptがよく使われ、安全性が求められる大規模なシステム開発にはJavaが適しています。また、データ解析や機械学習の分野でよく用いられるのがPythonといった具体例が挙げられます。
文法
各プログラミング言語は独自の「文法」を持っています。これは、自然言語で言うところの文法やスペルのルールと似ています。この文法に従って指示を書くことで、コンピュータはそれを正確に理解し、実行します。
そもそもなぜ必要か?
コンピュータは非常に高速に計算や処理を行うことができる機械ですが、その行動は全てプログラムによって指示されています。
プログラミング言語を使うことで、私たちはコンピュータに様々なタスクを実行させることができます。ウェブサイトの表示、ゲームの動作、スマートフォンのアプリ、気象情報の予測など、私たちの日常生活における多くの技術やサービスは、プログラミング言語によって動かされています。
代表的なプログラミング言語の解説
C++
できること | 得意領域 | 特徴 | 具体的な利用例 | 主要なフレームワーク |
システム/アプリケーション開発、ゲーム、高性能なプログラム | リソースが制限されている環境や、高いパフォーマンスが求められる場所 | 手間はかかるが、非常に高いパフォーマンスを発揮する。 | Microsoft Office, Adobe Photoshop, Google Chrome, 多くのトリプルAゲーム | Qt, Boost, Unreal Engine |
Python
できること | 得意領域 | 特徴 | 具体的な利用例 | 主要なフレームワーク |
ウェブアプリケーション、データ解析、AI・機械学習、自動化スクリプト | データサイエンス、機械学習 | 読みやすく、書きやすい。ライブラリが豊富で、学びやすい。 | YouTube, Instagram, Google 検索アルゴリズム, Dropbox | Django, Flask, PyTorch, TensorFlow |
PHP
できること | 得意領域 | 特徴 | 具体的な利用例 | 主要なフレームワーク |
ウェブアプリケーション | ウェブサイトのバックエンド開発 | オープンソースで、簡単にウェブサイトの開発が始められる。 | Facebook, Wikipedia | Laravel, Symfony |
Ruby
できること | 得意領域 | 特徴 | 具体的な利用例 | 主要なフレームワーク |
ウェブアプリケーション | ウェブアプリの素早いプロトタイピング | Ruby on Railsというフレームワークで簡単・迅速にアプリケーションを開発できる。 | Airbnb, GitHub, Basecamp, Shopify | Ruby on Rails, Sinatra |
Java
できること | 得意領域 | 特徴 | 具体的な利用例 | 主要なフレームワーク |
ウェブアプリケーション、モバイルアプリ(Android)、組み込みシステム | エンタープライズアプリケーション | 「一度書けばどこでも動く」をモットーとしたポータブルな言語。 | Android OS アプリ, LinkedIn, Amazon, eBay | Spring, Hibernate, JavaFX |
JavaScript
できること | 得意領域 | 特徴 | 具体的な利用例 | 主要なフレームワーク |
ウェブページの動的な振る舞い、サーバーサイドアプリケーション | フロントエンド開発 | ウェブブラウザで動作する唯一の言語。Node.jsを用いることでサーバーサイドも開発可能。 | 多くのウェブサイトのインタラクティブな部分, Gmail, Twitter | React, Angular, Vue.js, Node.js |
C#
できること | 得意領域 | 特徴 | 具体的な利用例 | 主要なフレームワーク |
デスクトップアプリ、ゲーム(Unity)、サーバーサイドアプリケーション | Windows向けのアプリケーション | Microsoftが開発した言語で、.NETフレームワークとの統合が深い。 | Windowsアプリケーション, 多くのPCゲーム, Visual Studio | NET Core, ASP.NET, Xamarin, Unity |
Go (Golang)
できること | 得意領域 | 特徴 | 具体的な利用例 | 主要なフレームワーク |
サーバーサイドアプリケーション、並行処理タスク | 高速なサーバーサイドの実行 | Googleが開発したシンプルで高速な言語。 | Googleの内部システム, Docker | Gin, Beego |
Dart
できること | 得意領域 | 特徴 | 具体的な利用例 | 主要なフレームワーク |
モバイルアプリケーション、ウェブアプリケーション | クロスプラットフォームのモバイルアプリ | Googleが開発し、特にFlutterフレームワークと連携してモバイルアプリを迅速に開発できる。 | 多数のFlutterを使用したモバイルアプリ | Flutter |
Swift
できること | 得意領域 | 特徴 | 具体的な利用例 | 主要なフレームワーク |
iOSおよびmacOS向けのアプリケーション開発 | Appleデバイス向けのアプリケーション | Apple公式の開発言語で、高パフォーマンスなアプリケーションが作れる。 | ほとんどのiOSアプリ | UIKit, SwiftUI, Core Data |
Kotlin
できること | 得意領域 | 特徴 | 具体的な利用例 | 主要なフレームワーク |
Androidアプリの開発、サーバーサイドの開発、Webアプリケーション、デスクトップアプリケーション | Androidアプリケーション開発 | Java互換の静的型付け言語。簡潔な構文で読みやすく、GoogleがAndroidの公式言語として推奨。 | Androidの多くの新しいアプリ、Jetbrains製品(IntelliJ IDEA, PyCharmなど) | Kotlinx.coroutines, Ktor, Spring Boot |
最後に
今回はプログラミング言語とは何かについてと代表的なプログラミング言語でできること・得意領域・特徴・具体的な利用例・主要なフレームワークの5点についてまとめてみました。
種類が多すぎて何から初めていいか迷った際は、自分がつくりたいシステムやアプリケーションに特化した言語を選ぶことをオススメします!
また、特定の言語にフォーカスしなくてもエンジニアとして働いていれば、自ずと複数言語のキャッチアップが求められる場面はあります。しかし、一度プログラミング言語を習得すれば他の言語であってもそこまでコストをかけずにキャッチアップできるため、まずは手を動かすことが大切です!
下記の記事も参考になるため是非目を通してみてください!