アカウント名:
パスワード:
何がいいかでソースコードを語って欲しい。
# 昔、ボツの杜というのがあってな
駄目なコードは例を出すのが簡単だけど、非の打ち所のない理想的なお手本を作るのは非現実的だからね。
糞コードから議論を始めるのは、極めて現実的な手法だと思う。
完璧てそもそも存在しないんじゃない?将来の拡張性をどう想定するかで変わってくるし。ここを詰めようとすると、議論が発散しがちでしょ。
逆に駄目なやつは、常に駄目ってケースがあるからね。糞コードが駆逐された世界なんて天国じゃん。
糞仕様「糞コードがやられたようだな…」 糞同僚「ククク…奴は四天王の中でも最弱…」 糞クライアント「ウンコード・マニアごときに殺られるとは糞の面汚しよ…」
世の中から糞コードを1つずつ消していけば、遠からぬ未来、必ず自分のコードが糞として消される日がやってくるのだ。
美学の部分も入るし、「完璧」は無理があるだろうね。
だが、「隙がない」とか「ソツがない」コードってのはあるだろう。その現場で一目置かれてるようなエンジニアのコードだと、「何か改善できるか?」と自分に問いかけても、可読性を落とすようなトリッキーなものしか捻り出せないものがあったり。そんな時はエンジニアやっててよかったって思うね。
じゃあ、最高なコード、サイコード・マニアを開催しようぜ。
まずは冪集合 powerset を求めるこの Haskell コード。初めて見たとき驚愕した。
powerset :: [a] -> [[a]]powerset xs = filterM (\x -> [True, False]) xs
( http://learnyouahaskell.com/for-a-few-monads-more#useful-monadic-functions [learnyouahaskell.com] )
これだけ。filterM は標準ライブラリ関数。使うとこうなる。
g
その例は強力なリストモナドをしょぼく使っているのでサイコーとは思わないfilterMの引数がconstじゃろ
じゃあちょっとリファクタリングして
powerset = filterM $ const [True, False]
でどうかな。
かっこいいリストモナドのサンプルも頼む。
ナイスなコードだとは思うんだけど、リストの要素の値を捨てていて勿体ないのでサイコーとは言えないかなと思った次第
以前どこかでリストモナドとcyclic programmingを組み合わせたコードを見たことはあるが、なんにせよ俺の手には余る
circular programmingの間違い
あと、どうも役目をいろいろ負わせすぎな気がしてHaskellのリストが好きになれんのだな俺は有限列と無限列と配列と集合は別々に考えたい
すみません、もう少しメジャーな言語でお願いします。
サイコなコードなら、日々の業務で存分に書いてますよ。
「Cryptic で短いコード読み解いた俺サイコー、えっキミには判らないの?」というウンコにわか Haskeller には辟易しています。
べつに Cryptic じゃないよ!たった 10 トークン程度の短いコード読みといても何の自慢にもならないよ!Haskell いじり始めてからもう 5 年くらいだし、にわかでもないよ!ひとつも的を射てないよ……。
しかも絶滅危惧種の Haskeller に辟易するくらいの数で囲まれる環境って羨ましい限りだよ!
いえいえAPLやJほどでは
とはいえ俺はcrypticなコードが書けてしまうのは言語の良くない特性だと思っているのだが、大半のHaskellerは同意してくれんだろうなマクロやメタプログラミングも嫌いだし、オブジェクト指向もモナドも遅延評価もユニフィケーションも、つまり制御を抽象化するものすべてが嫌いなので、世の中の人間のほとんどが敵か
いいコードというのは、平凡で特徴がないもの。
たとえば、言語の入門書を見れば、いいコードの例がありますが(たとえばHello, worldみたいな)、そこから「いいコード」のエッセンスを読み取れと言っても難しいんじゃないでしょうか。
守るべきポイントはたくさんあって、それを1つでも逸脱すると悪いコードになる。そうすると、その逸脱したポイントに目が行くから、それが悪いということはすごくわかりやすいです。でも、守るべきポイントを全部守ったところで、それは当たり前のことだから。
> たとえば、言語の入門書を見れば、いいコードの例がありますが入門書が地雷ということも当たり前のようにあるのが恐ろしいところで…
わたしは最初C言語を自学したとき、
アスキーの「入門C言語」「実習C言語」「応用C言語」3部作に頼ったおかげで、
しばらく標準的なCの記述ができませんでした。
入門書よりも、より多くのソースを読むことが大事、思いました。
うぎゃぁぁ!俺も orz
三田典玄先生のあのシリーズは、まちがいを指摘するためのサンプルテキストだと教わった上に、朱書き入りの本が研究室にあったので実害はなかった。全部検証した先人に感謝。
えーと、こうやったら失敗しましたっていう実験報告論文は評価しない人?
おれは評価しないなせめて失敗学みたいにまとめてもらわないとね。
「~すると失敗しました」じゃあダメですよね。「~という条件では○○が成立しないことを確認しました」という論文じゃないとね。
簡単に成功する楽な分野なんだね。
選ぶ分野を間違えましたね
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
アレゲはアレゲを呼ぶ -- ある傍観者
何がだめかじゃなくて (スコア:0)
何がいいかでソースコードを語って欲しい。
# 昔、ボツの杜というのがあってな
Re:何がだめかじゃなくて (スコア:1)
駄目なコードは例を出すのが簡単だけど、
非の打ち所のない理想的なお手本を作るのは非現実的だからね。
糞コードから議論を始めるのは、極めて現実的な手法だと思う。
Re: (スコア:0)
完璧てそもそも存在しないんじゃない?
将来の拡張性をどう想定するかで変わってくるし。
ここを詰めようとすると、議論が発散しがちでしょ。
逆に駄目なやつは、常に駄目ってケースがあるからね。
糞コードが駆逐された世界なんて天国じゃん。
Re: (スコア:0)
糞仕様「糞コードがやられたようだな…」 糞同僚「ククク…奴は四天王の中でも最弱…」
糞クライアント「ウンコード・マニアごときに殺られるとは糞の面汚しよ…」
Re: (スコア:0)
世の中から糞コードを1つずつ消していけば、遠からぬ未来、必ず自分のコードが糞として消される日がやってくるのだ。
Re: (スコア:0)
美学の部分も入るし、「完璧」は無理があるだろうね。
だが、「隙がない」とか「ソツがない」コードってのはあるだろう。
その現場で一目置かれてるようなエンジニアのコードだと、「何か改善できるか?」と自分に
問いかけても、可読性を落とすようなトリッキーなものしか捻り出せないものがあったり。
そんな時はエンジニアやっててよかったって思うね。
サイコード・マニア (スコア:0)
じゃあ、最高なコード、サイコード・マニアを開催しようぜ。
まずは冪集合 powerset を求めるこの Haskell コード。初めて見たとき驚愕した。
powerset :: [a] -> [[a]]
powerset xs = filterM (\x -> [True, False]) xs
( http://learnyouahaskell.com/for-a-few-monads-more#useful-monadic-functions [learnyouahaskell.com] )
これだけ。filterM は標準ライブラリ関数。使うとこうなる。
g
Re: (スコア:0)
その例は強力なリストモナドをしょぼく使っているのでサイコーとは思わない
filterMの引数がconstじゃろ
Re: (スコア:0)
じゃあちょっとリファクタリングして
powerset = filterM $ const [True, False]
でどうかな。
かっこいいリストモナドのサンプルも頼む。
Re: (スコア:0)
ナイスなコードだとは思うんだけど、リストの要素の値を捨てていて勿体ないのでサイコーとは言えないかなと思った次第
以前どこかでリストモナドとcyclic programmingを組み合わせたコードを見たことはあるが、なんにせよ俺の手には余る
Re: (スコア:0)
circular programmingの間違い
あと、どうも役目をいろいろ負わせすぎな気がしてHaskellのリストが好きになれんのだな
俺は有限列と無限列と配列と集合は別々に考えたい
Re: (スコア:0)
すみません、もう少しメジャーな言語でお願いします。
Re: (スコア:0)
サイコなコードなら、日々の業務で存分に書いてますよ。
Re: (スコア:0)
「Cryptic で短いコード読み解いた俺サイコー、えっキミには判らないの?」というウンコにわか Haskeller には辟易しています。
Re: (スコア:0)
べつに Cryptic じゃないよ!
たった 10 トークン程度の短いコード読みといても何の自慢にもならないよ!
Haskell いじり始めてからもう 5 年くらいだし、にわかでもないよ!
ひとつも的を射てないよ……。
しかも絶滅危惧種の Haskeller に辟易するくらいの数で囲まれる環境って羨ましい限りだよ!
Re: (スコア:0)
いえいえAPLやJほどでは
とはいえ俺はcrypticなコードが書けてしまうのは言語の良くない特性だと思っているのだが、大半のHaskellerは同意してくれんだろうな
マクロやメタプログラミングも嫌いだし、オブジェクト指向もモナドも遅延評価もユニフィケーションも、つまり制御を抽象化するものすべてが嫌いなので、世の中の人間のほとんどが敵か
Re: (スコア:0)
いいコードというのは、平凡で特徴がないもの。
たとえば、言語の入門書を見れば、いいコードの例がありますが
(たとえばHello, worldみたいな)、そこから「いいコード」のエッセンスを
読み取れと言っても難しいんじゃないでしょうか。
守るべきポイントはたくさんあって、それを1つでも逸脱すると悪いコードになる。
そうすると、その逸脱したポイントに目が行くから、それが悪いということはすごくわかりやすいです。
でも、守るべきポイントを全部守ったところで、それは当たり前のことだから。
Re:何がだめかじゃなくて (スコア:1)
> たとえば、言語の入門書を見れば、いいコードの例がありますが
入門書が地雷ということも当たり前のようにあるのが恐ろしいところで…
Re:何がだめかじゃなくて (スコア:2)
Re:何がだめかじゃなくて (スコア:1)
アスキーの「入門C言語」「実習C言語」「応用C言語」3部作に頼ったおかげで、
しばらく標準的なCの記述ができませんでした。
入門書よりも、より多くのソースを読むことが大事、思いました。
Re: (スコア:0)
わたしは最初C言語を自学したとき、
アスキーの「入門C言語」「実習C言語」「応用C言語」3部作に頼ったおかげで、
しばらく標準的なCの記述ができませんでした。
入門書よりも、より多くのソースを読むことが大事、思いました。
うぎゃぁぁ!俺も orz
Re: (スコア:0)
三田典玄先生のあのシリーズは、まちがいを指摘するためのサンプルテキストだと教わった上に、朱書き入りの本が研究室にあったので実害はなかった。
全部検証した先人に感謝。
Re: (スコア:0)
えーと、こうやったら失敗しましたっていう実験報告論文は評価しない人?
Re: (スコア:0)
おれは評価しないな
せめて失敗学みたいにまとめてもらわないとね。
Re:何がだめかじゃなくて (スコア:1)
「~すると失敗しました」じゃあダメですよね。
「~という条件では○○が成立しないことを確認しました」という論文じゃないとね。
Re: (スコア:0)
簡単に成功する楽な分野なんだね。
Re: (スコア:0)
選ぶ分野を間違えましたね