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

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

書籍のPR記事ではありませんが、興味があれば手にとって見てください。
1. 「堅苦しい教科書」ではない
こちらが広告の大きいサイズです。


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

個人的には、「スッキリ・ドット・ジェイピー」というドメイン名もツボでした。
(お笑い芸人チョコレート・プラネットの「ざっくり・ドット・コム」を思い出しました)
・チョコレートプラネット「ざっくり」
確かに、プログラミングの書籍、特にC言語の場合は歴史がある分、「堅苦しく」なりがちなんです。

そういう「堅苦しい書籍」も好きなのですが、すでにそういう書籍はたくさんあるんですよね。
「スッキリわかるC言語入門」は、何が違うのか興味が湧いて、アクセスしてみました。


そういう意味で、よいキャッチコピーですよね。
1-1. 「何を省くか」(後方互換性)
詳しくは、「『スッキリわかるC言語入門』 特徴紹介 – IT入門書籍 スッキリシリーズ」を読んでもらうとよいと思います。
とはいえ、ここでは、特に定番のトピック「変数宣言文を関数の先頭でするべき」を省いた経緯を、著者の中山 清喬さんが説明している箇所をご紹介します。
昔のC言語標準は、「変数宣言文は関数の先頭でしか行えない」という制約がありました。
(中略)
今でも、「後方互換性を大事にする」っていう考え方はとても大事なことだと思います。
ただですね…「1999年には、もう世界標準(C99)でこの制約は撤廃されている」んです。(中略)
スッキリCの「変数宣言」の解説章では、「宣言位置縛り」の話題は一切でてきません。きっとはじめて学ぶ人は、関数呼び出しや制御構文同様、「あぁ、必要なときに、書けばいいんだな」としか思わないでしょう。
でも、それでいいと思うんです。
そこで私が、「いやー、昔はだな、ここに制約があってだな、これは恐らく関数宣言のコールスタックとローカル変数のスタック領域を隣接して設計したほうが言語処理系の設計が、、、」なんて嬉しそうに語り始めたら、それはもう「著者が自分が気持ちよくなるための解説」になってしまう。
(中略)
それより、ただでさえ敷居が高い(と思われがちな)C言語の学習に取りかかってくれた方が、まだ不安を抱えながら学びはじめたばかりの1章や2章の段階で変な制約に煩わされず、なるべくスムーズに旅をしてもらったらいいと思うんです。
「スッキリC」が少し「ズレた入門書」である理由 – IT入門書籍 スッキリシリーズ
「自分が気持ちよくなるための解説」は、モノを教える場合、一番気をつけないといけないことですよね。

私は、つい薀蓄話をしがちなので、要注意です💧
「教える」というのは、
何を伝えるか、ではなく、
何を伝えないか、が大事、
と改めて思いました。

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

建築家のローエの言葉にも、「Less is More」があります。
2. クラウド開発環境
『スッキリわかるC言語』のもう一つの特長になっていたのは、「クラウド開発環境」です。
パソコンにコンパイラなど開発環境を用意するのではなく、インターネットにアクセスして、そのままコードを実行できる、というものです。

2008年登場のdokojava以来、スッキリわかる入門シリーズで大好評の「クラウド学習用開発環境」。
この2021年冬、スッキリわかるC言語入門 第2版のリリースにあわせ、いよいよdokoCが登場しました!
ただし、執筆時(2022年1月2日)では、「段階公開中(フェーズ1)」ということで、購入読者限定でした。

2-1. Scratchのクラウド開発環境
このような「ウェブサーバ上で、コードを動かしてみる」というプラットフォームは、ほかにもあります。
例えば、プログラミング学習でよく取り上げられる「Scratch」も、インターネットにアクセスできる端末なら、すぐにプログラミングを試すことができます。

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

githubのようなレポジトリも、本質的にはコードをオンラインに一元管理しているんですよね。
2-2. JDoodleのオンライン開発環境
通常のプログラミング言語でも試せるサイトもあります。
JDoodleはその一つで、さまざまなプログラミング言語に対応していて、コードを入力して実行結果を確認することができます。

ちょっとした「計算機」として遊べます。
2-3. AtCoder
「競技プログラミング」という分野もあります。
競技プログラミングでは、問題を解くプログラミングを書いて、提出します。
実行結果の正しさ、時間、メモリ効率などで評価されます。

これも、オンライン上でプログラミングする仕組みを活用しています。
3. 常識は変わる
プログラミング書籍『スッキリC』の特長を見ていると、プログラミングもどんどん進歩していて、「常識」が変わっていくことを感じます。
Amazonで一部を読むこともできます。もし、興味があれば手にとって見てください。

プログラミングは、頭の体操としても面白いですよー
こちらもどうぞ




人におすすめするわけではないですが、私は、ちょっと懐古趣味なので、K&Rの原典が一番好きです。
独自インタープリタ「hoc」の実装で、感動しました。


そういうとこやで……。