- 1 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 10:48:30 ]
- 最強のLL=軽量プログラム言語は、どれよ?
エントリーは、 Perl、PHP、Python、Ruby、JavaScript・・・ さあ、死ぬまで語りやがれ!!! ■LLとは? 軽量プログラミング言語(Lightweight Language,LL)とは、取り回しに優れ、 コードの作成や修正が容易と見なされるプログラミング言語のことを指す。 ここでいう「軽さ」はプログラマの負担の軽重を指し、 実行速度に優れているという意味ではない。 現在の水準では ・インタプリタ ・動的型 ・正規表現 ・関数オブジェクト などを利用できるものがLLと呼ばれることが多い。(Wikipediaより) ■過去スレ 【Perl,PHP】LLバトルロワイヤル5【Ruby,Python】 pc12.2ch.net/test/read.cgi/tech/1238720336/ 【Perl,PHP】LLバトルロワイヤル4【Ruby,Python】 pc12.2ch.net/test/read.cgi/tech/1234635513/ 【Perl,PHP】LLバトルロワイヤル3【Ruby,Python】 pc11.2ch.net/test/read.cgi/tech/1215319832/ 【Perl,PHP】LLバトルロワイヤル2【Ruby,Python】 pc11.2ch.net/test/read.cgi/tech/1209289408/ 【Perl,PHP】LLバトルロワイヤル【Ruby,Python】 pc11.2ch.net/test/read.cgi/tech/1188997302/
- 207 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 17:43:36 ]
- RubyのどこがC風なんだ
class SuperClass end class MyClass < SuperClass attr_reader :x def initialize(x) @x = x end end def func1 MyClass.new 'Hello' end func1 puts func1
- 208 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 17:54:10 ]
- >>206
>読みにくいじゃなくて、他の言語に比べて特別読みやすいわけじゃない、だろ。 まず>>195を読もうぜ。 おまえの意見なんか問題にしてない。
- 209 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 18:44:25 ]
- >>207
キーワードがちょっと違うだけじゃん
- 210 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 18:45:45 ]
- じゃあpythonも十分C風ってことで
- 211 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 19:05:35 ]
- >>207
キーワードはAlgol風味だが、 メソッドとかの命名はC系の影響を受けてると思う to_sとか、アンダーバー記法でギリギリ意味が取れる程度に短くする
- 212 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 19:42:56 ]
- pythonは制御構造を作るのに end も { } も; も必要ない。
余計なものが少なくてシンプルに見えるんだがなー。
- 213 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 19:56:39 ]
- だから見分けづらいんでしょ
- 214 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 19:59:28 ]
- 慣れかもしれんがdelphi触ってたときは
begin endの嵐でうへぇって感じだった 俺的にはシンプルのがいいわ 見分けづらいとも感じない
- 215 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 20:58:01 ]
- 俺はCやPerlの記号ごちゃごちゃ出す感じが嫌いなんだよなぁ
Rubyも書き方次第で記号ごちゃごちゃになるけど
- 216 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 21:27:27 ]
- PerlはOne-linerが流行るような、出来るだけ縮めてしまえっていう文化だよね。
Rubyもその流れを汲んでいる。
- 217 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 21:49:25 ]
- 漏れの周りのPython知らなかった人もPythonの制御構造の仕組みは
解りやすいとコメントしていたな。 見分けづらい、と言う人は極少数だと思われ。
- 218 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 21:54:31 ]
- 会社とかのコーディング規約で「ifやforのブロックはインデントして見やすく」とか
している組織だとPythonのコードは読みやすく感じるだろうな。 それにPythonだとswitchやcase文がないところからしても、「覚えやすく、見やすく、シンプルに」って 哲学みたいなのがあるんだろ。
- 219 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 22:11:11 ]
- pythonの制御構造に関していえば、別段、特殊でもないし、
括弧が、インデントが、begin-endがなんて、本質的な分かりにくさじゃないだろ 〜です、〜ゴザル、〜ニャとか、そのぐらいどうでもいい違いだよ メモリ上でオブジェクトがどうなっているかとか、どうやってソートするのかとか、 スコープや数値、配列、文字列の扱いやライブラリの利用なんかの方が遥かに謎
- 220 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 22:13:13 ]
- >>218
ifやforでインデントしない奴のソースなんか100人中98人までは読みたくねーよ 規約の遙か以前の問題で、またPythonのインデント強制とも次元が違いすぎる switch〜caseなんかもifの構文糖衣だし、なんか的はずれすぎてワロタ
- 221 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 22:35:46 ]
- >switch〜caseなんかもifの構文糖衣だし、なんか的はずれすぎてワロタ
ぶっちゃけ違う。 同じと思っているならソレは>>220のレベルが極限まで低い証拠。 そういう低レベルがPythonをどーこー言うのは的外れ。
- 222 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 22:44:36 ]
- >>221
どう違うのを書かないと、>>221のレベル(笑)もわからんな 例えば、ifで代替できないシンプルなswitch文をあげてみるとか、 コンパイラ方面での話をしてみるとか
- 223 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 22:52:18 ]
- ifでswitchの振り分け真似ると、orだらけになったりするコトも
後で指導するが、明らかにアレは見づらい
- 224 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 22:55:11 ]
- ifとswitchは似ている様で違うだろ。
Pythonはswitchなくてもほとんど困らないが、その理由が解らない>>220は ちょっと頭が可哀想な人なんだと思う。
- 225 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 23:11:59 ]
- >>220が攻撃される理由が分からん。
pythonのは、OOだ!OOを使え!ルーク!って教えでしょ。 Perlは、ライブラリだ!ライブラリを使え!ルーク!って教えだし。 しかし、switchはifのシンタックスシュガーじゃないのか? ifで代替できない場面が分からない。 見易さだけなら、ただのシンタックスシュガーだし。
- 226 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 23:20:20 ]
- Python教こえーな
異教徒排除が徹底しすぎ 敵がJavaだけのRuby信者より質悪いわ
- 227 名前:デフォルトの名無しさん [2009/06/24(水) 23:28:07 ]
- ということにしたいのですね?
- 228 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 23:34:51 ]
- 一応考えてみたが、switchには、if〜else単独にはないラベルへのgotoも複合されている
C#みたいなものもある、とかいう点なのかな? この場合は、switchってif〜else+gotoの糖衣構文じゃん、とか言ってみたらどんな反応が 来るんだろう。やっぱり同じ反応な気もするが。 あとはコンパイラの最適化でなにかあるのかな〜くらいしか思いつかないが、「違う」理由を、 純粋に勉強のためにせっかくだから誰か教えてくれないもんだろうか。気になる。
- 229 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 00:38:08 ]
- 正露丸糖衣A
- 230 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 00:38:58 ]
- xがOまたはPまたはQのときは処理aと処理b
xがRまたはSのときは処理bのみ それ以外のときは処理cを行なうってコードとか?
- 231 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 00:49:16 ]
- C言語だと switch と if が違うというのはわかるが、LL だとどうなんだろ?
C言語は、コンパイラやコードによっては、テーブルを引いてジャンプするコードに変換される場合があるらしいが。
- 232 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 00:54:14 ]
- >>230
switch( str ) {
- 233 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 00:59:53 ]
- Enter押してしまった・・・ orz
>>230 switch( str ) { case 'O': case 'P': case 'Q': function_a(); case 'R': case 'S': function_b(); break; } こういうのはifよりswitchのほうが楽だね
- 234 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 01:10:30 ]
- if s in 'OPQ': function_a()
elif s in 'RS': function_b()
- 235 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 01:12:21 ]
- あ、function_aの後は下へ流れるのか
- 236 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 01:22:22 ]
- Python には暗黙のルール、見た目から意味が推測できない記号が
少ないから、メタクラスとか駆使した一部分のコードをのぞき、Pythonに それほど精通しなくても大体のコードは読める。 その反対は(非モダンな)Perlで、初心者どころか中級者になっても 他人のコードが読めなかったり、下手すると昔の自分の書いたコードが 読めないなんてことが起こる。
- 237 名前:233 mailto:sage [2009/06/25(木) 01:27:14 ]
- >それ以外のときは処理cを行なうってコードとか?
・・・ (´・ω・`) switch( str ) { case 'O': case 'P': case 'Q': function_a(); case 'R': case 'S': function_b(); break; default: function_c(); break; } もうねまふ。。。
- 238 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 02:11:59 ]
- >>233
if str in "OPQ": func_a() if str in "OPQRS": func_b()
- 239 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 02:18:15 ]
- >>237
if str in 'OPQ': func_a() if str in 'OPQRS': func_b() else: func_c()
- 240 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 02:24:05 ]
- str の内容が 'RS' とかだったらどうするんだろ?
- 241 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 02:29:00 ]
- リスト使えばええがな
- 242 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 02:33:08 ]
- Pythonのinって何が起きてるんだ?
何となく分かるようで分からん。文字単位でのマッチング?
- 243 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 02:34:36 ]
- 文字列は文字のリスト
- 244 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 03:13:57 ]
- www.python.jp/doc/release/ref/comparisons.html
- 245 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 03:19:45 ]
- 俺的には K&Rが読みやすいから、GNUだなんだの見るよりは
インデントが統一されてるなら、読みやすくはあるんだろうなー とは思う。 最終的には慣れだろうけど… 今は括弧がないとなんか読みにくい感じ。 do endもなんかなれないんだよなー
- 246 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 03:27:35 ]
- なんか場末のスナック的なスレだな
- 247 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 03:33:54 ]
- スナックに行った事が無いからワカンネ。
- 248 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 03:45:55 ]
- GNUスタイルとかは先頭ブレースの一行分長くなる点が好きでない
行数は可読性に直結すると思う (だからといって、無理やり圧縮するのが良いとも思わないが) その点、インデントベースは末尾のブレースやendも削れるのが素晴らしい でも何となく好きになれないというワガママw どうも宙ぶらりん感がある あとはS式みたいに、末尾に畳んじゃう記法だが・・・・編集がしずらいような エディタの支援があればイケるか?
- 249 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 03:51:54 ]
- ○ しづらい
- 250 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 03:56:25 ]
- S式は対括弧表示できるエディタ無いと苦しいね
まあ、Windows標準のメモ帳で開発しる! なんてことが無い限り大丈夫だとは思うが
- 251 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 04:42:53 ]
- S式は文字数でインデントするからプロポーショナルだと崩れて読みづらい。
アメリカだとプロポーショナルでコーディングしてる人も結構いる印章だけど、彼らはどうしてるの?
- 252 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 08:03:14 ]
- >>240
具体的に >>233 で str の内容がRSの例を出してくれ。 とりあえず、 s = str[0] if s in "OPQ": func_a() if s in "OPQRS": func_b() Python は他にも、 10 <= a && a < 20 を 10 <= a < 20 と書けたりするし、 if, elif の後に書ける条件式が強力だから switch 文が要らない。
- 253 名前:230 mailto:sage [2009/06/25(木) 09:11:22 ]
- えーと…OPQRSが文字として扱われるとは思なかった(・ω・)
それぞれ何らかの値と結び付けられてる定数のつもりだったんだけど…
- 254 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 09:26:55 ]
- >>253
if s in (O,P,Q): func_a() if s in (O,P,Q,R,S): func_b() else: func_c() Pythonにswitchが無いのは、散々議論された上で必要ないと判断されたから。
- 255 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 11:40:07 ]
- RubyやRoRって、生産性が高いって言うけど、それは膨大な規約を丸暗記した上での話だよな。俺的には分かりづらいったらありゃしないよ。
- 256 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 12:00:59 ]
- 人の作った物だと丸暗記になるが、作った本人は丸暗記だと思ってないだろう
- 257 名前:デフォルトの名無しさん [2009/06/25(木) 12:03:59 ]
- >>255
それは、他のでも変わらん
- 258 名前:デフォルトの名無しさん [2009/06/25(木) 12:49:55 ]
- caseと三項演算子があればむしろif関係いらなくない?
- 259 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 16:44:58 ]
- ぶっちゃけswitchの方が意味解りやすいな
- 260 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 18:49:20 ]
- RubyやRoRは、どうだこれだと直感的で分かりやすいだろうっていう教条的な態度が我慢ならない。設定より規約って、大量に規約を覚えれば設定が省けるに過ぎない。
- 261 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 19:48:21 ]
- Strutsはわかりにくいうえに傲慢な態度だからな。しかも制約が多いくせに手間は省けない。
それよりは100万倍まし。
- 262 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 19:51:05 ]
- Javaだとmavenの思想が好きだ。
とりあえず何も書かなくても動く。 動きを変えたいところだけ、書く。
- 263 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 21:22:07 ]
- >>262
それならまさにRailsの思想じゃないかと
- 264 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 00:35:17 ]
- Ruby on Railsを使った事ない奴は、一度使ってから批評しような、とちょっと思った
中身をいじる必要も機会も、Java APIやJavaのframe workと同様に無いわけだしなw もちろん、上書きは自由だし可能だしなあ
- 265 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 00:40:22 ]
- だから、結局、どんなフレームワークだって、最初に使うときは、
覚えなきゃならない事が沢山あるって事に違いはない。 フレームワークどころか、多機能な道具は、皆、 使った事が無ければ覚える事が多いってだけだ。 あとは、その道具の体系化の仕方が、 使おうとする個人に合っているかどうかというだけの事だ。 極めて、普遍的で当たり前の事であって、 わざわざ、キーボードを打つ手間を掛ける価値のない事だ。
- 266 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 00:49:47 ]
- >>265は、
> 使おうとする個人に合っているかどうかというだけ が、普遍的で当たり前でキーボードを打つ手間を掛ける(、ましてやサーバ準備して 実行環境を整えるなんて!)価値のない事と言い切るが、それは本当にそうなのか。 足りていれば問題ないが、足りなくなったときにそれでは足るまい(←自己撞着) まあ何でもいいが、それなりに使って評価してる人間がいるときに使わない人間の 評価なんて糞だと思うな。
- 267 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 01:07:49 ]
- >>261
そんな君にはWicketが向いている
- 268 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 03:10:55 ]
- >>265
Railsはあまたあるフレームワークの中でも暗黙の了解が半端なく多い。少ないコードで組めるっていうのは、それに頼ってるだけ。
- 269 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 03:20:55 ]
- まあ、言語自体が覚えること多過ぎな言語とか
標準ライブラリも拡張ライブラリも全部予約語扱いで予約語一覧だけで何ページにも渡る言語とか そーゆーのもあるけどな
- 270 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 03:25:30 ]
- そんなことより、Erlanの話しようぜ
- 271 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 04:18:25 ]
- もしかして:Erlang
- 272 名前:デフォルトの名無しさん [2009/06/26(金) 11:52:06 ]
- Erlang の話をする位なら Scala の話をしようぜ
- 273 名前:デフォルトの名無しさん [2009/06/26(金) 11:55:42 ]
- 今更ながら Python は良い言語かもしれないと思えて来た。
上の方のレスで、気持ち悪いと書いてしまってすまんかった。
- 274 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 12:33:21 ]
- >>272
ちょっと触ってみてるけど、 現時点では良いやら悪いやら分からん言語、という感想 狙いは合ってると思う 次に注目される言語が何かは分からんが、たぶんマルチパラダイムだろうし、 静的型付けの利点を残したまま記述量を減らすなら型推論は妥当 C#とかもその方向ではある ただXMLリテラルは個人的に疑問。XMLは言語レベルで密結合させるほど絶対的なものか? あと、背反しがちなオブジェクト指向と関数型を調和させようとして 言語が複雑奇怪になりかけてる(?)のも気になる。まあ仕方ない感はあるけど
- 275 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 14:42:21 ]
- >>274
>あと、背反しがちなオブジェクト指向と関数型を調和させようとして そうなの?なぜ背反になるのかだれか教えて。
- 276 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 14:43:32 ]
- >>274
難解な表現はやめてもうちょっと簡単にいって。 じゃないとこのスレでは立ち入り禁止します。
- 277 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 15:09:12 ]
- おいおい、なんのためのスレだよ
- 278 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 15:36:40 ]
- Pythonにブロックスコープ無いけど、これは利点なの?欠点なの?
Rubyにも無いみたい。
- 279 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 15:44:14 ]
- グローバル変数さえ判り易ければいいと思うが、どうなんだろ
スコープ無しはプログラミングしたことないわ
- 280 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 16:11:37 ]
- ブロックスコープに頼って長々とメソッド書くんじゃない、ってことじゃないかな。
Ruby のブロック(は他の言語のブロックと違うけど)には、ブロックローカルが あるけどね。
- 281 名前:デフォルトの名無しさん [2009/06/26(金) 16:15:32 ]
- >>275
自分は >>274 じゃないが、 関数型だと変数は一度設定したら、書き換えない物であるのに対して、 オブジェクト指向だと、変数はドンドン書き換える物だから、 相容れないという事では?
- 282 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 16:32:36 ]
- >>280
ブロックスコープもそうだが ローカル関数 (メソッドではない) に頼ってもメソッドは長くなる。 そういう書き方が嫌なのはOOへの拘りが強いせいでもあるんじゃないか。
- 283 名前:デフォルトの名無しさん [2009/06/26(金) 17:04:21 ]
- でも拘るならスコープを狭い範囲に留めてさせてほしいなぁ。
その関数(やらメソッド)でしか使わない処理を、その関数(ry と同じ層に おくのはなんかイヤらしい感じ。
- 284 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 17:06:08 ]
- JavaScriptにもブロックスコープがないのは盲点。
- 285 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 17:10:14 ]
- ブロックスコープの意味が未だに判らない。
for や while の中だけで有効な変数を作りたいってこと? >>283 の言ってる、関数でしか使わない変数って、Pythonでも関数の中の ローカル変数になるよね?
- 286 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 17:18:37 ]
- for や while の中、じゃなくて、
ブロックはブロックなんだけど。 for や while じゃない、ただ単にブロックだけのブロックも あるわけで。
- 287 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 17:38:16 ]
- >>286
Pythonには無いよね>ブロックだけのスコープ まぁ、関数より小さいスコープ作るよりも、関数自体を 小さくする方が良いんじゃないかな。
- 288 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 18:19:01 ]
- >>281
>関数型だと変数は一度設定したら、書き換えない物であるのに対して、 そんなことはない。関数型言語のうちで、そういうのもあるけど、たいがいのはそこまで厳しくない。 Lisp, Scheme, OCaml, ... Haskellみたいなほうが少数派じゃね?
- 289 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 18:40:51 ]
- >>287
サブクラスを作るよりも、クラスの階層構造を小さくする方が良い って思ったことはないのか?
- 290 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 18:43:01 ]
- >>278
>Pythonにブロックスコープ無いけど、これは利点なの?欠点なの? >Rubyにも無いみたい。 一般的に、インタプリタではないと思う。これがあるのはコンパイル型言語の特徴じゃないかな。 もしインタプリタでブロックスコープを実現しようとすると、ブロックに入るたびに 新しい変数テーブルを用意し、ブロックから抜けるとそれを破棄しないといけない。 さすがにこれは、インタプリタでは性能がでない。 コンパイル型であればこれはコンパイル時に行なわれるから、実行時のペナルティはなしですむ。 インタプリタではあきらめろっつーことだな。ブロックスコープは、あったほうがうれしいけど、なくてもそうは困らない機能だから。
- 291 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 19:34:01 ]
- the requested operation has failed とエラーが出てapacheとphpの連携が取れない
システムファイルを変更すね前はapacheの起動はうまくいったのに、何をやっても 上のエラーが出てくる、誰か助けて〜〜〜〜〜〜〜〜!
- 292 名前:デフォルトの名無しさん [2009/06/26(金) 19:43:07 ]
- >>285
変数だけじゃなくて、関数内関数も定義したいってこと。
- 293 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 19:50:39 ]
- >>291
まずはログファイルを探して読んでみよう
- 294 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 21:20:59 ]
- やっぱりブロックスコープがどうのこうの言ってるのが意味わからん。
たとえば、Perlではほぼできてる、ってこと? #!/usr/bin/perl my $a = 'a'; my $sub = sub(){ print "page\n"; }; { my $a = 'b'; my $sub = sub(){ print "hoge\n"; }; print $a . "\n"; $sub->(); } print $a . "\n"; $sub->();
- 295 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 22:31:08 ]
- 本題からはずれるけど Perl で $a は使わないほうがいいよ
- 296 名前:デフォルトの名無しさん [2009/06/26(金) 22:36:05 ]
- そう言えば、C++で昔 forのルール変わったよね。
for (int i = 0; 〜) の i のスコープがfor文内になった。
- 297 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 22:41:04 ]
- >295
確か一部の組み込み関数とかで $a と $b を使うんだっけ?
- 298 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 23:00:52 ]
- >>292
少なくとも Python なら関数内関数作れるよ。 decorator なんて関数の中の関数の中で関数を作ったりする。
- 299 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 23:04:47 ]
- perlのブロックは変数の共有にも使えたりする。
今はさすがにオブジェクト指向で書くけどね。 set(12); print get(); exit; { my $common; sub set{ my ($value) = @_; $common = $value; } sub get{ return $common; } }
- 300 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 23:08:33 ]
- 関数内関数がやりたいだけならブロックにスコープ必要ないんでは
for文とかforeach文のブロックにスコープがあるのはいいような気がしないでもないけど ブロックにスコープがあることの必要性がよく分からぬ
- 301 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 23:35:44 ]
- my $fizzbuzz;
{ my @a = qw(FizzBuzz - - Fizz - Buzz Fizz - - Fizz Buzz - Fizz - -); $fizzbuzz = sub {……}; } 今はさすがにオブジェクト指向で書くけどねw
- 302 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 00:02:18 ]
- >>288
余り詳しくないけど……。 Lisp, Scheme は、一般的に広い意味で関数型言語と言われているけど、 本当の関数型言語(純粋関数型言語)ではないと聞いたと思う。 OCaml は、 ML の方言にオブジェクト指向機能を追加した言語で、 純粋な関数型言語ではなさそう。
- 303 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 00:05:06 ]
- 流石にFizzBuzz問題にOOPは使わないなw
やろうと思えば、ジェネレータ使ったりするかも知れないがw
- 304 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 00:13:22 ]
- >302
OOPでも状態を変更するとは限らないから、やはり OOPと関数型が相いれないとは言えないよ 例えばフィールドへの代入もコンストラクタでしか行わないとかいくらでもやりようはある
- 305 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 00:21:01 ]
- >>302
そんなことこのスレの住人のほとんどが知ってることだと思うけど 何が言いたいの?
- 306 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 00:24:09 ]
- >>304
静的な関数型言語だと OOPは関数型によくある型システムの利点の一部を削り取ってしまう
- 307 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 00:31:50 ]
- >>305
そんなに突っかからなくてもいいじゃないか。 うゎーん(泣)
|

|