見出し画像

Retro-gaming and so on

RE: プログラミング学習日記 2022/10/29〜

星田さんの記事に付いてのコメント。
今回は1つだけ。
猫でもわかるC言語プログラミング」で気をつける事、だ。

初心者に優しい、と評判のC言語入門書の定番書籍(だと思われているブツ)は大体次の3つになる。

んで、いっつも言ってるけど、実はこれらの書籍の中で標準Cを教えてる書籍は一冊もない。どれも30年前のANSI Cスタイルベースの「C言語らしきモノ」を教える本であって、JIS規格のCでさえ教えていない(版を重ねようが何だろうが、全く関係がない、って辺りが恐ろしい・笑)。
だから現時点ではC言語モドキを教えてる本だ、って事をまずは肝に銘じておこう。

そして「猫でもわかるC言語プログラミング」って本は読んだこたぁねぇんだけど、多分、恐らく、この3冊の本の中では更に特徴的な本なんじゃないかな、って予想している。
っつーこたぁ「違ってたらゴメン」って事だが。

実はこの三冊の内の最初の二冊、ってのは元々はWebページなんだ。従ってタダで読める
後者は30年前のC言語の仕様「だったもの」を基準にして書かれてるが、前者はもっと範囲が狭い。
と言うか、ぶっちゃけ、Microsoftの処理系限定の入門書籍/サイトなんだ。
そう、かつてのVisual C++の付録だったC言語処理系を対象にしている
つまり、Microsoft以外の処理系では使えない。言い換えると、多分Paiza.ioは使えないだろう(PaizaはGNUGCC辺り使ってると予想)。

大きなトコでは、猫Cはconio.hを使いまくってる。
このconio.h、名称はconsole input and outputの略称だが(酷い略称だ・笑)、読んで字の如く、「コンソール向けの入出力」を司るライブラリだ。
しかし、これは標準Cに含まれていない。いや、入門書籍がどれも30年前の仕様を基本としてるのなら、標準Cに含まれた事がない、と言った方がイイか。
これはMS-DOS時代、ボーランド、と言うメーカーのTurbo Cと言う処理系に付いてきたライブラリなんだけど、あっと言う間にMS-DOS以降のプロプライエタリなC言語処理系にも取り入れられた。言わばMS-DOS/WindowsでCプログラミングするなら必須、と言われるくらいに広まって、後発のMicrosoftのVisual C++内のCコンパイラにまで取り入れられたんだ。
元々C言語は色々と設計が甘いトコがあって、特に入出力に関して言うと「危険性が常にある」と言うような設計なのね。ISO(国際標準化機構)でC言語の仕様が改訂される度に廃止された「危険な関数」もあるんだけど、この入出力に関してはあんま手が入ってない(と言うか、セキュリティ版が追加されたりしてる)。
ボーランドを初めとした、MS-DOS系の言語ベンダーは、ハッキリ言っちゃって、参画初期からこの辺の危険性を良く知ってたんで、「簡易に、かつ安全に扱える入出力ライブラリの必要性」を分かってたわけだよ。だからこそ独自ライブラリを追加したんだけど。
ところが、UNIX陣営を中心としたISOのC言語仕様策定委員会はこの辺の事情を無視してんだよな(笑)。MS-DOS機とかWindowsのユーザーは世界最大数のユーザーを抱えている。言い換えると、世界最大数のC言語ユーザーはMS-DOS/Windowsでプログラミングしてるわけだわ。少なくともかつてはそうだったわけだよな。
世界最大のユーザー数を抱えてるプラットフォームを無視したような仕様改訂が、結果、過去から行われ続けてるんだ。多分、Microsoftを危険視したんだろう。そういう政治的決断だ。GNUのGCCの拡張は仕様には取り込む、けど、Microsoftのプラットフォームで広がった拡張は無視する、と決めたわけだ(笑)。

まぁ、そういう背景があるんで、猫Cを「やってみる」んだったらPaiza.ioを使わず、Visual C++をWindowsにダウンロード/インストールして使おう。そうすれば「動かない、なんで?」と言う悩みから開放される筈だ。
んで、猫Cはとことん「標準Cを学ぶ」本ではなく、あくまで「Windowsで、古いスタイルでCプログラミングを行う本」だと割り切ろう。
  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最近の「RE: プログラミング学習日記」カテゴリーもっと見る

最近の記事
バックナンバー
人気記事