コンピューティング

執筆:2011年6月6日 〜 2011年6月9日

このページを、全ての二次元のおにゃのこと、
今まで出会ってきた全てのおにゃのこ(新品)に捧げる




コンピュータとは所詮0と1の組み合わせ
そこには現在、われわれが使っているプログラミング言語の概念など
微塵も感じさせない
では、そのクラスや関数という概念はどこからやってきたのか?
たぶん、誰かが最初に作ったんだ
そこにもうひとつの疑問が浮かび上がる
本当にその概念は効率的なのか?

その問いに答えれる者はいないと思う
もし今一度、0と1の世界から人がコンピューティングをやり直し、
先入観のない状態で創世しなおせば、今あるコンピュータとは全く別のものになるであろう

C言語というものがある

#include"stdio.h"
void main() {
  printf(" test-- ");
}
これこそが、今現在、コンピューティングの進化の足を引っ張っている足かせだという事に
みなも気づいてほしい
もし明日からC言語がなかったらどうなるか
誰かが、言語を作るだろう
そう、それもC言語よりもよっぽど良い言語を
C言語によくにた言語にC++というものもある
けれどこれは、C言語の居場所をのっとる為に作られた言語ではないと、漏れは思う
C++というのは、コンパイラ言語においてスクリプト言語並みのことを、実行速度を保ったまま
テンプレートなどのメタプログラミングによって行おうということが目標の言語だと、感じている
C++でまともにオブジェクト指向しようとすると悲惨な状況に陥ることは明白、
趣味で行うのではなく、開発効率を出す為にC++を選択するのであれば
よほどC++に精通していない限り不可能ということ

話を戻して、なぜC言語がコンピューティングの進化への足かせとなっているかという話だけど
それはC言語の開発が止まっている事にある
なぜ世界でもっとも多く使われている言語にもかかわらず開発停止されているのかが不明
それならいっそないほうが良い
特に厳しいのはこのオブジェクト指向の流行している世の中においてクラスがないことと、
C系のほとんどの言語にいえるけど「;」のデリミタが存在している事と、
ユーティリティ関数が乏しい事、
少しあげるだけでいくつもある

ポインタを直接いじる言語というのはハードウェア関連を組む時だけで良い
ソフトウェアをかいているのにポインタを意識しないといけないのは、少し効率が悪すぎる
クラスがない為にCではこれを書くことが出来ない

class A
  attr_accessor :x
  def func
    self.x = 7
  end
end
a = A.new
a.func


Cでかくと
a.func();

これを記述するためには、
構造体と関数と関数ポインタを定義して自分でつなぎ合わせなくちゃならないし

selfもないので
func(&a);
のように、いちいち&で渡さなければならない
こういう些細なことで、開発効率を下げていく


なのでC言語で書くしかない状況だとしても、もう時代は2011年なんです
C言語を書かない、これ以上、C言語の遺産を世界に作らない事が
世界の進歩になっていくと、漏れは感じております

進化を与えた言語Ruby

これは大きく、前進させたといっていいと思う 特に、括弧や、"" 等、シンタックスシュガーが多く取り入れられている為 かなりの書きやすさを誇ってる この言語だと、正直もう手続きだろうとOOだろうと、何を考えてソースコードを書こうと そういう指向関係なしにプログラムが完成するといって良い ネームスペースもちゃんとしているので @@ @ $ このあたりの変数使いまくったソースコードにさえしない限り、破綻することがない言語だと感じてる

永遠に残る言語Lisp

これは、永遠に使われ続ける言語です なぜかっていうと見ればわかると思うけど (a b c d (e f g)) これがLispのソースコードを抽象化した形なんです ()の最初の1つ目が関数の役割をし、残りが引数となる これはある意味、プログラミングの真理に近いものなので 永久に受け継がれていく言語 ただしそれが書きやすいかどうかは別の問題 (+ 3 56 7 88) たとえばこれとか (+ 3 56 7 (- 3 56 7 88)) こうなってくると、人には読みにくいと思う まぁなれちゃえばいいんだけどね・・・なかなか、なれることが出来ない けど、とりあえず (a b c) このルールを守っているLispという言語は、 これからプログラミングの世界にどんな概念がやってこようと すべてを吸収してしまうんです だから、Rubyよりも、その吸収という一点においては強い 自身の書き方を制約することによってどんな概念でも取り入れてしまう 一方Rubyや、C#等、流行りものの言語っていうのは、 現在、流行っているプログラミング手法に特化した言語なので 時代の流れによってもしその流行スタイルが変われば、その言語は日の目を見ることはなくなって いずれ消えていく、 けれどLispにそれはない 自分はそこまでLispというかプログラミングに没頭する気はないというか これから20年間Lispという言語を使い続けるよりも 流行りものの言語を、順番に乗り換えていくスタイルのほうが 効率が良いと感じていて、あまりLispに染まろうとは考えていない けど紙一重で染まっていないだけで気持ちが揺らぐ時もあるゆえに、 この言語を使っている者は、今の世界の平均的なプログラマよりも 少しだけ高いフィールドにいる事は認める事が出来る Lispパーサというのは本当に簡単に書ける def repl s repl $1 if s=~/\(.*?(\(.*)\)/ p s end s= "(a b c (d e f (g h i)))" repl s たったのこれだけでもう構文解析は一応出来ていたりする Lispのこの括弧のはS式とよぶ s= "(a b c (d e f (g h i))i r)" とかになってくると上記のソースでは解読できなくなる たぶん、正規表現1行では相当厳しいものとなるので ちゃんとしたパーサ書く場合は、普通に手続きを書く Lispを知る事で、最小限のチューリング完全を知る事は かなり大事なことで、それを知ってるか知っていないかでソースコードの質に影響するね 1、print文 2、変数 3、関数 4、四則演算 程度は出来る言語を、S式でもなんでも、自分の作りやすい形でいいから せめて200行以内でのソースコードを作成して、いつでもそれをサンプルなしで 自作言語を構築できるようになっておく事がたぶんアルゴリズムを考える上で 重要なボーダーラインになると思われます 作ってみよう

プログラミングの未来

今のプログラミングの世界で一番大変なのは、アルゴリズムを解くことよりも 実行環境の構築なんですよね、ライブラリにしろ、ツールにしろ、言語にしろ、 インストールで手間取る 情報が錯綜して、バージョンとの互換性がとれていなくて ネット上のリソースはひどい有様です でも、いつかそのうちこれがもっと統率されてきて インストールに手間取らなくなってきたら、そろそろ本番だと思っています PGはよくIT土方といわれているけど、今の時代のPGは確かに土方なんですよ 発展途上の分野というのは、歴史を見てもそのときの労働者の待遇はひどいものだったはずだから 今の時代のPGは、歴史の暗部になると、名言しておきます その指標として、女性が職場にいるかどうかです 女性がその職業に積極的になろうとしている職業というのは、 きっとよく完成した素晴らしい仕事なんです あと、数十年したらきっとPGは女性ばっかりなると思っていたりします 今、職業PGやってる人たちの中で、ネットワーク上に散らかってるバージョン、環境に 右往左往されてツールのインストールで詰まる事が日常茶飯事な人たちは、 本当に、たとえそれが仕事だとしても、君何してるの、それ楽しいの?って感じなんだけど、 プログラムを作ることが好きでやっているならば、しっかりとIT技術の進化の為の礎としての役割を全うしてくださいな そうしてくれると次の世代次の世代で少しずつマシなようになっていくよ
prev     index      next
1