アカウント名:
パスワード:
HackとかSwiftとか最近は型のある方向に進みつつある気がするので Erlang はちょっと……
byte型とかinteger型とLong型って今のCPUにとっちゃ、あまり処理速度差がないんじゃないですかね。tableとかstringとかdecimalはまた別ですけど。Boolean型は専用レジスタがあるようですが。64bitだとレジスタが増えたからどうこういうのは都市伝説として。究極的にはメモリアドレスも浮動小数点で表現するようになるのでしょうか。そうなると型クラス以外の、データ型が少ないほうが良さそうですね。
byte型とかinteger型とLong型って今のCPUにとっちゃ、あまり処理速度差がないんじゃないですかね。
レジスタサイズ以下なら基本的に演算速度は変わらない。ただ今のCPUは演算よりメモリーアクセスの方が二桁近く遅いので、結果的にはデータサイズの差≒処理速度の差になりやすい。
JavaScriptみたいに仕様的に全部doubleでも、JITエンジンで使われ方の統計からintと仮定して処理することもできるし、asm.jsで分かりやすいように、書かれ方によっては完全にintだと決め打つこともできる。型付数値配列はクラスとして提供すればいいだけだし。
性能の問題で型を必要としているのって, 計算機資源が限られていたり, 厳密な実行時間保証が求められる組み込み分野や, 数値計算とかの限られた範囲だと思います.
今, 型付き言語が求められているってのは, 実行前/実行時の論理整合性を機械的にチェックしやすいところにあるのでしょう. 大規模開発用言語では普通にある機能ですが, スクリプト言語であっても従来の大規模システムに匹敵する規模のシステムを取り扱うようになってきて, 型が求められてきたのだと思います.
個人的には, モジュール化とか分割コンパイルとかを行なうようになったら, 型チェックが無いとやってく自信がありません.
文字列をbyte列として扱いたい時はありますよね。IntegerとLongは確かに区別する必然性は減ってます。でも、近代的な言語だと整数は任意精度だったりしますから、そういうオーバーヘッドの大きい整数とCPUネイティブな整数の区別は欲しいです。そう考えるとやはり、整数にも型を付けて宣言する必然性は無くならないように思います。Haskell がそんな感じですね。
#メモリアドレスが浮動小数点は無いんじゃないかなぁ。#OpenCLだったかCUDAだったかがそんな感じですが。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
日本発のオープンソースソフトウェアは42件 -- ある官僚
型の世界へようこそ (スコア:0)
HackとかSwiftとか最近は型のある方向に進みつつある気がするので Erlang はちょっと……
Re: (スコア:0)
byte型とかinteger型とLong型って今のCPUにとっちゃ、あまり処理速度差がないんじゃないですかね。
tableとかstringとかdecimalはまた別ですけど。Boolean型は専用レジスタがあるようですが。
64bitだとレジスタが増えたからどうこういうのは都市伝説として。
究極的にはメモリアドレスも浮動小数点で表現するようになるのでしょうか。
そうなると型クラス以外の、データ型が少ないほうが良さそうですね。
Re:型の世界へようこそ (スコア:1)
byte型とかinteger型とLong型って今のCPUにとっちゃ、あまり処理速度差がないんじゃないですかね。
レジスタサイズ以下なら基本的に演算速度は変わらない。
ただ今のCPUは演算よりメモリーアクセスの方が二桁近く遅いので、結果的にはデータサイズの差≒処理速度の差になりやすい。
Re: (スコア:0)
JavaScriptみたいに仕様的に全部doubleでも、JITエンジンで使われ方の統計からintと仮定して処理することもできるし、asm.jsで分かりやすいように、書かれ方によっては完全にintだと決め打つこともできる。
型付数値配列はクラスとして提供すればいいだけだし。
Re:型の世界へようこそ (スコア:1)
性能の問題で型を必要としているのって, 計算機資源が限られていたり, 厳密な実行時間保証が求められる組み込み分野や, 数値計算とかの限られた範囲だと思います.
今, 型付き言語が求められているってのは, 実行前/実行時の論理整合性を機械的にチェックしやすいところにあるのでしょう. 大規模開発用言語では普通にある機能ですが, スクリプト言語であっても従来の大規模システムに匹敵する規模のシステムを取り扱うようになってきて, 型が求められてきたのだと思います.
個人的には, モジュール化とか分割コンパイルとかを行なうようになったら, 型チェックが無いとやってく自信がありません.
Re: (スコア:0)
文字列をbyte列として扱いたい時はありますよね。
IntegerとLongは確かに区別する必然性は減ってます。
でも、近代的な言語だと整数は任意精度だったりしますから、
そういうオーバーヘッドの大きい整数とCPUネイティブな整数の区別は欲しいです。
そう考えるとやはり、整数にも型を付けて宣言する必然性は無くならないように思います。
Haskell がそんな感じですね。
#メモリアドレスが浮動小数点は無いんじゃないかなぁ。
#OpenCLだったかCUDAだったかがそんな感じですが。