絵を描いたりネットいろいろ
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
it
ちょっと最近は絵ではなく技術関係のことばかり


色々かきたいことが溜まっているんだけど

全部を書き綴る時間はないかもしれないけど、かけるところまで今日かいていく

そろそろこのブログ主の本性が・・・


まず、かきたいことは

どうやってJAVAをはじめとした「効率の悪い言語」を駆逐するか
自分が使わないってだけじゃ物足りなくて
なんか世界中でそれが使われているっていうのが気分悪いのですね


はっきりいって効率が悪い
自分も言語の全てを知っているわけじゃないけど
さらっとほとんどの言語の入門程度は、Webや書籍でみてきているので
おおよそはほとんどの言語を使えるはず

その上で、今2012年。1月、今現在最もすぐれているのは
Rubyであると、断言できる

イテレータ って知ってるかな?

C言語でいうなら、連結リストのループ文ですね
C++のSTLでかくと
http://www.geocities.jp/ky_webid/cpp/library/012.html
より。引用
iter_swap( it1, it2 ); // 2つのイテレータが参照する値を交換する
for( it1 = nums.begin(); it1 != nums.end(); ++it1 )
{
cout << *it1 << endl;
}

こういうやつ

Rubyではそのイテレータというものにまず力が入っていて
[1,2,3].each do
end
これでイテレータなんですよね

これはあんまりない。

C#.NETも、オブジェクト指向だから
o.function().function2().function3(); って形で色々と処理出来るようになってるけど
function(関数)とイテレータは、違うんです

プログラミングは、きわめていくとっていうか、
リファクタリングの限りを尽くしていけば、
for文ではなく、イテレータ文を書くことになるって事は
CやC++ずっとやってきた人で、ある程度、手の込んだことやってたならわかると思う

で、そのイテレータをかく為に、長い長い連結リストの宣言を書いたり、
STLの使い方を一々調べたりするわけですね

rubyは動的言語なので、型とか気にせずに一気に「それ」が出来る

JAVAやC#.NETにあるイテレータとは決定的に違うので
ここで一気に効率の差が出てきます


rubyで現在足りていないのはJAVAに勝つための実行速度ですが、
それについては並列化して、「JAVAの速度程ではなくてもRubyの速度でも十分OKがでるレベルの」速度がほしいんです

動的言語と、静的言語(java)では、どうやってもjavaのほうが速くなるから、ここは無理

Rubyと同じフィールドにいる言語としてperl , php , Pythonといった言語がある

自分がプログラム覚えはじめの数年前は確かにrubyよりperlのほうが情報ヒットしやすかったから、
perlのほういってる人はいると思うんだけど、

perlって
http://perlgeek.de/en/article/5-to-6
(2012年現在の最新ver perl6 )
こんなんですよ
英語は読めなくてもよいので、灰色のソースコードだけを見てくれればいい

まずクラス宣言が冗長していて、perlはperl6になっても、オブジェクト指向は出来くて
手続き型プログラミングにしか向かないでしょうね
一応、perlには省略記法っていう、かなり最高なものがあったり
http://perldoc.jp/docs/perl/5.10.0/perlsyn.pod
より引用

while (<>) {
chomp;
if (s/\\$//) {
$_ .= <>;
redo unless eof();
}
# now process $_
}

こういう事が出来たりはして、ある意味では凄いんですが


for 0..5 {
print $_;
}
print "test" for 0..3;



これはperlだけをずっと使ってなければ使いこなせない類のものだと思います
あと、この省略記法のせいでソースコードが記号だらけになる・・w
だからちょっと記号につよい人?以外は、この言語で効率だすのは無理じゃないかと思ってる
でも今、世の中に広がってる言語の中ではperlは悪くはない、ぜんぜん素晴らしいほうです
省略記法のアイディアだけは、最高


次にphpですが
この言語には「良い点」が何もないはずなんですが、(見た目上は)
内部実装が、ちょっと他の言語と比べたら良いんでしょうね
あとフレームワークが豊富だったり、
だから、仕事でPHP使ってる人はとても多いはず
求人の募集もPHPは多いです

多いですけど、!! 何故、こんな何の変哲もないperl以下の言語が広まってしまったのか理解できない
まぁ、思ったよりも、人がperlを使えなくて
自由度の低いphpじゃないとソースコードがかけないって人が、きっと多かったんだと思います
perl→phpは、はっきりいって プログラミング技術が退化  しています


http://www.scollabo.com/banban/php/php_08.html
より引用

for($a = 0; $a < 4; $a++) {
$lectur = array("HTML","XHTML","XML","JavaScript","PHP");
print($lectur[$a]). " \n";
}
?>



こんな感じのひどすぎるソースしか、PHPにはかけません

しいていうなら、
C言語を動的言語にして、変数に$をつけて < > で囲ったのがPHPです
私には、「動的C言語」としか、phpを見ることは出来ません
どれほど開発効率が悪いのか・・・


ここへきてやっと私からのオススメ言語のrubyですが
forループはこんな感じ

for i in 0..4
print i
end


で、先に話したイテレータは

n=[2,3,4,5]
n.each do |x|
print x
end


こんな感じになりますね

このendっていうのに、なれることが出来ないと、rubyは使えないのかもしれませんが
慣れる事が出来れば、きっと強力な道具になってくれると思います

これはブロック構造といって
普通のプログラミング言語は

a {
b {
c {
}
}
}

こういうインデント構造ですがrubyは

極端にいえば、こういう風になる言語ですね

a.b do
c { }
end


あまり右側へ右側へネストするようにはならない書き方っていうのが
いろんなメソッドやイテレータや言語の機能によって用意されている言語なので
    end
   end
  end
 end
end
といったようなソースになってしまう頃は
まだrubyをきっと使いこなせていない段階ですね

rubyの何が優れているかって言われたときに、それが一つではなくて複数個あって
なかなか本当に説明しづらいんです

まず、
1つめとして、イテレータ
2つめとして、クラスが使える(perlでもphpでも使えるけど、もっと高機能なクラス)
3つめとして、特殊な関数が多い

特殊な関数
例えば、ここでは詳しく説明しませんが
method_missing
.ljust
.reverse
include
extend
Class.new
Module.new

このあたりが、とても優れている
あと配列の宣言やハッシュ宣言っていうのが
[]

{}
だけなんですよね
これでaは配列です
a = []

a = [2,3,4,5]


これでハッシュ
a = {:x => 66 , :y =>99 }

このあたりも、PHPやperlと比べてどれだけすっきりしているかがわかると思う




rubyの欠点は、速度といわれますが、
それはRuby1.8までが遅すぎたせいで
そのせいで、Rubyは遅いというイメージが付きまとってしまった

Ruby1.9は、Webアプリケーションを作るには十分速いです
perlとphpと同じ程度には、速度でてます


現在rubyを使っている人のほとんどは、
日ごろの作業の自動化や、ちょっとしたツールを作るときや、Webアプリケーションだと思います

けれど、WebアプリケーションのほうではまだPHPがほんとによく使われているみたいなんですよね
Ruby技術者が不足しているか、
あるいはPerlほどではないにしろ、PHPよりは難解な言語だと思うので
習得している人が足りないとか、そんなところだと思う
でもRuby覚えちゃえば、二度とPHPのソースコードかこうとはしないと思います


現在Rubyはjavaに置き換えられないかと、そういう段階にきていると思う
随分前にJAVAからRubyへという、ちょっと「え?はやすぎでしょ」って思う書籍が売られてたけど

そろそろ、そのあたりまで来てるはずです
あと必要なのは、GUIアプリケーションを作る為のRuby開発環境ですね

最後Rubyの話ばかりになってしまいましたが、
ようは2012年の現時点では開発効率が最高だと思う言語のRubyを奨めて
開発効率の悪い言語には、退場してもらいたいのです

色々サンプルとか乗せてってもいいけど、自分がソースコードかいてもけっこう中途半端になること多いので( 他人に読ませるような教科書コードがかけない)
それはやめておこうかなと思ってます


あとGoogleの開発しているGoっていうプログラミング言語についても
かきたいんだけど、今日は時間が来てしまったので後日かく



    0..

kakikomi