ジャンル雑多なゲーム・ゲーム制作関連の色々な情報を取り扱っているブログ。最近はBlenderについてが中心。
[C, C++学習]C, C++言語再学習ノート-番外編- –C言語について、プログラミング初心者に向けて、プログラミング独学時のポイント、C言語学習時に役立ったサイト・ページ、注意点など書いてみる

[C, C++学習]C, C++言語再学習ノート-番外編- –C言語について、プログラミング初心者に向けて、プログラミング独学時のポイント、C言語学習時に役立ったサイト・ページ、注意点など書いてみる

C言語について、本当の初心者へ伝えたいこと、言語選びの重要性、お世話になったサイトやページ紹介、プログラミング言語全般で学習の注意点などのお話 勉強しなおしの記録というか学習ノート-番外編-

最近、Unreal Engin4すごい!(語彙力)ってなったので、少しいじりつつ、むかーしかじった事あるC,C++の学びなおしの学習ノートを連載記事として徒然なるまま書き連ねているほろほろりですm(_ _)m

この記事は、とりあえずC言語を一通り学習終えられた区切りとして番外編として書いておりますので、本編である連載記事とは微妙に異なる趣旨によって記述されております。予めご了承ください。

この記事の趣旨としましては、C言語を再学習した時に思ったことを中心に、これからC言語を学ぶ方で主に初心者さんへ言いたいことなど、ほろほろりの思いの丈の掃き出し記事になります。

1つ(再)学習やり遂げてみるとやっぱり語りたいことがあふれてきてしまった上、昔に学習した時の思い出も蘇ってきて、懐かしさと共に、プログラミングを本当の初心者からネット上の情報で四苦八苦しながらの学習した時大変だったことも思い出してきたので、「これからプログラミングを始める方へ向けて書きたい!」と思って、急遽この番外編をつくりました。

願わくば、これからC言語を学ぶ方(それ以外の言語でも)にとって、この思いの丈が、学習のエールとなりますように。

また、本編連載記事の方の詳しい趣旨と注意事項は連載記事の1日目をご覧ください。

※2019年6月8日 加筆修正しました。

目次

そもそもC言語ってどんな言語? –プログラミングの古参勢

C言語は、初登場したのが1972年という、プログラミング言語の中でも古参と言える存在です。

そのためメジャーな言語であるというのもありますが、先駆者様が多く、関連した資料も優良な情報もいくらでもネット上に転がっているのでやる気さえあれば教本は買わなくて良いし、開発環境を整えるのにも、最近はVisual Studioの無料版(※例外的に有料にしないといけない場合もあります)等が高性能で高機能な統合開発環境として十分すぎる程のものですので、 ある程度のレベルに到達するのに、 お金のこと含めをそれほど苦労せずに済みます。

更に、数多くの言語の原型となってたり影響を与えていたりと、Cがわかっているだけで、他の言語の習得の難易度がだいぶ下がります。(が、これは、逆も言える気がします(^_^;))

もし、UE4やそれ以外の目的でも(機械とお話し(言い方(ry)したい方や、アプリケーション開発をしたい方)であれば、プログラミングを始める第一歩ともおすすめしてお金もかからず手軽に始められるとおすすめの言語です。

だが、ちょっと待ってほしい(某新聞風)

おすすめはもちろんできるのですが、少し立ち止まって、学習の”目的“と見比べてみてください。

そもそもその言語、あなたの目的にあってますか?

何故その言語を学ぶの? –プログラミング言語全般に言える言語選びの重要性

ちょっと自論を展開しますが、「プログラミング言語は、必要であれば覚えれば良い」と私は思っているのです。
(こんなこと言ったら本職の方(言い方が誤解を生む)からお叱りを受けそう)。

プログラミングはそもそも、”道具”や目的を達成するための”手段”でしかないと考えます。
(実は以前の私はプログラミングが目的になって学習してたんです…趣味だったし楽しかったのでいいんですけど)

ですので、プログラミングを始める際の目的に合った言語選びが、情報溢れるこの時代には重要だと思っております。

C言語ではありませんが、私がProcessingをかじっていた時に知った、『クリエイティブ・コーディング』の考え方をご紹介します。

Design by Numbersの場合は、デジタル・テクノロジーで創造性を発揮すると考えられていた対象はアーティストやデザイナーだけでした。それがmicro:bitの場合は、すべてのこどもたち、今後の展開を考えればそれはすべての人が対象と考えられていることです。つまりクリエイティブ・コーディングとは、すべてのひとが自分の考えを、コードで表現すること、すでにそう言える段階にまで発展してきているのが現在だと思います。

引用元:クリエイティブ・コーディングとは

昔と比べ、言語の拡張・多様化や、ネットの普及・発達、更にはフリーで優良な開発環境構築の容易さにより、プログラミングは誰でも気軽に始められるようなりました。

そして、そのプログラミングは、やりたいことの実現のために使うものといったものへと変化したのではないかと思います。

なので、第一にやりたいことの目的が大事で、そこから、適した言語を選ぶべきだと思います。

適した言語の探し方ですが、例えとして挙げてみるとすれば、その目的(ゲームが作りたい、アプリが作りたい)から検索して、一番初めに目に付いた、または調べていてよく目にするような言語が適しているのではないかと思います。

検索して初めに目に付いたり、よく目にするくらいでしたら、ある程度有名な言語であるかと思われますし、そうなると、当然その言語をその方向の目的で使用しているユーザーも多いはずです。

そうであれば、当然先駆者様も多いわけで、公式・非公式コミュニティも活発そうです。そういったコミュニティでは気軽に質問できるチャンネルが大抵設置されていると思いますので、そう言った場を活用させていただいて、先駆者様と交流しつつ、疑問・質問を気軽に解消できるかと思います。

逆に、あまりその目的から検索して目につかない言語である場合、目的を果たすまでの道のりが長くなって途中で挫折して放置の可能性が高いので、あまりお勧めできません

何も意地になってC言語にこだわらなくても、別の言語もありますから、そちらへ目を向けてみても良いと思います。必要になった時に学習するので十分だと思います。でも気力があるなら、気になった言語全部の言語を学習してみても!ww(最初から複数はおそらく無理です)

結局のところ言いたいこと –言語習得のために活用できるもの(ネット、先駆者様、コミュニティ、情報)は何でも活用しようね!

とかなんとか言いましたが学習の最初の一歩の目的は何でもいいとも思います。気の赴くまま、プログラミングの世界に浸って楽しんで、どっぷりとその世界にハマってしまえるのは楽しいですよ!
「プログラミングかっこいい!」「とりあえずなにかしたい!」「C言語?よくわかんない名前かっこいい!」
こんなのでもいいと思います。(ちなみに全部私。1→3→2な感じでした)

それでも、分からない事などで挫けそうになった場合は、先駆者様のお知恵を探すのにネットをさまよったり、交流するのにGitHubや、Qiita、またTwitterや、teratailと言うエンジニア特化型Q&Aサイトもありますし、いろんな場所に足を運んでみてください。

どの先駆者様相手でも、最低限礼儀をわきまえて質問すれば、邪険にされることはそうそうないと思いますよ。

言い出しっぺですし、一応趣味プログラマの端くれな私、ほろほろりでよろしければ、お手伝いできる範囲であれば手助けいたします!(怪しげな勧誘に聞こえるかもしれませんが、そういった目的はございません。お気軽にどうぞ!)

ほろほろりのTwitterアカウント:@_horo_horori
その他、当ブログ記事のコメント欄やコンタクトフォームへコメントやDMなどお寄せくだされば、すぐさまというのは難しいかと思いますが、できる限りでの対応はさせていただきます。

言語選びの後に –言語と目的を比べて考慮した上で、その言語を選んで学習しようとするときの注意点

いざ目的に合った、またはやりたい言語をみつけて、学習を始める段になってから、少し考慮して欲しいことがあります。

情報は鮮度が命

他の言語でも言えることですが、もし、C言語を学習するとなりましたら、それの専用の学習サイト様や関連の情報を探しにネットを右往左往、探索することになると思います。

ですが、こんなこと言っては失礼に当たるかと思いますが、失礼承知で言わせていただきます。

言語によって差はありますが言語の進化はとても速いので、言語によっては2年前の記事では古い部類になります。1年前の記事でも場合によっては古いものとなってしまいます。記述の仕方がもっと良い、トレンドの記述方法があったり、もしくは新しく廃止・変更があったりします。

そのため、ネット上の情報を片っ端から集めて照らし合わせて、
「この記述は古くないか?」
「新しい仕様に変わってたりしないか?」
など、そう言ったことも確認しながらの学習となってしまうので、基本的に2,3,4,5…と、閲覧するページやサイトを同時にタブで表示して見比べながら、1つの事柄で相当数のページを行き来して情報をかき集めながらやらなければならなかったりするんです。

だから、そういったことを考慮すると、勝手のわからない本当の初心者さんには、ネット上の情報で勉強するのをお勧めできなかったりします…(めちゃくちゃお世話になったサイト様いっぱいあるのですが…更新がなかったりするので…)

そういった場合、比較的新しく出た書籍を買うか、あるいは有料になってしまいますがチャット対応してくれる講師の方もいる専門の勉強サイトも結構出てきてるので、本当の初心者さんにはとりあえずそちらをお勧めします。

書籍は新刊を追いきれない上、目的によってだいぶ本の系統も違うため、お金をかけて選ぶ方に下手にお勧めはできないので置いといて、とりあえず一通り勉強できそうな無料サイト様をご紹介します。

本当の初心者さんへのオススメC言語学習無料サイト

C言語入門(全22回) – プログラミングならドットインストール

※一部有料要素あり
長くても3分くらいの動画で学習できる初心者さんには断然お勧めできるサイト様です。一度閲覧した動画はマークがつくので、段々と学習を終えるごとに”学習終了”のマークで埋まっていくページはモチベーション向上にもつながるかと思います。

また、このドットインストール様は、他の多くの言語も取り扱っていますので、「どんなものかな?」と他言語を覗いてみられるのにもおすすめですね。

C言語 入門 | 侍エンジニア塾ブログ

様々なことが基礎から応用まで幅広く取り扱いがあって、記事が豊富な上、管理が行き届いていますのでオススメです。有料の学習コースの告知がちょいちょい入る通り、有料のコースもあるようです。

C言語のことについての認識を改めてみようと思い、最初に↓のページを覗いたのですが、結構再確認したり、新しく認識することがありました。↓のページにも、C学習においておすすめのページやサイト等や、C言語そのものについてや、プログラマー需要なども書かれています。そこら辺の知識を得たい方は一読の価値があるかと思われます。

C言語入門完全攻略ガイド【基礎学習/応用学習/キャリア形成】|侍エンジニア塾ブログ(Samurai Blog) – プログラミング入門者向けサイト

苦しんで覚えるC言語

書籍化もされたサイト様。管理もされていそうで(2018~は更新がないですが)情報も比較的新しいです。私も再学習及び連載記事を書くときに巡回並みに常連化して入り浸ってお世話になりまくったサイト様です。あまり、普通の書籍などでは触れない内容までとことん解説を入れてくださっているので、 個人的には、”苦しんで”という割には凄く分かりやすく、身につく度合いも高いかと思います。

小出しに他言語とも比べての解説もされているので、プログラミング全体にも何となく詳しくなれるのではないかと思います。

一週間で身につくC言語の基本

最初っからしっかりとコンピュータの仕組みの事含めて学びたい方向けだと思います。若干情報が古かったりする部分もありますが、基本的な部分を学ぶ上ではそこまで問題にはならないレベルには新しいかと思います。また、結構実践にもつなげられる内容だったり、コード自体も比較的そういった方向で書かれていることがうかがえます。

用語辞典的なオススメサイト

C言語関数辞典

情報が古い場合がありますが、大抵の関数の使い方がシンプルな実践例とともに網羅されているサイト様。

IT用語辞典 e-Words

こんなところでご紹介するまでもないとは思う大手の辞典サイト様ですが、一応。IT用語が網羅されている辞典サイト様です。もちろん管理も行き届いてますので、おすすめ。ただし、IT用語がIT用語で解説されていたりするので、 初学者さんは、タブで何重にもその用語のことを調べることになる可能性もご考慮ください。

「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

本当の初学者さんにオススメな方のIT用語辞典サイト様。IT関係の用語を調べたい時にめちゃくちゃ活用しました。緩い感じのイラストから癒しをもらいつつ、イメージから入る感じで、用語の解説を掲載してくださってます。

とりあえずは、この辺のサイト様をお勧めさせていただきます。次の項では、初心者さんにはおすすめではありませんが、少し学習が進んだ後に、参考になるかと思われるサイト・ページ一覧をご紹介します。

初心者さんにオススメできる程ではないけど、C言語(再)学習時にお世話になった参考になるサイト・ページ

C言語入門

ここで初心者さんにご紹介するには、情報が古すぎてお勧めできないのですが、昔の仕様をしれたり、短いコードで淡々とC言語の歩き方を学べる老舗的なサイトさんだと思っています。

C言語開発 – プログラミング解説 – 碧色工房

初心者から少し前進したくらいの方にはお勧めのTips集が書かれています。

C言語学習塾 – 無料提供のC言語インタープリタで快適学習

『Study C』という開発環境での実行という前提で進められるのC言語学習という内容なのと、少し情報が古いかなと思ったので、初学者さんには向きません。ですが、実践時に「ここ、こういう場合、どうしたらいいんだろう?」という部分でためになるTips的な部分の記事は参考になる部分が多くあります。

初心者のためのポイント学習C言語

結構古いサイト様ではあるのですが、図や記事がわかりやすいかと思ったので、根本的な部分でどうしてもわからない部分があれば、こちらに掲載の記事でわかるようになるかもしれないと思い、ご紹介させていただきます。

若葉プログラミング塾 知識の玉手箱

このサイト様も結構古い感じです。用語というか、Tipsがわかりやすいかと思いました。あと、「こういうものの、一覧を見たい」と思った時に、大抵そういう一覧表があるので、そういう目的に。

C言語リファレンス|Microsoft Docs

一応、Microsoftの公式ドキュメントなので、管理もされているわけなのですが、時々、英語のままで翻訳されていなかったり、言い回しが英語を堅苦しく翻訳したまんまな上、ちょっと専門的用語が飛び交うし、初心者さんにはとっつきにくくてお勧めできないです。

ある程度分かるようになってから、覗きに行ってみるとVisual Studioでの仕様なんかも分かって上手く活用できるかと思うのですが。

あとがき

ここまで読んで下さりありがとうございました!m(_ _)m

長々とした話になってしまいましたが結論としましては、何かしらプログラミング言語触って楽しんでみて欲しいということですね。

直接関係のある言語(Cだと例えばC++とか、C#とかJavaとかPHPとか)でも、はたまた他の言語を触る時にでも、「あ、ここって、Cのあーいうことと同じ感じかな?」っていう勘が働くので、一つプログラミング言語知っているのと知らないのでは、学習するのが他言語であっても全体通しての学習のスムーズさや、最初の入りやすさが全然違います。

私の場合は再学習ではありますが、ずいぶんと最初の学習時から間が空いてブランクありました。忘れてしまっていたことの方が大半ではありましたが、それでも最初の経験と、最近主に使っていたJavaScriptも含め、プログラミング的な勘が働いてくれて、何も知らなかった頃よりは段違いにスムーズに学習出来ましたので、是非とも気になったら触ってみて欲しいのが本音です

ご意見・ご感想・ご質問、また誤字脱字や、もっといい方法あるよといったご指摘などございましたら、お手数ですがコメント欄やtwitterアカウントほろほろり(@_horo_horori)へお願いしますm(_ _)m

Pocket