7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Pythonの「ふわっと」とJavaの「かっちり」 ― 初学者が感じた違いを言語化してみた ―

Last updated at Posted at 2025-12-22

はじめに

はじめまして!ITスクール(RareTECH)でプログラミングを学んでいるたかと申します。

9月頃にPythonから学習をスタートし、最近Javaにも手を出し始めたばかりです。

最初は「なんでJavaってこんなに厳しいんだろう?」と戸惑いましたが、両方を並行して学んだ結果、この二つのギャップこそが、プログラミングの本質を理解するための最高の「学びの組み合わせ」だと気づきました。

この記事では、Pythonを学んだ初学者がJavaを学び始めたときに感じた違いを、あくまで「初学者なりの視点」で言語化してまとめてみます。

同じように

  • Pythonを学習中の方
  • これからJavaを学ぼうとしている方

の参考になれば幸いです。


「ふわっと」と「かっちり」の根本原因

私が感じたPythonとJavaの全体的な印象の違い、つまり「ふわっと」と「かっちり」の違いは、主に「型付け」の仕組みと「設計思想」に起因しています。

1. 自由なPython:動的型付けが生む「書きやすさ」

Pythonは動的型付けを採用しており、変数に型を書く必要がありません。

x = 10
x = "hello" # 同じ変数に異なる型の値を代入しても動く

「今は何が入っているか」を意識すればよいため、**「まず動かしてみる」**が非常にやりやすく、初学者にとっては「ふわっとでも前に進める言語」という印象になります。

2. 厳密なJava:静的型付けが生む「安全性と設計の深さ」

対してJavaは静的型付けを採用しており、変数を宣言するときに型を明示する必要があります。

int x = 10;
// x = "hello"; // コンパイルエラー

一度決めた型と違うものを代入するとエラーになります。これは、プログラムの安全性を高めるための仕組みであり、「型や構造を明確に定義する必要がある」「曖昧さが許されない」という「かっちり考えないと進めない言語」という印象に繋がります。

実際のコードで見るPythonとJavaの違い

「ふわっと」と「かっちり」の違いは、具体的なコードやデータ構造の扱い方で明確になります。

(1) データ構造の定義(list と ArrayList)

Pythonではリストを [] で簡単に書けますが、Javaでは型指定や生成処理が必要になります。

numbers = [1, 2, 3]
List<Integer> numbers = new ArrayList<>();
numbers.add(1);
numbers.add(2);
numbers.add(3);

ここでも「Pythonは簡単、Javaは厳密」という違いを感じました。

(2) None と null の違い:厳密さの壁

Pythonの None と Javaの null は似ていますが、Javaの null の扱いには、学習初期では特に厳密さを感じました。

  • Pythonの NoneNoneType という型のオブジェクトであり、比較的安全です。
  • Javaの null「何も参照していない」状態であり、参照すると有名な NullPointerException が発生します。
String s = null;
s.length(); // NullPointerException

この NullPointerException の厳しさは、「Pythonの柔軟さ」と「Javaの厳密さ」の象徴的な違いだと初学者の立場として強く印象に残りました。

ただ、この厳密さがあるからこそ、大規模なシステムでも安全に開発できるのだと、少しずつ理解できるようになってきました。

(3) PythonとJavaの違い:総括表

ここまでの内容を、PythonとJavaの違いが分かるように初学者目線で表にまとめてみました。

観点 Python Java
言語の性格 柔軟・書きやすい 厳密・安全重視
型付け 動的型付け 静的型付け
変数宣言 型指定不要 型指定必須
書き心地 ふわっとでも動く しっかり定義しないと動かない
ブロック構造 インデント {};
リスト型 list ArrayList
辞書型 dict HashMap
None / null NoneNoneTypeのオブジェクト) null(参照が存在しない状態)
null系エラー 比較的安全 NullPointerException の原因
関数/クラス クラス外に定義可能 クラス内のみ(mainメソッド必須)

まとめ

最初はJavaの厳しさに戸惑いましたが、Pythonで基礎的な考え方を学んでいたおかげで、Javaの構造も理解しやすくなっていると感じています。

  • Python: プログラミングの考え方を素早く学べる(行動重視)
  • Java: 構造や設計を深く考えさせられる(構造重視)

この2つを並行して学ぶことで、プログラミングへの理解が単なる「コードを書く技術」から「システムを設計する技術」へと深まっている実感があります。

今後も、PythonとJavaの両方を学びながら、
理解したことを言語化・アウトプットしていきたいと思います。


この記事は、「まだ基礎しか学べていない初学者の視点」で書いています。もし誤りや、より良い考え方があれば、ぜひコメントなどで教えていただけると嬉しいです。

7
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?