C言語撃退講座
〜 K&Rは置いて、俺の話を聞け

[表紙]C言語撃退講座 〜

A5判/248ページ

定価(本体1,880円+税)

ISBN 978-4-7741-3533-5

ただいま弊社在庫はございません。

→学校・法人一括購入ご検討の皆様へ

書籍の概要

この本の概要

C言語は難しくない!ポインタは難関ではない! どうか多くの人にC言語を好きになってほしい,それが著者の願いだ。なぜC言語はプログラミング言語の覇者になったかご存じか? その身も蓋もない真実(?)に目が点になるがよい。「変数」「条件分岐」「ポインタ」など初学者が理解しにくいポイントも,ホレこんなもんじゃよと撃退してくれる。コードは最小限,はじめてでも理解可能。ときにはあらぬ方向へ脱線しながらも巧みな話術で繰り広げられる「目からウロコ」の講義を聞いているうちに,C言語恐れるに足らじと自信がつくはずだ。

こんな方におすすめ

  • これからC言語に挑戦してみようとしている方,挫折した方
  • C言語を愛する方

著者の一言

「おいちょっと待てよ。いまさらC言語か?」と思われるかもしれませんが,C言語は,現在主流となっている種々のプログラミング言語の共通の先祖であり,自身もまだまだ現役の汎用開発用言語として各方面で利用されています。

C言語こそ,実際のアプリケーション開発用という意味では無論のこと,プログラミングとはなにか,プログラムとはどう動くのかという,技術者にとって必須の知識を得るという意味でも,習得しておくべき言語であると筆者は思うのです。

しかし,C言語習得を途中であきらめたり,初めから二の足を踏んでしまう方が多いのが現状です。といいますか,昔からそういうことは繰り返されてきました。

筆者は誤解に過ぎないと考えていますが,一般的にC言語は,ポインタの存在や,実用に耐えうるプログラムを作成しようとすれば,それに関わるライブラリの使用方法を理解する必要があるなどの理由により習得が困難とされているのに加え,昨今では,大多数の職業プログラマが従事する企業情報システム開発のシーンから,徐々にC言語の姿が消えつつある現在では,習得に向け動き出そうかというきっかけがつかめないことも多いように思います。

しかし,それでもあえて,絶対にC言語を習得する価値はあり,ソフトウェア技術者としてのスキルアップは間違いなしということを皆様にお伝えしたくて,この本を書きました。

過去にC言語習得にチャレンジして一敗地にまみれた方,そして,なんとなくC言語が気になってはいるけれども,習得に二の足を踏んでいる方に本書をお勧めしたいと思います。

小難しい技術的なトピックは極力抑え,楽しみながらも,読後C言語習得の決意がフツフツと燃え滾ってくるような素敵な読み物になっていると自負しています。

本編では,筆者の分身であるC言語撃退講座講師,「実装者さん」が,異常なハイテンションでC言語について熱く語っていますが,これは,筆者のC言語,そしてプログラミングに対する愛情の発露とお考えください。

それではご一緒に,C言語のやつめを足腰立たぬまで叩きのめしてやろうではありませんか。

目次

開講の言葉 いまこそC言語攻略のとき

第1章 C言語伝説を検証する

第1回 なぜC言語はプログラミング言語の王者となりえたのか?

  • そもそもなぜC言語なのか? A言語やB言語はどこへ雲隠れしたのか?
  • ドキッ。「はじめてのC」
  • C言語がプログラミング言語の王者になった4つの理由
  • 理由その1 少ないキーストロークでプログラムが作れちゃうぜ
  • 理由その2 C言語って,とことんアホだ
  • 理由その3 気がついたら,結局ライバルがいなかった
  • そして,最後にして最大の理由は?

第2回 なぜ人は誰しも一度はC言語の習得を目指すのか?

  • C言語を習得したい理由とは?
  • C言語でなきゃ実現できないものがある
  • 技術者魂がC言語習得を求めてやまない

第3回 なぜ人はC言語の習得が困難であると思うのか?

  • 『K&R』とはなんのことか?
  • 本当にC言語の習得は難しいのか?
  • 「ポインタはC言語最大の難関」という黒い噂に惑わされるな
  • もっとも「文法的」に難しい言語はもしかしてPerl?
  • なんで同じ処理を実現する方法がいろいろあるのだ?
  • なぜCGIにはPerlなのか?
  • 言語そのものの難しさと,作成するシステムの難解さを混同するな
  • そして結論

第4回 そもそもどういう状態になればC言語を習得したと言えるのか?

  • この講義にコードが出てこないのは?
  • プログラミング言語を使いこなすということは?
  • Visual Studio.NET 2005の驚くべき(?)機能
  • プログラミング言語の習得とライブラリの記憶とは別物だ

第5回 C言語を取り巻く有象無象

  • なぜC言語に似た言語が世に氾濫することになってしまったのか?
  • C,C++言語に似た言語なら移行が楽
  • 新興言語の99%は,C,C++言語でできている
  • なぜC言語を知っていれば,Java,C#,PHPなどの修得が容易になるのに,逆は真とならないのか?
  • PHPを取り巻く状況
  • PHPの使命とは?
  • 構造化言語(C,C++)から,オブジェクト指向言語(C#,Java)への移行が楽なわけ

第2章 C言語コードを読み解く

第6回 なぜ他人の書いたC言語のソースコードは読みにくいのか?

  • 他人の書いたC言語のソースコードが読みにくい4つの理由
  • なんか,文章みたい。なFORTRANとCOBOL
  • C言語のプログラムは関数の集合体である
  • コメントもつけようで凶器となる --「すらすらコメント」の罠
  • 仕掛けたprintf()が動かなかったワケ
  • マクロ定義の功罪1 -関数なのかマクロなのかわからない
  • マクロ定義の功罪2 -define値と直値が混在するワケ
  • 恐怖のメタプログラミング
  • 機械語プログラムはブロックを組み立てるようなもの
  • C言語エキスパートによる匠の技!?

第7回 ではどうすれば,他人の書いたC言語のソースを解析できるのか?

  • C言語コード解析をスムーズに行う唯一無二の方法とは?
  • コード解析には関数マップを作成するとよい
  • 関数マップ作成にはWikiが便利

第8回 どうすれば,他人が,そしてなにより自分が後々わかりやすいコードを書くことができるのか?

  • 他人の立場に立ってコードを書くとは?
  • コメントで複数行を無効にしない
  • マクロ定義では心配りのコメントを残す
  • C言語技術者の性癖を出さずにコーディングするとは?
  • 排他的論理和演算子!
  • 値の入れ替えを2進数で表現してみると
  • たくさんのコードを読み,書き,動かそう

第3章 変数を撃退する

第9回 そもそもC言語における変数とはなにか?

  • 変数は箱? で,どこに置かれるのだ?
  • どつぼはまりまくりコード。そのワケは?
  • C言語の変数定義とは,単なるメモリ領域確保に過ぎない

第10回 C言語における変数の種類

  • 配列の境界には魔物が潜む
  • グローバル変数とローカル変数
  • 静的変数というものもあるのだが……
  • 動的変数という存在
  • メモリを動的に確保する価値は?

第11回 なぜ変数に型があるのか?

  • スクリプト言語には型がない!?
  • C言語の変数に型があるのは,その型に定められたサイズ分の領域をメモリ上に確保するために過ぎない
  • 型が違う変数を格納すると……
  • 型キャストの嵐を乗り越えよ

第12回 構造体について補足しておくべきこと

  • FILE構造体の中身を見る
  • 構造体のメリットとは?
  • 構造体の初期値設定
  • 構造体の引き渡し

第4章 制御構造を撃退する

第13回 C言語の制御構造を俯瞰する

  • そもそもmain関数の書式のお作法とは?
  • プログラム制御構造とgoto文
  • goto命令の使用は是か否か?
  • 大域ジャンプ機能とは?

第14回 C言語コードのエトセトラ

  • 絶対に成立しない条件式を記述するワケ
  • 必ず真となる条件式を記述するワケ
  • 標準入出力とりダイレクトとパイプ
  • FILEポインタで標準入出力を扱う

第5章 さあ。いまこそ最終ボス,ポインタ打倒のとき

第15回 本当にポインタはC言語最大の難関なのか?

  • ポインタの理解は,誰がなんと言おうと難しくない
  • ポインタはメモリ上の位置を指し示す機能
  • ポインタが使えてなにが嬉しいのか?
  • ポインタに型があるのはなぜか?
  • アスタリスクは誰のもの?
  • 似て非なるポインタと参照
  • ポインタの駆使こそ,C言語プログラミングの醍醐味だ
  • 関数ポインタとは?
  • 文字の複写をポインタで……
  • では,2番目の文字から複写するときは?
  • 構造体のサイズを取得するつもりが……
  • 文字列の代入でのワナ
  • トリを務めるとっておきの書法はコレだ!

おわりに そしてC言語に未来はあるのか?

付録1 205X年のC言語

付録2 巻末特別座談会「私たちにとってC言語とはなにか?」

著者プロフィール

丸岡孝司(まるおかたかし)

1959年神戸市生まれ,大学卒業後は中小零細ソフトウェアハウスを転々とした後,フリーランスとなってからは,開発現場を転々とする。システム開発の仕事に対しては,斜に構えているところがあるが,プログラミングに対する熱き心は人一倍(のつもり)。

著書:『絶対現場主義−VisualC#実践講座』(ラトルズ)