アルゴリズムとデータ構造

世の中のアルゴリズムにはそれに適したデータ構造がある。ものによってはデータ構造を構成すること自体がそのアルゴリズムの主要素だったりもする。そう考えるとデータ構造とその操作を一体化するのは自然だ。クラスというものはそのような経緯で生まれたのだろう。

でも、クラスにはカプセル化という役割もある。データを隠蔽し、外部からの操作を制限する。データ構造とその操作が一体化しているのは前提だ。

この二つは別の概念なのだけどよく似ている。だから多くの言語では同じように扱っている。ここをうまく切り分けた言語というのはあるだろうか。