• ベストアンサー
  • すぐに回答を!

systemCの抽象度とは

大変お世話になります。 現在、HDL言語を勉強し初めており、systemCなる言語があると知りました。 内容を見ると良く「抽象度が高い」との記述があるのですが、「抽象度が高い」というのは、論理設計において具体的にはどのようなことになるのでしょうか。色々なHPを見ているのですが、概念はなんとなくわかるのですが、具体例が判りません。論理設計における具体例を用いて説明出来る方いらっしゃいましたら、どうか回答お願い致します。

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数546
  • ありがとう数4

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

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

HDL言語と言うのは知りませんが、多分、一般的に言われる「抽象度が高い/低い」ってのが次のような事だと思います。 単純に、 ・ハードウェアにより近い位置で書かなければならない言語→抽象度が低い→例:アセンブリ言語、C言語等 ・ハードウェアからより離れていて、「より人間の思考法に近い」機能を持っている言語→抽象度が高い→例:Perl、Python、Ruby、Lisp等 と考えていいと思います。単純に言うと、同じ作業をするのに「より簡潔に書けて」「より基本機能が充実している」言語が「より抽象度が高い」と言っていいと思います。反面、抽象度が高い言語は「ハードウェアリソースを消費する」「スピードが劣る傾向がある」と言うマイナス面もあります。 具体例、ってのは難しいのですが……例えば良く使われる例では「再帰的定義」なんてのがありますね。 例えば。ポピュラーな例で言うと、 階乗f(n)=n!をプログラムせよ なんて例があります。 これは通常のプログラミングの流儀では「ループ構文」(例えばfor文)なんかで書くのが「オーソドックスな手」だと思われていますが、実際問題「繰り返し計算に持ち込む」のは、これは「ハードウェア寄り」の発想なんです。と言うのも、工学的な理由により、「繰り返し指定」と言う要素が切り離せないから、なんですね。よくよく考えてみると、元々の数式では別に「繰り返し」と言う要素は要求されてはいないのです。「繰り返しで書く」のは人間側が「よりハードウェアに近い部分で思考をそれに慣らしながら勉強しないと」書けないから、なんです。 反面、抽象度が高い技法、この場合「再帰的定義」が使用可能な場合、 f(n)=n!=n×f(n-1) と「数学的表記そのままの構造で」書けてしまいます。これが「抽象度の高い」言語の強力な部分なのです(が、反面、「いわゆるプログラムらしい」思考方法に慣れると逆に「難しい技法だ」と感じるようになっちゃう辺りが人間の困った部分なのですが・笑)。 もちろんこう言う「再帰的定義」はC言語なんかでも可能なんですが、反面、メモリ管理なんかが難しくって、逆に手間がかかっちゃうらしいですね。「抽象度が高い」言語ですと「ガベージコレクション」と言う「自動メモリ管理」の機能が組み込まれているケースが多いんで、このテの事をあんまり心配する必要もなくなっています。まあ、そう言う点でも「抽象度が高い」言語は機能が豊富なのです(反面、C言語なんかは、実は小さくて軽い、と言う利点もあります)。 一般に、「抽象度が高い」と同じ事を実現する為に書かなきゃならないコードの量は減っていく、んです。例えば「静的型付け」で変数の種類を一々宣言しなきゃならない言語に比べて、「自動で変数の型を判断してくれる」動的型付けはより「抽象度が高い」ですよね。その分変数の型を考える必要が無くなるんで「よりプログラミングの自由度が上がる」でしょう。 また、「最新の」機能の話をしなくても、例えばGo To文を書かなければならなかった時代に比べて、if~then構文で書けるようになった言語は「より抽象度が高い」ワケです。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

非常にご丁寧な回答誠に有難うございました。 かなり判りやすかったです、大変助かりました。 有難うございました。

関連するQ&A

  • 抽象的概念

    抽象的概念の必要性について400字以内で説明せよ。 抽象的概念は一般的には分かりにくいが、具体例を用いて示すと分かりやすいことがある。 具体例は抽象的概念の理解に役立つが、一般化することはできない。 抽象的概念は一般化することができるから必要である? うーん・・・。 現代文の教科書を読んだりしてみているのですが、論が深まりません。 どのように論を展開したらよいでしょうか。 お知恵を拝借したく思いますm(__)m

  • 「抽象概念」

    最近「抽象概念」という言葉を知って、まあなんとなく意味は解るんですが、ひとつ大きな疑問が残ります。 国語辞典には 抽象概念の例に「人間性、大、正直」 そして対語の 具体概念の例に「人間、大きいもの、正直者」 となっています。 じゃあ「言葉」はどっちなんでしょうか? どっちでもあるようなないような・・・ とても微妙~な気持ちになります。 どなたかなるたけ簡単に教えて下さい。

  • 小論文:抽象的概念の必要性

    なんども書き込んで不快に思われたらすみません。 小論文書けません。 途中まで書いたものを見てください、ここからどう続けたらよいか分かりません。指南くださりと嬉しいです。 抽象的概念は一般には分かりにくいので、具体例を用いて示すことがある。具体例は抽象的概念の理解には役立つが、具体例だけでは理解を前進させることはできない。 (段落変えて) 具体的な思考とは個々の特徴に注目して一つ一つ違うものとして捉えることだ。物事を細かい特徴で捉えるので、分かりやすい。 までは書けたのですが…。あと260字も書けません。 どう続けますか。 参考にさせてください。

  • LSI設計について・・・

    LSI設計においてHDLなどのハードウェアを記述する言語があります。 そこで、具体的に、回路設計をして、 うまく記述したプログラムが動作したら、 何がいいのでしょうか? 具体的に家電製品や自動車など、 電子回路でできていますが、 それと、出力された波形とはどう関係があるのでしょうか。 文系の人にもわかるような説明だと嬉しいです。 宜しくお願い致します。

  • 抽象化-具体化と帰納法-演繹法の概念について

    論理的思考について教えてください。 「抽象化、具体化」と「帰納法、演繹法」はどういう関係なのでしょうか。 WEB上にある情報や書籍化された情報は混乱しています。「抽象化=帰納法、具体化=演繹法」と解説している方もいらっしゃれば、「論理展開は帰納法、演繹法のみ」としている方もいらっしゃいます。 私の認識では、「抽象化≒帰納法」です。抽象化は無駄を排除する思考法である一方で、帰納法は一般化の方法であり、これらを同義とするのは間違っていると思います。 また「具体化≠演繹法」であると認識しています。具体化は端的に言えば大カテゴリを小カテゴリに分けることで、演繹法は大カテゴリを前提としてそれに当てはまる事象を論理的に思考する方法論であり、それらは似て非なるものだと思います。。 どちらもロジックツリーで表現されることが多いですが、、ピラミッド構造化してしまうから混乱を招いているように思います。 どちらも思考の方法論ではありますが、ピラミッドの構成法は異なるものなのでないかと思います。 論理的であることにおいて「抽象化、具体化」と「帰納法、演繹法」は外せない概念だと思うのですが、それらの違いを簡単に説明してくれいてる文献がないので、どなたか分かりやすくご教示いただけませんでしょうか。

  • 抽象クラスについて<Java>

    「抽象クラス」は一体何のためにあるのか教えてください。どのような場面で使用するとその効力が味わえるのかも教えていただきたいです。具体的に分かりやすい例を挙げて説明してくれるとうれしいです。 非常に困ってますので、よろしくお願いします!!

    • ベストアンサー
    • Java
  • 質問:“抽象化”と“一般化”

    よくオブジェクト指向の説明文などに使われている、“抽象化”と“一般化”という概念なのですが、この2つの概念は同一視されて使われている場合が多いように思われます。 ですが、私は“抽象化”と“一般化”は微妙に異なる概念に思えるのです。より具体的には、 ・一般化とは抽象化である。 とは言える気がするのですが、 ・抽象化とは一般化である。 とは言えない気がするのです。 つまりは、“抽象化”とは“一般化”の上位概念(メタ概念)ではないかと思うのですが。 どなたか、この疑問に明快な解を与えていただけないでしょうか?

  • なぜ人間はよく真理の法則を無限から有限的な概念に?

    情報学部出身の私は、タイトルのような現象を説明するために、「人がアナログ情報をデジタル情報に変える」という例によく挙げる。さらにもう一例を挙げれば、人間は昔から質や量のような抽象的な概念を表すために「数」というもっと具体的な概念を発明した。しかし、人間の世界であれ物質の宇宙であれ、あらゆる真理の法則は「有限的な概念」で表せようか? では、なぜ人間はよく真理の法則を無限(抽象的)から有限的な概念(具体的)に変えるのか?一方、「真理」というのは単なる直感的な観察や理論的な分析によって洞察することができるものなのだろうか?

  • 意味について

    言語学とかでよく出てくる「示差性」とはどういう概念なのでしょうか。もし具体例をあげて説明していただける方いらっしゃらるようでしたら、お願いします。

  • SystemCの学習法

    こんにちは、情報系の学部に通う大学生です。今まで音声や人工知能などの研究室に入るつもりで、情報系の単位ばかり取っていましたが、理由があって別の研究室に入りたいと思うようになりました。変更が可能か確認したとことろ、”SystemCの記述ができれば"ということでした。 そこで、SystemCの本を読んだのですが、さっぱり理解できません。プログラム自体はC++と同じなので、読むことができるのですが、正直、結局これが何を作っているのか、からわからないのです。 あまりに漠然と理解できないので、どう勉強していいかわかりません。 どうやって勉強したらよいのでしょうか?また、ソフトウェアの知識しかない私がSystemCを理解するには前知識として何を勉強すればいいのでしょうか? お薦めのSystemCの本も教えていただけるとうれしいです。 今後、研究室でやることはファームウェア~ハード記述ぐらいの範囲でハードの設計そのものをするわけではありません。ただし、ハードの仕様書を読んで記述することはあると思います。 あまりに理解できなくて混乱しているので漠然としていてすみませんが、学習するのに良い本、学習方法、必要な知識などなんでもかまわないのでアドバイスよろしくおねがいします。