配列について2019/03/10 15:12

配列が難しいのか簡単なのかについて。
こういうことを考える機会ができてしまったため、
配列は使うこと自体は簡単かもしれない。算数や数学の世界で配列って言ったらただ、添字のある変数ということになるが、パソコンと違うところはどこまでもimaginationの世界なので、実体がない。時間的なものも人間の計算能力に依存することになるが、パソコン上ではメモリ上に保持するだとか、処理能力だとか、解放だとかはどうしてもついて回る。
配列が簡単という意見を聞いてすごい、ジェネレーションギャップみたいなものを感じたのだけれど、配列が難しいというのも結局、昔の人の固定観念なのかもしれないとも思った。
配列が難しい、という言葉を聞くと、ん?と思うし、配列が簡単だという言葉を聞いても、えっと、なんだろうか、という気持ちになるし。
プログラミング言語が今では多様化して、メモリがどのくらい確保されているか、あまり考えなくても良くなった。解放し忘れだとか手間だとかを、いかに無くすかがずっと考えられてきたのが、言語の歴史そのものなのだと思う。
すべてのプログラマーが考える必要のないことかもしれない。
でも一応、裏でそういうことがあるかもしれないとか、ないかもしれないとか、でもそういうことが行われているかもしれないことは知らないよりは知っていたほうがいいかもしれない。
C言語の世界では、なぜ、ポインターは難しいと言われているのに配列は難しいとは言われないんだろうか。配列も内部的にはアドレスを代入できないポインターみたいなもので文法的にも同じにできるのに、というか同じにできるように考えられているのが良いところだと思うのだが、ただ、それが他の言語になると、配列が他の変数に代入されたときに実体がコピーされたのか同じ実体を指し示しているのかということが、言葉は違っていても内部動作は変わるので、結局意識しなければいけない。
内部的には、コピーするよりは、コピーしないで同じデータを参照したほうが処理が速くなるので、その扱い方が言語によって違っているために、内部で実はコピーや変換操作が走っていて遅くなっている可能性とか、実はコピーされていないため同じ実体を参照してて、こっちで値を変更したらあっちでも変わってしまったということがあったりする。
何が難しいのか何が簡単なのかということを考えていくと、一言で説明することのできない複合的な何かがあるから難しいように感じるのではないか、オブジェクト指向の汎化やループをパイプや再帰で表現するのも、どうすればできるのかを考えると難しいけどどうしてそうしたかったのかを考えると、意外とわかりやすかったりするかもしれないし。
そういうのを乱暴にまとめると、難しくてわからなかったとか、簡単にわかったとか、難しくてわからないからいいやとか簡単だからいいやとかそういう事自体をあまり考える必要がない気がするし人生自体常に発展途上なものかもしれないし結局まとまってないような気がするしまあいいやと思う。

コメント

_ rr8078 ― 2019/05/09 12:38

自分でも、長くてまとまりのない文章だと思う。

_ rr8078 ― 2019/05/09 12:44

この投稿にスパムコメントがついていたが、内容が英文であり、よく分からないものばかりであった。コメントをつけるのであれば、内容を関係のあるものにしてほしいと思う。
文章が長くてよく分からないと言うことであれば、それは自覚があるため、認めるが、ただ、そういうのも直接的に言わなければ分からないため、そのようにしてほしいと思う。

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://u38736.asablo.jp/blog/2019/03/10/9045538/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。