【はじめに】 素人プログラマーになるために!
素人だけど、プログラマーになりたい。はい、僕はそういう人を応援しております!
でもまず何を作りたいんだろう?って思いますよね。
そうなんですね、素人は何を作りたいのかもわからないのに、プログラマーになりたいというのです。
もちろん、僕もそういう素人プログラマーの一人として、まず何を作るべきか?一緒に考えていきましょう!
素人だけど、プログラマーになりたい。はい、僕はそういう人を応援しております!
でもまず何を作りたいんだろう?って思いますよね。
そうなんですね、素人は何を作りたいのかもわからないのに、プログラマーになりたいというのです。
もちろん、僕もそういう素人プログラマーの一人として、まず何を作るべきか?一緒に考えていきましょう!
たとえば単純にプログラマーになりたい、みたいなことだったら、2022年現在ですと、最短の道は動画教材で学ぶというのがいいのかなと思います
本で学ぶのが一番コストが低いやり方ですが、本は一か所つまずいてしまうとそれから以降の学習ができなくなるケースもあり、
全部完全にやりきることができた、ということは実は少ない気がします
動画教材はその点、講師の人がガイダンスをしながら進めてくれるので、つまずきのポイントが少ない気がします
おすすめみたいなところがあるとすると、(まだ不勉強ですが)Udemyさんとかですかね。
僕も現在、javascript + CSS + htmlみたいなコースを取っているのですが、きちんとついて行けてます
このHPもその成果、というわけです。(本を参考にしていたりするところもありますが・・・)
しかしそれですと話が終わってしまいますので、一緒にプログラミングの勉強方法を考えてみましょう
プログラミングのイメージはなんとなくカッコいいイメージがあります。でもちまちましたコーディングが苦手の人もいるかと思います。
めんどくさい作業はせずに、簡単に成果物だけをもらって運用していくことをメインに考えるのであれば、コーディングは別に深く知る必要はないですよね
そこで最近、ノーコードやローコードが出てきました。記事にもなっていると思いますので、詳しくはググっていただきたいのですが、
これからはどんどん素人がプログラミングをせずに、サービスを作るミライが提唱されています。
僕も詳しくは知らんのですが、要は出来合いのプログラミングを組み合わせるor自動生成されたソフトウェアを使う、ということなんだと思います
ある程度出来上がっている状態から、作業を始めてサービスの内容を自分の都合に合わせて、入れたり削除するような形が思い浮かべられるかと思います
外部レンタルサーバーの立ち上げ自体も実はノーコードですが、立ち上げた後の運用ではプログラミングが必要ということになれば、ノーコードではないということになります
スクリプトキディという言い方が昔流行ったのですが、要はちょっとしたスクリプトを使って成果を上げるような、ハッカーの卵という意味だったと思います
ハッカーが作ったソフトウェアを使うことで、ハッキングはしますが、彼ら自身はハッキングの知識がなく、単にそのソフトウェアを使えば、ハッキングができるという知識
しかないんですね。言葉は悪いですが、ノーコードやローコードもこのような感じかと思います
つまり、ある程度作るべきサービスが絞られてくるようになると、すでに誰かが作ってくれたソフトウェアやプログラミングを組み合わせて運用するだけでも、
十分お仕事につながるわけですね。その分、センスが問われる可能性もないわけではないかと思いますが、今は出始めの時期なのでそこまで要求される水準は高くはないと思われます
プログラミングすること自体が目的ではない、という人は十分ノーコード、ローコードを使うことでもこれからは活躍できると思われます
もちろん、そのノーコードで使われるサービスはそれ前提に作られており、使用量も払いますので、まったく違法性はないのです。許可なくパクったらもちろん、問題ですが。
さて、ノーコードでもソフトウェア開発の仕事はできそうだと上で述べさせていただきました。お客さんも作ってもらったサービスがどれくらい新しくプログラミングをされているか、
知りたいケースもあるんでしょうけど、大部分どうやって作ったかはあまり気にしないのではと思います(このあたり僕は素人なので、憶測なのはすいません)
さて、ノーコード以外のプログラミングを伴う、ソフトウェア開発をメインにしようと思う場合、いやいやノーコード開発メインで行くぞと考える場合でも、
これから述べる外部サーバーの立ち上げくらいは知っておいた方がいいでしょう。
しかし、それなら当座に考えるべき、プログラミングとは何でしょう?改めて考えてみます
僕がずいぶん前に読んだ本の中で印象に残っているのが、計算機は計算をおこなうのだから、戻り値のない関数などは邪道だ、なんていう人がいました
完全には同意は致しかねますけれど、この場合はプログラミングの線引きに使えそうな気がします。
C言語的に考えると、int main void ()ではじまり return 0で終わる形だと思います。 詳しくはググってください。
つまりここでその本の著者が言いたかったことは、戻り値にない関数はプログラミングではないということではないでしょうか。
この人にとって、それくらい変数を関数を通して、値を変えることこれがつまりプログラミングなんだということです。
ここでは便宜的にその区分けを採用してみます。つまり、プログラミングは変数を扱い、その値を変えていく事である、これをここではプログラミングの定義にします。
さて以上のことを発展させてみると、web開発、例えばHPを作るためにHTMLやCSSを扱うのはプログラミングではないの?という疑いが出てきます
正直、どうでもいいことですし、僕も勉強している途中なのでよくわからないのですが、HTMLやCSSをコピペでうまく使おうとするのをスクリプトキディ的、
1から自分でなんとか工夫して作ってみようとする態度がプログラミング的なんだと思います。
それで実際のHPの動作が変わるわけではないですし、心の持ちようなので別にどっちでもいいのですけども、上手くいったものをコピーして使う、
まあデザインパターンを借用してプログラミングをする、みたいなことを初学者はしていかないと自信も技術もついていかないと思うので、
ある程度、スクリプトキディ的に取り組みつつも、できるようになったら自分で考えてコーディングを組み立てていく、事を目標にできればなあと思います!
まだ準備段階ですけど、どの言語からやるべきでしょう?大きく分けて二つありますよね。pythonのようなインタプリタ―、もしくはC言語のようなコンパイルをすることで、ソースファイルを作る言語です
簡単に考えると一つ一つ命令を考えてそれを実行できるのが、インタプリタ方式
ある程度長めのコードをコンパイラを通して実行形式へ変換するのが、コンパイラ方式です。
なぜコンパイラ方式があるかというと、昔はコンピュータは高すぎる装置だったので、一人一台ではなく、複数グループで一台みたいな時代があったようです
その時代、一人一台でコンピュータを所有できないから、あるグループや個人が使っている間、別のグループや個人はやることがないのです。
で、その間をプログラミング作業に充てることができれば時間を有効活用できることからコンパイル方式は生まれました。
つまりコンパイラ方式は実際のコーディングをする環境と実行する環境を別々にすることを最初から想定しているやり方といえましょう。
インタプリタ方式は目の前にコンピュータがないと、実行もコーディングもできませんので、一人一台時代の産物でしょう
ですので、僕たち素人はとりあえず深くは考えない方がいいのです。必要だったら勉強するくらいでいいのです。
一応、今のところ、コンパイル方式でもインタプリタ方式でも問題はありません。そのことを意識してみましょう
とはいうものの、一つ一つの言語の知識はないよりあった方がいいでしょう。
ということで、各種言語の特徴を独断と偏見にまみれた視点ですが、見ていきたいと思います。
C言語・・・結構有名なので聞いた人は多いと思います。大きな特徴としてはメモリを直接参照できるポインタの制御ができることです。主に組み込みやLinux環境で使われています。 また実行速度が速いので改良したバージョンであるC++はゲーム環境でよく使われています。
JAVA・・・大勢でコーディングしやすい言語と言われており、まあBtoBで使われる言語ではないでしょうか。有名なところではマインクラフトはJAVAで書かれているみたいです。JVMというランタイム環境をインストールすれば、どこでも動くことを売りにしてます それとソケット通信なんかをやるイメージがあるので、外部と通信が必要な組み込みなどにはJAVAが使われることもあるのかな?といった感じです。メモリの開放を自動で行ってくれるガベージコレクションが特徴の一つにあります。
python・・・個人的にはLISPに近い言語だと思っております。対話型インタプリタを備えた、非常に科学計算やAI等に強い言語です。 すごく使いやすく、幅広くいろんなことにも使えるので、便利かと思いますが、素人はこれをいきなりやるのはどうかな?といった感じです。 なぜかというと、型が動的なので、データには型があることを使ってて意識しづらいのではないか、と思うので、もっと原始的な言語を勉強した方が最初はいいのかな、と個人的には思います。 ただその分、作業効率はめちゃくちゃ良いのではないかと思うので、個人でコーディングをする際もやりやすい言語ではないかと思います。
それ以外の言語が出たときはその時、解説をしようと思いますが、とりあえず、上三つくらいで大丈夫かと思います。
コーディングにはIDEがつきものです。昔は例えばEclipseなんてのがありました。主にJAVAで使うことを想定したIDEです。今でもありますし使われていると思いますが。。
まずは学習ということであるならば、個人的にはインタプリタとして使えるのであればIDEは不要だと思います。ですからPythonはコマンドラインから使いましょう
コンパイル方式ですと、IDEは必要かもしれませんね。僕がおすすめするのはVScodeです。無料で使えますし、みんな使ってます。
GO言語やRustという比較的新しめのプログラミング言語の解説した本でも使われています。なので、いったん覚えればいろんな言語をプログラミングするときに使えます。
あと意外とHTMLやCSSの記述が書きやすいです。今HP用に打ち込んでいるのはVScodeを使っています。拡張機能を使うといろんな機能を使えるようになります。
とりあえずVScodeには早めに慣れておくのに越したことはないです。使い方は使うときにご説明できればと思います。さてこれで準備段階の知識はだいたいクリアしたのではないかと思います。