スポンサーリンク

当たり前だけどプログラミング言語の教科書は進歩している(『スッキリわかるC言語入門』のアプローチ)

ちいラボエッセイプログラミング

インターネットを見ていたら、たまたま「堅苦しいCの教科書に疲れたらー」という広告が目に止まりました。

刺さるキャッチコピーだと思いました。

今回は、『スッキリわかるC言語入門』のアプローチをもとに、プログラミング言語の進歩について考えてみます。

ポイント
  • C言語も使いやすくなっている。
  • 開発環境の準備も手軽になっている。
  • 常識は変わるもの。

書籍のPR記事ではありませんが、興味があれば手にとって見てください。

スポンサーリンク

「堅苦しい教科書」ではない

こちらが広告の大きいサイズです。

本もネット広告を出すんだね。

個人的には、「スッキリ・ドット・ジェイピー」というドメイン名もツボでした。

(お笑い芸人チョコレート・プラネットの「ざっくり・ドット・コム」を思い出しました)
チョコレートプラネット「ざっくり」

確かに、プログラミングの書籍、特にC言語の場合は歴史がある分、「堅苦しく」なりがちなんです。

そういう「堅苦しい書籍」も好きなのですが、すでにそういう書籍はたくさんあるんですよね。

「スッキリわかるC言語入門」は、何が違うのか興味が湧いて、アクセスしてみました。

出典:『スッキリわかるC言語入門』 特徴紹介 – IT入門書籍 スッキリシリーズ

そういう意味で、よいキャッチコピーですよね。

スッキリわかるC言語入門 第2版
インプレス
¥5,940(2022/07/01 21:18時点)
対話形式で説明されるので、やや冗長なものの初心者にはわかりやすい。ただし、「文字列型が利用可能になるおまじない」(p.71)と紹介されているtypedef文など、少しスッキリしない箇所も。

「何を省くか」(後方互換性)

詳しくは、「『スッキリわかるC言語入門』 特徴紹介 – IT入門書籍 スッキリシリーズ」を読んでもらうとよいと思います。

とはいえ、ここでは、特に定番のトピック「変数宣言文を関数の先頭でするべき」を省いた経緯を、著者の中山 清喬さんが説明している箇所をご紹介します。

昔のC言語標準は、「変数宣言文は関数の先頭でしか行えない」という制約がありました。

(中略)

今でも、「後方互換性を大事にする」っていう考え方はとても大事なことだと思います。
ただですね…「1999年には、もう世界標準(C99)でこの制約は撤廃されている」んです。

(中略)

スッキリCの「変数宣言」の解説章では、「宣言位置縛り」の話題は一切でてきません。きっとはじめて学ぶ人は、関数呼び出しや制御構文同様、「あぁ、必要なときに、書けばいいんだな」としか思わないでしょう。

でも、それでいいと思うんです。

そこで私が、「いやー、昔はだな、ここに制約があってだな、これは恐らく関数宣言のコールスタックとローカル変数のスタック領域を隣接して設計したほうが言語処理系の設計が、、、」なんて嬉しそうに語り始めたら、それはもう「著者が自分が気持ちよくなるための解説」になってしまう

(中略)

それより、ただでさえ敷居が高い(と思われがちな)C言語の学習に取りかかってくれた方が、まだ不安を抱えながら学びはじめたばかりの1章や2章の段階で変な制約に煩わされず、なるべくスムーズに旅をしてもらったらいいと思うんです。

「スッキリC」が少し「ズレた入門書」である理由 – IT入門書籍 スッキリシリーズ

自分が気持ちよくなるための解説」は、モノを教える場合、一番気をつけないといけないことですよね。

私は、つい薀蓄話をしがちなので、要注意です💧

「教える」というのは、
何を伝えるか、ではなく、
何を伝えないか、が大事
と改めて思いました。

最近の商品やサービスは、どれも「引き算の発想」でヒットすることが多いね。

建築家のローエの言葉にも、「Less is More」があります。

クラウド開発環境

『スッキリわかるC言語』のもう一つの特長になっていたのは、「クラウド開発環境」です。

パソコンにコンパイラなど開発環境を用意するのではなく、インターネットにアクセスして、そのままコードを実行できる、というものです。

dokoC

出典:『スッキリわかるC言語入門』 特徴紹介 – IT入門書籍 スッキリシリーズ

2008年登場のdokojava以来、スッキリわかる入門シリーズで大好評の「クラウド学習用開発環境」。
この2021年冬、スッキリわかるC言語入門 第2版のリリースにあわせ、いよいよdokoCが登場しました!

ただし、執筆時(2022年1月2日)では、「段階公開中(フェーズ1)」ということで、購入読者限定でした。

Scratchのクラウド開発環境

このような「ウェブサーバ上で、コードを動かしてみる」というプラットフォームは、ほかにもあります。

例えば、プログラミング学習でよく取り上げられる「Scratch」も、インターネットにアクセスできる端末なら、すぐにプログラミングを試すことができます。

Scratch – Imagine, Program, Share

以前からプログラミングをしていると、「自分のPCではなく、サーバ上にプログラムを保存する」ということに、なんとなく違和感があります。しかし、最近はむしろ こっちのほうが主流になっています。

githubのようなレポジトリも、本質的にはコードをオンラインに一元管理しているんですよね。

JDoodleのオンライン開発環境

通常のプログラミング言語でも試せるサイトもあります。

JDoodleはその一つで、さまざまなプログラミング言語に対応していて、コードを入力して実行結果を確認することができます。

Online C Compiler – Online C Editor – Run C Online

ちょっとした「計算機」として遊べます。

AtCoder

「競技プログラミング」という分野もあります。

競技プログラミングでは、問題を解くプログラミングを書いて、提出します。

実行結果の正しさ、時間、メモリ効率などで評価されます。

AP1 – 付録1.コードテストの使い方

これも、オンライン上でプログラミングする仕組みを活用しています。

常識は変わる

プログラミング書籍『スッキリC』の特長を見ていると、プログラミングもどんどん進歩していて、「常識」が変わっていくことを感じます。

Amazonで一部を読むこともできます。もし、興味があれば手にとって見てください。

プログラミングは、頭の体操としても面白いですよー

人におすすめするわけではないですが、私は、ちょっと懐古趣味なので、K&Rの原典が一番好きです。

独自インタープリタ「hoc」の実装で、感動しました。

hocのexecute関数は美しすぎる(出典:hoc/code.c at master · richardfearn/hoc · GitHub
プログラミング言語C 第2版 ANSI規格準拠
共立出版
¥2,772(2022/07/01 21:18時点)
C言語が「抽象化の道具」として揃えられたことがよくわかります
UNIXプログラミング環境 (海外ブックス)
アスキー
¥178(2022/07/01 22:45時点)
C言語とUNIXの組み合わせのパワフルさを堪能できます

そういうとこやで……。

QRコードを読み込むと、関連記事を確認できます。
当たり前だけどプログラミング言語の教科書は進歩している(『スッキリわかるC言語入門』のアプローチ)
タイトルとURLをコピーしました