menu
書いてる野郎
orebike@gmail.com
「英語上達完全マップ」というのがあるらしいので、プログラミングならどうなのかなというのを試しに書いてみる。 もう上達してしまっているプログラミングを通じて「英語上達」とは何かを考えてみる。
プログラミングには英会話のような知識の瞬間的な反応は必要なくその知識の存在を知っていればいいという場合が多い。
多分プログラミングを上達したい状況は2つぐらいかなと思われる。
どちらにしても、なんとか仕事に使えるレベルのプログラミング能力を身に着けたいということだろう。 「英語上達完全マップ」も英語を使える入り口までの話で「ネイティブ並み」を目指すメソッドではないはずだ。
なのでゴールは仕事でなんとかプログラミングを使えるレベルまでということになる。
プログラミング言語の基礎を一通り使えるようになるのが仕事のプログラミングできるようになる入り口だと思われるが、そんなもの出来て当たり前で、現代のプログラミングはその周辺知識が膨大に必要でそこも薄くカバーする必要がある。
英語ならば英文法と基礎単語だけ覚えればいいだろではなく生活習慣や文化の違いがあるということを知らないといけないというところだろう。
プログラミング学習には学習の環境構築が必要になる。それをやる。 学習だけでなくとくにかくプログラムで何かするにはこの環境構築というのが永遠につきまとう。 非常に重要な段階で、初心者はこれがうまく出来なくて挫折することが多いと思う。
語学だとこれはどういうことだろう・・・おそらくこれは先生、最低でも話し相手を見つけるに近い。 いきなりハードルが高い。英語学習がうまくいきにくいというのも頷ける。
しかし、よくよく考えるとまったくのゼロから将来も見据えたプログラミング環境を構築するのも、 それなりの手間暇と金がかかるのである。
プログラミングというのは単にブログを書くわけでは無いのでそれなりにパワーがある、簡単に言うと値段の高いコンピュータを使う必要がある。安いコンピュータでもできるのだがそれができるのはもうすでに上級者である。
コンピュータはラップトップ(ノートパソコン)が良い。 なぜかと言うと、誰かに教えてもらうときに環境をそのまま持ち運べると便利だからだ。
これを考えると2019年現在無難なのは Apple社 の MacBook Pro 13 となる。
Mac は色々な経緯があってプログラマがよく使っているし、ハードウェアとソフトウェアを1つの会社で作っている安定感と製品構成が単純な選びやすさ、間違えにくさがある。 しかし、性能の割に値段が高いのでそこは「初心者税」である。能力の低さを金で補う必要がある。
ブラウザでWebサイトを見たり、メールを送ったり、Facebook したり、文章を書いたりとプログラミングではない日常的な作業が Mac でもできることを確認し、それに慣れる。
そのシステムにはそのシステムの流儀があってその流儀を掴む。
おそらく Windows を日常的に使っていた人が多いと思うのでそれと同じこと同等レベルの効率で Mac でもできるかということを確認すればよい。
ここで何かを独力でインターネットで調べてそれを文書にまとめて記録するという作業が必要になる。 このような作業は仕事でプログラマになっても日常的にやる作業であり習慣化するとよい。
一般的に Windows でやっていたことを Mac でやる程度のことも自分で出来ない人はプログラマ以前に仕事というモノが出来ないと思っていよい。プログラミングと上達と関係ない部分問題がありそうなのでプログラミングの上達は現状は諦めたほうがよい。
大体使えるようになった Mac の上にバーチャル環境を構築する。 これは何をするかというと Mac の上にまったく Mac とは独立して動く学習用の別のシステムを構築するということである。
環境構築では色々試行錯誤することが常であり、その過程でシステムが事実上不可逆的に変化、もしくは破壊されたりすることが多い。それが Mac 上で起こると回復するのが手間なので「バーチャル環境」という手法を使って Mac とは独立して学習環境を構築することで問題を避ける。
バーチャル環境があれば独立した異なる構成のシステムをドライブの容量が許す限り何個でも作ることができる。 構築した一つの構成ですべての学習ができるわけでも無いのでバーチャル上で作っておくことは有利である。
バーチャル環境の構築として定番の VirtualBox というアプリケーションがあるのでこれを Mac へインストールする。
現状のインターネットは Unix という名前のシステムの影響を強く受けていて、そこで動作する各システムもそれに近い仕組みで動いている。プログラマが Mac を好んで使う理由の一つに Mac のシステムが BSD という Unix を祖先に持つシステムを元に作られているということが大きい。
Linux というのも Unix を祖先に持つシステムで、実際に世界中で使われている。
このシステムをベースとして学習環境を構築する。
つまり Macbook という実際の機械の上で Mac というシステムがあり、その上に VirtualBox という仕組みを1つ乗せて、その上に バーチャルマシン という独立した機械を作り、そこに Linux というシステムを構築しようという話である。
Mac に慣れたように Linux に慣れる必要がある。特に CUI とか CLI と呼ばれる所謂「黒い画面に文字がズラズラ」という文字入力を通じてコンピュータを操作するというのはプログラマの必修項目である。
深くは知る必要は無いが、知らないとまったく何も操作できないに近くなるので触っておく必要がある。
プログラミング環境というのはプログラミング言語によってそれぞれ違っている。 今回は Java というプログラミング言語をスタートに勉強していく。
自分が勉強したい言語と Java が違うといっても Java が無駄になるわけではない。 プログラミング言語は基礎的な部分は殆ど同じで、どの言語でも同じようなことができると思ってよい。 なので Java の知識を活かすことで他の言語の理解が容易になる。
仕事でプログラミング言語の機能を100%縦横無尽に駆使して何かを作り上げるということは殆どなく、 どの言語にでも共通する基本的な10%ぐらいの機能を組み合わせて済ますことが多い。
Java から始める理由は特には無いのだが、理由があるとすれば・・・
という感じであろうか。仕事で使われるのは当然として、ルールが多いというのは気になるところではあると思う。 ルールが多いというのはそれだけで初心者は面倒と感じてしまうと思うが、ルールが多いというこは、ある目的のためのプログラムは誰が書いても大体似ることになるので初心者にとっては書くのも読むのも楽なのである。