C言語やC++の何ができたら初心者・中級者・上級者というのを知りたいです
無いです。
私は今C/C++をやっていますが、どこまでやったらいいのか気になったからです。
C/C++をやっても何をすればいいのかわからないし、目標がないので続けられるか心配なためです。
失礼ですが、意味不明です。
プログラミングっていうのは学問でもないし、必須の技術ってわけでもありません。
質問者さんの今の質問は「ボディビルディングをしています。どのぐらいやれば上級者なのでしょうか。それと、目標が無いので続けられるか心配です」みたいなものです。
……いや、だったら辞めれば? と言いたくなりませんか?
普通、ボディビルディングであればそれに魅せられて自分もやってみたいとか、
かっこよくなりたいとかそういう何かしらの理由があるはずです。
それを他人に求めている時点で……
プログラミングっていうのは技術です。
「for文が~」とかをやるのがプログラミングでもなく、「穴埋めが出来る」とかでもありません。
入門書とかの章末問題とかでの穴埋めとかはあくまで、「こういう風に使えるよ」っていうサンプルでしかないです。
そもそも前提がちがうのです。そもそも目的と手段が入れ替わっています。
プログラミング言語がある -> よし○○を作ろう!!!
……ではありません。
プログラミングは手段でしかないです。
そもそもの始まりは、「私達が手作業でやっている処理を機械に任せる為」です。
元々は軍事利用でした。暗号解読やら弾道計算やら。
でも、それらの処理は面倒です。
たとえばたかだか「Hello」の五文字ですら、暗号方式とかによっては1カ月はかからないにしても、
それぐらい労力が必要です。ましてや当時は戦時中。情報を制した者が戦場を制す。
だからちんたらとやっている時間はありません。
そこで、「機械に任せればいいんじゃね?」ってことで、機械に任せようとします。
ですが、この機械、機械語と呼ばれる0と1からなる言語しか認識できません。
そこで、人間が011110110011101110000001101011010101... のように命令していたようです。
でもそれは人間にとって途方もないことだったので、人間の言語(英語とか)に近い言語、アセンブラとかが開発されました。
ですが、毎回行う処理も毎回、今でいうコピペ状態か、いわゆるスパゲッティコード(gotoとかの多用で読みづらいコード)になってしまいます。
そこでC言語とかのような構造化プログラミングって考え方を取り入れて作っていきます。
でもまだ問題があったので……
と言う風に今のJava, C#, C++, Perl, ... とかのような言語が出来ているのです。
で、機械に任せればソフトやサイトも作ろうと思えば作れるので、今では
ソフト開発 = プログラミング言語でやる
的な発想になっているだけです。
なので初心者,中級者, ... とかのようなカテゴリはありません。
強いて言うなら、
入門者:
HelloWord程度から基礎をやり終えたぐらい
初心者:
FizzBuzz問題等の軽い問題や軽いサンプル程度のもの(小規模程度)を作ろうと思えば作れる程度
中級者:
「データ構造とアルゴリズム」等のようなものや「動的計画法」等のアルゴリズムを知っていて、
中規模程度のものを作る事が出来る
上級者:
計算量を意識して、最小限の計算量(?)で組むことができること。
仕様書等の設計や綿密なテストを行うことができる
とかじゃないかなと。
ただし、文脈や状況なんかによります。
Paizaのスキルチェックで言えば、Dランクすら解けない場合は入門者、Dランクは解けるがCランクは無理っていうのは初心者寄りの入門者、
Cランクは解けるがBランクは解けない場合は初心者、Bランクが解ける場合は中級寄りの初心者とかではないでしょうか。
(ただし場合による)
プログラミングでは「しょせん手段の一つであり、目的を達成すればいい」のです。