# 質問箱回答
質問ありがとう!
私の場合、大筋としては下記の順に手をつけていきました。
1. HTML/CSS
2. JavaScript
3. PHP
4. C
5. Java
6. Python
同時に作業していたりで正確にこの順番という訳ではないのですが大体こんな感じです。
## HTML/CSS
最初はHTMLとCSSの組み合わせで自己紹介を書き、それを表示なんてしていました。
これは[ドットインストールの動画](https://dotinstall.com/lessons/basic_html_v3) が参考になるでしょう(ドットインストールはプログラミング関連の技術を動画で学べるサイトなので興味を持ったら見てみると良いと思います)
## JavaScript
次はその要素をJavaScriptで書き換えて遊んでみたりしました。
[これ](https://developer.mozilla.org/ja/docs/Games/Workflows/2D_Breakout_game_pure_JavaScript) が参考になると思います。
後は[ドットインストールの動画](https://dotinstall.com/lessons/basic_javascript_v2) ですかね。
ここらをこなした辺りでプログラミングについて何となくわかると思います(わからなくても面白ければそれでいい)
### WEBサイト公開
HTML/CSS/JavaScriptが何となく書けるようになったのでWebサイトとして公開したりしました。
その際にWebサーバやLinuxに関連した技術について知識を仕入れました。
* ドメインを買って
* サーバを借り
* nginxをインストールして
* Webページを公開
ドメインを買ったのはお名前だったかな(余談ですがWHOIS PROTECTをしないと個人情報が漏れるので注意)
VPSを借りたのはGMOのクラウドでした。
nginxはなんとなく検索すればいいと思います(適当)
この辺でネットワーク周りの知識も手に入れましたね。
ネットワーク知識は[3分ネットワーキング](http://www5e.biglobe.ne.jp/aji/3min/) で学びました。
## PHP
さて、Webサイトを公開できるところまで来た訳ですが静的な情報しか扱えません。
適当なリクエストの内容に応じて返答を変えたりはできないんですよね。
ということで、それを可能にするためにPHPに手を出しました。
具体的には適当にフォームに入力した情報をデータベースから抽出して表示しました。
## C
Webについてある程度やってきたけど適当にシステム周り弄るときダルいのでC言語やりました。
特に勉強みたいなことはしていません。
何か必要な関数があるときは適宜ググッていましたね。
[苦C](https://9cguide.appspot.com/)なんかは有名ですね。
ポインタとかは適当にデバッグしていたらわかりました。
デバッガの使い方は[ももテク](http://inaz2.hatenablog.com/entry/2014/05/03/044943) さんが参考になりました。
## Java
特にすきではないけどやった。
[スッキリわかるJava入門](https://book.impress.co.jp/books/1113101090) がわかりやすかったです。
この辺でオブジェクト指向についてやりました。
## Python
色々やってきましたがちょっとした処理を書くにはダルいのでPythonをやりました。
これは[公式チュートリアル](https://docs.python.jp/3/tutorial/) が一番わかり易いです。
## ここから先
やってきたことを挙げてきました。
効率的にやっていくためにアルゴリズムなんかも学ぶといいと思います。
とはいえ、この辺は自分もまだまだで「これが正解だ!」と言えるようなものは無いです。
今は競技プログラミングやCTFをやっています。
"競技プログラミング"では問題が出されるのでいかに理想的なプログラムで解決できるか競うものです。
[会津大学のオンラインジャッジ](http://judge.u-aizu.ac.jp/onlinejudge/) をやるといいと思います。
"CTF"はセキュリティに関する問題が出されるので答えるやつです。
最初は[ksnctf](https://ksnctf.sweetduet.info/) をやるといいと思います。
こんな感じに盛りつけてみました。