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が見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 哲学 しかし日本人って…よくも悪くもプラグマティックですよね? 3 2023/06/18 22:39
- 哲学 説得力を論理の強さまたは修辞の巧みさの2つに分析するにはどうすると良いでしょうか? 4 2022/07/05 04:47
- 哲学 説得力を修辞の巧みさまたは論理の強さの2つに分析するにはどうすると良いでしょうか? 0 2022/07/20 05:46
- 教えて!goo 結局、ネットは、匿名という制度があったほうがよいのか、無いほうがよいのか 希望者だけでも氏素性を明ら 19 2023/03/07 23:24
- FX・外国為替取引 為替金額の決定方法 4 2022/04/24 11:12
- 発達障害・ダウン症・自閉症 私は幼い頃から周りの子と変わったところがあり社会人になってからも仕事が長続きせず上手くいかないことだ 3 2022/08/26 13:24
- C言語・C++・C# C言語初心者 構造体 課題について 1 2023/03/10 19:30
- 哲学 《人間を国家(公)的に》から《国家を人間的に》へ 26 2022/12/17 04:46
- 哲学 《人間を国家的(公的)に》から《国家を人間的に》へ 2 2022/03/23 06:07
- ネットワーク OSI参照モデルの各層の役割がわかりません。 3 2023/04/21 21:12
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
楽しくて最高のプログラミング...
-
rpa化する言語としてら何があり...
-
Pythonって何を意識した言語な...
-
最新のプログラム言語を学ぶに...
-
Int('1234') で、strをかんたん...
-
質問失礼します。 プログラム言...
-
プログラミング言語の制作方法...
-
C言語とhtmlの違いを どな...
-
C++における継続行
-
UNITY Float型の接尾辞fって
-
Delphiに詳しい方助けてくださ...
-
プログラミング言語について
-
CとC++は別物なんですか?
-
VBSでDim、Private、Publicの違い
-
F#って何??
-
チューリング完全とは何か?
-
accessという言語らしいのですが
-
引用符と二重引用符
-
初めてのプログラミング言語は...
-
今後必要とされる開発言語
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語、C+、C++、C#の違い
-
楽しくて最高のプログラミング...
-
Pythonって何を意識した言語な...
-
C言語とhtmlの違いを どな...
-
プログラムに書かれる"%"記号の...
-
COBOLでのNOT = の AND条件
-
C++ ってなんて読む?
-
質問失礼します。 プログラム言...
-
プログラミング言語の制作方法...
-
UNITY Float型の接尾辞fって
-
C言語って古いですか?
-
Int('1234') で、strをかんたん...
-
COBOLで文字タイプを数字...
-
TO_CHARで小数点以下がある場合...
-
最新のプログラム言語を学ぶに...
-
C++における継続行
-
vbaとc言語の関連性について
-
VBScriptで引数を省略したい場合
-
VBSでDim、Private、Publicの違い
-
HTMLとC++で、どんなホームペー...
おすすめ情報