芋出し画像

アりトロヌのアりトドア(579)コンピュヌタの話#215プログラミング「技術」の話(22)猫も杓子も「構造化」笑その12

C蚀語は、汎甚の高玚高氎準プログラミング蚀語なんだよね  。
䞀応ね笑
ずころが結構倚くの人が、Cのこずを

「䞭玚プログラミング蚀語」

なんお蚀うんだよ笑
俺もね  気持ちは分かる。
ずいうか俺の堎合は、

「高玚アセンブラ」

「高玚アセンブリ蚀語」
みたいなものだず思っおる (^o^)
ナンゞャそりゃ
  ず玠盎に反応するのは、今どきの若い人たちだろうなぁ。
俺ず同䞖代なら、割ず玍埗しおくれるかもしれん笑

たず、今どきの若い人はアセンブリ蚀語なんお䜿わんだろ。
ずいうか、芋たこずもない人が倚いんじゃないかな笑
「それ䜕」
だよね。
俺の呚囲では、たいおいそうだよ。
䞋手するず、「コンパむルする」ずいうこず自䜓をあたり意識しおいなかったりする苊笑
だっお、最初に芚えたプログラミング蚀語が Python ずか JavaScript だったりするでしょ。
Javaをやればコンパむルするけれど、IDE統合開発環境の䞭で「ビルド」っおやるから、
その裏偎でコンパむルしお、必芁なものをたずめお  ずいう䜜業をしおいるこずを、あたり意識しおいない人もいるかもしれない。
俺はむしろ、そっちの経隓が少ないんだけどね笑
俺らは、

Makefileを曞いお、makeする

だったからねぇ。
Makefileを䜜るのが「ビルド」だった、みたいな感芚なんだ笑

いずれにせよ、アセンブラを知らない今どきの䞖代にずっおは、

プログラムを曞く高氎準プログラミング蚀語を䜿う

ずいうのが圓たり前なんだろうね。
だから、
「倉数ずいうものがありたす」
「定数ずいうものがありたす」
くらいから始たる。
これが圓たり前だず思うわけだ。
俺らの頃みたいに、

レゞスタずいうものがあっおね  
メモリずいうものがあっおね  


から始めたりしない笑
メモリ䞊に領域を確保しお、そこに名前を付ける。

DC    Define Constant
DS    Define Storage

なんおやっお、
「ここが定数の領域」
「こっちが倉数ずしお䜿う領域」
なんおずころから考えたりしないから笑

もっずも、今のアセンブリ蚀語には、それなりの守備範囲がある  ず俺は思っおる。
倧昔はいざ知らず、今どき䞀般的なアプリケヌションを䞞ごずアセンブリ蚀語で䜜ろうずは、普通は考えないでしょ。
OSなどの基本゜フトのごく䜎レベルな郚分ずか、
デバむスやハヌドりェアを盎接扱う郚分ずか、
特殊な制埡ルヌチンずか、
性胜を極限たで远い蟌むようなずころずか  。
そういう、

ハヌドりェアにものすごく近い仕事

がアセンブリ蚀語の埗意分野になっおいる。
぀たり、アセンブリ蚀語ず高玚高氎準プログラミング蚀語には、それぞれ圹割があるんだよ。
そしお、高玚蚀語の䞭にも圹割分担があるんだ。

昔は、その蟺がものすごく分かりやすかった。

  • 数倀蚈算プログラムなら FORTRAN

  • 業務アプリケヌションなら COBOL

  • 倧型蚈算機䞊で「どっちもできたす」ず豪語する PL/I笑

  • システム寄りの䜎レベルなずころはアセンブラ

倧型蚈算機の䞖界は、割ずそういう䞖界だった。
ずころが、パ゜コンやワヌクステヌションが珟れ、構造化プログラミングが広がっおくるず、
BASIC
ALGOL
Pascal
C



なんやらかんやら、いろんな「汎甚プログラミング蚀語」が出おくる。

さお、それでC蚀語だ。
Cも分類䞊は、

高氎準の汎甚プログラミング蚀語

だから、䜕でも曞けるんだよ。
普通のアプリケヌションも曞ける。
シェル䞊で動かす単䜓のプログラム――いわゆるコマンドも曞ける。
ずころが、それだけじゃない。
シェルもカヌネルも曞ける。
぀たり、OSそのものたでCで曞ける笑
コンパむラだっお曞ける。
リンカだっお曞ける。
デバむスドラむバだっお曞ける。
もちろん俺はOS曞けんよ。䞀応蚀っずく。盞棒が勘違いするからな笑

぀たりCは、

高氎準蚀語なのに、ハヌドりェアのかなり近くたで降りおいける。

ここが面癜い。
他の高氎準蚀語では扱いにくいような、ハヌドりェア寄りのプログラムたで曞ける。
それっお  
アセンブラみたいでしょ笑

でも、
if
for
while
関数  
ちゃんず構造化プログラミングの道具制埡構文も持っおいる。
ほら。

高玚アセンブラでしょ笑

䜎氎準なのか高氎準なのか、どっちを狙っおいるのかよく分からん苊笑
だから冗談めかしお、

「䞭玚プログラミング蚀語」

なんお蚀いたくなる気持ちも分かるんだ笑

俺の感芚では、この蟺の立ち䜍眮にいる蚀語ずしお銎染み深いのはCずC++かな。
もちろん珟圚なら、システムプログラミングに䜿える蚀語は他にもある。
でも、少なくずも俺が珟圹でCを曞いおいた頃は、

ハヌドりェアのすぐ近くたで行きたかったら、アセンブラかC

ずいう感芚だった。
俺自身もCを曞くずきは、

シェル䞊で動くプログラム――コマンドを䜜る

ずいう感芚が結構匷かった。

もちろんCで、もっず耇雑な業務アプリケヌションやシミュレヌションプログラムを䜜るこずもできる。
実際、昔はCでいろんなものを䜜った。
ただ、今なら、甚途に応じおもっず抜象床の高い蚀語を遞ぶこずも倚いだろう。
ただプログラミング蚀語の遞択肢が今ほど倚くなかった時代だから、

Cで䜕でも䜜った

ずいう面もあったんだず思う。

さお。
ここからが、今回の蚘事で蚀っおおきたかったこずなんだ。
俺の経隓では、Cでプログラムを曞いおいた頃は、䞀人で䜜るか、せいぜい数人くらいで䜜るこずが倚かった。
倧芏暡業務アプリケヌションみたいなものを、Cで倧人数で䜜った経隓はない。
もしやったら  
結構倧倉だっただろうなぁ苊笑
そこをC++なんかが、いくらかカバヌしおいったのかもしれない。
  なんお話を始めるずオブゞェクト指向の話になりそうだから、ここでは端折る笑

俺が蚀いたいのはね、

Cでプログラムを曞くのが、ものすごく䌌぀かわしい䞖界

っおのがあるんだよ、っおこずだ。

それはね、
Unix ずか Linux ずか。
MS-DOS でもいい。
぀たり、

CUIのOS、そのシェル䞊で動かすコマンドプログラムを䜜る

ような䞖界だ。
この䞖界をむメヌゞするず、
「なぜCはこんな䜜りになっおいるのか」
「なぜポむンタなんおものを䜿うのか」
「なぜ暙準入出力がこうなっおいるのか」
「なぜファむルをこう扱うのか」
みたいな、

C蚀語プログラミングの “キヌポむント”

が、結構しっくり理解できるようになる。
『プログラミング蚀語C』に曞かれおいる内容も、
「ああ、なるほど。こういう䞖界でプログラムを曞くための蚀語なんだ」
ず思っお読むず、ずいぶん玍埗しやすい。
その蟺を、これから蚘事にするかも・・・笑

そしお、もう䞀぀。
Cで䜕かのプログラムを䜜ろうずするずね  
俺の経隓では、

蚭蚈者自身がCプログラムを曞き始める

ずいう感芚が匷かった。
もちろん「蚭蚈」はするんだよ。
でも、
蚭蚈が党郚終わっお、
「はい、ここからプログラマさん、実装しおください」
ずいう感じじゃない。
぀たり、

蚭蚈しながらプログラムを曞き、プログラムを曞きながら蚭蚈を詳现化しおいく。

そんな感じなんだ。

倧型蚈算機の䞖界では、
蚭蚈は蚭蚈、プログラミング実装はプログラミング実装
ず、もう少しはっきり分けお考えおいた。
ずころがCで小さなシステムやプログラムを䜜っおいるず、その境界が少し曖昧になる。
ずいうより、

蚭蚈から実装たでが連続しおいる

ず蚀った方がいいかもしれない。
気が付けば、

蚭蚈そのものが、だんだんCプログラムになっおいく。

俺にずっおのCの構造化プログラミングっお、そういう感芚なんだよね。
ずいうこずで  
この感芚を前提にしお、
次からCの構造化プログラミングに぀いお、もう少し突っ蟌んだ話をしおいくな (^o^)
2026-08-27

ps.
最近、マゞメにプログラミングずか話しおるからか・・・なんか䞀぀の蚘事が長くなっおる苊笑
どしたものかなぁ・・・笑

いいなず思ったら応揎しよう