プログラミングってなんとなくわかっているようで説明できない。。
なんの役にたつんだろう?必要かしら?
今回は、過去のぼくと同じようにプログラミングに興味があるけど何ができるのか、勉強するにも何からはじめればいいかよくわかっていない人のためにコーチングをしていこうと思います!
初学者向けの本を読んでみても、ついていけず挫折したことがある人に最適な記事になっております。
想定読者
- プログラミングは何かを作れる、効率化できる技能くらい理解レベル
- 言語がいろいろあるのは聞いたことがあるが、違いはまではよくわかっていない
上記にいずれかに当てはまるかたは、是非この記事でプログラミングとは何かを理解し、勉強する価値があるか見極めてみましょう!
この記事を書いた人
プログラミングとは
プログラミングは、一言でいうと「コンピュータに指示して動かすこと」です。
プログラマーは、「コンピュータに指示をする人」を指します。
プログラミングには複数の言語があり、実現したい目的によって言語を使い分ける必要があります。
プログラミング言語とその違い
どの言葉で指示すれば、なにを実現できるの?
という疑問をまとめたのが、以下の表です。
言語 | データ分析 | 自動化 | アプリ開発 | WEBページ作成 | 技術開発 |
---|---|---|---|---|---|
Python | 〇 | 〇 | 〇 | × | × |
Java | × | × | 〇 | × | 〇 |
C | × | × | 〇 | × | 〇 |
C++ | × | × | 〇 | × | 〇 |
JavaScript | × | × | 〇 | 〇 | × |
Ruby | × | 〇 | 〇 | × | × |
Swift(iOS専用) | × | × | 〇 | × | × |
Kotlin | × | × | 〇 | × | × |
C# | × | × | 〇 | × | × |
PHP | × | × | 〇 | × | 〇 |
Go | × | × | 〇 | × | 〇 |
TypeScript | × | × | 〇 | 〇 | × |
R | 〇 | × | × | × | × |
HTML/CSS | × | × | × | 〇 | × |
Rust | × | × | 〇 | × | 〇 |
言語の違いによって、どこに特徴があるのかが一目でわかりますね!
初心者はどの言語から始めるべきか?
結論、初めての学習には最も汎用性が高いPythonがオススメです。
Pythonは1つの言語で、「データ分析、自動化、アプリ開発」のような幅広い目的に対応できます。
プログラムの記述も英語をベースとしており、初学者にも理解しやすいプログラミング言語です。
またPythonのデータ分析スキルは、市場価値が高い上に副業としても活用性が高いという利点があります。
Pythonのデータサイエンティストは、年収でいうと1,000万円を超えることが多い職業です。
【参考】プログラミング言語の辞書的説明
参考に、上記に掲載した各プログラミング言語について辞書的な説明を載せておきます。
Python
Pythonはプログラミング言語として、様々な用途で利用されています。主に以下のような用途で使われています。
- Web開発: DjangoやFlaskなどのフレームワークを使ってWebアプリケーションの開発が可能です。
- 科学技術計算: NumPy、SciPy、Pandasなどの数値計算ライブラリを使って科学技術計算が行えます。
- データ分析・ビジネス分析: Matplotlib、Seaborn、Plotlyなどの可視化ライブラリを使ってデータ分析やビジネス分析が行えます。
- マシンラーニング・深層学習: TensorFlow、PyTorch、scikit-learnなどのライブラリを使ってマシンラーニングや深層学習が行えます。
- スクリプト自動化: システム管理タスクやWebスクレイピングなど、複雑なタスクを自動化するためのスクリプトを書くことができます。
これらはPythonの主な用途の一部であり、より多くの機能があります。
Java
Javaはオブジェクト指向のプログラミング言語で、幅広い用途で利用されています。主に以下のような用途で使われています:
- 企業向けアプリケーション開発: Javaは、大規模な企業向けアプリケーション開発に適した言語として広く使われています。
- ウェブアプリケーション開発: Javaを使ったWebアプリケーション開発フレームワーク(例えばSpring、Struts、JavaServer Facesなど)があります。
- アンドロイドアプリ開発: Javaは、Androidアプリ開発においても広く使われています。
- 企業向けミドルウェア: Javaを使ったミドルウェア(例えばWebLogic、GlassFishなど)があります。
- デスクトップアプリケーション開発: Javaを使ったデスクトップアプリケーション開発も可能です。
これらはJavaの主な用途の一部であり、より多くの機能があります。Javaは、高いセキュリティ性やクロスプラットフォーム対応などの特長も持つことから、幅広い用途で利用されています。
C言語
C言語は、低レベル言語であり、システムプログラミング、OS、デバイスドライバー、アプリケーションのコア部分の実装に利用されます。
また、様々なハイパフォーマンスアプリケーション、ゲームなどを開発するためのプラットフォームとしても利用されます。
C言語はまた、他の言語を学習するのに有効な前提知識となることがあります。
C++
C++は、オブジェクト指向をサポートした拡張版のC言語です。
C++は、大規模なアプリケーション開発、ゲーム開発、グラフィックス、グラフィックデザイン、マルチメディアアプリケーション、自然言語処理など多様な分野で利用されます。
また、C++は高速な動作、効率的なメモリ管理、現代的なプログラミング機能などの機能を備えています。
C++はまた、他の言語を学習するのに有効な前提知識となることがあります。
JavaScript
JavaScriptは、Webブラウザ上で動作するプログラミング言語です。
JavaScriptは、動的なWebページやWebアプリケーションの作成に役立ちます。
JavaScriptを使うことで、Webページ上のインタラクティブな要素(例えば、フォームのバリデーション、ページ内のアニメーション、Ajaxによる非同期通信など)を作成することができます。
また、JavaScriptは、サーバーサイドアプリケーションやデスクトップアプリケーションの開発にも使用されます。近年では、JavaScriptを使ったクロスプラットフォームアプリケーションの開発も可能になっています。
Ruby
Rubyは、オブジェクト指向のプログラミング言語です。Rubyは、シンプルで簡潔な記述が特徴で、ウェブアプリケーション開発やスクリプトなどに適しています。Rubyは、以下のようなことができます:
- Webアプリケーション開発:Ruby on RailsというWebアプリケーションフレームワークを使ったウェブアプリケーション開発ができます。
- スクリプト開発:Rubyを使って、システム管理タスクやデータ処理などのスクリプトを作成することができます。
- 汎用プログラミング:Rubyは汎用的なプログラミングタスクにも適しています。
- テスト自動化:Rubyを使ったテスト自動化フレームワークもあり、開発者は自分のコードを自動テストすることができます。
Rubyは、柔軟な構文と高い生産性を備えているため、開発者にとって魅力的な選択肢となっています。
Swift
Swiftは、iOS、macOS、watchOS、tvOSなどのアプリケーション開発に使われるオブジェクト指向プログラミング言語です。
Swiftは速い、安全で、可搬性が高いことが特徴です。Swiftを使用することで、アプリケーションの開発時間が短縮され、維持性が向上することが期待されます。
また、Swiftはオープンソースなので、コミュニティによる開発も活発です。
Kotlin
Kotlinは、Java言語の一種であり、Androidアプリケーション開発に特に適しています。KotlinはJavaと互換性がありながら、よりシンプルかつ短い記述でアプリケーションを開発できると評価されています。
また、Kotlinは多様なプラットフォームに対応しており、サーバーサイド、デスクトップ、Web、Androidなど様々な開発環境で使用することができます。
さらに、Kotlinは安全で高速な動作、エレガントな記述が可能なことから、開発者に高い満足度を提供することが期待されています。
C#
C#は、Microsoftによって開発されたオブジェクト指向プログラミング言語です。
C#は.NET Frameworkと統合されており、多くのWindowsアプリケーション、Webアプリケーション、ゲーム開発などに利用されています。
C#は、宣言型、高度に抽象化されたプログラミング言語であり、初心者から上級者までの多様な開発者に対応しています。
C#は、並列処理や高速な動作などの機能が備わっており、Windowsのユーザーインターフェース、データベースアクセス、XML処理などに利用することができます。
また、C#は明瞭な記述が可能なことから、開発者の作業効率を向上させます。
PHP
PHPはWebアプリケーション開発向けのプログラミング言語です。
動的なWebページを生成するためのサーバーサイドスクリプトとして利用されることが多いです。
また、データベースとの連携や、CMS(Content Management System)のような汎用的なWebアプリケーションの開発などにも利用されます。
Go
Go (Golang)は、Googleによって開発された、高速なコンパイルと実行が可能なプログラミング言語です。
並列処理や分散処理を行うことができるため、サーバーサイドアプリケーションやネットワークサービスなどの分散システムを構築するために利用されます。
また、シンプルで分かりやすい構文、高速なコンパイルなどから、新規開発やメンテナンスなどに効率的で利便性の高い開発環境を提供することから、需要が高まっています。
TypeScript
TypeScriptはJavaScriptの上位互換です。
JavaScriptに型定義が追加されています。こ
れにより、開発時のバグを減らし、可読性を向上させることができます。TypeScriptはJavaScriptの代わりとして使われることもありますが、JavaScriptをサポートするすべての環境で動作するため、JavaScriptとの互換性も高いです。
また、TypeScriptは静的型付けを持つオブジェクト指向プログラミングの機能もサポートしています。
AngularなどのフロントエンドフレームワークでもTypeScriptを採用することがあります。
R
Rは、統計分析やデータサイエンス、グラフィカルなデータ可視化などのために使用されるプログラミング言語です。
Rには多数のライブラリがあり、これらを使用することで、高度な統計分析、グラフィックス、マシンラーニング、深層学習などを簡単に行うことができます。
さらに、Rはデータ解析のレポート作成にも適しており、独自のグラフや図を作成して分析結果を説明することができます。
HTML/CSS
HTML(Hypertext Markup Language) と CSS (Cascading Style Sheets)は、ウェブページを作成するために使用される言語です。
HTMLはコンテンツの構造を記述するために使用され、CSSはスタイル(フォント、色、背景など)を定義するために使用されます。
これらの言語を使用することで、動的なウェブページ、インタラクティブなフォーム、アニメーションなどを作成することができます。
Rustとは
Rustは、システムプログラミングやアプリケーション開発に用いられるプログラミング言語です。
Rustは安全性、パフォーマンス、並列性などの機能を重視して設計されており、大規模システムやWebアプリケーションの開発に適しています。
また、Rustは高速な処理とメモリ安全性を保証するための言語機能を提供しています。
プログラミングの世界に共通する基礎
Pythonのようなデータ分析や自動化に特化した言語は、その言語単体で目的を達成することができます。
しかし、アプリケーション開発となると複数の言語を組み合わせて開発をすることがほとんどです。
では、すべての言語を1から勉強する必要があるのかというとそうでもありません。
どのプログラミング言語にもある程度共通した型みたいなものは存在します。
以下はどの言語でも共通して存在する基礎であり、1つの言語で理解すればほかの言語の学習を大きく助けてくれます。
共通
- 文法
変数、関数、条件分岐、繰り返しなどの基本的な文法は共通しています。
1つの言語を習得したら、違う言語を学習する際は特有の機能のみを学習すれば習得が可能です。
まとめ
今回は「プログラミングの世界観をざっくり理解」をテーマに話しました。
プログラミング自体が初めての人は、Pythonから始めるのがオススメです。
理由は、1言語で実現できることが多いからです。
具体的には、「データ分析、自動化、アプリ開発」のような幅広い目的に対応できます。
こちらの記事では、知識0から1週間でPythonを習得する方法を紹介しておりますので是非併せてご覧ください。
>>【1週間で完結】知識0から独学でPythonを習得する教材
それでは、また次の記事でお会いしましょう
最近のコメント