中山テック 代表の中山です。
さて、今回はプログラミングについてのお話です(開発者向け)。
代表の中山は元々内勤の保険営業マンであり、プログラミング経験はありませんでした(HTMLぐらい)。
元々パソコンには興味があり、この業界にチャレンジしてみたいと思い飛び込んで早13年目に突入しました。
その中で私が初めて触った言語が、題名にもあるC言語というプログラミング言語でした。
現在最も案件の多いJavaもベースになるほどの優れた言語でもあります。
では何故C言語がプログラミングの勉強に適しているのか、お話したいと思います。
自分のケツは自分で拭かなければならない
いきなり何のこっちゃとお思いでしょうが、実に利便性が高くない時代の副産物なのです。
そもそも、プログラムが動く仕組みは・・・
メモリに命令を置く⇒CPUがメモリから命令を取り出す⇒処理
の繰り返しなのです。
普通にプログラムを書いてる分にはいいのですが、必要なメモリを確保したい場合があり
自分で取得⇒自分で開放してあげる処理を記載しなければなりません。
なお開放しないと実行されるごとに領域がとられ、最終的に枯渇するという憂き目に合います(C言語アルアル)
メモリのアドレスを渡す
昔はメモリの総量が少なく、何とか枯渇させないように工夫することが重要でした。
限定的な処理を記載するのに「関数」という概念があります(何度も同じ処理をする時に効率よくまわす一連の処理群です)。
関数もメモリ配置されるため、都度メモリ増加させて情報を渡すよりメモリアドレス番号を渡せばOKという処理があります。
※ポインタと呼ばれるものです
何気なくプログラムを書くのではなく、サーバにも優しい処理はどうすれば、と考えさせられる概念です。
ちなみに初心者の方はこの処理で躓く方が多いですね。自分ももれなく・・・(汗
データ構造を考える
一つの処理に一つのデータではなく、複数持たせてそこから取り出すというやり方があります。
構造体と呼び、Javaのクラスの元になった処理方式です。
構造体を駆使してモノ単位で考える、まさにJavaの基幹の考え方も知ることが出来るのです。
先人達が「苦労して楽をする」を体現してきたのがJavaです。
その根本を学ぶことで見えてくるモノが沢山あると思います。
まとめ
いかがでしたでしょうか。
私がCプログラミングを始めた時に参考にしていたページが「苦労して覚えるC言語」というサイトでした。
自由度が高すぎる分、バグが発生しやすいのもあり、リスキーですが高速処理も実現可能なプログラムでもあります。
※Javaは制約事項が多い上に処理は重め
Javaは参照渡しという概念がありますが、C言語のポインタそのものですので、是非お勉強してみてはいかがでしょうか。