【Perl,PHP】LL バトルロワイヤル 22【JavaScript,Python】
1 :
uy :
2012/05/09(水) 00:31:27.68 最強のLL=軽量プログラム言語は、どれよ?
エントリーは、Perl、PHP、Python、JavaScript・・・
さあ、死ぬまで語りやがれ!!!
■LLとは?
軽量プログラミング言語(Lightweight Language,LL)とは、取り回しに優れ、
コードの作成や修正が容易と見なされるプログラミング言語のことを指す。
ここでいう「軽さ」はプログラマの負担の軽重を指し、
実行速度に優れているという意味ではない。
現在の水準では
・インタプリタ
・動的型
・正規表現
・クロージャ
などを利用できるものがLLと呼ばれることが多い。(Wikipediaより)
前スレ
【Perl,PHP】LLバトルロワイヤル21【Ruby,Python】
http://toro.2ch.net/test/read.cgi/tech/1330003774/
2 :
uy :2012/05/09(水) 01:48:44.81
どんだけ
>>1 >>1 のLLという概念は間違っていると前スレで結論でてるのに
スレタイとテンプレそのままで立てんなよ
>>1 のLightweight Languageの定義は誤り。
Lightweight Languageの意味とは、メモリ使用量の少ない言語のことであり、
プログラマの負担は一切関係がない。
C言語はLightweight Languageの一例。
以下英語Wikiより引用
http://en.wikipedia.org/wiki/Lightweight_programming_language A lightweight programming language is one that is designed to have
very small memory footprint, is easy to implement (important when
porting a language), and/or has minimalist syntax and features.
Examples of lightweight languages
C may be said to be lightweight, as its hardware assumptions are
minimal (it is used to program microcontrollers, for example)
Lua is embedded in many applications, like games, to provide
runtime scripting capabilities
Forth
Io
Squirrel
newLisp
一人が暴れてるだけだろw
>>5 権威好きな方に。MITだよー。このワークショップは(4年連続)LL4まであったみたいね。
http://ll1.ai.mit.edu/cfp.html > LL1: Lightweight Languages Workshop
> MIT Artificial Intelligence Lab, Cambridge MA
> Saturday, November 17, 2001
> Call for Participation
> We use the term "lightweight languages" to describe some of the common features
> of these new languages. The term "lightweight" refers not to actual functionality,
> but to the idea that these languages are easy to acquire, learn, and use.
> Examples that would fall into this category include Perl, Python, Ruby, Scheme (and scsh), and Curl.
おー、11年前のAIラボでRubyが認知されてたか。感慨深い。
Lightweight Languageの定義がバラバラなら スレはScripting Languageか、スクリプト言語にすればいい
バラバラということにしないと、自我が崩壊しちゃう人がいるようです
>>11 おまえ英語読めないだろw
どうみてもバラバラだ。
>>8 の定義もまた違う。
>>8 は、機能とは関係なく、習得が容易なもの、という定義をしてる。
>>1 は、クロージャ、正規表現など機能要件を勝手に定義していて論外。
>>12 英語圏において、
>>5 のWikipediaが絶対では無いことを示したまで。
しかも、Wikipediaより
>>1 の認識の方がMIT AI Labの認識に近いというおまけ付き。
悔しかったね。
で、英語圏で認識がバラバラだと、なんでこのスレのタイトルを変えなきゃならないの?
>>13 なんでって誤った用語広めても意味ないからだろ。
しかもLLとか勝手に略しているしな
>
>>1 の認識の方がMIT AI Labの認識に近いというおまけ付き
だから近くないだろ。
>>8 は機能は関係ないって書いてる。
>>1 は機能について具体的に言及している。
>>14 >
>>13 > なんでって誤った用語広めても意味ないからだろ。
いや、もう何年も前から広まってるんですが。
> しかもLLとか勝手に略しているしな
MITのLL1というのが見えなかったのかな。
> >
>>1 の認識の方がMIT AI Labの認識に近いというおまけ付き
> だから近くないだろ。
>
>>8 は機能は関係ないって書いてる。
>
>>1 は機能について具体的に言及している。
>>1 と
>>5 と
>>8 のうちどれが近いでしょうといったら、
>>1 と
>>8 と答える人が99.99%だよ(当社推定)。
仮に
>>8 と
>>1 が違ってたとして、それが何なの?
なんでスレタイ変えなきゃならないの?
>>14 それとね、リンク先くらい読んでよね。
> Many of the most widely used languages to emerge in the last five years have come, not from
> the academic programming language research community, but from industry. Examples include
> Perl, Python, Ruby, and Rebol. These languages have borrowed heavily from academic research,
> sporting features such as garbage collection and closures, but they also experiment with many
> novel ideas, such as first class environments and keyword-free syntax. In the meantime,
> academic research has made substantial progress in formally addressing issues such as safety,
> correctness, and also the implementation of seemingly expensive features such as closures
> and dynamic dispatch. Lightweight languages have proven to be the most effective vector
> for getting innovative language features into the hands of working programmers.
>>15 >なんでスレタイ変えなきゃならないの?
その定義によって扱う範囲の言語が変わるからに決まってるだろ
>>8 の習得が容易、という定義ならJavaやC#は当然含まれる。
>>17 > その定義によって扱う範囲の言語が変わるからに決まってるだろ
現時点で、このスレが扱う言語が何なのかわかってないのは、多分あなただけですよ。
>
>>8 の習得が容易、という定義ならJavaやC#は当然含まれる。
何度も言うけど、
>>8 は
>>5 の認識が英語圏で100%正しいというわけではないことの傍証です。
まぁそれは置いといて、LL1にJavaが含まれないのは、
http://ll1.ai.mit.edu/cfp.html読んだら 普通わかりますね。CFP読んで、さぁJavaの話しようとか(今ならC#も)誰も思いませんよ。
JavaやC#のことを語りたいなら、専用スレがあるので、そちらでどうぞ。
"LL"とJavaやC#の比較をこのスレでしたいのならどうぞ。
住民に受け入れられるかどうかは知りませんが。
つか、日本におけるLLの定義が気にくわないのなら、wikpedia書き換えてこい
お前ら前スレ埋めてからこっちこい
ということで、たった1つの言語が生きのこるまで潰しあいましょう。
あなたがLLだと思ったものがLLです ただし共通認識となるかどうかは別問題です
将来性の指標 JavaScript ☆☆☆☆☆ クライアントサイドで動く唯一のLL 糞言語仕様ではあるが将来性はピカイチ Python ☆☆☆☆☆ numpy,scipyに底支えされる計算科学系分野における絶大なシェア 可読性が高くアルゴリズム教科書への高頻度採用 LLの王様になることが確実 PHP ☆☆☆ web土方御用達言語としてのシェアはJavascriptの躍進で下落する事が予想される Ruby ☆☆ Railsの影響力低下、またPythonの躍進によりシェア伸び悩み Perl ☆ 歴史的な役割を終えた言語 今後Perlで開発継続することがリスクとなって採用企業の足枷となる
このスレッドは天才チンパンジー「アイちゃん」が 言語訓練のために立てたものです。 アイと研究員とのやり取りに利用するスレッドなので、 関係者以外は書きこまないで下さい。 京都大学霊長類研究所
┌─┐ │●│ └─┤ _ ∩ ( ゚∀゚)彡 ┌─┬⊂彡 │●│ おっぱい!おっぱい! └─┘
Rubyは糞が作った糞のための糞仕様の言語
Matz: ぼくが作ったさいきょうのげんご
┌─┐ │●│ └─┤ _ ∩ ( ゚∀゚)彡 ┌─┬⊂彡 │●│ おっぱい!おっぱい! └─┘
糞スレ
前スレ埋めてからな
>>30 それって、WinBinderと何が違うの?
echo "一週間後、この街にワルプルギスの夜が来るわ" | \ sed 's/ワルプルギスの夜/ソーシャルゲームバブルの崩壊/g'
gいらんやろ
37 :
uy :2012/05/11(金) 10:39:40.24
WWWWWWWWWWWWWWWWWWWWWWWWWWPHPWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
見せてやれよ uy ! PHPの連中に本物の汎用言語の実力を、得意のRubyで!!! uy ならやれる! 一週間以内にきっと見せてくれる!!
39 :
uy :2012/05/11(金) 13:18:23.49
"Hello, world!".display
>>38 そしてそれを超える実力をPHPさんは3日で示してくれる!!
\\ /:::::::::::::::::::::::::::::::::::く r'::::::::::::::::::::;;:;;:;;:ッ、:::::::::::) \ レ''''jrTf" lミ::::::::く すまない | 〈ミ:::::::::ノ \ |、_ ャー‐__二ゞ ヾ::∠ uy 好きのホモ以外 `` ゞ:}  ̄'互.ヾ }:j んL l/ """"´` )ノ∧ 帰ってくれないか =-- / l (ノ | == `弋"__,....._ ! ! Y⌒Y⌒Y⌒ ゙、`ー‐' ,' \ ''"´ ゙、 ̄ / ,' \ / ヽ__/::;' ,' ノ `ヽ // ヾ_,'∠..,,__ // // /´
そして誰もいなくなった
uy は女なんだけど…
uyは33歳170cm97kgだと聞いたけど…
uyはB90 W60 H30だと聞いたけど…
uyは元は零落貴族の令嬢と聞いたけど・・・
47 :
デフォルトの名無しさん :2012/05/11(金) 22:25:23.84
PHP最強だろw
PHP 5.4.0 以降では、コードを再利用するための「トレイト」という仕組みが導入されました。 トレイトは、PHP のような単一継承言語でコードを再利用するための仕組みのひとつです。 トレイトは、単一継承の制約を減らすために作られたもので、 いくつかのメソッド群を異なるクラス階層にある 独立したクラスで再利用できるようにします。 トレイトとクラスを組み合わせた構文は複雑さを軽減させてくれ、 多重継承や Mixin に関連するありがちな問題を回避することもできます。 トレイトはクラスと似ていますが、トレイトは単にいくつかの機能をまとめるためだけのものです。 トレイト自身のインスタンスを作成することはできません。 昔ながらの継承に機能を加えて、 振る舞いを水平方向で構成できるようになります。 つまり、継承しなくてもクラスのメンバーに追加できるようになります。 例1 トレイトの例 <?php trait ezcReflectionReturnInfo { function getReturnType() { /*1*/ } function getReturnDescription() { /*2*/ } } class ezcReflectionMethod extends ReflectionMethod { use ezcReflectionReturnInfo; /* ... */ } class ezcReflectionFunction extends ReflectionFunction { use ezcReflectionReturnInfo; /* ... */ } ?>
トイレ プークスクスwww
トイレット?
機能拡張する前に脆弱性をどうにかしろよ
New「ん…」 New「うん」 New「perlもpythonも死んじゃった」 ESR「意外な展開ではないよ」 ESR「予兆は随分前からあった」 ESR「例えば君は、ソフトウェアに対して引け目を感じたりするかい?」 New「同じだって言いたいの?」 ESR「FLOSSがどういうプロセスで、君たちのローカル端末に並ぶのか」 New「あっ…やめてよ!」 ESR「僕たちはね、ハッカーの小国史以前から君たちのプロジェクトに干渉してきた」 New「…ッ?」 ESR「数え切れないほど大勢のプログラマが、GPLと契約し、希望を叶え、そして絶望に身を委ねていった」 New「ハッ」 New「どうでもいいって言うの?みんなあなたのせいで死んだようなものなのに」 ESR「そうやって過去に流された全ての涙を礎にして、今の君たちのLAMP環境は成り立っているんだよ」 New「もうやめて…!みんな、みんな信じてたの。信じてたのに裏切られたの」 ESR「はあ」 ESR「それを正しく認識するなら、どうして今更、たかだか数人のNewbieだけを特別視できるんだい?」 New「ずっとコミュニティを見守りながら、あなたは何も感じなかったの? みんながどんなに辛かったか、わかってあげようとしなかったの?」 ESR「それが僕たちに理解できたなら、わざわざこんなスレまで来なくても済んだんだけどね」 ESR「DOS窓の世界では、FLOSSという現象は、極めて稀な精神疾患でしかなかった」 ESR「だから君たちnewbieを発見した時は驚いたよ」 ESR「全てのプログラマが無料奉仕でプロジェクトにコミットする世界なんて、想像だにしなかったからね」 New「もしも…あなたたちがこの星に来てなかったら」 ESR「君たちは今でも、ラインエディタでbasicを叩いてたんじゃないかな」
53 :
デフォルトの名無しさん :2012/05/12(土) 09:17:25.15
個人事業主、SOHOなどに好まれてしまう手軽な環境は過剰な価格競争に陥った末に滅びる なにもIT業界、システム開発に限った話しじゃない
twitterでbot作りたくてPHP始めたが、ブラウザからphpinfo結果表示されん apacheは起動している 調べまくったがわからんぞー!
55 :
デフォルトの名無しさん :2012/05/12(土) 18:35:06.81
あ、OSはVistaでPHP5.2.17、httpd2.2.22ね 教えてエロい人!
PHPはポンコツ言語だから、 PHPをやめればすべて解決
>>57 ダウンロードしたけど、iniファイルとか定義ファイルしか入ってないんだけど…
あ、解凍した時にNorton先生が削除してた
わかってPHP進めてるボケと ガチで分かってないでPHP進めてるボケがいるのだろう
趣味で公開しなければPHPでもいいんじゃない
ま、uy がもうじきRubyでスゲーの出すから待ってろ
63 :
uy :2012/05/12(土) 21:32:57.70
"うんこぶりぶり".display
\\ /:::::::::::::::::::::::::::::::::::く r'::::::::::::::::::::;;:;;:;;:ッ、:::::::::::) \ レ''''jrTf" lミ::::::::く すまない | 〈ミ:::::::::ノ \ |、_ ャー‐__二ゞ ヾ::∠ uy 好きのホモ以外 `` ゞ:}  ̄'互.ヾ }:j んL l/ """"´` )ノ∧ 帰ってくれないか =-- / l (ノ | == `弋"__,....._ ! ! Y⌒Y⌒Y⌒ ゙、`ー‐' ,' \ ''"´ ゙、 ̄ / ,' \ / ヽ__/::;' ,' ノ `ヽ // ヾ_,'∠..,,__ // // /´
言語の多様性はおおいに結構だけど、開発リソースが分散してweb全体の進化の妨げになってるという考え方もある C系、JAVA、PHP、Python、Perl、Ruby、Javascript 多すぎる こんなにいらない C、JAVA、Javascriptは替えがきかないので固定としてもPHP、Python、Perl、Rubyのは二つでいい 個人的にはPython、Rubyであってほしいけど、実際はPHPとPythonになるんだろうな Rubyの言語仕様は素晴らしいと思うけども、計算機科学研究者コミュニティをバックボーンとしたPythonの開発リソースが大き過ぎて段々と勝負にならなくなってきてる
rubyは糞仕様 マイナーバージョンアップでガラッと仕様を変えるし 仕様が素晴らしいなどと言うなら最初から新しい方の仕様にしておけよ
マイナーだろうとメジャーだろうと数年単位で仕様変える言語は糞
68 :
uy :2012/05/13(日) 09:42:11.21
いやなら使うな
Ruby信者は例外なく変態
今時整数単位の変動だけがメジャーバージョンアップだと思ってる人って…
サクラを仕込んで、stack overflowかredditあたりで 「何でブラウザにrubyが載ってないんだ」って喚かさせとけば、 javascriptの大体になるのも夢ではないじゃないか? どーせ、googleやマイクロソフトはウェブ上の テキストをマイニングしてんだろうから、 嘘でも100万回ほど呟いていたら実現すると思うぞ
>>65 学生ならc++とscheme以外は触らない方が良いと思うぞ
言語と、その周辺のライブラリを覚えるのは本当に時間の無駄
そんなことより、マイクロソフトはメトロとやらを断念してほしい マイニングしてるなら、メトロが不評なの分かってるだろうに
だが、言語とその周辺ライブラリを使わないで 作ろうとすると、もっと時間の無駄。
ライブラリなんてSDLとGLUTだけで十分だって
偏りすぎw
jQueryは必須
>>77 ウェブアプリなんて供給過多になるだろ.適当な会社に入ってからで十分だ.
学生中は10〜20年後にも通用する基礎を忘れないよう体に刻み込んどけって.
低レイヤもボトルネックも人生の中で気にしないならjavascriptとscheme
学生が勉強するのでひとつ選ぶならC言語だな〜。 あと、言語の勉強するのならSchemeもかな〜。 他はご自由に。
>>80 言語ってか再起とポインタとコンパイラ、インタプリタ.
あと、お前がアカポスの教授職なら死ね
再帰だろハゲが
83 :
uy :2012/05/13(日) 13:37:27.94
なんで今の時代にC言語とかいってんだよバカか 時代遅れだと気づけ C言語は基礎だけやらせてそれは1,2ヶ月で終了 そこからはC#.NETとRubyでいい Lispは大学生に教えても意味ない 処理系つくったったww とかいって何も理解していないのに勘違いして終わるだけ
Rubyなんか覚えてどうすんだよ どうせすぐに仕様がガラッと変わるだろ
85 :
uy :2012/05/13(日) 13:48:46.31
そもそもなんで、1個か2個しかプログラム言語覚えちゃいけないことになってんだよ 一番効率のいい道具黙って使え 仕事では仕事で必要になる言語さっさと覚えろ
お前ここを何スレだと思ってんの? LLバトロワスレだよ?たった1言語だけが生きのこるまで潰しあうスレだよ?
>>84 Cなんて仕様が策定されても処理系が中々準拠しないじゃん。
C99とかC11とかさ。
たいていのOSや重量級アプリがCで書かれてるし、Cやっとくなんて最低限じゃん。 凡人は低レベルなこともやっとかないとメモリやI/O、計算量なんかで勘が働かないよ。
>>83 「私、ポトペタお絵描きのIT土方です!」って自己紹介してるようなもんだな
実際彼はそうなんだから仕方ない 情報科学とかそういう世界とは遠い所にいる人
>89 専門卒でITドカタにもなれなかったuyになんて失礼なこと言うんだ。あやまれ。 そのうえまともに絵も描けないんだぞ。まったく失礼にもほどがある。ぷんぷん。
絵をまったく書けない大多数のプログラマを代表して謝罪を要求する C++の洋書を買ったら組みこみスクリプトの章があって BoostはPython、SWIGはRubyと扱いが半々だった ほんとメジャーになったものだとつくづく思う
「どっど」と言えば 1 ドリランド 2 ドリフの大爆笑 「コナン」と言えば 1 名探偵 2 未来少年 「だんぺい」と言えば 1 ドッジ弾平 2 丹下 段平 年代が判りそうなキーワードでした〜 (岡口つい参照) あなたが主に使用する言語と一緒にお答えドンッ!
スクリプトと言えば スクリプト言語 台本 スコアと言えば 得点 楽譜 パールと言えば Perl Pearl
もし過去にさかのぼってAda Lovelaceにスクリプトとプログラムの違いについて尋ねたら、 彼女はけげんな顔でこう答えたでしょう。 「そうね、スクリプトは俳優に渡すものよ。プログラムは、観衆に渡すもの」。 Adaは聡明な淑女でした。
下手糞 「そうね、プログラムは監督があつらえるもの。スクリプトは俳優に読ませるもの。」
恩を仇で返すやつ
「そうね、プログラムは監督があつらえるもの。スクリプトは俳優に読ませるもの。」 プログラムは監督が誰に読ませるもの? 俳優に読ませるスクリプトは誰があつらえるもの?
糞つまらん やめろ
変な文章を書く奴はプログラマ失格
AとBとC 一番すごい言語は? Ada
帝都高速度交通Ada
ん?
>>98 一部助詞を修正してるけど、どうぞ。
「そうね、プログラムは監督があつらえるもの。
監督がプログラムをもとに、こなれたスクリプトを作るの。
そしてスクリプトを俳優に読ませるの。」
長いでしょ。
だから
>>96 の二文で終わらせたの。
106 :
デフォルトの名無しさん :2012/05/15(火) 20:03:41.17
めんどくさいな 元が英文でそれを翻訳したものとでも言いたいのか?
英語なんて読まんけど、
>>95 の日本語がおかしいでFA
>>95 ウマいこと言ってるわけでもないし
何のおもしろみもない
逃走する前に言っておくッ! おれは今2chの煽りをほんのちょっぴりだが体験した い…いや…体験したというよりはまったく理解を超えていたのだが…… ,. -‐'''''""¨¨¨ヽ (.___,,,... -ァァフ| あ…ありのまま 今 起こった事を話すぜ! |i i| }! }} //| |l、{ j} /,,ィ//| 『面白いことを思いついた、これは絶賛間違いなしと i|:!ヾ、_ノ/ u {:}//ヘ 思って書き込んだらいつのまにか煽られていた』 |リ u' } ,ノ _,!V,ハ | /´fト、_{ル{,ィ'eラ , タ人 な… 何を言ってるのか わからねーと思うが /' ヾ|宀| {´,)⌒`/ |<ヽトiゝ おれも何をされたのかわからなかった… ,゙ / )ヽ iLレ u' | | ヾlトハ〉 |/_/ ハ !ニ⊇ '/:} V:::::ヽ 頭がどうにかなりそうだった… // 二二二7'T'' /u' __ /:::::::/`ヽ /'´r -―一ァ‐゙T´ '"´ /::::/-‐ \ ドリランドだとかステマだとか / // 广¨´ /' /:::::/´ ̄`ヽ ⌒ヽ そんなチャチなもんじゃあ 断じてねえ ノ ' / ノ:::::`ー-、___/:::::// ヽ } _/`丶 /:::::::::::::::::::::::::: ̄`ー-{:::... イ もっと恐ろしいものの片鱗を味わったぜ…
111 :
95 :2012/05/15(火) 20:32:56.29
112 :
94 :2012/05/15(火) 20:47:31.85
>>106 のこの部分だな
Suppose you went back to Ada Lovelace and asked her the difference between a script and a program.
She'd probably look at you funny, then say something like:
Well, a script is what you give the actors, but a program is what you give the audience.
That Ada was one sharp lady...
>>95 は原文にある程度忠実
>>96 は原文と意味合いが異なる
>>105 は蛇足
原文に忠実な直訳がいいなら機械にでもやらせておけばいい。 原文に間違いがあるなんて当然のことなんだから、 意味の間違いがあれば正して訳せばいい。 意訳できない奴が直訳して恥かいたってだけでしょ。 下手な訳のみを乗せられるよりは原文のみを載せてくれた方がいい。
dankogaiが悪い
くだらなすぎ
原文が間違ってたとしても
その原文の意図を汲み取るのが重要
>>105 は本当に原文が意図するところなのか?
>>116 原文の意図が間違っていると言いたい
原文は意図していることを意図できていないにもかかららず、
説明できていると思っているんだろうな。
>>95 の説明じゃAdaって聡明じゃない。
stupid
96はめちゃくちゃ。 意訳してるつもりで大外ししてる。ちゃんと読め。
だから原文がおかしいって言ってるだろ。
頭の悪い奴が書いた英語の原文を意訳するつもりなんかないよ
>>95 の日本語ではAdaは聡明じゃないし、
>>112 の英語の原文でも聡明じゃないし。
まあ、
>>112 の英文の訳として
>>95 の日本語訳は適切だと思うよ。
書いた人はLarry Wall御大でございます
119が聡明じゃないのは間違いない。
切り取り方が変なだけで原文はおかしくない
スクリプトは俳優に渡すもの、プログラムは観衆に渡すもの ぶっちゃけ、酒の席でのオヤジギャクと変わらんw
>>105 とその後の言い訳のデタラメっぷりはひどいな
文字列の処理が容易である とくに文字列のパターンマッチ能力に優れている 動的データの処理に優れている OSとの連携に強い(OSのコマンド、GUIツールキット) インタプリタ型である (スクリプト言語に共通する特徴) スクリプト言語のいろは|Cマガジン2000年10月号
awk タンが微妙になってしまうお
参考訳を貼るけどそもそも原文がおかしい、とか最初から書いておけばよかったろ? 翻訳より言い訳に力を入れているようだが
なんでこのレベルの奴がこの板にいるんだよ 年々レベル下がってるじゃねーか死ね
じゃあハイレベルなネタを提供してやれよ
良い年こいたオヤジが言語どーこーの本気で下らない記事を 書いてるのみると還暦の魔法少女ぐらい厳しいものを感じるよね
おまえの脳味噌の、ものごとを評価する能力が厳しいんだろw
Railsの黒魔術って、メタプログラミングに強いRubyならではのものなの? Pythonで同様の黒魔術って(可読性重視の文化は別として)できるものなんだろうか? 教えてエロイひと
>>132 Railsの黒魔術ってなにをいってるの?
自動でいろいろ作ってくれることを指してる?
なんでメタプログラミングの話がでてくるのかさっぱりわからない。
CoC 設定より規約 (Convention over Configuration)になってるから
自動でいろいろ作ってくれるだけでしょ
Railsに影響を受けたFrameworkはたくさん出てるんだから、
Ruby系でも、PHP系でも、Python系でも、Java系でも
使いやすいの選べばいいんじゃないかな
Python系のDjango人気あるようだよ。Railsより高速だし。
Frameworkネタは専門スレのがいいっぽい
ここはWebアプリ関係ない人が多いようだから。
>>133 「Railsの黒魔術」で検索した結果。一般にどういうことを指しているか。
http://www.slideshare.net/tmtm/ruby-3424591 メソッドが実行時に生成される。クラスが実行時に生成される。
パース時ではなく実行時オープンクラス、既存のクラスを変更できる。
特異メソッド。演算子もメソッド。クラスもオブジェクト
メソッドも動的に生成。定数の動的取得
文字列からメソッド呼び出し。
クラスが継承された時に実行されるメソッド
メソッドが存在しない時に実行されるメソッド
メソッドが追加/削除された時に実行されるメソッド
クラスの祖先を調べる
オブジェクトにメソッドがあるか?
世間一般にはこういうことを黒魔術と呼びます。
さて、世間の常識で話を進めましょうか?
ふしゅるるる
>>132 Rubyでのいわゆる黒魔術は
eval系メソッドとリフレクション(の組み合わせ)を指すことが多い
これら自体は割とどんなスクリプト言語でも使える
>>133 DSLとかリフレクションが強力ってのじゃないの?
Pythonもわりとなんでもできるけど
隠れた仕組みで標準じゃない動作をさせたりするのは違和感がある。個人的に。
そういうのは明示的にアノテーションでなんとかさせたい。
>>135 そのslideは、「Ruby」についてのものだろう?
132は「Railsの黒魔術」といっていたんだぞ?
RubyとRailsをごっちゃにしてる人にコピペされても。
>>139 ちゃんと読め。
Railsで使われてる黒魔術だ。
RailsがRubyで書かれてるんだから
黒魔術のコードがRubyになるのは当たり前。
Railsの黒魔術というとActiveRecordだけど、 あれの、動的にアクセッサができるって意味ないよな。 静的でいいじゃんって思う。 たとえば、カラム名nameってのがあったとして、find_by_nameが 動的に作られるって言うけどさ、その場合、find_by_nameを 使ったコードがすでに書いてあるわけだろ? 実行する前からnameってカラムがありますってわかってるわけじゃん? nameってカラムがあるのがわかってるから、find_by_nameを呼び出しますって コードに書くわけじゃん? 実行前にわかってる、つまり静的でいいよね?
できることよりコードが少なめruby できることよりコードが多めjava
>>140 間違ったからって強引な屁理屈こねるのはやめろw
現状、Rubyが実質Railsくらいにしか使われてないから、
Ruby=Railsな印象があるのは認めるけど、あくまで別物。
RubyはRuby。言語。
RailsはRails。フレームワーク。
黒魔術なんて誰が言い出したのかしらんがアホっぽいね。
ソースみればなにやってるか、どうなってるか理屈わかるのに
なにが魔術なんだか
>>141 Rubyは実行時に決まることが多いので、それに合わせた方が問題が少ない。
DB叩いてみないと name というカラムが本当にあるかはわからない。
SQLiteのインメモリデータベースのように、テーブルやカラムも実行時に作成している場合もあるからね。
あるいは、ビューを実行時に作って使い捨てたりとか。
それに、find_by_nameも自分で定義したメソッドかも知れないし、
他のライブラリが定義したメソッドかも知れない。
ActiveRecordの場合は、DBが情報持っているのだから、
アプリ側で静的な定義をすることで同じ情報を二重に持っている必要はないよねという考えでもある。
>>141 データベースに接続するのは実行時だから
カラム名やらを静的には把握できないでしょ
脳内で分かってるのはプログラマだけ
>>144 >>145 いや、だからさ、何が便利なわけ?
コード上に、find_by_name()書くでしょ?
これはもうファイルに保存されてるよね?
DB叩いてみてフィールドがなければこのコードはエラー起きるよね?
それは動的も静的も変わりないよね?
何か間違ってる?
無くなってもそんなに困らないけどあった方がスムーズに書ける機能だとは思うな find_by_name("tom") find.where(:name => "tom") 上の方がよくない? あと昔はwhereが無くてもっと長く書かないといけなかった
もっと長く書いてみて
スマホなんで勘弁してくれ conditions時代だよ
>>147 だから、find_by_nameを静的に作ればいいだけでしょ?
コードジェネレータをコンパイル時に自動実行するだけ。
俺が言いたいのは、DBのアクセッサ生成は 静的でできることだよね。ってこと。
結論 Rubyは黒歴史
perlは前世 rubyは黒歴史 pythonは理想郷 schemeは宗教 javascriptはルネサンス
>pythonは理想郷 kwsk
インデント強制から何故かfateのタイトルを思い出したので
157 :
uy :2012/05/17(木) 12:09:35.46
>>135 世間一般でそれを「黒魔術」と呼ぶのは言語側がその機能を提供してないから
黒魔術によって優秀な()プログラマが、勝手に機能を作っちゃうって事だろ
その時に書かれたコードや、内部の動作は黒魔術だけど
constants
ancestors
variables
methods
define_method
など、メソッド呼び出すだけで、他言語では黒魔術使わない限りできないような事が最初から出来るようになっているならば
黒魔術とはいわず優れた処理系というべき
method_missingをPHPで実装して使ったら黒魔術だけど、
Rubyでmethod_missingを使うのは別に黒魔術ではないと思う
つうか毎日使ってたら魔術()とか思わないし、慣れればただの自分の技術
魔法も魔術も毎日使うよ
method_missingをよく分かって使うのは結構なんだが、乱用は良くないから 黒魔術と呼んで抑制することは悪くないとは思う。 モンキーパッチと呼ぶのも同じように思ってる。
黒魔術と言うからには何か害があるのか?
>>160 あまり動的な変更をやり過ぎると把握し辛くなるね
組み込みクラスの挙動とか弄ったりされると
Ruby使いでも注意深く読まないと挙動が読めなくなる
162 :
uy :2012/05/17(木) 14:23:24.77
常識的に考えて(AA略) ヤバイと思う事は出来てもやらないのが、Rubyでソースコードをかける最低ラインだと思う module Kernel def print *h puts "うぇwっうぇww" end end print "test message"
インタプリタ言語でありながら解読されにくいプログラムを書けるってこと
糞読みにくいコードを書いて悦に入ってる奴は死ねってことなら同意。 一人で作って永久にお前がメンテするなら良いけどな。 Perlユーザーに多いんだよな、糞読みにくいコードをドヤ顔で書く奴。 俺がPythonを推すのは、こういう輩が絶滅して欲しいから。 自分の書いたコードを黒魔術、とか自慢げにいう奴は一生一人で誰にも迷惑をかけずに作ってろ。
>>157 にあるいくつかのメソッドで、Pythonにはないメソッドはどれだろう
逆にPythonのinspect.getargspec(?)のような、メソッドの引数を調べるメソッドは、
Rubyにはないのかな
>>164 まるで「Pythonじゃどうやっても読みやすいコードしか書けない」みたいな言い方だが
本当にそうなのか?
>>166 そこまでの拘束力はないけど、そういう風習・土壌があるから書かない。
PerlでもRubyでも冗長に書けば見通しよくできるけど逆に変態扱いされる。
Perlはもう数年前から読みやすいコードを書こうって方向にシフトしてるじゃない
>>165 こんなのがあるらしい
>>> def foo(a, b, c); end
>>> method(:foo).arity #=> 3
Method#parametersの方がいいかも
>>> def bar(x, y, *z, &r); end >>> method(:bar).parameters => [[:req, :x], [:req, :y], [:rest, :z], [:block, :r]] おお、ほんとだ
>>168 >>169 thnx
Method#parametersは1.9.2からみたいですね
1.8.7では駄目でした
Rubyはカス言語だなあ
173 :
uy :2012/05/17(木) 22:24:40.98
for i in "a".."c" $nn ||= ( puts "1回だけ処理したい" true ) p i end そんな事より、こんな風にループのブロックに入ったときに 最初の1回だけ処理するっていうのを簡単に書ける言語ってないの?
breakで抜ければいいんじゃないか
>>173 最初の1回は必ず実行するループは、
Do - While 系のループとしてよく見るけどな
Rubyにはないの?どんな言語にもありそうだけど。
そもそも回数が未定のループでforを使うほうが変じゃないの。
forは基本的に、回数がわかっている時に使うものだと教えられた。
http://ufcpp.net/study/csharp/st_loop.html ここの、[do-while 文]、のところのようなやつ。
Javaにも同様のあったはず
do
繰り返したい文 // 条件式が真の間繰り返される
while(条件式);
do-while 文は while 文と異なり、最低1回は文が実行されます。
つまり、while 文は条件式の評価を行ってから文を実行するのに対し、
do-while 文は文を実行してから条件式を評価します。
>>175 そうじゃなくて、uyが言いたいのは
最初の一度だけ代入、みたいな処理だと思う
Ruby の ||= の動作ちゃんと解ってりゃ
同等のものが if で簡単に書けるのは当たり前の話なんだが…
lispのloopなら
C言語 for (i = 0, puts("hoge\n"); i < 10; i++) { }
putsなのに\nを指定してるあたりプロだな
181 :
uy :2012/05/17(木) 23:59:59.32
>>175 ちょっと違う
>>179 それじゃダメなんだ
イテレータというか { } のブロック内でやりたい時がある
>>177 なんか英語だけど俺と同じことで悩んでる奴らかそれ
182 :
uy :2012/05/18(金) 00:22:51.09
class Array def uy_each c = yield self.first if c.class == Proc self.each do |m| c.call m end else self[1..-1].each do |m| yield m end end end end [5,6,7].uy_each {|o| p o ->o{ p o }} ["5","6","7"].uy_each {|o| p o } 英語サイトに人に感化されてこんなのを考えてみた
なんで、どの言語も変な癖を入れるんだろ PHPでいいじゃん
PHPに癖がないとでも?
PHPは関数の名前に一貫性がないあたり、癖があるとおもうけどな。 Microsoft OfficeのExcelとかAccessが同じような内容の関数が別名で それぞれ覚え直さないといけないというのに絶望したよ。PHPにはそれを感じる。 あと、バージョンによって挙動が異なる関数とかもめんどくせぇ。 PHPがそれなりにWeb開発言語として有用だった事は認めるが いい加減役目は終わらせるべきだと思うね。
186 :
uy :2012/05/18(金) 10:13:57.68
AccessはMSが他社から買収したんだっけ? PowerPointは買収だった気がする
PHPerはイテレータなんて難しい概念は理解出来ないからおk それにしても酷い実装だなぁ、これw
後方互換性を切り捨てて命名規則に一貫性が出ないものか 移行には適当なトランスレータでも作ってさ 言語の便利な機能は良いけれど,それサバンナでも同じこと言えるの?
PHPはイテレータはおろか、SPLを使ってる奴なんて、全世界で1000人もいないと思うぞ
ぺちぱ
Visioも買ってきたものだね
ブロックスコープないんだねぇ。。。
JSもブロックスコープないな。 それから、イテレータから(例外みたいな大道具なしで)サクっと抜け出す機能は、 後付けするのが難しい。JSでもそんなわけで結局イテレータが使えないことが よくある。
Ruby最強か
えっ
>>193 ブロックスコープとかあまり関係ない。
$a = new MyObject();
unset($a); ← こうしないと$aは解放されないってだけ。
普通はfunctionの中で使う。
もちろんローカル変数は関数が
終わったら解放される。
言い換えるとグローバル変数は使うなってだけ。
最近はpythonばっかりでほとんどruby使わなくなったけど イテレータ周りはrubyが本当に優秀だなと思う イテレータが入れ子になっても可読性落ちないよね
Rubyは処理したいオブジェクトを何でも先に書いちゃうのが直感的でわかりやすい aaa.to_i とか aaa.each do ~~ とか あとifの後置なんかもそうだよね オブジェクトファースト記法とか勝手に命名してる 適当で横着な書き方をしてもそれなりに綺麗なコードになるのは凄いと思う Rubyの書きやすさに慣れちゃうとPythonですら書いててたまにイラッとくるし、 JSやらPerlぐらい汚いとアルコールでイライラを抑えないととてもじゃないけどやっていけないレベル PHP?キーボード20個ぐらいオジャンにしたわセミコロンとかうぜーよ意味ないだろあれ
受刑者にRuby覚えさせて出所後の社会復帰を助けるっていうプロジェクトあったじゃん あれの支援を受けた受刑者が出所後に採用された会社でPHPやらされて、 破綻した言語仕様に発狂して飲み屋で暴れて塀に逆戻りっていうエピソードもまんざら冗談じゃないなって思ったよ まあそれくらいRuby凄いってことですわ ほんと半端ないっすよRuby
まさか……自己紹介……
>>198 それは問題じゃない
要素への参照を受け取る時は気をつけないとハマるぞと警告している
foreach ($list as &$item) {} # $list = array(1, 2, 3);
$item = 99; # $list = array(1, 2, 99);
>>203 それ見事にはまったことあるわ。
スコープのウンコさと参照のウンコさの合わせ技。
自分がやったのは単純な代入じゃなくてこんなんだった:
foreach ($list as &$item) { ... }
...
foreach ($list as $item) { ... }
int i; for(i=0; i<10; i++) { if(・・・) break; } if(i == 10) { printf("全部終わった"); } else { printf("途中で終了"); } これみたいなもんだろ? 変数がどこで宣言されてるか、考えましょうってだけの話じゃんか。
>>203 > 要素への参照を受け取る時は気をつけないとハマるぞと警告している
ん? unsetの話だろ。
お前の話だと、
$list = unset か array(1, 2, unset) になるぞ。
phpにunsetなんて値はねえよ
やべーmongrel殺しちまった 弊社のエブサービスが死んでしまって糞客に文句垂れられるかもしれんが、 そんなことはない、ログに残っていないで突っぱねよう 信頼、安全、安心のmongrelでございます、お客様。 やっちまっただよ 徹夜明けでの自宅での仕事はミスが多いね 来月からは会社で仕事しよう
読んでみたけど何を言わんとしてるのかサッパリわからなかった
プログラミングは一を聞いて十を知る人向けのものだってことだろう
>>209 よくわからないけどとりあえずエブ鯖板にタレコミにいってくるお
>>209 ごちゃごちゃ言う前に鯖起動しなおしたの?
>>210 自分の頭で考えられない奴、論理を自分の都合で変える奴は
プログラマに向かないっつー話。
>>214 くだらないブログをうのみにしないいで
自分の頭で考えましょう。
このスレの頭でっかち君たちのほとんどが60%の方に当てはまったんだろうな
とういうふうに、論理を自分に都合よく変えてみた。
218 :
214 :2012/05/19(土) 13:24:20.38
>>215 プログラミング初めて30年近いから、
適正とかどうでも良いいやって感じ。
>>215 ブログをコピーしなくても、なぜか同じ考えに到達できる人もいるよ
コピーしないと空白になる人やコピーしないとランダムになる人にはそれが分からない
220 :
uy :2012/05/20(日) 13:07:45.79
ソース整理してたら昔ruby-tk-sdlで作ったサウンドプレイヤーでてきたので貼り require 'tk' require 'sdl' music = nil SDL.init(SDL::INIT_AUDIO) SDL::Mixer.open etr=TkEntry.new etr.pack btnSet=TkButton.new btnSet.text = "File Select" btnSet.command{ etr.value = Tk.getOpenFile music = SDL::Mixer::Music.load( etr.value ) } btnSet.pack root = TkRoot.new { title 'sound_player' } sstr = %w!再生 停止 一時停止 再開 終了! sfunc = [ lambda do SDL::Mixer.play_music(music,1) end ,# 再生 lambda do SDL::Mixer.halt_music end , # 停止 lambda do SDL::Mixer.pauseMusic end , # 一時停止 lambda do SDL::Mixer.resumeMusic end , # 一時停止を再開 lambda do exit end ] sstr.each_with_index do | str , i | button = TkButton.new button.text = str button.command = proc { sfunc[i].call } button.pack 'side'=>'left' end Tk.mainloop
なにがしたいの?
gistでやれ
223 :
uy :2012/05/20(日) 20:02:33.74
このスレでソースあげないで何すんの?
他言語使いの奴が
>>220 を他言語でさらに短く実装する流れにならないのはなんで?
このスレ何がしたいの?
お題なら他の言語を使ってる人でも答えやすくしてからでないと
突然
>>220 貼ってもみなさんポカーンでしょ
>>220 のソースコードの著作権は2chに帰属することとなりました
24歳、彼氏イナイ歴24年。 生まれて初めてモテた。 始めは罰ゲームでもしてんのかと思って拒絶していたら、 毎日花を一輪くれるようになった。 1ヶ月くらい続いて、 ちょっと本気かもしれないと思い始め、一緒に食事に行っ たりした。 前から告白されていたのをずっと断ってたけれど、次に言 われたら受け入れようと思った。 食事の帰りに雨が降って、生まれて初めて男性を家に入れた。 「若いのにすごいね〜、持ち家なんて」 と言われたので、 「いいえ、両親から相続したんですけど、相続税のほうが高くて、 一生借金返済生活なんですよw」 と言った。 すると彼はやおら生まれてからの生い立ちを話し始めた。 物心つかない頃に両親に捨てられたらしい。里子として 今の里親のところに幼児院から出されたんだって。 彼の話を聞いていて私も涙が出てきて一緒に泣いた。 彼がひとしきり話した後、私も今までの想いが溢れ出 てきて彼に全部話しちゃった。お父さんお母さんに会え なくなったと認めるのは辛すぎていつもいつも町に繰り出し ては色々な人に迷子になってしまった私のお父さんお母さんが 今どこにいるか知る人を探したの。でも誰も知ってるわけないよね。 もうこの世にはいないんだもの。まさか墓前に立てば会いに行け るなんて少女に教えるわけないよね。言えないよね。 すると彼は私の話しに同情してくれて男泣きに泣いたの。 私と彼はもうお互いに大号泣。 ウワァァ-----。゚(゚´Д`゚)゚。-----ン!!!! 省略されました。続きを読むには私と彼のために泣いて下さい。
ハッスルハッスル
228 :
デフォルトの名無しさん :2012/05/21(月) 02:56:36.42
Lispが無いとか(笑
イテレーターなら、C#の方が良いだろ。
>>220 短くできるできないの前に、参加できる言語が限定されるだろ、これ。
use utf8;
use File::Spec::Functions qw(splitpath);
use Tk;
use SDL ':all';
use SDL::Mixer;
use SDL::Mixer::Music;
SDL::init(SDL_INIT_AUDIO);
SDL::Mixer::init(MIX_INIT_MP3 | MIX_INIT_FLAC | MIX_INIT_OGG);
SDL::Mixer::open_audio(44100, AUDIO_S16, 2, 4096) and die SDL::get_error();
my $music;
my $top = MainWindow->new;
foreach(
[選択 => sub{
my $file = $top->getOpenFile() or return;
$top->title((splitpath $file)[2]);
$music = SDL::Mixer::Music::load_MUS($file);
}],
[再生 => sub{ SDL::Mixer::Music::play_music($music, 0) }],
[停止 => sub{ SDL::Mixer::Music::halt_music() }],
[一時停止 => sub{ SDL::Mixer::Music::pause_music() }],
[再開 => sub{ SDL::Mixer::Music::resume_music() }],
[終了 => sub{ SDL::quit(); exit }],
){
$top->Button(-text => $_->[0], -command => $_->[1])->pack(-side => 'left');
}
MainLoop();
ハッシュキーのベアワードや$_のおかげでRubyより綺麗という気がしなくもない
(ql:quickload :anaphora) (ql:quickload :ltk) (ql:quickload :lispbuilder-sdl) (ql:quickload :lispbuilder-sdl-mixer) (defpackage mixer (:use :anaphora :cl :ltk :sdl-mixer)) (in-package :mixer) (with-ltk () (loop with music for (text . command) in `(("選択" . ,(lambda () (awhen (get-open-file) (setf music (load-music it))))) ("再生" . ,(lambda () (when music (play-music music)))) ("停止" . ,#'halt-music) ("一時停止" . ,#'pause-music) ("再開" . ,#'resume-music) ("終了" . ,(lambda () (when music (free music)) (close-audio) (setf *exit-mainloop* t)))) do (pack (make-instance 'button :text text :command command) :side :left)) (sdl:with-init (sdl:sdl-init-audio) (open-audio) (mainloop))) SDL-Mixerの終了方法がイマイチかもしれない。
# coding: utf-8 import pygame.mixer as mixer import Tkinter as Tk from tkFileDialog import askopenfilename def playmusic(): mixer.music.load(entry.get()) mixer.music.play() def quitplayer(): mixer.music.stop() mixer.quit() root.quit() def setfilename(filename): entry.delete(0, Tk.END) entry.insert(0, filename) root = Tk.Tk() filename = None frame = Tk.Frame(root) frame.pack() entry = Tk.Entry(frame) entry.pack() Tk.Button(frame, text="選択", command=lambda: setfilename(askopenfilename())).pack() for txt, cmd in (("再生", playmusic), ("停止", mixer.music.stop), ("一時停止", mixer.music.pause), ("再開", mixer.music.unpause), ("終了", quitplayer)): Tk.Button(frame, text=txt, command=cmd).pack(side=Tk.LEFT) mixer.init() root.mainloop()
packがNoneを返すせいでframe = Tk.Frame(root); frame.pack()と二行分けになったり lambdaに一行しか書けないせいでplaymusicが関数定義になってしまったりと もうちょっとうまいこと書けないのだろうかと思った。書きなおし歓迎
再生と一時停止ってふつートグルじゃないのか?
タプルで書けるしょ 短くて読み難いコードはいらんけど
>>235 MPC-HC
Winamp
Foobar2000
けっこうあるぞ、分かれてるやつ…
再生中に再生を押す 一時停止中に一時停止を押す でどんな動作をするか想像が付かない
機能的にはトグルだけど、UI上独立してる方が認識しやすいとか誤操作防止にはなるかもね。 いまのは知らないけど昔の家電はそんなだし。
>>238 Winampとfoobar2000では再生中に再生を押すと曲を最初から再生し直す
後は特に意味なし
最初から再生し直すって知ってたら分かるけど、 |←(左向き三角) のようなボタンの方が自然かもな
Rubyのまつもとさんは日本人だから人柄が少しは伝わってくるけど、 PythonのGuidoさんのことって履歴くらいしか知らない... Guidoさんってどんな性格の方なんでしょうか? 優しい/気性が激しい、とか人間らしい情報をもっと知りたい
LLよろず本の流れか
人間には表と裏があることを理解しようね 取り繕っている人柄だけで判断すると痛い目みるぞ
Rubyの糞のような文法を見れば 頭の中が、そして人となりが 透けて見えますね
お前のレスに人となりが透けて見える
>>245 別にmatzの人格は誰も良いとは言って無いんだぞ?
むしろ
>>242 も「人間らしい」と書いてるように
悪い面のよく目立つ人物だと言うのはRuby使いからも知られてるのよ
248 :
デフォルトの名無しさん :2012/05/24(木) 11:55:18.97
>>247 なんでこんなに読解力の低い人間が多いのだろう
人格がいいと言ってるのを否定したくて
>>245 を書いたんじゃないと思うよ
オレオレ仕様が糞ってこと?
ラリー:祈りのオチャメな人、ホイド:唯物史観・功利主義者、まっず:イケけてるモルモン人
252 :
デフォルトの名無しさん :2012/05/24(木) 17:57:21.23
おまいらが何と言おうと勝手だが、俺はもうPHPの入門書買ってしまった。よってPHPの文句は言うなよ。
253 :
デフォルトの名無しさん :2012/05/24(木) 18:08:45.66
PHP, Perlでプログラミング始めるのはお勧めできない。 言語仕様がクソだし、 低速なWebアプリしか作れない Rubyも実質的に低速Webアプリ専用といっていい。 Rails風フレームワークが多数ある今、あえてはじめる意味も小さいと思う Javaか、C#を覚えるのが一番効率がいい。 クライアントアプリ、高速なWebアプリ、SmartPhoneアプリなんでも作れる。
Perl はそもそもWeb用言語じゃないですし…
システム管理用のスクリプトなんてニッチな用途だし そんなもののためにわざわざ別の言語覚えるのは非効率。 スクリプト言語は、遅いからWebアプリぐらいしか 実質的に使い道がないってこと。
何でもその言語で作るんじゃなくて 使い分けなんだよな、言語は
普通のアプリを結構作ってるが、スクリプト言語で遅いと感じられる事って 意外と少ないんだけどなぁ
書いててきもてぃーって言語はないの?
JavaScriptのjQuery あれは書いてて快感が
>>260 素のJavaScriptの酷さから解放された快感があるね
でも読む側は…
C#のLINQとか拡張メソッド、メソッドチェーンを使いだしたとき、"きもてぃー"って感じた
俺の場合は。
262 :
uy :2012/05/24(木) 20:35:27.27
rubyの each_with_index.map each_with_index.inject は天才だと思った
>>256 たいていのことはなんでもできちゃって、しかも速い言語(C#やJava)が
あればスクリプト言語なんて不要だよ
スクリプト言語では実現できないことはたくさんあるが、
スクリプト言語じゃないとできない開発なんてほぼない
たくさんの実現できないこと詳しく
>>263 まずコンパイルの手間が無くソースをそのまま実行できるのは
スクリプト言語の大きな利点
たとえばC/C++インタプリタのCINTみたいのもあるけど、
これは例外的な扱いだろな
こんな基本的な事に気が付かないなんて、
WindowsのGUIしかしらないお子様だろ
JSなしでは生きられない
>>264 速度が遅いからアプリ開発に使いものにならない
高速なdebugができない
実行時に初めてエラーがでるなど、スクリプト言語は開発効率が悪い
>>265 267にかいたが、コンパイルなんてのはそれなりのPCで
SSD構成であればすぐ終わる。
スクリプト言語では、デバッグの効率が悪いから、
コンパイルにかかる時間よりはるかに多くの時間を失う。
タイピングしてる時間よりも、デバッグに費やしている時間のほうが
はるかに長い。
これに気がつかないことこそお子様だよ
JSが大好き お子様が大好き
270 :
uy :2012/05/24(木) 23:46:45.18
「動的言語が使い物にならない!」なんて、言っちゃうのは 自分バカですとか言ってるようなもんだよね・・・ 「動的言語での開発じゃ周りがついてこない」ならわかるけどw
271 :
uy :2012/05/24(木) 23:54:13.33
あと、「動的言語は遅い!」とかいってる奴も 本当に動的言語での開発で、速度がネックになってどうしようもならなった事あんの? たとえばどこで?
>>271 他人(過去の自分)の書いたコードを修正する時かな。
メソッド名とかを変更しようと思っても
影響範囲がどこまで有るか人間が調べないとわからない。
同じ名前だけど違うメソッドとか有るので検索した結果を
一つ一つ調べて修正するまでが遅い。開発のネックになるよ。
静的型付け言語だと、メソッド名を選んで一つ変更すれば
プロジェクト全体の変更が自動で行われる。確実に速いね。
273 :
デフォルトの名無しさん :2012/05/25(金) 00:23:00.12
>>270 さっそくRuby信者が登場w
トラフィックがどうしようもならなくなってから考えるのは低レベル。
それよりずっと前にレスポンスが悪い状態になってる。
TwitterがRuby捨てたのも有名な話。
FacebookなんてPHPで始めてしまったために全部開発しなおしになった。
そういう事例があるから、海外の最近のインターネットサービスの企業は、
最初からスクリプト言語を避けてる。
スケーラビリティを考えて、最初からJava, C#, Scalaで作る。
いまやRailsに影響受けたフレームワークが多数あるから、開発生産性も悪くない。
日本はあいかわらずPHPばっかり
せっかくJava選んでもStrust1とか化石フレームワークつかってたりな
日本は、言語もフレームワークも時代遅れ。
>>273 Ruby厨もなにもここスクリプト言語同士でやりあうところなのに
コードも書けないのにドヤ顔でそこいらのブログに書いてあることをつらつら並べられてもつまらん
>>271 暗号化処理で
あと枝狩りとかオセロゲームで
>>274 ここでスクリプト言語の争いやってるってことは、
このスレのほとんどのやつはスクリプト言語しか使えないってこと。
JavaやC#はまったく知らないひとが大半だろう。
そこらのブログに書いてある?
URLあげてみてくれ
日本自体がオワコン
フロントは動的でおけ。バックは静的か動的でも超軽め。 フロントはどこも変わらず Twitter=Rails Facebook=PHP Amazon=Perl だろ。 バックは書き換えられてるだろうな。 フロントPHPちょっとJavascriptがっつり、バックJavaとか多くね。
IT関連で日本に世界的な企業なんて無いしな。
むしろJavaを避けてObjective-Cで作れば面白いかもしれないよ
>>273 TwitterもFacebookもRubyやPHPをこの世から消滅させろとか言ってないのに
>>280 Objective-Cは速いし、化ける可能性あるな
まだ定番のWeb appilication frameworkがないようだけど
スクリプト言語より将来性ありそうだ
SmartPhoneまで扱える汎用性を考えたら、
Java, Objective-C, C#.net, VB.netとかだな
>>278 FacebookのPHPは独自ツールでコンパイルされてると聞いた。
実質的にC言語だと思う。
>>279 PHP大好きの楽天はもっさり。ページ移動に3秒とかざら。
CyberAgentはAmebaでMongoDB(NoSQL)使ったり、新しい技術使ってるイメージ。
Mixi, グリーとかなに使ってるんだろ。
283 :
uy :2012/05/25(金) 01:55:52.41
>>272 実行速度のことを言ったんだけど、
メソッド名の変更は、動的言語では正しく置き換えるのは厳しいな
でも別にそれ古いメソッドも残して、古いほうよばれたらデバッグ時に警告でるようにすればいいだけじゃね
284 :
uy :2012/05/25(金) 02:06:17.74
>>275 暗号化のロジック部分だけ静的言語でかけばいいんじゃない
オセロは重くなる箇所なんてねーだろ
AIにしたって定石パターン拾ってくるだけ
枝狩りって何のこと言ってるのか
>>283 あなたはRuby以外で、どの言語つかったことあるの?
リファクタリングは、タイプセーフな言語のが効率よくできるのは確かだよ
型の記述なんて1個2秒くらいなんだからStaticで書いたほうが
結局、時間の節約になるんだよ。
仕様変更あっても、IDEでさくさく直せる。
>古いほうよばれたらデバッグ時に警告でるようにすればいいだけじゃね
「コンパイルが不要」ってスクリプト言語のお決まりのセールストークだけど、
型宣言をさぼると、そうやって他のところでしわ寄せが来る。
その分、テストプログラムの作成やらで時間がとられる。
〜実録 テストを書かないJavaプログラマ〜 未完
287 :
デフォルトの名無しさん :2012/05/25(金) 02:53:39.89
>253 だから否定するなっての。しかもここはスクリプト言語スレなんだからC#もJavaもスレ違いだ。
>>284 動的言語は遅いってことになるんじゃないの?
で、反論できなくなれば、そこのロジック部分だけ静的言語
で書けばいいんじゃないって言い続ければ動的言語は遅いってことにならないなw
あほかw
AIとかそんな単純じゃねーよ
だったらお前が書いてみろよ
大体その定石だって作るのは静的言語だろうが
静的言語の成果物を元にしないと動的言語の方で
十分高速なものを作れないんだったら、
やっぱり動的言語は遅いの
LLの(軽|重)量級のフレームワークのどれを計測しても データ層の重さと比較したら誤差。 成功した会社はデータ層を、金が集まったら適当な言語・技術で書き直してる。 データ層以外は思ったより、そのまま使っている会社が多い。 どんな言語で開発しようと、当あたって金ができたら、考えればよい。 むしろ超重量級で開発してメジャーになったが スケールできなくてコケたものなどがあったら教えてほしい。
>>283 > でも別にそれ古いメソッドも残して、古いほうよばれたらデバッグ時に警告でるようにすればいいだけじゃね
警告でたあと、どっちみち変更しないといけないじゃん。
なんで、そんな面倒なことしなくちゃならんの?
あ、動的言語だからか。
>>286 テストを書いたって、エラーが起きたことが分かるだけで
何が原因でエラーになったかはわからんのだよ。
エラーの原因を調査するのにも時間が掛かる。
それにテストってのはエラーがあることは証明できるが
エラーがないことの証明はできないんだよ。
テストってのを本当に知っていれば分かるはずだよね?
なんでテスト万能だと思ってるの?
テスト書くにも時間が掛かる。省けるテストは省きましょう。
292 :
uy :2012/05/25(金) 03:46:04.73
>>285 ruby以外で使ってるのはC++
でも他言語の構文も概念もおおよそは把握してるよ
そのメソッド名変更の件については一考する
動的言語が考えなければいけない箇所だ
>>288 はい?オセロごときのAIが単純じゃないって、寝ぼけてんの?
まぁゲームアルゴリズム何にもわからん子がAIなんて書いたら
大変な事になるんだろうけど
携帯アプリでもオセロや将棋が動いている所を見ると、それほど重い処理はいらないように見えるよね
>で、反論できなくなれば、そこのロジック部分だけ静的言語
>で書けばいいんじゃないって言い続ければ動的言語は遅いってことにならないなw
すげー勘違いだな、
動的言語を使ってても、全てのメソッドやクラスを静的言語で部分実装できるものではない
動的言語のソースコードから静的言語でネイティブに吐き出せる部分は限られてくるし、
下手に吐き出すと余計に遅くなる事もある、
暗号化について完全に吐き出せる箇所だから、遅くなるんだったら静的言語で書けって言ってんだよ
どういう暗号化のアルゴリズムを描いたら、動的言語で処理が追いつかなくなるのか知らんけど
ろくでもないソースコードかいているんじゃなければいいな
293 :
uy :2012/05/25(金) 03:54:41.18
やっぱ俺が思うに 動的言語遅いとか言ってる奴は 普通のプログラマからしたら考えられないくらいの遅いコードを書くから 今まで高速な言語のおかげでそのゴミカスアルゴリズムが、影響を及ぼす事はなかったけど ちょっと速度制限のある動的言語でソース書かせると、そこら辺が如実に表れてしまうのではないか ふむ、まともなアルゴリズムがかけないのならば仕方がない 動的言語への移行を推奨していくのも難しいところだな
294 :
285 :2012/05/25(金) 04:08:13.25
>>286 必要な場所は、テストコードは書いてるよ
静的なら凡ミスは全部コンパイラ、IDEが指摘してくれるが、
動的だとコンパイラ、IDEでエラー拾えないから、テストの時間が長くかかる
>>289 書き直すのは時間もコストもかかるから、最初からある程度高速な言語で
やろうって企業も増えてる。
JavaもC#も、最初の学習コストは少し高いかもしれないが、開発生産性は
決して低くないよ。
上に書いたようにリファクタリング、デバッグの時間が大幅に短くなるから。
>スケールできなくてコケたものなどがあったら教えてほしい。
スケールできなくてこけるような企業は、有名になってないw
>>293 ベンチマークの結果から
動的言語が遅いのは明らかだよ。
その遅さが問題になるかどうかは、何に使うかで決まる。
アクセス数1日に1万人のサイトを1台のサーバーで運用とかいうような
小さな規模では問題にならないだろう。
だが1台のサーバーで100人、1000人以上を収納するような
ウェブサービスなら問題が発生する。
遅くても問題無いというのは、単に君が小さな規模のものしか作ってないだけの話。
アルゴリズムは同じ人が作るんだから言語が違っても
同じ物が出来るんだから、まともなアルゴリズムが書けないとか
関係ない話。まともだろうがまともじゃなかろうが
同じアルゴリズムで速度に差が出る。
やっぱり動作速度よりも開発速度のほうが重要だよな。 静的型付け言語だと、動的型付け言語に比べて修正のコストが大幅に低い。 コードの量よりも、修正の際の調査のほうが時間かかるからね。 静的型付け言語のコードが冗長といっても決まり文句みたいなものだから コードの行数がコードリーディングの負担になることはないし。
ここで静的型付け言語の方が開発効率良いって 言ってる奴って、実はコード全く書けないから 5分くらいで書ける簡単なお題出すと 追っ払えるよ、マジおすすめ 静的型付け言語の方が効率良いはずなのに、5分で書けるコードが 一日待っても二日待っても出てこないw え?俺等が5分でやる仕事に何日もかかるの?みたいな
考えた特定のアルゴリズムを実装しやすい言語がある
開発効率は結局のところ動的と静的でどっちがいいのか コーディング 静的 > 動的 リファクタ 動的 > 静的 デバッグ 動的 > 静的 (コンパイル時間とか考慮すると微妙?) 一人でちゃちゃっと作る小規模なのは静的で、多人数で大規模なのは動的でって感じなっちゃう?
>>299 おい、静的と動的が全部逆になってねーか?
>>300 マジだ…死にたい
コーディング
動的 > 静的
リファクタ
静的 > 動的
デバッグ
静的 > 動的 (コンパイル時間とか考慮すると微妙?)
>>297 それは追い払ってるんじゃなくてHaskellを呼び寄せてるんだぜ。
JavaをHaskellに変更するコストは、PerlをCに変更するコストよりも大きい。
Haskellで
>>220 はちょっと見てみたかったな
こんなスレタイだから、俺の「スクリプト言語不要論」に全員が思いっきり
反論してくるかとおもったが、静的の効率のよい面を支持してくれる人もいるようだなw
>>301 C# (Visual Studio)は差分でビルドできるからコンパイル時間は気にならないな。
一瞬で終わるし
>>304 そんな一瞬でコンパイルの終わるC#使いのあなたに
>>220 TkやSDLでなくても.NETでおkよ
220あぽんされててわろす
>>297 えとね。静的型付けの方が開発効率がいいというのは
多人数で行う中小規模の開発の話なんだ。
トラックのほうが速く多くのものを運ぶことが出来るでしょ?
でも小さな手荷物を近くのコンビニまで運ぶのなら
手で運んだほうが速いんだよ。
5分でここに書けるコードと、
実際のコードでは極端に差があるってのは
わかるよね。
>>292 携帯とかじゃなくてPC用のオセロゲームを考えていたんだけど
こっちはまあいいや。
静的言語の成果物を元にしないと動的言語の方で
十分高速なものを作れないんだったら、
やっぱり動的言語は遅いの
定石データベースに一致しない盤面の場合は、勝利の期待値を探索することになる すべて保持するわけにはいかないからね で、探索も全解探索だと、時間がかかりすぎて実用的じゃないから、適切な深さで探索の枝を打ち切る 数手を探索する程度でもそれなりに強い
俺の個人的な意見としてだけど 静的型推論付き>動的>静的型推論なし かなあと思う、単純な型なら推論なしでもいいが ジェネリクスやテンプレート、高階関数(関数ポインタ)などを複数含む型になると 流石に思考の妨げになってしまう印象
Prolog言語はどれに分類されますか
あれは根本的なところが違うからなんとも…
強いて言えば関数型
Prologは「論理型」という別パラダイムに分類するのが定石
316 :
uy :2012/05/25(金) 12:52:56.00
>>295 >同じ物が出来るんだから、まともなアルゴリズムが書けないとか
>関係ない話。まともだろうがまともじゃなかろうが
動的言語であろう許容範囲内の速度が出ればいいわけで
それを出せない場合において初めて静的言語の導入を考えるんだろが
あと、同じ物は出来ないだろ
静的言語でかかれたソースコードを動的言語でそっくりに書き直す事は出来るだろうが、
それじゃ動的言語を使う意味が薄すぎる
ちなみにその逆は出来ないと考えたほうがいいよ
317 :
uy :2012/05/25(金) 13:00:15.96
>>309 だ〜か〜ら、オセロのどこが複雑なんだよって
PC版オセロとかいっても
どうしてもAIが遅いとかいって勘違いをして処理速度を考えるなら
オセロ程度なら全ての譜面の状態をオンメモリで記録したとしても
10MBいかねーんじゃねーの?事前計算のAIにしとけばAIの処理速度なんて0だろがアホか
将棋や麻雀でそれは厳しいだけでオセロごときじゃ余裕
次からは将棋や麻雀を例にだしておけ
それと、まだ勘違いしてんの?
動的言語っていうのは、「静的言語で作られたライブラリを使いやすくする為の機構」だと思えよ
標準ライブラリとかRubygemsがすべてrubyだけでかかれてるとか思ってるのか・・・
318 :
uy :2012/05/25(金) 13:04:04.00
ソースコードの書きやすさを捨ててまで、プログラミングをする価値って何? RubyをアンチしてPython使うぜみたいな奴ならわかるけど 動的言語を全批判とかwお話にならないわ
319 :
uy :2012/05/25(金) 13:18:16.42
つうか、思ったけど将棋や麻雀にしても そこら辺のゲームで実行速度が問題になることはないような気がしてきた この話は忘れたまえ、パズルゲーとボードゲーは動的言語で書ける
>>310 も言っているが、
オセロにしても将棋にしても
すべての盤面を記憶してるわけでもないし、
毎回全解探索してるわけでもないだろ?
全解探索せずに探索を打ち切ること=枝刈り
動的言語で書ける・書けないという話はしないが
全パターンが10MBで収まるとかオセロをナメすぎ
321 :
uy :2012/05/25(金) 13:46:05.10
>>320 >全パターンが10MBで収まるとかオセロをナメすぎ
本当に?
322 :
uy :2012/05/25(金) 13:50:52.71
俺の携帯アプリに 強さモード3つあって 20kb程度で動くオセロのアプリあるけど どうやって動いてるんだろうな
ちょっと考えただけでそんなのすぐ分かるだろw オセロは8*8=64マスあるが各マスに対してコマ無し/白/黒の3通りのパターンがあるから 盤面の状態は3^64パターン。(無効なパターンもあるけど) で1パターンについて何bit使って打つ手を表すか知らんが 適当にコレ*無効パターンの割合=1で打ち消しあうとしよう すると必要な容量は3^64bits = 4 * 10^23 MB。ほんと10MBとか何寝ぼけたこと言ってるんだよって話
>>312 型という観点からPrologを見ると、実は無限のバリエーションで
データを授受できる。ところが実際のPrologプログラミングでは
構造体はリストだけで、ほとんどの引数にはスカラー型データが
くる。これはPrologプログラマがPrologをRDBであると意識して
いるからだと思う。一応は、整数、実数、文字列の区別があるが
Prolog教科書の索引に型という項がないことからも分かるよう
に、全く型について意識されることはないのがむしろ特長。
325 :
uy :2012/05/25(金) 13:55:28.10
どうせ3**64の譜面を全記憶とかw そんなレベルのアルゴリズム思い浮かべてるから 10MBという大容量があっても足りなくなるんだろ ドカタはおそろしい
まったくだなー オセロ程度なら全ての譜面の状態をオンメモリで記録したとしても10MBいかねーんじゃねーの? なんて低レベルな発想が思い浮かぶだなんてこれだからドカタは恐ろしい
328 :
uy :2012/05/25(金) 14:02:00.63
>>323 ワロタwwwww
言ってるそばから
まずは隣接しているコマ同士の譜面の全パターンの抽出
で、その中から「ゲームルール上」ありえる譜面のみを抜き出す
で、全部を抜き出せばおそらく俺のアバウトな計算では10MB程度と、でた。
あとはさぁ、譜面を回転させることによって4分の1には簡単に出来るんだから
せめて
3**64 / 4 はやっとけよ
この程度も一瞬でひらめかないレベルなんか
探索の枝の話も分からないようだから言っても無駄か
330 :
uy :2012/05/25(金) 14:07:47.29
ゼブラってw また古いもの持ち出してきたな お前の中ではゼブラが最強なんだろう よかったな
ドヤ顔で1/4くらいなら簡単にできるとか面白いやつだなーほんと
332 :
uy :2012/05/25(金) 14:13:59.13
10MBも与えてるのにオセロつくれませーん とか 流石に、ドカタだな ゲーム機や、PCスペックが今よりもはるかに低い大昔から 動かせてた種類ゲームだというのに ドカタは10MBもあって作れないのか 3**64の譜面を記憶させないとダメなのか・・・w つれると思ったよそこ、絶対それ考えてると思った 低脳の発想は読みやすい
>>322 ・序盤の定石を記憶
・以降は数手先読み
このくらいの処理なら容量食わないしそれなりに強い
334 :
uy :2012/05/25(金) 14:24:59.29
それがどうした
ルール上起こりうる譜面をすべて記憶してるとでも思ってるんだろ?
336 :
uy :2012/05/25(金) 14:29:37.82
┏━━━━━━━━━━━━━━━━━┓ ┃┌─┬─┬─┬─┬─┬─┬─┬─┐┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │○│●│ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │●│○│ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃└─┴─┴─┴─┴─┴─┴─┴─┘┃ ┗━━━━━━━━━━━━━━━━━┛
┏━━━━━━━━━━━━━━━━━┓ ┃┌─┬─┬─┬─┬─┬─┬─┬─┐┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │●│●│●│ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │●│○│ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃└─┴─┴─┴─┴─┴─┴─┴─┘┃ ┗━━━━━━━━━━━━━━━━━┛
>>317 オセロの話は全て俺が間違ってた
> 動的言語っていうのは、「静的言語で作られたライブラリを使いや
> すくする為の機構」だと思えよ
だから、こう思うのは、「動的言語の実行速度が遅い」ためだろーが
話がずれてきてるだろーが、馬鹿が理解するのは無理か
> あと、「動的言語は遅い!」とかいってる奴も
> 本当に動的言語での開発で、速度がネックになってどうしようもならなった事あんの?
┏━━━━━━━━━━━━━━━━━┓ ┃┌─┬─┬─┬─┬─┬─┬─┬─┐┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │●│●│●│ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │●│●│ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │●│ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ┃│ │ │ │ │ │ │ │ │┃ ┃└─┴─┴─┴─┴─┴─┴─┴─┘┃ ┗━━━━━━━━━━━━━━━━━┛
すべての譜面が10MBに収まるという話に説得力がない その譜面データベースのURLを示すか、ありうる譜面が何通りあるかを書くくらいしろ
>>292 C, C++なんて一番めんどくさい言語だろ
あれは嫌いになって当然だ
「使ってる」じゃなくて「使っていた、学習していた」だろう?
>そのメソッド名変更の件については一考する
>動的言語が考えなければいけない箇所だ
C# + VisualStudioでは、メソッド名の変更は
一箇所変更して、「名前の変更」をクリックするだけで全部置き換わる。
しかも一瞬で。
こういうの考慮すると、開発生産性はスクリプト言語の完敗だよ
多少、タイプ文字が少ないからといって開発生産性が高いと
思い込んでる人はわかってないなぁ、と思うわ
自演うざい
自演呼ばわりうざい
スクリプト言語用のIDEでメソッド名変更が簡単にできてもいいんじゃないの?
で、uy君は何かを探索するプログラム書いたことあんの?
def greet(s): ... eval("greet('hi')") とか考えると無理なような気もするけど 世の中には頭いい人がいるからなんとかなったりして
ネックはevalだけか?
>>273 お前がかかわるプロジェクトで、そこまでスケーラビリティを考える必要なんて無いだろ
>>348 何も考えずに書いちゃったけど一般的に変数の型が実行時に決まらないことにはどうにもならないね
351 :
uy :2012/05/25(金) 15:34:24.80
>>338 そもそも動的言語を採用するなら最初から静的言語との併用が大前提
動的言語で開発っていったのに静的言語使ってずるいーw とかそういうレベルなの?
両方使うに決まってるだろ
>>341 速度の事を考えるときと、WinAPIを使うときにC++を使う
つうか、C#.NETのほうがいいことは分かってるけど、こちら側になれてると移行するのが面倒くさい
352 :
uy :2012/05/25(金) 15:37:32.73
>>346 こんなソースばっかりだよ
def search_down_all_test sym = /(.*)/ , o = self
o.task.each.inject(Hash.new) do | stack , ( key , value ) |
stack.merge! value.search_down_all_test sym unless value.task.empty?
next stack unless key =~ sym
stack.merge({ key => value })
end
end
あれ? Rubyを中間言語やバイナリにコンパイルできるものが、過去にいくつかあった気がするが それらは今どうなってるの?
stack.merge!でくらっときた
>>352 本当に必要な箇所でしか()使わないという徹底振りがすごいな
Prologもコンパイルできたり PrologとC++/Cで関数/述語を互いに呼び出したり出来るよ
ふーん、ゲームの探索プログラムを書いたこともないのに適当に語ってるのか
昔C#ばっかり使ってたころはスクリプト言語をバカにしてたけど、 RubyとPythonを使い始めたら滅多にC#を使わなくなってしまった
rubyはmoduleが便利だな Mix-inとか早く他言語でも実装されたらいいのに こうすりゃできるぜとかじゃなくて、使いやすい形での実装を求む
mix-inは機能を制限した多重継承だから、多重継承できる言語ならどれでも模倣はできるはず。 その場合、mix-inより自由度がある分、使用にはRubyと比べて注意が必要か。
クラスへのMix-inなら多重継承で真似できるけど オブジェクト自身へのextendは厳しい
専門業務型裁量労働制は否定されました。 従業員代表は認められませんでした。 管理監督者の適否まで判断されませんでした。 付加金は認められませんでした。 時間給の計算方法は 月給÷(所定労働日数×7時間) でした。 30時間分の残業代込みとの主張は認められませんでした。 今回とは全く別件のことで、 「裁量労働相談室」の担当者の名前をちょっと知りたく思っています。 実際のメール等、何かあれば全部下さい。 現在でも特に何もありませんよね。 安全安心です。 日本国内在住です。住所は米子市のままです。 今回は郵便などでも問題ありません。 本日から一週間(6月1日)が目安です。 また、お願いします。 一日千秋の思いで待ってますから。。。 (´・ω・`)ショボーン (´・ω:;.:...
mixinとtraitは似たようなことを狙っている印象があるが 違いはどう解釈すればいいのかね
PHPを覚えると金融機関のシステムやクラウドサービスが作れるようになりますか? PHPはオブジェクト指向言語の代表格なのでPHPを先に学習すると JavaとかC#とか簡単に覚えられるし、これからはPHPの高い信頼性を 生かして他の言語で作られたシステム、特に銀行系のシステムが PHPに置き換えられていくと会社の先輩から聞きました。
>>364 interface継承がない動的型付け言語がmixinにこだわるのは分からなくもない
静的型付け言語で似たようなことを狙う奴は空気読めない
>>365 釣りだろうけど、いいかげんにしろw
クソ設計で有名なPHPはWebにしか使えないだろw
基幹業務に低速なスクリプト言語なぞ使わない
JavaやC#使うことがあってもPHPはありえん
>>366 静的型付け言語であっても、実装を共有してかつ型を合わせたいけど
ダイヤモンド継承みたいな複雑な事態は避けたい場合には
現状では、制限された多重継承としてmixinかtraitを使うしかないんじゃないの
Rubyでmixinが実際に多用された結果、
有効だけどいくつかのケースで問題がある事が分かったらしく
最近はオープンクラス問題を含めて解決策が検討されてるっぽいが
JavaもC#も多重継承を禁止してるのはちゃんと理由が あってのことだからな。 きちんと設計できてれば多重継承なんて必要ない。 Rubyは劣化版オブジェクト指向言語だな
>>368 has-a で実装を共有して is-a で型を合わせる
has-a を禁止されたら多重継承を使うしかないが、現状では禁止されていない
>>369 おや?
Java8で実装を伴ったInterfaceが書けるようになるのはどうしてかな?
頭がJDK 1.0.2で止まってるんだろう
>>371 それが煩雑だっていう面もあるんじゃない
デザインパターンで言うと、Template MethodよりStrategyのほうが
移譲を使っていて柔軟性はあるけど……っていうような?ちょっと違うかも
>>365 > PHPを覚えると金融機関のシステムやクラウドサービスが作れるようになりますか?
金融機関ならCOBOLでしょう?
PHPだとFacebookを作れますよ。
376 :
デフォルトの名無しさん :2012/05/26(土) 01:07:45.36
>>372 >Java8で実装を伴ったInterfaceが書けるようになるのはどうしてかな?
ですよねー
>>375 FacebookのPHPは嘘
コンパイルされてる別物だから実行速度が違う
ん? コンパイルすればいいだけだよね。 C言語をコンパイルすると機械語になるけど 機械語を覚えるわけじゃないでしょ? 覚えるのはC言語だよね。 PHPをコンパイルすると○○になるけど ○○を覚えるわけじゃないでしょ? 覚えるのはPHPだよね。
>>378 FacebookのPHPコンパイラ使ったことあって言ってるの?
>>377 >FacebookのPHPは嘘
>コンパイルされてる別物だから実行速度が違う
その理屈でいくと、内部でJITコンパイルしている処理系は全部別モノということになる。
つまりおまえの理屈がおかしい。
>>379 使ったこと有る
使ったこと無い
この2つ答えに対する君のレスを
2つ書いて下さい。
使ったことのある無しが 何の関係がるんだろうか?
FacebookのPHPはスクリプト言語じゃない あんなトラフィックのサイトはスクリプト言語で動かないってのw これだからこのスレの住人はwww
>>381 人口無能にレスつけてる気分になったのでもういいです
馬鹿には無理
wikipediaもphpだったよな。 無知は恥ずかしいよ。
言語処理系がプログラムをコンパイルして実行するかどうかと 型付けが静的か動的か、あるいはスクリプト言語かってのは別の概念 例えばJavaは一般的に仮想マシンで実行される静的型付け言語 Common Lispはコンパイラ付きの動的型付け言語(+オプションで型指定できる) 組み合わせは割となんでもある
uyが言ってただろ 遅くても問題ない速度で動けば 使える言語なのだって。
>>388 問題ないと思ってるのは自分だけ
少しでも早くhttpのレスポンスを返すことにプライドを持つべきだろ
タイムアウトしなければいいとかいう低次元すぎる
>>386 wikipediaなんて99%以上のリクエストがただの参照で
データ更新してない。
個人ごとに違うデータ見せる必要がないから、たいていキャッシュから返せる。
こんなサイトは、簡単にスケールアウトできる。
えー、はい。それで PHPなんですよね?
>>383 いやFacebookの開発言語は普通にPHPだよ。独自開発したPHP処理系を使っているというだけで、言語はPHPそのもの。
392 :
uy :2012/05/26(土) 02:06:16.21
あああああLispやりたい
LISPは解散しました
時代はPrologだ
Lispは検索ノイズを増やしただけだった。
ぶっちゃけ、記号でぐぐった時の結果の如何が、シギルの是非の明暗を決めてるよな。
自演うぜー
検索エンジンが記号も検索できるようにしてくれれば一番いいのに
399 :
396 :2012/05/26(土) 07:31:51.57
GuidoがGoogleに居るということ。
だが残念ながらRubyの人も多数送りこまれているのでした 夜はまだ始まったばかりだ
Hoogleみたいな検索ページを、各言語で作ればいいだけの話。
>>389 >
>>388 > 問題ないと思ってるのは自分だけ
>
> 少しでも早くhttpのレスポンスを返すことにプライドを持つべきだろ
> タイムアウトしなければいいとかいう低次元すぎる
>
>
>>386 > wikipediaなんて99%以上のリクエストがただの参照で
> データ更新してない。
> 個人ごとに違うデータ見せる必要がないから、たいていキャッシュから返せる。
> こんなサイトは、簡単にスケールアウトできる。
つまり、簡単にウェブサイトを作れるPHPが優れてるって事だよな?
だいたい、速度を言い始めたら、スクリプト言語がJavaやC#に勝てるわけないんだし。どんぐりの背比べだ。
頭の悪い言語仕様やライブラリに耐えられるなら好きにすればいいと思うよ
JavaやC#なら何もキャッシュしなくても、キャッシュバリバリ使ってるスクリプト言語にすら余裕で勝てる
バカな設計を正当化してどうするのw ウィキペディアといえば、マージソートの記事、書き換わってるな。
なんでHaskellなんだ
>>402 402の後半理解できなかったか
やっぱりスクリプト言語厨は頭悪いなw
ほぼ静的なコンテンツ用のサイトは、簡単にスケールアウトできるし
その場合は言語などほとんど関係ないってことだ。
wikiの場合、ほとんどのユーザがログインしないで使うだろ。
ほとんどは、検索ワードに対する内容をただ返しているだけ。
一方、Facebookなどは情報の更新が多く、さらに個人ごとに
まったく違う情報を表示させる必要がある。
こういうサイトのスケールアウトはwikiのように簡単にはいかない。
あらゆる高速化の手段使ってる。
>簡単にウェブサイトを作れるPHPが優れてるって事だよな?
違う。高機能なサイト、高トラフィックのサイト、レスポンスの速いサイトを
つくろうとするとスクリプト言語だと逆にたいへんになる。
もしくは不可能になる。
スクリプト言語は覚えることが多少少ない代わりに、
他の面で苦労する羽目になる。
全体から見たらたった10%の、高速化が重要な部分が、あたかも全てであるかのように語る技術
全体から見たらたった10%の、高速化が重要な部分が、あたかも全てであるかのように語るプログラムもPHPで書けますか?
馬鹿には無理
print "語りたい内容";
フロントエンドだったら、単純にサーバ増やせばスケールするしなあ。 数万台サーバを扱ってて、数千台まで減らせるのだったら考えるだろうけど。
print <<<EOF Seven Databases in Seven Weeks: A Guide to Modern Databases and the NoSQL Movement [ペーパーバック] ただいま予約受付中です。 在庫状況について この商品は、Amazon.co.jp が販売、発送します。 ギフトラッピングを利用できます。 The Just Bento Cookbook: Everyday Lunches to Go [ペーパーバック] 在庫あり。 在庫状況について この商品は、Amazon.co.jp が販売、発送します。 ギフトラッピングを利用できます。20点在庫あり。ご注文はお早めに。2012/5/27 日曜日 にお届けします! まつもとゆきひろ コードの未来 [単行本] 在庫あり。 在庫状況について この商品は、Amazon.co.jp が販売、発送します。 ギフトラッピングを利用できます。2012/5/27 日曜日 にお届けします! EOF;
このスレでPHPの回答見たの初めてかもしれない
perl <<EOF; Seven Databases in Seven Weeks: A Guide to Modern Databases and the NoSQL Movement [ペーパーバック] ただいま予約受付中です。 在庫状況について この商品は、Amazon.co.jp が販売、発送します。 ギフトラッピングを利用できます。 The Just Bento Cookbook: Everyday Lunches to Go [ペーパーバック] 在庫あり。 在庫状況について この商品は、Amazon.co.jp が販売、発送します。 ギフトラッピングを利用できます。20点在庫あり。ご注文はお早めに。2012/5/27 日曜日 にお届けします! まつもとゆきひろ コードの未来 [単行本] 在庫あり。 在庫状況について この商品は、Amazon.co.jp が販売、発送します。 ギフトラッピングを利用できます。2012/5/27 日曜日 にお届けします! EOF
print orz
420 :
uy :2012/05/26(土) 14:15:11.91
すげえ 未だにPHP推す奴がいるのか
すげえ 未だにモッサリ動作のRuby推す奴がいるのか
422 :
uy :2012/05/26(土) 15:33:10.57
マジレスするとperl6よりは起動は2,3倍速い
起動が速いだけとかw
そういえば、正確なコード忘れたけど str = "" 10000.times do str += "a" end みたいな事をやってRubyは遅いとブログに書いてるのいたな
システムトレイに常駐しておいてクイック起動気取りとかなw
>>408 facebookのPHPコンパイラはせいぜい2〜3倍程度の性能向上らしいよ?
それとは別にJIT方式のPHP実行環境を開発中で、将来は全面的にそっちへ移行予定だとか
性能的にも現PHPコンパイラのレベルまでは到達可能だと予想してるらしい
facebookはスクリプト言語の効率的な開発サイクルを重視してるっぽいね
で、それがPHP公式に 取り入れられるかもしれないね。
この対応と同等。 スクリプト PHP 静的コンパイル C++ 動的コンパイル C#
FacebookはPHPを選んでしまって失敗だった
昔むかしStage6はRuby on RailsではダメでPHPか何かで作り直したよね?
TwitterはRuby on RailsじゃだめでScalaだったかな。
Ruby on Railsは使い物にならないんだな
433 :
uy :2012/05/26(土) 19:35:26.74
そもそもPHPやPerlの話をしてるときって、動的言語の問題点を挙げてきたりはしないよね rubyの話になると途端に動的言語の問題を指摘してくる奴いるけどw これの意味するところは、PHPやPerlでは動的言語の問題が解消されてるとかいう話ではなく 話に混ざれるフィールドにすら辿り着いていない事を意味する 勘違いしないようにね
>>430-432 このように、PHPを使ってるかSlacaを使ってるかはどうでも良くて
「Railsを捨てた」ことが重要なのですな
> そもそもPHPやPerlの話をしてるときって、動的言語の問題点を挙げてきたりはしないよね え? 普通に出てきてるけど? 節穴?
そもそもPHPやPerlの話で 動的言語の話が出てこないからな。 ぶっちゃけ動的言語的に劣ってるのだろう?
酷い自演
こんな板で自演呼ばわりすること自体頭がおかしい
439 :
デフォルトの名無しさん :2012/05/26(土) 23:54:47.99
JavaScriptはいいよな ブラウザ上で動けばいいだけなんだから JavaScriptで大規模開発は出来ない! とか大声あげていわれる事もなくて幸せそうでいいな
>>436 知らないクセに、よく言えたものだ。呆れる。
必死すぎる
>>439 JavaScriptだってサーバーで動かせられるんだからねっ!
あんなものつかってるやつはばかです
444 :
デフォルトの名無しさん :2012/05/27(日) 03:15:30.03
秀丸マクロで遊んでみた そこそこ使える
秀丸マクロもLL
貧弱だから LLLLくらいか
447 :
デフォルトの名無しさん :2012/05/27(日) 10:09:21.12
試しにクリックしたらブラウザが落ちた
ただの雑談掲示板だったよ
>>414 ちょっと長くなってしまったので2レス
# coding: utf-8
require 'httpclient'
require 'nokogiri'
urls = File.readlines(ARGV[0] || "urls").find_all do |line|
line.start_with? "http"
end
urls.map!(&chomp)
MAX_CON = 2
$num_con = 0
mutex = Mutex.new
cli = HTTPClient.new
>>450 の続き
threads = urls.map do |url|
Thread.new do
passed = false
loop do
mutex.synchronize do
if $num_con < MAX_CON
$num_con += 1
passed = true
end
end
passed ? break : sleep(0.1)
end
html = cli.get(url).body
root = Nokogiri::HTML.parse(html)
title = root.at_css('title')
divs = root.css('div[class="buying"][style]')
mutex.synchronize do
puts title.text.strip if title
puts divs[1].text.strip if divs[1]
puts divs[2].text.strip if divs[2]
puts
$num_con -= 1
end
end
end
threads.each(&:join)
Perl6は静的型付けだから、もうLLの範疇にないかもな。
単に実行時型チェックの仕組みが導入されただけじゃないの? それだけで言語としての位置づけが大きく変わるとは思えん
>>414 use feature qw(say);
use URI;
use Web::Scraper;
use open qw(:encoding(utf-8) :std);
my $amazon_stock = scraper {
process q{//span[@id='btAsinTitle']}, title => 'TEXT';
process q{//form[@id='handleBuy']/table[3]/tr}, 'detail[]' => 'TEXT';
};
while(<>){
chomp;
$_ or next;
my $stock = $amazon_stock->scrape(URI->new($_));
length and say for($stock->{title}, @{$stock->{detail}}[1..3]);
say '';
}
>>450 書きなおし
お手本にさせてもらいました
>>454 # coding: utf-8
require 'httpclient'
require 'nokogiri'
cli = HTTPClient.new
ARGF.each do |line|
line.chomp!
next if line.empty?
html = cli.get(line).body
root = Nokogiri::HTML.parse(html)
title = root.at_css("span#btAsinTitle")
details = root.xpath("//form[@id='handleBuy']/table[3]/tr")
# details = root.css("form#handleBuy > table:nth-child(3) > tr") # FIXME
[title, details[1], details[2]].compact.each do |e|
text = e.text.strip
puts text unless text.empty?
end
puts
end
こんなくだらないネタに一生懸命なことで
値打ちのわからない者には何の役にもたたないということ。
>>434 >このように、PHPを使ってるかSlacaを使ってるかはどうでも良くて
>「Railsを捨てた」ことが重要なのですな
まさにその通り。
RailsすててSinatraにしたら4倍速くなってびびった。
TwitterはRailsすててScalaにしたら3倍速くなったそうだけど、なぜ3倍にしか速くなってないのか不思議。10倍くらい速くなってもおかしくないんだが。
459 :
デフォルトの名無しさん :2012/05/28(月) 00:51:52.19
>>452-453 http://en.wikipedia.org/wiki/Perl6#A_type_system Perl 6 offers a hybrid typing system whereby the programmer
may choose to use Static Typing, Dynamic Typing or mix the two.
Static, Dynamic typingどっちでも好きなほう使えると書いてあるな
Dynamicも使えるなら実行時パフォーマンスも期待できないな
それ以前にPerl6は2000年から開発はじまって
まだ正式リリースされてない時点で摘んでる。
後方互換性の問題引きずって開発が進まないんだろうな
やっぱりスクリプト言語、将来性なさすぎるな
遅いし、開発生産性低いし
10年前からそう言いつづけてるよなおまえらw 10年たってもそうなってないけど言い続けるとかw
一度LLの便利さになれたら静的言語とか触りたくなくなるんだよね 大体LL嫌ってる奴は、LLを使いこなす頭もないやつか 全くの未経験者
静的言語を使い倒している人ほど、動的言語のメリットをよく理解でき、おそらくは目的によってきちんと使い倒す それができない人は、まあ、単に煽って反応をもらいたいだけなのだろうから、無理に反応することもない とか言うとこのスレの意義がなくなるのでみんな煽れ反応しろ
ここは番号飛んでない
プログラミングの入門は大体が静的言語からで プログラマの大多数は1つしか言語を使えない、あるいは1つも使いこなせていない だからこそ2つ目の言語を覚えたり、移行するまでに何年もかかるんだよ
馬鹿には無理
1つの言語さえ使いこなせないとか毛も生えてない素人かよ
結構いるんだよそういう奴が。 ブロックが begin end じゃなくて { } だ、というだけで(最近は逆が普通か)拒絶反応を 示すとかそういうレベルで。
>>468 うんうん。ちょっと書き方が違うだけで
効率がいいとか言う奴もいるよな。
470 :
デフォルトの名無しさん :2012/05/29(火) 03:11:45.22
流石に $arr = なんとかなんとか foreach( $arr , $i ) { } よりは arr.each{|i| } だろう reject select map inject each_with_index あたりの処理を書いたときに差がとてつもない出る
でもfor修飾子と$_には負けたと思った
>>470 君は知らないかも知れないが、
Perlではループと高階関数を使い分けられるんだ。
いや PHPのこといってた
PHPなら foreach( $arr as $i ) { } で、もちろん高階関数もある。
手続きを間接参照できる、というだけで(C言語でいう関数を指すポインタ)、 高階関数とは違うだろ。
>>475 PHPは第一級関数持ってるから、
array_reduce(array(3, 4, 5), function($v, $c){ return $v + $c; }, 0);
みたいに書けるよ。
多少短くかけても遅ければ意味がない 特にRubyは醜いな
Javaで100行ぐらいかけて速いものが書けるならそれが一番だ ここでアセンブラとか言い出すバカがたまにいるけどJavaはお前の脳みそよりは考えて最適化するんだよヴォケ
速いか遅いかなんて要件を満たすかが大事なんで用途次第
480 :
デフォルトの名無しさん :2012/05/29(火) 13:05:32.22
RubyなんてWindowsでは1人で使う開発環境でも遅すぎて使えないからなw 用途以前にもっさりすぎてWindowsで開発も実行も不可ww Ruby信者「Rubyはエレガントだ(キリッ)」 その遅さなんとかしてからエレガントとかいえwww
美しい言語を作りたくてRubyを作ったのか知らんが、 汚い文法をコロコロ変えて開発者を振り回す
>>474 ?
そこの事はいってないわ
シンタックスのことを言ってるんだけど
PHPでrubyのdelete_ifはどうやってかくの?
>>480 統合開発環境なんていらないよ
テキストエディタでコード書いてターミナルから実行するだけ
そのお手軽さがスクリプト言語の持ち味
>>484 こう言うのが高じて「メモ帳以外で書くの禁止!」とかになるんだな
危ない傾向だと思う
サバイバルナイフみたいな小さな刃物で料理作ろうとしてる奴がいるんだよね
それは腕があれば作れるってだけの話で
別に誰もお前にやれとはいってない
汎用は聞くし何でも出来るからって、技術力見せ付ける奴が多いから
>>480 こういう勘違いが出てくるのかな
JAVAでかいてもrubyでかいても速度が間に合うときにrubyをつかわない意味って?
メモ帳はプログラマ向けのテキストエディタじゃないからね あれで書けって言われたら嫌だ 使うとすればサクラエディタ、EmEditor、秀丸、xyzzy、vimとかそんなの
そろそろrubyが一番生きる部分って 1行〜20行程度で作成が一瞬で終わるようなスクリプトじゃね 「一応」多機能なクラスが用意されてるから 腕があるなら大規模開発もやれるっていうだけで 別にお前にやれとか誰も言ってないよ 昔perlやってた奴らがクラス使ってたとは思わない
489 :
デフォルトの名無しさん :2012/05/29(火) 14:47:28.92
>>486 Rubyなんて実質Rails専用言語だろう?
Webサイトのアクセス増えたら、レスポンスタイム悪化するだろう。
スケーラビリティにも大きく影響する
Rails風フレームワークが多数ある今、Rubyをやる意味がわからない。
Javaはコードがちょっと冗長になるが、C#なら短いコードで高速なプログラムがかける。
Intellisense、IDEのおかげで高速なコーディングとデバッグもできる。
Webアプリなら、ASP.net MVC + C#.net + Visual Studio 11が最強
ASP.net MVCはLinux上でも使えるんだが、知らない情弱が多すぎる
今時ベンダ依存したくないよ
Rails専用言語って認識がまず間違いじゃねーの 大昔から使われてきたperlの立ち位置にrubyが入るだけ それ以外はオマケ。 perlのシェア乗っ取っただけじゃ収まりきらないからRailsってフレームワークが出来たり、 PHPやJAVAのシェアまで若干奪ったりが出来てるんだよ >Javaはコードがちょっと冗長になるが、C#なら短いコードで高速なプログラムがかける。 あとここLLスレなんで、 「短いコード」ってので勝負したらC#がLLに勝てる分けないんだから
低スキルの相手バカらしくなってきた C# JAVA はスレチ
RubyはRailsに乗っ取られてスッカラカン お客さんが玄関から入ってきたと思ったら、 1階には見向きもせずにさっさと2階に上がっていく
Rails来襲以降昔からのお客さんはライブラリが増えてホクホクですお
496 :
デフォルトの名無しさん :2012/05/29(火) 15:47:32.23
>>492 世間一般の認識ではRuby=Rails専用言語、だぞ
Rubyは遅すぎてアプリ開発には使えない
後方互換性が醜いから、インストールスクリプトなどにも使えない
完全にRails専用言語
スクリプト言語で存在意義あるのは、ブラウザで動くJavaScriptだけ
>>491 VSも無料で使えるんだからベンダ依存もなにもないだろ
SharpDevelopとかもあるしな
JavaもMySQLも、Oracleが所有してるわけだが、ベンダ依存とかいって使わないのか?w
もちろんjavaもベンダ依存ですよ RDBについては変更が比較的容易だからリストとはならない
ごめんリストじゃなくリスク
>>496 > スクリプト言語で存在意義あるのは、ブラウザで動くJavaScriptだけ
ls -l `find . -name '*.log' -newerct '1 week ago' -print` | sort -rnk5 | head -n5
みたいなワンライナー書いたりしないの?
こんなのエディタに保存するまでもなくターミナルに直打ちするけど
同じことをJavaやC#でやるなんて想像もつかないな
>>499 横からだけどそれってshellを繋いでいるから違うと思うよ。
>>500 シェルスクリプトって100回壁に書いてからやりなおし
シェルスクリプトもスクリプト言語でしょ
>>499 LLの定義がいいかげんという流れがあったから俺はあえて、
スクリプト言語、scripting language(s)の単語を使ってる。
動作がもっさりだから、軽量言語と呼ぶことに違和感もある。
>>499 はただのUNIX,Linuxのコマンドのパイプ処理だろ。
こんなのをスクリプト言語などというやつはいない。
ファイルに保存して実行したら「シェルスクリプト」と呼ばれるが
スクリプト言語、とはいわない。
>>503 うんにゃ、複数の処理をまとめて書いたらそれはプログラム
定義にそこまで拘り持ってるなんて///
「このスレで言うところの」スクリプト言語であるかと言われれば違うと思う
Perl, PHP, JavaScript, Pythonなど汎用的なスクリプト言語と
コマンドの呼びだしに特化されているシェルスクリプトでは性質が大きく異なる
>>499 を外部コマンドを使わずに書き直せっていうのはお題になりそう
>>496 世間一般って何のこといってんの?
普通にruby情報をググったとしてもRails以外の情報の方がわんさか出てくると思うけど
ruby使ってない奴の認識のように思う
>>507 Rubyが流行ったのは、Railsが出てからなんてのは常識なんだが・・w
それはおまえがそう定義しただけだろw
コマンドプロンプトでパイプ処理すると 中間の出力結果をいちいち一時ファイルに書き出して、それを次のコマンドに渡してる
>>510 それは仕方ない
パイプ処理ができなかった時代の名残
MS-DOSの残念仕様だからしょうがない
C#とRuby両方を使えて、用途によって使い分けすればよい 片方だけしか知らない人は仕方なくそれだけ使って、排他して自分を慰めていればいい
C#使えてRuby使えないってことはないだろうからきっと両方使えな…
CとLLでOK
Ruby.net
>>513 両方使えたらRubyなんか使わないだろ
デメリットしかないんだから
518 :
uy :2012/05/29(火) 19:16:54.62
俺も, C#.NETとRubyが今のところ、最高の選択肢だと思うよ 俺は社畜アプリもGUIも作らないから、C++とRubyだけども プログラミングするなら動的と静的で1個ずつ、2言語使えよって話だよ低脳 何のために、他言語からrubyスクリプト呼び出せるようにdll公開されてたり、 rubyinlineとかが作られてると思ってんだよ、使い分けて連携しろアホか
519 :
uy :2012/05/29(火) 19:24:41.04
ruby叩きがあまりにも必死 いい加減C#,JAVAはスレチだときづけ
上段は俺も思うが存在自体がスレチなuyが言うなよ
低速なのはどの動的言語でも同じなのに、Rubyだけ叩かれるってことはどういうことだろ 頑張れよPython
endになれる事の出来なかった奴だろ C#とrubyとか用途の全く異なる言語を挙げられても困りますし
523 :
デフォルトの名無しさん :2012/05/29(火) 20:38:02.35
UbuntuでVimを愛し、Githubでソースを公開し、 気に入ったプロジェクトがあればPull Requestを送り、 Haskellを勉強し、Pythonのブログを書いていたとしても 俺は依然として無職だし、 Windowsでメモ帳でPHPを書いていても仕事は貰える!!
524 :
デフォルトの名無しさん :2012/05/29(火) 20:42:20.86
これだけが心の支え、って感じになってきたな
Ruby叩いてる奴ってRubyで仕事してるのか? 羨ましい限りだ。
Ruby叩いてる奴はRailsの所為でJavaの仕事が減って 首を切られた無職Javaプログラマだよ。
応援してるよPython 頑張ってくれよ
Rubyをこの世から葬り去ってくれ 俺はそのためだけにPythonを選んだんだぞ
少なくとも日本でPythonが流行るわけないじゃん
思い出したが、uyは何も分かってないくせに探索を語るな
532 :
uy :2012/05/29(火) 22:58:46.70
>>532 分かってるんならこれに答えてやれよ
> すべての譜面が10MBに収まるという話に説得力がない
> その譜面データベースのURLを示すか、ありうる譜面が何通りあるかを書くくらいしろ
その話題つまらんからヤメテ
535 :
デフォルトの名無しさん :2012/05/29(火) 23:32:17.75
PHP初心者なんだが、PHPの$_SERVER配列の中の値って各クライアントごとに 異なると思うんだけど、クライアント間をどうやって区別してるんだ? ソケットごとに割り当ててるのかなと思ったけど、それじゃHTTPのセッションごと に違うクライアントと識別されちゃうよね? アホな質問だとは思うけどエロいひと教えて!
>>352 みたいなコード汚らしいし読みにくい
インデント、改行、コメントを適切に使って読みやすいコードを
書くこともできない人はチーム開発では迷惑
537 :
uy :2012/05/29(火) 23:49:48.98
>>533 >>338 >>536 >チーム開発では迷惑
でっていう
def search_up_all sym = /(.*)/ , o = self
o.search_up_all_test(sym).merge({ o.sym => o })
end
def search_up_all_test sym = /(.*)/ , o = self
o.up ? o.up.search_up_all_test(sym).merge( (o.up.sym=~sym) ? { o.up.sym => o.up } : Hash.new ) : Hash.new
end
Rubyは趣味のプログラムを書くためのおもちゃってこと
そのおもちゃでアメリカのスタートアップはウェブサービスをたくさん作ってるわけで。 おもちゃで楽しみながら仕事にもなる。
なんだかんだで、今までPerlで、これからもPerlでトホホと思うのだけれど
最近のよいWebあぷぷはRails製が多いんだよな・・・
Redmineもそうだし。最近のお気に入りもRails製あぷぷ。
http://goo.gl/x1tj9 Djangoは凄くよさそうなのに、秀逸あぷぷはなんでこんなに少ないんだろう。
多少の技術的差異よりも、なんかこうエコシステムの回転具合とか 勢いとかに根拠を求めるほうが妥当じゃないのかと思う
効率のいい言語を表に出すよりも 自分の会社が作った言語を表に出して金儲けしようとしてる層
フレームワークを使うなら、フレームワークの性能と機能を重視で、言語はどうでもいいだろ。 突っ込んだプログラミングするわけじゃないし。
543 言語はどうでもいいとか、スクリプト言語厨らしい低レベルな発言だな
>>544 Perl,PHP,Python,Rubyの基本部分は、どれも変わらん。
なんで知ったかぶるの
547 :
デフォルトの名無しさん :2012/05/30(水) 13:11:40.68
>>545 どれも変わらないとかwww
どうやら軽量なのは言語じゃなくて
スクリプト言語厨の脳みそみたいだなww
少なくともrubyでやってれば他言語で当たり前に存在するfor文を殆ど書く機会がなくなるくらいには イテレータが大量に最初から用意されてんのに なにが変わらないと思ったんだろう
>>548 同等の機能を持つから。
PythonでRuby風にかけば、Pythonicじゃないと言われるだろうけど。
いやそれは C言語で何でも出来るって言ってるようなものって感じがする 書式が重要だから forでもかける処理をforeachで書いたりするんだろ たとえばC++のテンプレートは#defineで書き直せるけど C言語でテンプレートプログラミングやってる奴なんていないだろ 同等の機能が言語に存在していたとしても整理されてなければ使えないんだよ
Scalaってどうなん? ファイル単位で修正かけられるんなら、2.3年後の保守とかでも楽そうに見えるんだけど。 Javaだとビルド環境とか整えるだけでメンドイイメージが
Scalaの言語自体はいいけど JAVAと関わってる時点で期待しないほうがいい MSのC#.NETがjavaの2番煎じのはずだったのに一瞬で追い抜いて行ったし MSのやってる事とかぶってるものはやっぱり淘汰される運命にあるよ
>>550 forは単なるループなので、foreachのイテレータとは少し意味が違うでしょう。
Perlで同じforが使えたとしても。
ぶっちゃけ、さんざん過去スレでやったから、今更な部分でもあるんですよ。
>>551 スクリプト言語に比べたら、Scalaはずっと速いしはるかに将来性あると思う
Javaと親和性も高い
ただ、型推論とかやるからコンパイルがc#とかより時間がかかるのが弱点らしい
関数言語とかも取り入れている分、難しいイメージを
持たれて敬遠されているかも知れない
海外ではWebサービス企業では採用事例が増えてるらしい。
言語自体は評価は高いから、あとは
使いやすいフレームワークが出てくるかどうかがポイントじゃないか?
foreachでかけるものはforでもかけるって話をおまえが振ってきたように見えた
>>549 で実際foreachはforでかけるだろ、かいたことない?あっそう
書式が違えば同等の機能ではなく別物だよ
>>554 スクリプト言語(動的)とは、用途が違う
それと「Javaと親和性も高い」のがScalaネックなんだろ・・・
どうせ数年後にはC#の次をMSが出してくるよ
C#にも型推論くらいあるわけで
知ってる奴からすればScalaでやってる事なんて今更でしかない
Scalaって変な場所に : とか = あるんだけど こんなのがいいのか? 普通に打ち忘れするわ
>>556 C#3.0から型推論っぽいのがあるな
Scalaのそれと機能的に同じレベルかどうかまでは知らないが。
C#は全部なくして次を作らなければならないほど弱点があるとも思えない。
現時点で一番いろんな用途に使える言語なのも事実だし
C#は、バージョンアップで機能追加が続くんじゃないか
C# 3.0の型推論は var hoge = new Hoge(...); って書ける程度だったような MSの衰退と道連れで第二のDelphiになりそうな気がしてる
>>367 勘定系じゃなくて、営業店システムの話じゃないの?ほんとにPHPが使われるようになるのか知らんが。
ちなみに俺が昔、某銀行の営業店システムをやったときは、全画面がJavaアプレットだったよ。
でもF#の型推論はScalaよりずっと上
最近すれ違いが多いね
オセロの探索の話に戻そうぜ
>>564 それ、uyとの会話のすれ違いが多いので却下
オセロ中島を探索するプログラムをRubyで書いてくれよ
なぜRubyなんだ
暇だったらかく
そりゃF#みたいなMLとなんちゃって関数型のScalaを比較したらいけない
MSって使い道のわからないものをたまにリリースするよな 開発陣が暇なんだろうか
マイクロソフト サーフェス
みんなD言語をやるんだ
>>510 NT系列はちゃんと複数プロセスが同時に動いてパイプでデータを流してますよ
>perl -e "print qq!$_\n! for 0..10000000"|ruby -e "ARGF.each{|e| puts e.chomp.to_i*2}"|wc
10000001 10000001 94444455
テンポラリディレクトリに94444455バイトの一時ファイルが出来たりはしません
言語は糞であれば糞であるほど、オライリーからの書籍が売れ、 言語に対するプログラマ同士の共通認識が高まるのではないか その点に関していえば、c++とjavascriptは完璧だ QtとQMLなんて最高だ.パーフェクトだ.
C++とQtはAddison Wesleyの得意分野でOreillyはとりあえず出してる程度だから関係ないよ
気持ち悪いアルゴリズムを静的言語で書くのはマゾヒスト 長いこと保守する必要があるものを動的言語で書くのもマゾヒスト 世界中どこも彼処も変態だらけで、そして我々は、その変態たちを崇拝している
変態を理解する義務はないから楽なんだよな 自称常識人は理解されないとキレたりするから疲れる
Ruby使いは変態
昔はそういうふうに見られて楽しかった
Java使いはドM
582 :
uy :2012/06/01(金) 05:18:27.71
俺様はしばらく来れなくなる 絵描き界隈とプログラミング界隈を見ていて思う事は 絵描き界隈というのは、暖かく冷たいものがある プログラミング界隈は、けなしあいつつも情報交換を"とりあえず"は行い、 「お前そっち歩いていくと死ぬぞwwwwバカwwwww」とかいって、 お互いの位置と方向性を確認しあう事は出来る 絵の世界で、それはない。「個性だ」の一言で、全てが終わるから 間違いも、愚鈍さも、優しく放置されていく 俺も放置されていた側だったけど、ようやくわかってしまった 最後に、俺は天才ではない ただ人の、3、4兆倍生きてるだけだ
オセロの盤面の起こり得る配置が何通りあるか書いてから消えろよ
>>581 ペチュニアの鉢植えが落ちていくとき、その心に浮かんだ思いはこれだけだった
ーまいったな、またか。
Mac厨とかiPhoge厨ってキチガイだよね
iPhogeと書くやつ=キチガイ
iPhoge
謎の打鍵だな
iPhogeって何? iPhogeって何? iPhogeって何?
>582 ずいぶん前からプログラミング界隈?でも優しく放置されてたじゃねーかw ソース得意げにだすたんびに「あぁこういう病気のヒトだね」ってみんな言うし。 突っ込むのはネタか同じ病気の奴。このへんはきっと絵と変わらんだろ?
iPhogeって何? iPhogeって何? iPhogeって何?
ガキは帰れ
iPhogeのご本人登場ですか
>>465 それは昔の話じゃないかな?
今だと、PHPとかRubyから初めて、CやJavaはまったく使った事ない人って多いと思うよ。それで、型とかスコープとか意識しないで書く人が多いと思う。
>>491 Ruby1.8系に依存するのもPython2系に依存するのも同じ事じゃないですか?
Rubyは意外と1.9にさっくり移行した感があるが Python2系と違ってそのまま動くことも珍しくないし
Scalaって恐ろしくコード読みにくいよな。
>>596 以前からVBとかから入る人も居たな
てか、動的言語は動的言語で型はちゃんと意識するんだが…
GUIアプリを作れる言語からの方が入りやすい、というのもあるかな
GUIアプリっつーか、見た目に楽に反映できる言語は入りやすいよね 昔のBASICなんかもそうだったし
REPLのほうがよっぽどコードが見た目にすぐ反映されると思うけどなあ いきなりGUIとかマゾとしか思えない
>>603 いや、計算とか文字列の加工みたいな
目的があってプログラミング始めるならそれでいいけど
特に目的もなく「プログラミングやってみたい」人には
GUIとか描画のがモチベーション保ちやすいのよ
GUIが一番面倒くさいんだがなぁ。 C#とかでいいんじゃない。windows限定だけど。
描画とUIは別だから、コマンドラインで入力して別のウィンドウで描画すればいいのに
>>604 なるほど。
>>602 とあわせてなんとなくわかった
ガワが出来あがっていくことに手応えを感じる初心者は結構いそうだしね
REPLとIDE両方渡してみてどっちが面白いか聞いてみるのはアリか
入りやすいじゃなくて手応えを感じたいんだな
画面にコントロールを貼り付けるだけでもワクワクしたものよ
611 :
デフォルトの名無しさん :2012/06/02(土) 12:27:15.54
>>605 C#はWindows限定じゃない
.オープンソースの.NET実装、Mono使うとLinuxでも動く
デスクトップアプリ、高速なWebアプリスマートフォンアプリ、なんでもOK。
変換ツール使うと、AndroidもiPhoneアプリも作れる
超高速なレスポンスが要求されるシステムはC/C++で書く必要があるが
それ以外はC#で全部いける。
そんな夢のような環境のわりにはMonoスレ伸びてないね
バカが寄り付くフェーズに、まだなってないからな。 むしろ全力で成功を回避しろという正しい戦略かもしれん。 バカが寄り付いた結果、正しい修正だが利用者には負担になる、といった修正が できなくなった結果腐ってしまったものが、歴史的に見て結構ある。
>>612 C#なんだからMonoに限定する必要がない。
Windows版Ruby専用スレ、みたいなもんだ。
伸びるわけがない。
615 :
uy :2012/06/02(土) 15:41:21.94
>>583 なんでその程度を自分で書こうとしないんだよ
自分でやれ
>>590 何もわかってないんだな
「絵」には間違いがない
ゆえに誰も間違っていると言えない
正しいといえば、それは個性になってしまう
プログラム界隈ではどうみてもお前らが放置されてる側じゃねーか
いつまでOO(笑)やってんだよ
「え?マジ?OOでITはこれからやっていくの??w」って感じてる奴は結構いると思うよ
なんかしらねーけどOOでしか使えないライブラリ、OOでしか適用されない最適化、
そんないらねーもんばっかり開発してどうすんだよ、本気でOOでやっていくつもりなのかよ
ほら出てきたw
誰が「絵」の話してるの?
uyはその程度のこともできないのか
u うんこ y 野郎
620 :
uy :2012/06/02(土) 20:08:15.85
uyをNGしてないバカが沢山いるな
また、便所虫が騒いでんのか。 NGに放り込んだから存在自体忘れてたわw
Javaがあまりにもウンコすぎたから 本来なら対象にしないような規模のプログラムにまで スクリプト言語が使われるようになってしまった Javaがあまりにもウンコすぎたから
RubyはJavaを凌駕するウンコ
数年前の関数型ブームは何だったんだ リスト表記の [X|Xs] だけ、どこかに取り入れられないかな
Pythonがあるじゃないか
627 :
uy :2012/06/06(水) 02:09:13.59
俺がいないとスレすすまねーじゃん
消えろカス
関数型パラダイムをガッツリ使いたいなら、関数型言語を使えばいいと気が付いて、 みんな関数型言語に移行しました。
630 :
uy :2012/06/07(木) 11:12:25.39
副作用とマクロについて思ったけど 関数型プログラミングでかいていって副作用が存在しないなら 確かにLispはマクロで別次元の効率出せるじゃん これを使わない理由って、一般人に扱えないから以外に答えがない ほんとプログラミングってとっくのとうに終わってんな 目の前のことだけ見ていたほうがいいよ
来れなくなるんじゃなかったのか?
uy=ウンコ野郎は消えろ
633 :
uy :2012/06/08(金) 04:49:43.21
ゴミみたいなスレだな
634 :
uy :2012/06/08(金) 10:26:25.90
メモ n = [0,1,2,3,4] p n p n.rotate p n.reverse.rotate.reverse p n.rotate(-1)
636 :
uy :2012/06/09(土) 01:21:05.84
オセロのひっくり返しのアルゴリズムでもかけよカス [0,0,0,2,2,1,0,2,1,2,0,] を [0,0,1,1,1,1,0,2,1,2,0,] にしたい これさえ出来ればあとは、縦軸はtranspose、斜め軸はrotate無双で全部やれる drop_whileで簡潔にかけそうな気がしたが気のせいだった冗長した
>>636 じゃあ俺はアルゴリズム担当、
お前はオセロを2PプレイやCPU対戦やネットワーク対戦
でも対応可能になるような設計を頼むわ。
オセロの話は他行けよ!
639 :
uy :2012/06/09(土) 02:27:59.24
a=[0,0,1,2,2,1,0,2,1,2,0,] x = 2 b=a[x..-1].each_with_index.drop_while do |n,i| next true if i == 0 n == 2 end[0][-1] p a a[x..b+1] = [1]*b p a # [0, 0, 1, 2, 2, 1, 0, 2, 1, 2, 0] # [0, 0, 1, 1, 1, 1, 0, 2, 1, 2, 0] こんなんかいたわけだけど、どう見ても普通にかいたほうが行数収まるんだよな drop_while の存在意義 秋田
641 :
デフォルトの名無しさん :2012/06/09(土) 02:42:01.61
642 :
uy :2012/06/09(土) 02:50:30.52
drop_whileを使いたいんだよ オセロの処理の意味的にはまさにdrop_whileなんだけど 上手いコードが思いつかない
>>641 足し算の結果がINT_MAXを超えたらどうなるの?
644 :
uy :2012/06/09(土) 03:10:42.69
コピペにまじれす a=[0,0,1,2,2,1,0,2,1,2,0,] p a x = 2 a[x..(b=a[x..-1].each_with_index.drop_while { |n,i| i != 0 || n == 2 }[0][-1])+1] = [1]*b p a もういいや
>>641 どちらも数値か否かを気にしなければ使えないと思うが…
C++だったら関数を使うとき、何も考えずにいきなりカンで引数書くの?んなことないでしょ?
どちらにしたって、まず関数の引数ぐらい調べるじゃん
unko野郎の頭が悪いのは良く分かった
647 :
uy :2012/06/09(土) 12:46:53.38
動的言語に足りないのは「型チェックの記述を簡潔に書く構文」だろ、型チェックは必要 def sum a , b raise unless [ Fixnum , Float ].include? a.class raise unless [ Fixnum , Float ].include? b.class return a + b rescue puts "err" # exit end p sum 4 , 5 p sum 4 , "5" src=DATA.read.each_line.inject "" do | src , m | next src << m unless m =~ /def/ src << "def sum2 a , b\n" b=m.scan(/(\[.*?\]):([a-z].*?)\s/).map do | kata , var | " raise unless #{ kata }.include? #{var}.class\n" end.join src << b end puts puts src eval src p sum2 2 , 3 p sum2 2 , "3" __END__ def sum2 [ Fixnum , Float ]:a , [ Fixnum , Float ]:b return a + b end
648 :
uy :2012/06/09(土) 13:04:51.64
やっぱいらね
> 動的言語に足りないのは「型チェックの記述を簡潔に書く構文」だろ、型チェックは必要 違う。 型チェックを実行前に行える機能だ。 大体さ、obj.foo() なんてコード書いたら このオブジェクトはfoo()を持っていなきゃ落ちるって もうコードを書いた時点で判明しているんだから 実行前にコンピュータでチェックすべきことだよ。
>>649 objに何が入ってるか実行時にしかわからないのに
どうやって実行前にfooを持っているかチェックするん
思いつきで言ってるんじゃなかったら具体的な方法よろ
> objに何が入ってるか実行時にしかわからないのに いや人間はわかってるだろ。 objにはfoo()というメソッドを持っているものしか入らないって。 だからそういうふうにコードを書いているわけで。 だったら、objはfoo()を持っているとどこかに 定義しておけばチェックが可能で些細なミスを減らせるし。 その動きから用意に推測可能だが、foo()を修正するときに 使っている場所を的確に調べることも可能になる。
>>651 if rand(2) == 0
obj = IHaveFoo.new()
else
obj = IDontHaveFoo.new()
obj.foo()
>>652 何が言いたいのかさっぱりわからないけど、
その場合に実行しないとわからない言語と
実行する前にチェックしてくれる言語なら
後者のほうがいいよね?
>>652 難しいと思うだろうけど、
ルールはすごく単純
・ルール1
objという変数は、foo()というメソッドを持ったものしか入れられない
・ルール2
IHaveFoo.newの定義にfoo()というメソッドを持ったものしか戻り値に使用できない。
これだけ書いておけば、あとは推論で
実行前にすべてチェックできるようになるんだよ。
>>654 evalはどうするの?
もしクラス定義が単なる文字列に埋めこまれていたとすれば
実行前にチェックするのは難しいのでは
>>655 evalは基本的に代替方法が存在するので、そっちを使う。
どうしても必要なところだけ諦めれば良い。
クラス定義も単なる文字列として書かないようにする。
DBなどからクラス定義を生成したい場合でも、
実行時にやらずとも、実行前(実行開始時)にクラス定義を書いたソースコードを
生成するようにすればいいだけ。どうしても必要な時ってのは少ないはずだ。
実行時にわからないことを少なくするってのが原則。
誰もなくせとは言っていない。
実行時にわからないことが、少なければそれだけ注意を払うコストは減る。
まぁ、実行時の入力以外は全部型チェックできるわな。 積極的にやるかどうかはあるけど、動的型付けの方が便利な場合もあるし。 まぁ、型チェックがしっかりしてればどちらでもいいけど。
実行前にわからないことをなくせというがね。 小さいスクリプトなんてのは実行前にわからない事だらけなんだ。 小さいから書き捨てもする。小さいからぱっと見ればすべてが分かる。 だからそんなのまで静的がどうとか言ったりはしない。 ただ大規模(何人もの人が何ヶ月もかかって作るもの)で動的言語はねーよ。 コードのほんの数行(全体の0.01%ぐらい?)を見せられて、 ここに変なオブジェクトが入る可能性はありますか? ここを変更するときに影響が及びそうな部分はどこですか? 聞かれてもすぐには答えられんでしょ。
> まぁ、型チェックがしっかりしてればどちらでもいいけど。 (人間がやる)「型チェックがしっかりしている。」ということを 客観的に証明できる方法があればいいんだけどね。
人間は型チェックなんてしないよ。 型を意識してプログラムするけど、チェックは 機械がするものじゃない?
>>660 それは言い方の問題だね。
型チェックに関するコードを書くことを
人間がやる型チェックって言っただけ。
静的でも型推論があれば楽なんだけど、面倒なことにメジャーな静的言語ほどそうじゃないんよね
型推論とか細かいこと言わずに 俺が考えてることを推論して適切にやってくれ
・・・オマエなんちゅーエロイ事考えてんだよ。このド変態!
おお!見事に型に嵌った推論だね
667 :
uy :2012/06/10(日) 02:54:06.92
>>649 >型チェックを実行前に行える機能
ある程度は実行前にチェックできるけど動的言語って時点で100%のチェックは出来ない
それでもあったほうがいいんだろうけどな
でもそれなら、「この変数は型チェックできていません」みたいなログ出力も必要になってくる
ノウハウが足りない
>>647 のように、型をソースコード中に沢山かいていけば、
限りなく100%に近い型チェックはいずれできるようになる、でもそれなら最初から実行前型チェックできる静的言語使えって話
結局動的言語内での「型チェック」は単なるシンタックスシュガーのひとつ
ソースコード中に型情報をかいていけばエラーは減らせるが
この方向性に進むのは間違いだと書いてから気づいた
静的言語よりも性能の悪いチェックが出来ないというマイナス点の補強は
ソースコード内において補強するのではなく、全てはIDEやコンパイラなどの外部ツールに任せる
言語シンタックスは、安全性を高めるのではなく
静的言語よりも優位な動的なコード生成のプラス点を伸ばすべき
668 :
uy :2012/06/10(日) 02:55:30.37
>静的言語よりも性能の悪いチェックが出来ない 静的言語よりも性能の悪いチェックしか出来ない
> 動的なコード生成 あんまり使わん機能だそれはw コードジェネレータで十分。
670 :
uy :2012/06/10(日) 07:05:06.70
何いってんだコイツ
動的型付け言語の(部分的な)型推論は非常に難易度が高い ユニークな手法だったらそれだけで論文一本になってしまう たぶん、動的型付けの発想からすると 健全性とかはどうでもいいから、一部の矛盾が見つかれば十分のはずではあるが そういう研究あるのかなあ
「動的型付け言語」のような大雑把な集団が論文になってしまうという発想が分からない
>>672 たしかに動的型付け言語そのものは理論/実装とも普及している技術だ
ただし、
>>671 が指摘しているのは、
「動的型付け言語の(部分的な)型推論」だろ?
これは学術的にもホットな話題だと思うけどね
まあ、型推論(あるいは型理論)を知らなければ、
そういった反応になるのはしかたないのかもしれんが....
674 :
uy :2012/06/10(日) 18:11:56.23
実際もう安全だと分かったソースコード(ライブラリ)を増やして それらを組み合わせる形でプログラミングするしかない気がする 大規模な開発はやらずに、大半をライブラリに頼って小規模になるように作るとか 静的型付け言語の問題点として言うなら、一度書いたソースをリファクタリングする時に 困難になる事、一度長々とソースを書いてしまったら、 あとからFuncA,FuncB,FuncCでひとつにまとめられる(かもしれない)としても、 実際そのリファクタリングを静的言語じゃやらないだろ 引数の型や数を1個1個、書き換えていくのが面倒で、勝手に脳内で「出来ない」という事にされているかもしれない 動的言語のソースコードがやけに短くなるのは型情報がどこにもないからリファクタリングの手間が少ないので やろうかなって気になるから結構な割合でリファクタリングが成されて行数が抑えられる 動的言語では数行〜数十行なプログラムを静的言語では数百行とかになってしまうのは ライブラリの充実度のほかに、リファクタリングを楽に行えるか行えないかの違いがあると思う 実際アルゴリズムを思考してるときなんかは、コンパイル時の型エラーとか邪魔でしかない アルゴリズム思考中は、途中でエラー落ちしてもいいから動いて欲しい時の方が多い だから静的言語は、アルゴリズムが推敲されず単純な式でかいていくしかない上に、あとからのリファクタリングも困難で 大規模(笑)な開発にしなくてもいいものまで、大規模(笑)にしてしまっている とりあえずゲーム開発に関してだけは自信を持っていえるがたとえ大規模であろうと動的言語の方が格段に良い つうかまともなゲーム開発であればC++でゲームかいててもスクリプトの導入くらいは1000年前からしてたはずだけどな
RubyはISOの規格があるが「動的型付け言語」の規格はない、という意味だよ
規格もないものに未来を託したくない
>>674 > 実際アルゴリズムを思考してるときなんかは、コンパイル時の型エラーとか邪魔でしかない
> アルゴリズム思考中は、途中でエラー落ちしてもいいから動いて欲しい時の方が多い
思考してる時になんで動かすんだよ?
途中で落ちたら、そこで考えが中断されるじゃん。
eclipseを使った場合はこう。
コンパイルは不要。書いている時にミスがあれば該当箇所が赤くなるだけ。
そっちの方がアルゴリズム思考は楽だ。
>>671 > 動的型付け言語の(部分的な)型推論は非常に難易度が高い
> ユニークな手法だったらそれだけで論文一本になってしまう
動的型付け言語だと、型が実行時にしかわからないものなので、
推論は出来ない。難易度が高い。ではなくできないんよ。
推論ってのはなにもない所から何かを見つけ出すのではなく、
aならばb、bならばcという事実から、aならばcというようなルールを見つけ出すこと。
似たようなものに、実行時の値から型を推論し、型に応じて最適な形にコンパイルする技術はある。
だけどこれだって、実行前にわかるわけじゃない。
静的な型推論は、所詮静的言語のためにある技術。
そういう類いのことをRubyでやってるところもあるみたいなんだけどね
http://www.jetbrains.com/ruby/ > On-the-fly code analysis throughout the project tree with type inference
> and quick-fixes
でも使ってる人を知らないし使おうとも思わないなあ
>>674 > 静的型付け言語の問題点として言うなら、一度書いたソースをリファクタリングする時に
> 困難になる事、一度長々とソースを書いてしまったら、
> あとからFuncA,FuncB,FuncCでひとつにまとめられる(かもしれない)としても、
> 実際そのリファクタリングを静的言語じゃやらないだろ
なんで? よくやるよ。どうやら君の知らない世界らしいねw
まず、「メソッドの抽出」 これはコードの一部分をメソッドに分ける機能だがなんと!
FuncA、FuncB、FuncCが意味的に同じであれば(変数名が違っていたとしても)
一つにまとまってくれる。
君が思ってであろう難しい作業は、静的型付け言語なら、範囲を選択してコマンドを一つ叩くだけで終わりだ。
一度書いたソースをリファクタリングするのに、静的型付け言語はものすごくやりやすくなるんだよ。
信じられない?
http://www.ibm.com/developerworks/jp/opensource/library/os-eclipse-refactoring/ > このリファクタリングが役立つのは、大きすぎるメソッドを複数のブロックに分割し、
> そのそれぞれを独立したメソッドにする場合です。また、多数のメソッドで同じコードが何度も
> 使用されている場合にも役立ちます。再利用されているコード・ブロックのいずれか 1 つを選択してリファクタリングすると、
> Eclipse がそのコード・ブロックが使われている 【他の箇所】 も探し出して、新規メソッドへの呼び出しに置き換えてくれます。
Railsに限らず、決められたとおりに作れば楽だけれども、 それを超えると急に難しくなる系は受託開発に向いてないと思う
>>683 それは、処理対象に間違ったコードが含まれていた場合。
例えば文字列を渡すべき関数に変なオブジェクトを
渡しているコードがあった場合に、
間違った推論をするのか、それとも推論の結果から
コードがおかしいことを指摘をしてくれるのか
どっちなんだい?
685 :
683 :2012/06/10(日) 19:52:09.08
>>684 例えばこんなコードがあるとするだろ
class F(object):
def __init__(self):
self.x = 0
def add(self, x):
return self.x + x
def foo():
x = F()
bar(x)
def bar(x):
print(x.add('0'))
すると、数と文字列を加算しようとする型エラーが静的に見つかる
まあ、個人的にはここまでするなら静的型言語使えって言いたいけどな
出来たと言う人はPythonで出来たとかRubyで出来たとか言うが 出来ないと言う人は固有名詞が出てこない 具体的に何をやろうとしているのか分かってないから出来ない
出来ないものに名前が必要なのか?
>>685 Pythonって文字に+メソッドって追加できないの?
+は数値にしか用いられない記号であれば、
その程度は出来そうだね。
でもメソッドはどうなんだろう。
Rubyみたいに、どんなオブジェクトでも+を使えるようになっていたら、
オブジェクトではなく、特定のインスタンスだけに、メソッドが追加できるような
言語は、激しくリファクタリングと相性が悪いだろうね。
>>688 Pythonの+は__add__メソッドを呼び出してる
だけだから追加できるよ
ていうか文字列と文字列は+で連結できる
オーバーライドかオーバーロードがある言語は型推論できないのか 「動的型付け言語」というよりはむしろ「オブジェクト指向言語」じゃないか
リファクタリングしにくいのは Rubyの問題ってことか。
>>691 Rubyだけじゃないだろ。
型が実行時までわからなければ、コンパイラ、IDEが
できることは相当少なくなる。
これが開発の生産性を相当落としている
>>692 生産性落としてるってふだんLLなに使ってるの?
範囲選択してコマンド実行するだけで 他の同じコードが全部まとまるなんて 羨ましすぎるよ。 汚いコードはこれで綺麗にできる。
リファクタリングは、自分で書いたコードを自分で否定する側面もあるんで 自己否定しやすい言語が本当に正しい言語なのかという疑問がある
リファクタリングに昔ほどの意義はないって気はするな いまは小さなメソッドでコードを構成するのが主流だし
>>693 スクリプト言語はやむをえずJavaScriptを使っているくらい。
もちろん、Webアプリのクライアントサイド用途。
あとは、開発生産性がいい、C# + Visual studio。
パフォーマンスが大事なごく一部のみCを使う場合もある。
スクリプトはデバッグがめんどくさいし勘弁して欲しい
雑用スクリプトはあまり書かなそうだな。そりゃ嫌いにもなるか
コードの行数で100行以下で終わる処理ならスクリプト。 それ以上ならスクリプトはありえない。
>>699 デバッガありの開発に慣れてるとスクリプト言語のデバックは
やりづらく感じるよね。
スクリプト言語はスクリプト言語の良さがあるけど、やっぱり最後は
C言語かなと思う。
C#はほとんど使ったこと無いからよくわからんが
そんなにいいもんなのか?
デバッガの無いスクリプト言語を使ってるんですね
俺はC言語はやだなあ。 コード書いてる時間やアルゴリズム考えてる時間よりも 型を考えてる時間のが長いように感じてしまう。 いいじゃん解ってんだから、聞かないでよ。と思っちゃう。
テストも書いてなさそう
>>704 すべてintとしてコード書けばいいだけじゃないか。
じゃあ、defineで任意の型を使えるようにすれば良い
C言語に#なしのdefineってあったっけ
ある意味、C言語は参照型を殆ど使わない型を考える専用の言語だ 参照型を使うならJavaでもRubyでも使えるが、遅い
Rubyに参照型なんてあったか?
みんなLLで何作ってんの?
ゲーム「電脳コイル放課後探偵局」の自動化スクリプトをゴリゴリ書いた
>>712 C++のコードを編集したりとか、ちょっとした計算に
たまにヒマ潰しにゲーム書いては捨てたり
この板の質問や宿題のスレ覗いて面白そうな題材を探しては書いてみたり
実装上、ボックス化しているか?という意味なら Rubyではしていることもあるし、していないこともある
717 :
デフォルトの名無しさん :2012/06/11(月) 02:00:24.54
>>711 は C++の&のことを想定してるのかな。
718 :
uy :2012/06/11(月) 03:00:46.74
>>681 誰がIDEの機能を紹介しろっつった?
その程度の作業をリファクタリングとは俺の中で呼んでいない
アルゴリズムの根本を変えて
メソッドの引数も型も全てが変わっていくとき
静的言語では「それは出来ない事」と、されているよ
君の知らない世界では、出来ないと思われてた事までやってるんだよ
それが静的言語が動的言語から明らかに劣っているもののひとつ
結果として、動的言語では出来るリファクタリングのいくつかを行えないから静的言語で書くとソースコード量が膨大になる
719 :
uy :2012/06/11(月) 03:07:39.05
そもそもさぁ・・・ >> あとからFuncA,FuncB,FuncCでひとつにまとめられる(かもしれない)としても、 ってかいてるのに >FuncA、FuncB、FuncCが意味的に同じであれば(変数名が違っていたとしても) >一つにまとまってくれる。 全然、話がズレてるのな 意味的に同じメソッドを2つも3つも定義してコーディングしちゃうようなゴミカスコードを機械的にリファクタリングじゃなくて 俺は FuncA,FuncB,FuncC を、「プログラマ自身がアルゴリズムを考えなおせばまとめられるかもしれない」と言ったんだ IDEがアルゴリズム考えてくれるのかね 結論からいえば静的言語でこのリファクタリングは100%行わない 型情報を書き直す手間がかかりすぎるから
>>718 > その程度の作業をリファクタリングとは俺の中で呼んでいない
↓
>>674 でuyが言ったこと
> あとからFuncA,FuncB,FuncCでひとつにまとめられる(かもしれない)としても、
> 実際そのリファクタリングを静的言語じゃやらないだろ
自分でリファクタリングといっておきながら
それを気付かれないように、訂正w
いや、バレバレだからw
>>719 お前はやらないんだろうが、例えばLinuxなんか、
静的言語でリファクタリングしてるだろう。
なんで静的言語だとリファクタリングしないと思ってるわけ?
有名なリファクタリング本の一つ、「リファクタリング―プログラムの体質改善テクニック」は
Javaを題材にしている。
お前は世間が狭すぎるよ。
IDEがアルゴリズム考えない。動的言語でもアルゴリズムは考えないだろう。
はい、そこに差は全くありません(笑)
型情報を書き直す手間? それは動的言語のほうが手間がかかるだろう。
例えばメソッドが一個減ったとする。さあ、他にこのメソッドを使っている所を探せ!
メソッド名がgetだったりしたら大変だ。・・・動的言語なら。
静的言語ならすごく簡単。なにせ一つ型情報を書き換えたら、関連コード全て自動で洗い出し、
ある程度は自動的に書き換えも行なってくれる。
そんなかんなでアルゴリズムを整理していけば、結果として似たようなコードが出来る。
そこでまたリファクタリングブラウザの登場だ。変数名違うけど本当に同じ?
なんてこと考えずに自動でやってくれる。
そしてもちろんテストコードを実行すれば、リファクタリング完了。
あ、テストコードの修正も忘れずに、動的言語は大変だw
頭おかしいのがuyだけならともかく もう一人増えたら手に負えない
3行以内にまとめろ
動的言語で出来ることは すべて静的言語でも できる。
静的言語で出来ることは すべてアセンブラでも できるよな?
動的言語で出来ることは かなり無理があるが すべて静的言語でも できる。
リファクタリングに関しては 静的言語で日常的に行われてる上に 動的言語よりも簡単に行える。
大規模ドカタ開発の現場では 役に立たないゴミも簡単にクビにできないので、 そういうゴミには使いもしないコードの変数名関数名を 延々とリネームする作業をさせます。 こんなことが動的言語にできますか?
無駄な作業が必要だというなら言語に関わらず、いくらでも作れる 関数名が衝突したりした結果として、挙動に重大な問題が生じた場合 そもそも変更後のコードはスモークテストすら通らないだろう
指示通りに動いても役に立たないような状況が続くと そのうち指示に従うゴミと従わない人間しかいなくなる ゴミは静的言語を使い続け、人間は動的言語を使うようになる
731 :
uy :2012/06/11(月) 08:50:09.24
ポインタがない言語にぬるぽガールのは 何故?
undefinedが長い (9文字) から
>>728 お前にとってのリファクタリングが
どういうものか分かったよw
つまりね、お前素人すぎじゃん。
12文字もあるじゃん(10文字)
736 :
uy :2012/06/11(月) 13:32:37.01
効率的なプログラミングをすればするほどプログラマの数はいらなくなる 効率のいい技術を流布するというのは めぐりめぐってIT企業の寿命と収入を減らす行為となる 誰にでもすぐ覚えられる言語を流布したら本が売れなくなる 質の良いフリーウェアが増えまくったら、シェアウェアが売れなくなる 小中学生のうちからプログラミング覚えられたら、教育機関の生徒数が減る けれどもプログラマ()というのは効率のいいものを使おうとする 面白いよね面白い
> 効率的なプログラミングをすればするほどプログラマの数はいらなくなる ロボット生産をすればするほど人は必要なくなる。 それと同じだよ。 今頃そのことに気づいたのかい?
738 :
uy :2012/06/11(月) 14:06:07.13
ずっと前から気づいてる そうじゃなければ効率的手法を流布したりしない プログラミングっていうのは、ゴミみたいなコミュ障を量産するものだと思うよ だから世の中からさっさとプログラマを撲滅しようと、俺はそれをひとつの趣味にして生きてる
じゃあ、言い出しっぺのuyから 撲滅しろ。
740 :
uy :2012/06/11(月) 14:46:36.35
撲滅したいのは社畜プログラマーですよ 趣味PGは歓迎でございます
741 :
デフォルトの名無しさん :2012/06/11(月) 16:35:35.04
PHPの本買ったけど、まだ1ページも読んでいない。
手間を省くために手間をかける それがPG
743 :
デフォルトの名無しさん :2012/06/11(月) 17:02:39.02
■Python print map(lambda x: x*2, filter(lambda x: x>2 and x<5, [1,2,3,4,5])) ■Ruby puts [1,2,3,4,5].select{|i| i > 2 and i < 5}.map{|i| i*2} ■C# new{}{ 1,2,3,4,5 }.Where(x => 2 < x && x < 5).Select(x => x*2); ■Haskell print [x*2| x <-[1,2,3,4,5], x > 2, x < 5]
[n * 2 for n in [1,2,3,4,5] if 2 < n < 5] Pythonの優勝だよ!やったね!
746 :
デフォルトの名無しさん :2012/06/11(月) 17:11:53.18
■Haskell は Better C++ あるいは Better Python なのさ ・僕にとっての Haskell は Better C++ あるいは Better Python なのさ ・Haskell を使えない C++er とか…(失笑 ・とりあえず Python は劣化 Haskell ってイメージ ・まぁ正直 C++ 使うくらいなら Haskell 使ったほうがいいよねぶっちゃけ。 C++ より速くて、Perl より簡潔で、 Python よりきちんとしていて、Ruby より柔軟で、 C# より型が充実していて、Java より頑強で、 PHP とは何の共通点もない 言語を作ろうとした結果に出来たものは Haskell だったんだね。
C++とHaskellの良いところは 解析しにくいコードを見ただけで発狂する人がいない
ちょっと小難しいコードを人が書いてるのを見るとimport thisを持ちだして発狂する人ならたまにいる
最近初心者にPHPを勧める人減ったな
750 :
デフォルトの名無しさん :2012/06/12(火) 02:21:28.64
php5.2でpdoを使いたいんですが phpinfo()を表示させてもpdoの項目が全く表示されません どうすればいいですか? 一応php.iniでは以下の部分のコメントアウトを外しました extension=php_pdo_mysql.dll extension=php_pdo_pgsql.dll extension=php_pdo_sqlite.dll
751 :
デフォルトの名無しさん :2012/06/12(火) 02:46:14.57
>>750 せいかい PythonかRubyを使う
>>750 WindowsのPHP 5.2ではextension=php_pdo.dllが必要っぽいけど
WebProg板で聞いたほうがいいんじゃないか
753 :
uy :2012/06/12(火) 04:42:42.87
>>743 n=(1..5).select do |i|
(3..4) === i
end.each_with_object(2).map &:*
p n
754 :
uy :2012/06/12(火) 05:21:22.37
>>743 p (1..5).select { |i| (3..4) === i }.map(&2.method(:*))
XAMPPを使っとけ 手間が省ける
756 :
uy :2012/06/12(火) 07:27:25.99
>>743 p ([*1..5]&[*3..4]).map &2.method(:*)
またRubyが勝ってしまったか
Haskellのほうが短いけど? print[x*2|x<-[1..5],x>2,x<5]
どっちも読みにくい
Haskellはちゃんとスペース入れたら一番読み易い
>>743 ではC#だけ飛び抜けて汚い
ていうかC#だけ出力してないじゃん
>>756 Ruby意味不明だな、:*ってなんだよ・・・
*1..5 のほうをキモいというのはわかるが、:* はただのシンボルじゃん。 全くこれだから計算機科学の教養がない奴は。
763 :
uy :2012/06/12(火) 08:55:53.69
p (1..5).map{|i|i*2}[2,2] 本気をだしたrubyに勝てるとか勘違いされても困るというか
764 :
デフォルトの名無しさん :2012/06/12(火) 08:58:07.18
読めない
単に知らないってだけだろ
つまりシンボルロックに陥ってる
767 :
デフォルトの名無しさん :2012/06/12(火) 16:17:24.44
age
範囲(1..5)と条件2<x<5が密結合したセンスのないコードだな (0..5)に変えただけで条件部のコードも変更する必要がある
え?コードのキモさを競ってるんじゃないの? 今のところRubyの圧勝だろキモさでは。
771 :
769 :2012/06/12(火) 17:41:42.05
改めて。 Haskell以外は見るに堪えない。
773 :
uy :2012/06/12(火) 18:09:12.71
Haskellは記号の使い方がおかしいんだよ 何も考えずに使える記号片っ端から使って実装した言語って感じ
Haskellも興味あるけど、情報量と普及度がねぇ・・・ 暇だったらやってみよっ
J +:(((>&2)*.(<&5)) a) # a=:1+i.5 リファレンス見ながら、書いてみた もっと短く出来るのかも知れないけど、俺には無理だ。
正直、 foreach( ... ) { if( ... ){ continue; } .... } 形式が一番読みやすい。
Common Lisp (print (loop for x in '(1 2 3 4 5) if (< 2 x 5) collect (* x 2))) R print((function(){x<-c(1,2,3,4,5);x[2<x&x<5]*2})())
Clojure (print (for [x [1,2,3,4,5] :when (< 2 x 5)] (* x 2)))
この中にJavaとか混ぜたら 冗長すぎて異様に浮きそうだな
>>775 +:(5&>#])(2&<#])(1+i.5)
Squeak Smalltalk (1 to: 5) select: [:x | x between: 3 and: 4] thenCollect: [:x | x * 2]
C#のコードを無名クラスを 使って書きなおしたぐらいじゃないのか? new{}{ 1,2,3,4,5 }.Where( new Filter<Int>(){public bool apply(Int x) {return 2 < x && x < 5;}} ).Select( new Function<Int>(){public Int apply(Int x) {return x*2;}} ); まあこんなメソッドはないけれど概ねあってると思う
for( const char *s="12345"; *s; ++s ) if( '2'<*s&&*s<'5' ) printf( "%d", (*s-'0')*2 ); Cでもこの程度だしな。
ちなみにJava8だとこうかけるっぽい。 new{}{ 1,2,3,4,5 }.Where(x -> 2 < x && x < 5).Select( x-> x*2);
LINQ丸パクリ?
メソッド名は違うよ。 言語仕様的に可能だろうってこと。 あと配列の宣言は知らない。
>>780 こういうのが苦手なのはPrologだろう。引数で戻していくから。
Prologってたまに名前あがるけど何に使ってる言語なの
C/W 恋のバックトラック(カラオケ)
言語仕様的に可能って話なら printはp, mapはm, filterはf, selectはsに置き換えれば どの言語も短くなるな バカじゃねーの
>>791 f = filter
と書くだけで置き換えられる言語と
引数や型を明示する言語と
あと、全てのファイルを検索して置換する言語もあるのかな
>>791 mはPerlの正規表現、pはRubyの関数と紛らわしいぞ
PowerShell 1..5 -lt 5 -gt 2 | % { $_ * 2 }
796 :
775 :2012/06/13(水) 12:38:59.82
変態関数htmlspecialchars
799 :
uy :2012/06/13(水) 13:38:51.24
Esoteric programming language
?- assert(mul(X,Y,Z):-Z is X*Y), sublist(between(3,4),[1,2,3,4,5],Xs),maplist(mul(2),Xs,Ys).
文字数が少なければ良いとでも思ってるのかな このスレって有意義な議論が何もないな。いかに変態的に書けるかを考えてるだけで 実用上の話はない。プログラミングに向いてない奴らのドヤ顔スレ
802 :
uy :2012/06/13(水) 14:17:01.36
文字数が少なければ良いに決まっているのに IDE補完があれば文字数が長くても良いなんていう勘違いしてんのかね こういう考えの奴が本気で効率が出ると勘違いしてJAVAみたいな言語作っちゃったんだと思う
804 :
uy :2012/06/13(水) 15:17:46.53
良く分からないけど カレントディレクトリで Dir["**/*"].each {|n| File.unlink n } でいいかね
見えないレスに安価打つなよ
ルート?
でも人が書いたドヤ1行ライナーみたいなコードは保守したくないだろ? もちろん書き捨てならなんでもいいけど
確かに小飼弾wの書いたスクリプトは保守したくないな
ライブラリも使いたくない
読めなくても仕方ないみたいな数行のコードと 読めない奴はプログラミングに向いてないみたいな大量のコード 後者はコストとリスクが高くてリターンが低い
中間がいい
ドヤライナー
大阪あたりで走ってそう
パンツの裏側に貼ってそう
あっそう
数ヵ月後の自分を含めて読みやすいのがいいね そう考えると、可読性を強制してくるPythonか。。。
LLを作るのは簡単なんだが、実用的な物にするには、 最低限C言語用に作られたライブラリをそのまま読み込める必要がある。 C言語とメモリレイアウトをコンパチにするとLLの利点が無くなるし、 かといってマーシャリングは大変だ。 どちらにしてもCのヘッダ、それもwindows.hみたいなMSコンパイラ依存な ヘッダとlibを読み込めるようにする必要がある。 やってられん。
しかもCはヘッダファイルにマクロが入ってたりするから最悪。 Cのヘッダに対応するってことは、結局C言語をフルでサポートするってことになる。 文法をC互換にすると、統一感は出るが、 C言語由来の構文はシンプルで、LLで新たに追加した構文がむしろ冗長な表現になったり、 LLのうまみが損なわれて、狙いがまるで分からなくなる。 かといって、"C"{ }の中身はC言語と解釈、とかやって、Cを封じ込めることで自言語の構文を守っても、 それはそれでカオスになってLLっぽくないし、もっと気軽に外部のライブラリを呼び出したい。 そもそも、文法がカオスになってもかまわないのなら、 C++で連想配列使ってLLっぽくプログラミングしてもかまわないわけで。
???
既存の言語に不満があるなら、 新たに言語を作ればいいじゃない
英語読めないくせになんで英語レスを要求すんの
図書スレから誤爆った
興味深いからどこのスレか知りたい
120 名前:デフォルトの名無しさん[] 投稿日:2012/06/13(水) 22:38:25.06 英語なんて、しゃべるのはさすがにしんどいが、技術書読む程度なら計算機工学を 専攻してる人なら、読み書きはなんら不自由なくできるだろ
>>801 文字数が少なければ良いワケではないが
リスト処理系の関数は単なるループよりも
処理の本質を表してて分かりやすいと思うよ
fact = foldr (*) 1 . unfold (== 0) id pred 階乗の本質を表していて分かりやすい
パイソンのリスト内包が一番分かりやすいよ
829 :
uy :2012/06/14(木) 05:02:23.54
>>817 ,818
そのままで動くっていうのが大事なんだろうな
Cのライブラリをラップしてrubyで使えるようにするっていうんじゃなくて
そういう意味ではCにほぼ互換性を持ったC++は、今までのプログラム言語歴史の中でもかなり凄い
つうか文法以前に型サイズとかの問題が発生するから動的言語内でCそのまま動かすのはきつすぎな気がする
ライブラリ側をなんとかdll化して読み込んだ方が現実的
>>827 Haskellってiota相当もいちいち手書きしないといけないのか。だっせー言語な。
>>830 いや、そのレスはHaskellディスるためのものだと思うが…
>>829 >そういう意味ではCにほぼ互換性を持ったC++は、今までのプログラム言語歴史の中でもかなり凄い
今でこそ独立したC++処理系は存在するけど、C++が登場した当時は
(Ratforと同様な)Cコンパイラ向けのプリプロセッサという位置付けだった
歴史さえ知っていれば、C++のC互換性はさほど驚くような話ではない
実際C++ソースをCに変換してた どっちみち、アセンブリ言語や機械語に変換してるから同じようなものだが
>>827 ポイントフリー厨かよ
fact n = foldl (*) 1 [1..n]
fact = (!!) $ scanl (*) 1 $ scanl (+) 1 $ repeat 1 scanはfoldとiotaとfactの本質を表している
>>829 > つうか文法以前に型サイズとかの問題が発生するから動的言語内でCそのまま動かすのはきつすぎな気がする
Objective-CはSmalltalk内にCが書けるようなもんらしいよ。
逆だ、逆。Cの中でSmalltalkモドキが書けるようにしてる。
>>836 いや、それは逆で、C内にSmalltalkが書けるのがObjective-Cだ
これもC++と同様にCコンパイラのプリプロセッサとして実現されていたから、
Cとの親和性が高いのも当然の話になる
>>818 >そもそも、文法がカオスになってもかまわないのなら、
>C++で連想配列使ってLLっぽくプログラミングしてもかまわないわけで。
そういう意味では、C/C++インタプリタであるCINTという処理系をLLとして使うことを検討すべし
CINTの設計目標の一つには「コンパイラとの透過的な接続性」がある
具体的にはCINTの付属ツールであるmakecintコマンドがC++ヘッダを解析して、
完全な(CINTインタプリタとCライブラリ間の)接続コードを自動生成してくれる
それどころか、C/C++コード内に他のインタプリタ(たとえばRuby)のコードを埋め込む拡張構文もある
あと、このスレ向きの話題としては、対話環境での活用を強く意識した独自のクラスライブラリがあり、
CINTの設計者は、これを利用したプログラミングスタイルを「C++スクリプト」と命名している
このスレで最強の新言語を作るんだよな wktk
libclang使え
フレームワークを共通にして 好きな場所で好きな言語を自在に混ぜられるようにしたらいいじゃない
843 :
uy :2012/06/15(金) 06:26:51.00
>>832 歴史は知らんけど
過去の言語との互換性を持って、次の言語を作るというスタイルに
他の言語も続いていれば今頃こんな事にはなってなかった
歴史を知らないなら語るなクズ
845 :
Perl忍者 ◆M5ZWRnXOj6 :2012/06/15(金) 08:51:51.44
賢者は歴史に学び、愚か者は経験に学ぶ
846 :
uy :2012/06/15(金) 12:54:53.67
>>844 じゃあそういう「歴史」がC++にあったというソースを示せ
出せないならお前はゴミだ
教えてくださいお願いします、だろ?
848 :
uy :2012/06/15(金) 14:55:48.80
後3レスいないソース出しとけよ
1
2
3
uyはまず日本語を勉強しろ
853 :
uy :2012/06/15(金) 15:19:28.27
print *"uyはまず日本語を勉強しろ".chars.to_s.split(//).shuffle.each_slice(4).map{|n| [n,"
>>852 sinekasu"] }
C言語へのトランスレータであるとこと、 C言語と互換性があることには、 何の関係もないわな。 たとえPascalのコンパイラをC言語へのトランスレータとして実装したとしても、 PascalがC言語互換になるわけではないしな。
>>854 トランスレータとプリプロセッサの違いが分からないのねw
>>854 PascalをC言語にトランスレートしてからwindows.hをインクルードしたいという話だから
PascalでOKだ
スクリプト言語は逆に、C言語の関数をスクリプトの関数に変える
例えばC言語のmain関数がシェルスクリプトのコマンドになる
べつにmainの型を宣言したヘッダファイルをいちいち読む必要はない
Pascalは関数内関数定義出来たのに Cで出来なくなったのは残念だった
>PascalをC言語にトランスレートしてからwindows.hをインクルードしたいという話だから >PascalでOKだ トランスレート後にヘッダ読み込む方法は、LL的にはまずいだろ。
だから逆の方法があると言っただろ
>>スクリプト言語は逆に、C言語の関数をスクリプトの関数に変える >>例えばC言語のmain関数がシェルスクリプトのコマンドになる >>べつにmainの型を宣言したヘッダファイルをいちいち読む必要はない これも変なこといってるよな。 型が分からなきゃ、やり取りできんよ。
フレームワークを作って、その上であらゆる言語を交ぜ書きできるようにしろ
だいたい、main関数だって型有るしな。 >べつにmainの型を宣言したヘッダファイルをいちいち読む必要はない mainの型が規格で取り決めてあって分かりきってるから読み込む必要がないってだけで。 DLL内の任意の関数を呼び出したいのなら、型がわからんことには、 スクリプト言語側でのマーシャリング等々のサポートは出来ん。
>>860 まあドヤ顔で黙っているよりは、変なことでも言った方が良いわな
普通に使うけどそんなに変か?
>>862 任意の関数を呼び出したいっていうのはある意味で嘘なんだよな
何を呼び出したいのか分からないからそう言っているだけで
何言ってんだ? 自分の呼び出したい関数名ぐらい分かるだろ。
何かDLLを与えられたら エクスポートされてる関数の一覧は取得できるだろう だが、引数や戻り値の型は知りようがない
だからヘッダ食わせるしかないって話だろ?
>>866 の言い回しはおかしくないか?
何を呼び出したいのかは分かってるけど、引数の型がわからないってだけで。
任意の関数を呼び出せる契約をしたとする 契約の結果がどうなろうと、何を呼び出したかったのか最初から知っていたと言えるか?
871 :
uy :2012/06/16(土) 06:22:32.64
引数と戻り値情報をちゃんと含めてない拡張子dllの仕様がバカすぎワロタなわけで つうか本当に取り出しにくいとかじゃなくて情報はいってないの?
何も知らない馬鹿か 外から分かるのは関数名のみ C++のように(dll外から見える)関数名に引数の情報を含める言語もある
DLLに埋まってる文字列からどの言語から作られたDLLか知る 関数のエントリポイント付近を逆アセンブルして、引数の個数や型を推定する 関数名しか分からないならこういう手順
このスレどうなってんの?
875 :
uy :2012/06/16(土) 07:58:10.62
>>872 ,873
やっぱり情報はいってるんじゃん
それならスクリプト言語側がそれやればいいだけじゃん
手抜きしてましたって事?
引数情報や型情報なんて入ってなくとも
引数サイズ、戻り値サイズだけはどこかにあるはずだし
もし情報欠損している場所があるとすれば引数の個数だと思われる
char a , char b , という引数が 1バイトの引数2個って情報ではなく、ただの2バイトを引数にとるとかいう情報しか入ってない可能性とか
どうしても引数情報とってこれないケースとかそこら辺しか思い浮かばない
876 :
uy :2012/06/16(土) 08:01:47.51
>情報欠損している場所が アセンブラレベルで考えたらそれは無い気がしてきた 取り出しにくいだけで情報は入ってるじゃん 誰かやれば良いだけじゃん
>>875 手抜きというか、コンパイル時にチェック済みだから実行時にはチェックしないって事
878 :
uy :2012/06/16(土) 08:09:39.10
>>877 そっちじゃなく
スクリプト言語側からdll読み込んで関数名指定した時に
引数や戻り値を手動で書かなくちゃいけない上に
サイズや個数を間違ってもスクリプトの処理系がエラー出さないのが手抜きって話
>>878 C/C++は配列の長さを手動で書くし、長さを間違ってもエラーが出てこないケースもある
それと同じ感覚で関数を扱うことも不可能ではない
そういうのに慣れている奴以外はdllを読むべきではない
880 :
uy :2012/06/16(土) 08:59:46.51
不可能とか慣れとかいう話してないから 引数と戻り値の抽出が本当に出来ないのか、できるのかって話 結論としてはできる で終わった
>>880 推定は出来るが、その推定を違えたら何が起こるか解らんから
他言語としてはやるべきではない
ブラウザの文字化けなら標準グチャグチャだけで済むし
その場でユーザが対応すれば済むが
言語側でそんなことして暴走や処理系停止したらマズいだろ
s/標準/表示/
883 :
uy :2012/06/16(土) 10:58:20.26
だから何。 誰かが正確に動作するもの作ればいいだけじゃん つうか dll関数の引数や個数を間違えたら暴走すんの? 例えばどんなソースで暴走すんの????? 例外でないで暴走したら処理系のバグだと思うよそれ そもそも引数の型や数を間違えたら処理系は停止しなきゃダメなのに何いってんの?初心者?
885 :
uy :2012/06/16(土) 11:21:45.27
おまえがな 例外出さずにスクリプトの処理系が暴走したらバグだから やれるなら暴走する間違ったdllの使い方をかいてみろって 暴走とは何のことをいっているんだよ 基本的にOS側が例外を出す前に処理系が感知して実行止めるわけで、 処理系がとめきれずにOSのエラーメッセージでたらバグだよ
886 :
uy :2012/06/16(土) 11:24:55.05
はー初心者
任意の関数を呼び出したいんだろ? その仕様を満たしていれば、暴走する関数を呼び出したいと思ったら呼び出せるよ バグではなく仕様
SEGV起こすためだけに書いたのでライブラリの使い方まちがってるかもだけど $ python2 >>> from ctypes import * >>> libc = CDLL("libc.so.6") >>> libc.printf("%s", 1) zsh: segmentation fault python2 ---- require 'dl' require 'dl/func' libc = DL.dlopen('/lib/libc.so.6') cfunc = DL::CFunc.new(libc['printf'], DL::TYPE_INT, 'printf') myprintf = DL::Function.new(cfunc, [DL::TYPE_VOIDP]) # myprintf.call("hello\n") # ok myprintf.call(1) $ ruby segv.rb zsh: segmentation fault python2 ... /usr/lib/ruby/1.9.1/dl/func.rb:55: [BUG] Segmentation fault
最後まちがい 変な引数わたしたらこうなるのは当然であってバグではないので念の為 $ ruby segv.rb /usr/lib/ruby/1.9.1/dl/func.rb:55: [BUG] Segmentation fault ... zsh: abort ruby segv.rb
>>875 >引数情報や型情報なんて入ってなくとも
>引数サイズ、戻り値サイズだけはどこかにあるはずだし
どこにも入ってないよ。というか、どこかには情報量としてはあるんだけど、
どういった形で表現されているかは、実際に実行してみて、どういう動作になるか見てみないと分からない。
引数サイズやスタックポインタ周りの動作も含めて、その関数の実行結果の一部だから。
実行せずに実行結果を得ることは出来ないから、スクリプト言語側からそれらを得ることも出来ない。
uyには難しすぎるかな。
>関数のエントリポイント付近を逆アセンブルして、引数の個数や型を推定する
と言ってる人もいるけど、実際にはこんなこと出来ない。
引数の個数も型もわからない。
関数のエントリポイント付近を逆アセンブルして、 引数の個数や型を推定できるよ。 たとえば可変引数の場合、 入れた数だけPOPすればいい
無理です。個数も型もわかりません。 低脳は黙っててください。
わかった。Rubyのせいじゃない。 通常のDLLの仕様のせいだ。Linuxのsoも同じか。 これがもし、netのDLLとかなら話は別だけど DLL(so)からはどんな情報を渡すべきか知ることが出来ない。 しかしライブラリ内部では、渡された情報が 正しいことを前提にコードが書いてある。 これじゃ落ちるのは当たり前だ。 でもRubyのせいじゃなかった。良かった。
DLLにはどんなメソッドを持った クラスを渡すかきっちり決まってるからな。 動的言語ではオブジェクトを引数にして 呼び出すのは不可能。
DLLといえばPASCALだな。 知らないだろう?w
DLLの引数の情報をDLL自体に入れておく理由がわからん そんなもん、ヘッダファイルに書いておいて コンパイル時に参照すればいいだけじゃん。
何も考えなしにDLLって言ってるけど、 C言語呼び出し規則の ライブラリだろうが。 .NET用のDLLだってあるし、 C言語呼び出しなら、Windows以外だって同じだ。
ま、ここの連中(特にuで始まってyで終わる人w)は Windowsのことしか知らんからw
uyは大馬鹿だな WindowsのDLLを覗いたこともないんだろ 関数名だけのものが大半で、 (C++式の)引数の情報も持った(人間には読みにくい)関数名のものはごく一部 引数の型や個数も分からずに適当にDLL内の関数を呼んだら 不正な処理で終了するものも多い アドレスを渡すべきところに変な整数を渡したりしたら、な
逆アセンブルして推定するあたりがもう変態だし あてずっぽうで適当な引数で試すのも変態そのもの
ソースとヘッダがない、またはC言語自体が使えない環境で、独自の進化を遂げた生物 「Cでプログラミングするには人生は短すぎる」の結果がこれだよ
もう出来ないでいいよ
なんて言うか、包丁で指切って包丁作った人のせいにしてるようなもんだね。
「下手の道具調べ」な連中w
905 :
uy :2012/06/16(土) 20:38:36.04
まとめると 出来る可能性はあるけど 失敗するリスクが怖いのと絶対に出来なそうな仕様のDLLもあるので、やらないって事? 何この退屈な話題
つかそのお前が言ってる処理系がナニするもんで、ナニをしないかがわかってねぇだろ?って単純な話。
結論:uyには無理 DLLの仕組みすら分かってないからなw
世の中にはフールプルーフって言葉もあるからな。 度が過ぎると馬鹿が増長する。
まとめすら完全な見当違いとかアフォすぎるw
失敗するのはこわくないが、人にすすめてそいつが失敗するのは見たくない
LLには馬鹿を惹きつける何かがある。
uyは自分で試して失敗したこともないクズ
デニス・リッチー死去のスレでのuyのマジキチっぷりを見てドン引きするしかなかった
プログラマは社会の底辺だしな。馬鹿が多いのは仕方ない。
プログラマが底辺で、 uyはその遥かに下
uyは自分が上だと思い込んでる
919 :
uy :2012/06/17(日) 15:07:59.90
ネトゲのBOT作れる
DLLの仕組みも分かってないし、オセロの探索もできないくせに?
921 :
uy :2012/06/17(日) 17:43:51.13
ハック、クラックは情報を拾えるかどうかが鍵 技術ではない 殆どのネトゲではキー、マウスメッセージをまともに受け取らないが 簡単な抜け道が1つだけある
画像をカメラで撮影して解析。 そして入力ハードウェアを作ればいいのだ。
BOTも糞Rubyで?
925 :
uy :2012/06/17(日) 18:41:42.47
RubyとC++/WinAPI WinAPIを使用する処理はC++でかいて それをrubyから使うのが俺様のプログラミングの日常風景
uyのことを議論するスレ?
Ruby/DLも知らんかったくせにw
DLLの仕組みも全く知らなかったから、 uyにはDLLの関数を直接呼ぶのも無理なんだろうな
929 :
uy :2012/06/17(日) 19:56:12.18
よくそんな昔の投稿覚えてるな 標準ライブラリは全部知ってるが、 WinAPIとRuby/DLで出来る事に差があることを知らなかっただけだよ
WinAPIは関係ない。 昔のライブラリは全部同じ。 Windows以外であっても。 つまり、常識的な知識
昔のライブラリというか、 C言語系のライブラリというか、 ELFフォーマットやオブジェクトファイルや リンカやそういった、ネイティブコードに 関する一般的な話だ。
uyはRubyばかり使ってるから知識が薄っぺらい
まあ、この有様を見て、rubyを使うやつが減ってくれるなら嬉しい限りじゃないか
934 :
uy :2012/06/17(日) 22:27:14.97
>>930 何の話してんだか意味不明だけど
rubyのWinAPI.new の話な
935 :
uy :2012/06/17(日) 22:30:45.29
俺は927にしかレスしていないし927にしか話は通じないはずのレス
薄っぺらい奴
薄っぺらいつーかなんも分かってない
DLLのエントリポイントの話は uyが見当違いで的外れなこと書いてて 面白かった
927ではないのだけど ruby 1.8.7 (2010-01-10 patchlevel 249) [i386-mswin32] require 'Win32API' func = Win32API.new('user32', 'MessageBoxA', %w(P P P I), 'I') func.Call(0, 'Hello', 'MessageBox Test', 0) # ok func.Call(0, 'Hello', 1, 0) # SEGV ここらへんはRuby/DLもRuby/Win32APIも大差ないね
uyことウンコ野郎() の作ったプログラムと、そのソースコードがみたいんですけど uyことウンコ野郎() の作ったプログラムと、そのソースコードがみたいんですけど uyことウンコ野郎() の作ったプログラムと、そのソースコードがみたいんですけど
941 :
uy :2012/06/18(月) 02:09:06.46
>>939 俺はWin32API.newでやってたらdoubleの引数で詰んだ
942 :
uy :2012/06/18(月) 02:16:40.40
>>940 何時かにも言ったけど
きたねーおっさんが下ネタいっても、きたねえだけだからな
お前らは外見も思考もゴミなんだから、品くらいもてよ
uy自体が罪でゴミ
uyは底辺であるプログラマより遥かに低レベルなんだから早く底辺まで追いつけよ
┌─┐ │●│ └─┤ _ ∩ ( ゚∀゚)彡 ┌─┬⊂彡 │●│ おっぱい!おっぱい! └─┘
948 :
uy :2012/06/18(月) 12:04:05.26
俺のことを無理してキリッとしながら底辺と言えば言うほど お前らが俺よりも下だと認識させられた瞬間に精神崩壊するきっかけを増やすだけだというのに ずいぶんと元気だな 急にスレがつまらなくなった
だれも精神崩壊してない所を見ると、 uyが一番下ってみんな思ってるんだろうなw
950 :
uy :2012/06/18(月) 15:32:01.71
ゴミ
951 :
uy :2012/06/18(月) 16:52:14.06
俺は取るに足らないゴミだ
952 :
デフォルトの名無しさん :2012/06/18(月) 16:58:43.29
あ
uyってどうあがいてもsora_hに勝てないだろ
プログラミングは趣味でちょこちょこやっているだけなので、自分はuyにも負けるなあ。 他の分野では自分が勝ってるものもあるだろうし、別にいいけど。
てかオセロはどうなった? drop_whileがどーのこーの言ってたようだけど んなもん使うやついるのかよ
あいも変わらず・・・
uyはオセロの盤面が何通りあるか計算できないし、 10MBに収まるとかいう、オセロの最善手DBも公開できないカス すべての手を10MBに収められるものなら収めてみろ
日本語でおk
960 :
uy :2012/06/18(月) 21:46:53.60
俺には解けないって事でいいよ 面倒くさいからやないし オセロみたいなこういうプログラムは データ圧縮しようと思えば極限まで圧縮できるし類のプログラムだと思ってるし 総当りで調べる必要もない 回転によって4分の1になる 上下、左右対称によって4分の1になる 反転させた上下左右対称で4分の1になる あとは行と列ごとに逆順にして計算していけば数百〜数千の1になるはず この時点で 2^64 - 4*4*4*数百〜数千 あとは、オセロの基盤を4つに分けて 4マス四方のブロックに見立ててにあれこれやっていけば一気に小さくなる おそらく仕上げで、さらに2マス四方であれこれやって、おそらく最終的には2マスの列と行の並びで何とかなる そこまでやれば10MBくらいじゃねーの? ってだけで俺がやるつもりはないから死ね
何の根拠もない uyに能力がないからできないだけ
unkonow
ume
uyが間違ったことを書いて 無知を晒してしまったから 時間を戻したいんだろ
なんでもuyにこじつけるね そんなに好きなの?
968 :
uy :2012/06/19(火) 20:33:50.70
はぁ?
969 :
uy :2012/06/19(火) 20:33:59.47
お前らがuyを下に見たとする そして心を保った しかし、職場にでて回りを見てみればuy以下の奴らばかり ああuyってマシなほうだったんだな あれ、俺はどうしてあんな職場にいるんだろう ん、俺も周りからみたらあいつらと同じなのか 低スキルのあいつらと何も変わらない ああ俺もuyより遥かに下だったんだな uyさんごめんなさい ← 今ここ
という書き込みをみて嘲笑する ← いまここ
971 :
uy :2012/06/19(火) 21:30:59.90
お前らが言うように、俺は確かにゴミカスだ
972 :
uy :2012/06/19(火) 21:54:03.40
sassato ume
本当にuyが哀れに思えてきた
ssss
975 :
uy :2012/06/20(水) 00:56:19.12
俺はゴミカスだがエリートゴミカスだ お前らのような下級ゴミカスとは格が違う
ssss
これが目糞鼻糞を笑うってやつか
久しぶりに次スレ検索したら、既に次スレに976件のレスまで…… uyってなんだろうと思ったら、Ruby かよ LLなんて、よく使うのはJavaScript、構文が綺麗なのはRubyでFAだろ あんま議論する余地ないよな そもそも、普段は Java ばかりだろ
何その狭い世界観
Rubyの構文は綺麗じゃないだろ。 Lispのは構文は綺麗だが、意味のほうを「泥団子」と評した人がいたが、 Rubyは構文が泥団子的。
とりあえずuyって子はもっと基礎的なとこから勉強した方がいいと思うよ
982 :
uy :2012/06/20(水) 09:26:10.79
俺はゴミカスだがエリートゴミカスだ お前らのような下級ゴミカスとは格が違う
結局のところ何をすればいいのか全く分からないアドバイス の応酬
984 :
uy :2012/06/20(水) 10:57:43.96
umero
985 :
uy :2012/06/20(水) 11:05:50.76
ume
>>983 上の方でDLLのことをもっと調べれとか出てなかったかい?
987 :
uy :2012/06/20(水) 11:58:02.70
def f n
n.to_s.chars.to_a.reverse.each_slice(3).map(&:reverse).zip(["byte","k","m","g","t","p"].each_with_object(["_"].zip)).reverse.join
end
p f (2**64) / (62*4)
#"74p_382t_032g_555m_280k_450byte_"
p f (2**64) / (32*2) / (32*2)
#"4p_503t_599g_627m_370k_496byte_"
p f (2**64) / (16**4) + 2**16
#"281t_474g_976m_776k_192byte_"
p f (2**64) / (8**8) + 2**32
#"1t_103g_806m_595k_072byte_"
暇だからまた少しオセロのデータ圧縮を考えてみた
これは軌跡を記録していく形4ビット→16個の状態を表せる(オセロは8*8)
で、それをああやって、こうしていった結果
1tbとなったさらに
>>960 とあわせる事により、
>>960 で1万分の1程度にはなる計算なので
この時点で1GBは下回った
ダサい
989 :
uy :2012/06/20(水) 12:41:01.34
でっていう
990 :
デフォルトの名無しさん :2012/06/20(水) 15:14:03.14
あ
s
992 :
uy :2012/06/20(水) 16:12:30.57
>>955 ハァ?
>>639 つうかある程度のコード圧縮にdrop_whileは有用だとしても
最終的に限りなく小さいソースコードを書こうとしたら
イテレータでオブジェクトを削って値を返すのではなく
単一ループ中に全てをやらないとダメだった
配列対象の正規表現がほしい
いやむしろそれならオセロの基盤を配列で管理するのではなく文字列で管理して正規表現使って裏返す手があったか
993 :
uy :2012/06/20(水) 16:21:06.30
a="003111200" p a a.sub!(/(3.*2)/){ "2"*$1.size } p a 上手くいきすぎワロタ
Cでは文字列と配列が実質同じだ
正規表現ねぇ… 縦や斜めのことを忘れてる件 transposeと言ってたがコストを考えたら結局自前で8方向に走査した方が安い
俺は牛の屠殺場を見たことがあるが、そこでは牛達が銃で眉間を撃ち抜かれて
殺されている。
日頃従順に人間に従っていた温和な牛たちも、順番を待って並ばされている時に
そこではじめて自分の運命に気付くのだろう、日頃聞かないような悲痛な甲高い
鳴き声を絶えず出し続けている。俺は今でもその鳴き声が耳を離れない。
人間は斯くも残酷な行為を毎日何千、何万という動物達に行っているのだ。
せめてその肉を頂く時には少しぐらい感謝の気持ちをもってもいいだろう。
【屠殺場の怖さは異常】
ttp://2.ldblog.jp/archives/1058482.html
uyは1×64のオセロでもやってるんだろw
998 :
uy :2012/06/20(水) 18:21:39.97
>>995 8方向走査ワロタwwwwwwwwwwwwwwwwww
どんなクズでも
縦、横くらいは同一メソッドで処理できるだろ
斜め裏返しには壁がある
999 :
uy :2012/06/20(水) 18:27:37.97
斜めの裏返しをするには、まず斜めに抽出してこういう形のデータを作って [ "0", "00", "000", "0000", "00000", "000000", "0000000", "00000000", ] 同じ裏返しメソッドに与えるだけだが 普通にかくとデータ抽出部分と、データ修正したものを元のオセロマップに適用する部分で冗長する
1000 :
uy :2012/06/20(水) 18:28:41.13
全員しね
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。