- rokujyouhitoma
- 31362
- 6
- 95
- 18
dartVMはほんとに速くなったし、標準化はほんとに期待してる。あと正規表現さえ構文に組み込まれればサーバーサイドでも使えますよこれは。
2013-12-15 22:04:54@__gfx__ なんでサーバーサイドで使うのに正規表現が構文で必要なんですか…? Python も Go も正規表現構文無いけど不自由感じないし、むしろリテラルあるとシンプルな文字列操作で良い場面で正規表現を使う悪習が広まるので良くないと思うのですが。
2013-12-15 22:43:35@methane いやぼくからみると、golangもpythonもシンプルな正規表現演算でいい場面なのに複雑なコードで対応せざるをえない、文字列操作に向かない言語ですよ。
2013-12-15 22:51:37@__gfx__ 正規表現を使ったほうがいい場面はライブラリで対応可能で、 import と数タイプ増えるだけなのに、構文を汚す必要性は感じたことが無いですね。。。
2013-12-15 22:54:05@__gfx__ 事実として正規表現がリテラルでない言語(Java, C++, Python, Go など)は広くサーバーサイドで使われているので、リテラルであったほうがいいかどうかはセミコロンがあったほうがいいかどうか程度の問題だと思います。
2013-12-15 23:01:49@__gfx__ なので Dart は正規表現リテラルなくても、コミュニティの盛り上がりがあればサーバーサイドで実用されると思います。
2013-12-15 23:02:48Scala も Haskell も正規表現リテラルないよね?というか正規表現リテラルって、文字列リテラルと別に複雑な(覚えきるのが難しい)エスケープ規則のあるリテラルを導入してやってることはメソッド呼び出し一個減らしてるだけだし、
2013-12-15 23:08:32名前から意味がわかりやすかったり、ドット打った後はエディタやIDEの補完が効くメソッドの代わりに、意味をいちいち丸暗記で覚えないといけない記号増やしてるだけだよね?
2013-12-15 23:09:20@methane いや正規表現構文をセミコロンと同一視するとか…。正規表現構文のある言語をまともに触ったことありませんね?経験していないものに必要性を感じないのは当然ですから、一度ちゃんと触ってみてはいかがでしょうか。
2013-12-15 23:10:59if s.startswith(('foo', 'bar')): のほうが、 if s =~ /\A(foo|bar)/ より、リーダビリティ(ピアレビューのしやすさ)が上だと思う。
2013-12-15 23:12:34@__gfx__ JavaScript 触るときも、できるだけ文字列操作でやりたいところですが、ちょっと文字列メソッドが少なすぎるので辛い時はリテラル使いますが、、、
2013-12-15 23:15:55@__gfx__ むしろ、正規表現に頼らなくても文字列操作が充実している言語で、メソッド覚えずに低レベルの操作の組み合わせで実現しようとして正規表現のほうが楽だと感じられてるのではないでしょうか?
2013-12-15 23:16:16@methane @__gfx__ JavaもC++も、数年前までクロージャがなかったのが最近入ったわけですよね。そのような安定性を重視する言語を例にこれからの設計を語るべきではないと思います。
2013-12-15 23:16:58@methane javascriptの正規表現構文というかリテラルは変数の埋め込みができないので大して便利とは思いませんね。あれだったらなくてもいいです。
2013-12-15 23:18:14@kazuho @__gfx__ これからの設計の話をしていたわけではなく、サーバーサイド言語として普及する条件の話をしていたつもりです。これからの設計としても、正規表現リテラルがなくてただのライブラリにしても生産性が落ちないくらい、普通のことが簡単な設計がいいと思いますが。
2013-12-15 23:19:27@methane この例のリーダビリティは個人の好みに寄ると個人的には思います(ただし私はstartswithで書きます)が、'foo'や'bar'などの固定文字列じゃなくて変数を使う場合に、startswithの方が圧倒的に柔軟だと思います。
2013-12-15 23:19:41@colun @__gfx__ さんの仰る正規表現リテラルは変数の埋め込み(?)ができるそうなので、固定文字列じゃなくて変数を使う場合 (prefix を設定ファイルで定義する場合など) にもストレートに対応できるかもしれません。
2013-12-15 23:21:15@methane @__gfx__ 何の言語の話なのか把握していませんが、変数の埋め込みをする場合はエスケープしないといけないという僕の認識は間違っているのでしょうか? また、'foo'や'bar'が変数なのではなく、['foo','bar']という配列が変数の場合とか。
2013-12-15 23:23:33@methane @__gfx__ いえ、設計の正しさを主張するために現在のC++やJavaの言語仕様を例にあげるのは、5年前にクロージャは不要だと主張するのと同じかもよ、ということです。
2013-12-15 23:24:13PyPy Evangelist in Japan. love programming languages, with my favourite being Python and PyPy, JavaScript, Io(Iolanguage)