progateはやったけど...
私は初学者の時に、progateのレベルが280程度になるくらいまでは
繰り返したのですが、全体像が掴めておらず、
そもそもプログラミング言語が何ができるか、何の為にあるのかわかりませんでした。
当時こういう記事があれば、勉強の合間に読んで役立てられたのではないかな?
と思い、書いています。
フレームワークやCMSであるwordpress、無料ブログサービスも例にとって説明します。
前提
WEBの勉強をされる初学者の方の、休憩時間にでも読んでもらえれば。
ただあくまで正確なことは公式ドキュメントや論文、かための技術書に書かれている内容です。
しかし変数はハコのような物みたいな例え話なんかは、正確に変数を理解する前の橋渡しになると考えていますので、考えがあう人はイメージに使って見てください。(逆に言えば合わないなら価値のない情報です。)
そもそもプログラミング言語は何ができるのか
何でもできる
何でもできるが理解しにくいわけ
たくさんプログラミング言語があるのに、それぞれの目的がわからないから。
一覧
機械寄り、不便、自由、ぶっ壊せる。
1.バイナリ
2.アセンブリ言語
3.C言語,シェルスクリプト
4.Ruby,PHP,Python
5.Ruby on Rails,Laravel
6.WordPress
7.Amebaブログ等
人間寄り、便利、制限多い、ぶっ壊せない。
1.機械語そのもの
2.機械語にかなり近い言語
3.機械語に近い高級言語
4.所謂プログラミング言語(近年初学者が学ぶことが多い)
5.プログラミング言語と環境の組み合わせを絞って便利にしている(フレームワーク)
6.ブログを作れるシステム(CMS)、この中では自由度が高い
7.無料ブログサービス。簡単に扱えるが自由度が低い。
そもそもコンピュータは計算しかできない
コンピュータの持っている機能はそもそも計算だけです。
多くの機能が利用できているのも、超具体的に落とし込めば、
高速で大量の計算をしているだけなのです。
1.バイナリ
010100011011010010101010101
↑こんなイメージです。
コンピュータは0と1だけで命令する。有名な話ではないでしょうか?
その通りでコンピュータは0と1だけで命令を受け取り、そのように処理します。
000101ならAという部品を動かすとか、
001000ならBという部品を動かすとかそんなイメージです。
(例なので適当です。実際の動作とは異なります。)
2.アセンブリ言語
バイナリをそのまま打っていくとかなり長くなります。
そして人間としては読みにくい。
それをもっと人間がわかりやすく、簡単にかけるものが必要。
それを実現したものです。
3.C言語,シェルスクリプト
アセンブリ言語で便利になりました。
とはいえまだまだ機械にわかるような超具体的な命令をしなくてはいけません。
どこの部品を動かして〜のような。
しかし人間がやりたいことって限られているものです。
極論すればものすごい長い文字を毎回打てばいいですが、
よくやることを覚えさせた方が便利ですよね?
なので、文字を出して、ファイルを作って。
のような形で命令できるものを先に用意しておく。
これが高級言語と呼ばれるものです。
4.Ruby,PHP,Python
これらも高級言語。
より書き方を便利にして、直感的にかけるようになりました。
これも先ほどと同じ考えで、C言語などはいちいちライブラリ(外部の機能)を呼び出す
必要がある機能が多いのですが、そういうものもあらかじめセットしておこうということです。
それによりもっと簡単にかけるようになりました。
5.Ruby on Rails,Laravel
いわゆる、フレームワークですね。
これも同じ。よく使うものを先に入れておくってやつです。
WEBサービスを作るならプログラミング言語だけではダメで、
WEBサーバー、マークアップ言語など色々と設定が必要です。
それを一つのパッケージにしたものが、このフレームワークです。
フレームワークを使う設定をすれば、とりあえずPC上でWEBサービスが動く環境が出来ます。
ここまで来るとかなり便利になっており、例えば複数形のsがつくか、つかないか?
だけでも全く別のものを示すようになり、理解せずに使うと問題解決が非常に困難です。
6.WordPress
先ほどのフレームワークでももちろんブログは作れます。
しかし、殆どのWEBサービスに対応できるように
色々なものが入っているので、ブログとはじめから決めているのであれば
不要っていうものも多い。
そんな時に利用できるのがこのWordpressです。
こちらについてはエンジニア出ない方でも非常によく使われています。
無料、有料のテーマ(着せ替えみたいなもの)があり比較的小さい労力で、
デザインに飛んだブログを作ることができます。
7.Amebaブログ等
所謂、無料のブログサービスですね。
Wordpressなんかはかなり便利とはいえ、
自由度も担保したものなので、初見ではそれなりに苦労することもあります。
自身でのサーバー契約や、ドメイン取得が必要だったり...
その分アフィリエイトを効果的に運用したりだとか、
デザイン性に富んだブログにして、記事を映えさせるなんてことも可能です。
しかし、単純にブログを書きたい!
細かいことはどうでもいい!
ということであれば、無料ブログサービスはかなり手軽ですね。
いくつかクリックして設定すれば完成!
しかし当然無料で借りているから、自分の入れていない広告が出たりだとか
わかりやすく不自由な面もあります。
機械寄り、不便、自由、ぶっ壊せる。←→人間寄り、便利、制限多い、ぶっ壊せない。
今あげた中で番号が若いもの程この傾向が強いです。
機械に直接命令するので、理解して使えば制限なく自由に動かせます。
その分入力が多くなり不便です。
特に1.〜3.あたりはやっちゃダメ!な致命的な問題をPCに起こすことも割と簡単にできます。
それについてはここに書きませんが、
実行はせず、何が起こるか見るだけにとどめて下さいね。
(大抵の記事では配慮されていると思いますが)
逆に言えば近頃プログラミングスクールなんかで扱われる、
4.は簡単にそういうことが出来ないので、
よっぽど無茶しなければ、積極的にコードを書いて実行して経験を積めるということ。
(でも実行前にコードの内容は確認して下さいね)
最後に
殴り書きで恐縮ですが、これが誰かのやくに少しでもたつといいなあ。と思います。
(多分ツッコミどころいっぱいありますが。。)