学生時代PythonとRでデータ分析しかしてこなかった人間がJavaに触れてみた感想

<body>
<h1>前書き</h1>
<div>
本稿は、正確性に欠ける記事です。ていうか、ただの1社会人の不満や感想をだらだら述べているだけえです正確な知識を得たい方はブラウザを閉じましょう。また、徒然なるままに書いていることからも文章がぐちゃぐちゃです。気楽に読んでください。
</div>

<h1> 目次 </h1>
<ul>
  <li>投稿者のステータス</li>
  <li>Java研修でやったこと</li>
  <li>Pythonとの違い</li>
  <li>もっとも苦戦したところ</li>
  <li>おわりに</li>
</ul>

<h2> 投稿者のステータス </h2>

<h3> 学歴などなど </h3>
<div>
私は簡単にまとめるとこんな人間です。
<ul>
  <li>新卒でIT系のコンサルティングファームに入社</li>
  <li>学生時代は中堅私大の経済学部に在籍</li> 
  <ul>
      <li>経済学にはあまり興味がなく、統計分析のゼミに所属</li>
      <li>教養科目で機械学習入門などもあり、履修していた。</li>
      <li>興味が転じて形態素解析など、一部自然言語処理もかじっていた</li>
      <li>そもそも勉強に興味がなく、クラシック音楽に熱中していた。</li>
  </ul>
  <li>情報系の資格は何も取得していない</li>
  <li>Paizaのレーティングは1400くらい、AtCoderはB問題くらいまでなら解ける。<br>Pythonで解いていた。PythonとR以外触ったことがない。</li>
  <li>IT系の長期インターンは参加したことがない。</li>
</ul>

全く触ったことがない人に比べたらまあできるんだろうけど、情報系出身やインターン頑張っていた方に比べたらできないなーって感覚でした。
</div>

<h2> Java研修でやったこと </h2>
<h3>Javaの基礎徹底</h3>
<div>
詳細を話すと、身バレにつながりかねないので控えますが、、、e-learning教材を複数使って学習を進めるような形式でした。結論から言うと、つまらなかったですね。
<br>
他社さんの話聞いてると、みんなでWebアプリつくったりしてたりもするみたいなので、、、<br>
<br>
ただ、いい点が2つありました。
<ol>
    <li>
    複数e-learning教材があるため、復習がしやすかった。
    </li>
    <li>
    e-learningに付帯している問題集が結構よかった。
    </li>
</ol>
1点目に関しては、内容が重複していたことも相まって理解が浸透しやすかったです。
<br>
特にオブジェクト指向はまだ理解できていないけど、2回学ぶ機会があってよかったです、、、
<br>
<br>
2点目に関しては、問題を解いていくにつれてレーティングが上がったりするので、それもそれで楽しかったですね。可視化できるのは大変ありがたい、、、
</div>
<h3>Webアプリ開発について</h3>
<div>
ServletとJSPについて勉強させられました。とにかくむずかった。Pythonでは特にWEB開発とかしていなかったし、そのほかにも新しい概念がたくさんなので、とにかく苦労しました。多分、もっと簡単なフレームありますよね、、、
</div>

<h2>Pythonとのちがい</h2>
<h3>同じ高級言語でも、文章がどこで終わるかある意味わかりやすい。</h3>

```;```のおかげで、文章がどこで終わっているのか区切りやすいです。可読性は高い気がします。セミコロンを忘れてコンパイルエラーを吐きがちなので、注意したいですね。


```HelloWorld.java

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}
```

```
///cmd
javac HelloWorld.java ///コンパイル
java HelloWorld         // 実行
```

そもそも、notebook形式でプログラムを書いていたので、コンパイルの概念が初めてで戸惑いましたね。下記はPythonのコードですが、こっちの方がやっぱり簡単ですよね。

```HelloWorld.py
print("Hello World!")
```


<h3>変数の定義がJavaの方がわかりやすいような、わかりにくいような。</h3>

Javaの方がとにかく厳密で書くのがめんどくさいという印象でした。ただその分、厳密なことも相まって、Pythonよりも読みやすいし、丁寧な印象にも見える。

```InputExample.java
import java.util.Scanner;

public class InputExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in); // Scannerの作成

        System.out.print("整数を入力してください: ");
        int number = scanner.nextInt(); // 整数の読み取り

        System.out.println("入力された整数は: " + number);

        scanner.close(); // Scannerのクローズ
    }
}
```
```
#コンパイルと実行結果
javac InputExample.java //コンパイル
java InputExample //実行

整数を入力してください: 42
入力された整数は: 42
```

```InputExample.py

number = int(input("整数を入力してください: "))
print("入力された整数は:", number)


###実行結果

###整数を入力してください: 42
###入力された整数は: 42
```

こんな感じで、他にも変なのーって思った瞬間は山ほどありましたが、代表して2つほどあげました。

<h2>もっとも苦戦したところ</h2>
<h3>Servlet/JSP</h3>

本当に大変だった。やり始めたときは特に大変だった。すでに内容を忘れかけているので、あれですが、、、、

そもそも、htmlやSQLの知識も必要である。(当たり前)
Classを理解していないとそもそも話にならない。
Setなんとか()とか、Getなんとか()とか、最初言われても？？？？ってなる。無理すぎる。

ここら辺はもう一回内容整理して、Qiitaに投稿します。

ただ、途中からまたこのパターンかな？って手を動かしてみることもできそうだったので、慣れてくれば全体像がつかみやすいのかもしれません。とはいえ難しかったですね、、、

<h2>おわりに</h2>

プログラミングの研修が終わり、これから先もしばらく研修は続きますが、何とか耐えていきたいですね。

新社会人の皆さんも頑張りましょうね。~~正直思ってたんとちゃう~~なんて人も中に入るかもしれませんが、研修が終わるまでは頑張りましょう。その気持ちが研修が終わってもなお強いようでしたら、第二新卒でもモームリでも使いましょう。
</body>