• ベストアンサー

ある種のコンピュータとは何ですか?

ある本を読んでいたところ次のような文がありました。 「C言語で文字データを扱う場合、そのデータの終わりに0(ゼロ)を入れるという規則になっていますが、ある種のコンピュータはこの処理方法では実行速度が極端に遅くなってしまいます。」 とありました。 ここにある「ある種のコンピュータ」とは具体的にどんなコンピュータを指しているのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

うむ。分からん(笑)。 こういうのって文脈見てみないと何とも言えないんだよね。 ただ、一般常識から言うと、実はC言語ってのは「汎用高級プログラミング言語」としては欠点があって、いわゆる僕らが普段使ってるコンピュータ、「ノイマン式」に最適化されてる、と言われている。 ノイマン型: https://ja.wikipedia.org/wiki/%E3%83%8E%E3%82%A4%E3%83%9E%E3%83%B3%E5%9E%8B つまり、C言語は「ノイマン型」以外のコンピュータだとあまり上手く「動かない」んだ。どんな高級プログラミング言語でも、ハードウェアレベルとあまりにも乖離し過ぎてると「上手く動かない」。それがC言語でさえ起こる、んだ。 いや、もともと「高級プログラミング言語」ってアイディアは、ハードウェアに密接せずに抽象的に「どんなシステムだろうと同じようにプログラミングが出来」、なおかつ書いたコードが可搬性がある、ように作られてるわけだけど、反面、ある意味C言語はその要請を満たしてないんだ。 C言語はあくまで現在主流の「ノイマン式コンピュータ」に密接に関連付けられて設計されている。 そんなわけで、「ある種のコンピュータ」ってのは「非ノイマン式」コンピュータの事を指している、と予想は出来る。 いや、ホントにそれを指してるかどうかは保証しないけどね。 例えば、厳密に言ってこれが「非ノイマン式」なのかどうかは分からないんだけど、ハードウェア・スタックマシン、って言われるタイプのコンピュータだとC言語自体が上手く動かない、ってのは良く知られてるんじゃないかしらん。 スタックマシン: https://ja.wikipedia.org/wiki/%E3%82%B9%E3%82%BF%E3%83%83%E3%82%AF%E3%83%9E%E3%82%B7%E3%83%B3 初期のPascalってのはJavaのように仮想マシンで動くように設計されていて、その仮想マシンはやっぱりスタックマシンだった。 Pascal: https://ja.wikipedia.org/wiki/Pascal pコードマシン: https://ja.wikipedia.org/wiki/P%E3%82%B3%E3%83%BC%E3%83%89%E3%83%9E%E3%82%B7%E3%83%B3 で、Pascalの「文字列」ってのはC言語での文字列とはまた別のシステムを採用してんだよね。 その辺に読み解く鍵があるんじゃないの? 多分。 【C言語】Pascal文字列とは: https://marycore.jp/prog/c-lang/pascal-strings/

6kk9d
質問者

お礼

回答ありがとう御座いました。 「スタックマシン」について調べてみようと思いました。 ベストアンサーであるかどうか今は判定できないのですが、とりあえずベストアンサーに選ぶことに致しました。

Powered by GRATICA
6kk9d
質問者

補足

回答ありがとうございます。 引用した文は、 「アセンブラ入門 CASL2 第三版」内田著 電子開発学園出版局 2012年9月発行 の8ページの7-10行目付近で 「アセンブラ言語を学習する価値」という節に書いてあるものです。

その他の回答 (2)

  • lumiheart
  • ベストアンサー率47% (1156/2446)
回答No.3

>「アセンブラ言語を学習する価値」 は、置いといて アセンブラ言語を使用する価値 なら 所謂、組み込み系でOS無し系 https://interface.cqpub.co.jp/ ラズパイの登場でわざわざOS無し系と書かねばならなくなったけど OS無し系はまだ絶滅してない 一時期は絶滅危惧種と呼ばれていたけれど、しぶとく生き残ってる 長い前置きでしたが >ある種のコンピュータ の一例として https://www.renesas.com/ja/products/microcontrollers-microprocessors/rl78-low-power-8-16-bit-mcus ワンチップマイコン これらのプログラムはC言語等の高級言語もあるけれど 高速にチューニングするにはアセンブラで直接書く >この処理方法では実行速度が極端に遅くなってしまいます。 C言語で書くと実行速度が10ms掛かるが アセンブラで書けば1msに短縮可能 って事はある

6kk9d
質問者

お礼

Renesas のマイコンを初めて知りました。 使えそうだなという印象です。 ありがとうございました。

Powered by GRATICA
回答No.2

> 引用した文は、 >「アセンブラ入門 CASL2 第三版」内田著 電子開発学園出版局 2012年9月発行 の8ページの7-10行目付近で >「アセンブラ言語を学習する価値」という節に書いてあるものです。 ああそう。 うん、依然詳細は分からんのだけど、多分、やっぱ対比としてはスタックマシンとかを念頭に置いてるんじゃねぇのかな。 CASL及びCOMETってのは「C言語が得意な」レジスタマシンをモデルにしてるんだ。 レジスタマシン: https://ja.wikipedia.org/wiki/%E3%83%AC%E3%82%B8%E3%82%B9%E3%82%BF%E3%83%9E%E3%82%B7%E3%83%B3 まぁ、僕らが普段使ってるコンピュータと同じシステムだな。「ノイマン式コンピュータ」のサブカテゴリとしてレジスタマシン、ってのが存在する。現在僕らが主に用いているコンピュータのCPUはほぼ全てレジスタマシンで、C言語もそれ用にチューンされている。 CASL/COMETがレジスタマシンを想定して設計している、って事は多分対称として考慮してる「ある種のコンピュータ」は単純にスタックマシンじゃねぇのかなぁ。実際に存在したマシンだし、結局「人気度合い」としては負けちゃったけど、そういうコンピュータがある/あったわけだ。 当然、CASL/COMETがレジスタマシンを対象として設計されてる、って事はスタックマシンに取っては無力なわけだ。ただ、アセンブリ言語ってのは「CPUによって違う」わけで(例えばIntelチップとMotorolaチップの機械語・アセンブリ言語は違う)、一々覚え直さなきゃいけないんだけど、それでも特定のスタックマシン用のアセンブリ言語を覚えれば高級言語の「非効率性」に惑わされないよ、って事が言いたいんじゃないの? CASL/COMETはあくまで「アセンブリ言語教育用システム」なんで、実用性は全く無いんだけど、反面、「教育用」ではあるんで、ここで基礎を覚えれば他のアセンブリ言語を学んだ際にも応用は効くよ、って言う主張がしたいんでしょう。 多分。

関連するQ&A