「Haskell」を含む日記 RSS

はてなキーワード: Haskellとは

2015-05-13

http://anond.hatelabo.jp/20150513110244

うぜえ。

俺は毛の壁じゃねえし、こんなん関数型界隈じゃ常識だわ。

計算可能性の理論ラムダ計算Lispを産んだように、プログラム意味論圏論Haskellを産んだ。

プログラム意味論では変数の型が議論の最小単位で、関数プログラムはある型の変数を別の型の変数へ変換する変換器として記述される。

から本質的に、型が無いとプログラムという概念存在できないことになる。

で、このアカデミック議論が普段書くコードにどう影響を与えるかというと、実はほとんど影響がない。

もちろん知っていた方がよりエレガントなコードを書けるだろうが、必須ではない。

圏論を知っている必要があるのは、Haskell設計する人達だけだ。

下っ端はエリート様達が作った便利な道具を、細かい理屈抜きにしてありがたく使えればいい。

2015-03-26

なぜGo言語で書きなおさなきゃならんのか

別にバイナリ吐ける言語は他にもあるだろうに…

C++D言語OCamlHaskell、Rust、Nim、どれでもいいじゃないか。

2015-03-16

バブルソートってわかりやすいだけがとりえなのに

再帰にするとわかりにくいったらないな。

いや配列で扱うならまだいいが関数型言語リストでやってみるとそれはひどいことになる。配列の値をちまちま変えながらやるのが最適な方法なのでそれが遅いわけだが、関数語型言語デフォであるimmutableなオブジェクトでやろうとするとごにょごにょしすぎてわかりやすさがどこかへいってしまうしmutableなオブジェクトと代入を使うとそれはそれで関数型言語的にキモくなる。そもそもソート全般副作用っぽいので相性悪いのだろう。探索みたいな読み込みだけなら問題ないはず。haskellが注目されたときあのクイックソートが有名になったわけだがバブルソートの複雑化が注目されるわけがない。

なぜバブルソートか?

バブルソート教育用であり実践じゃ使わない、で切り捨てる人もいるがあまりにも人間味がなさすぎる。アルゴリズムハローワールド地位でもって扱うべき。しか関数型言語からいい声は聞こえないだろう。

2015-02-26

関数型言語使ってる時の気持ちよさは、ベーシックべた書きの頃と同じ

ひょっとすると、これはべたべたな一直線の手続き書き時代以来の「全てが一直線に並ぶ気持ちよさ」なのかもなぁ、と思った。

Haskellなんかを書いてると、究極的に、関数型言語におけるプログラムとは、一引数関数の深い深い一直線の入れ子みたいに感じられる。

(いやまぁ、タプルとかもあるけど、原則的に)

構造化⇒OOPと来て、プログラミング言語Go to hellを廃し、色んな物をDRYに書けるように進化してきたけど、その結果色々なものが並列にばらばらっと並んでいる感じになった。

OOP大本smalltalkメッセージパッシング原則の時点で、対等な二つの並列に並んだオブジェクトのやりとりがベースになっている。

勿論オブジェクトは大体内部に別のオブジェクトを抱えていたりして、親子関係があるのは普通だけれど、子同士はやはり並列に順序なく並んでいる。

この並列性のおかげで、例えばそれこそメッセージパッシングをそのまま引き継ぐErlangなんかは、高いスケーラビリティと耐久性を持つわけで、これ自体は素晴らしい発明だ。

ただ、やっぱり並列なヤツラが、ごちゃごちゃっと同時にあって、そいつらが同時にガチャガチャなんかやってたら、神の見えざる手的に、なんとなく全てが上手く噛み合って、プログラムが動きます、って、これどうしても全体像を把握しにくい。

人間脳みそって、そんな同時並列のものを把握できるようには、出来ていないんだと思う。

上手く動いてはいるんだけど、何で上手く行ってるのか分かるんだけど、分かりにくい。

この気持ち悪さが、今日もどこかのITおじさんを全部staticな書き方に走らせ、OOPわかんねー、と首をかしげながら、何となく使ってる人達の心を、巨大なメソッド作りに導いているのではないかな、と。

なんてったって、Scalaなら並列処理でさえ、モナドなFutureで事実上直線に繋いでいってかいちゃう(Akkaもあるけどあれはオブジェクティブな側面なので)わけで、これは凄く懐かし気持ちいいと思う。

かくして関数型言語は「なんかとにかくきもちいいぃぃぃぃ」な信者を量産している。そしてOOP派との間に、意味分からん溝だけが広がっていく。

2015-02-19

仕事のできない天才プログラマの後輩

酔っているからとりとめのない内容になるかも。

本人に言えとか、増田に書いてどうなるとか言われるんだろうが、本当にただの愚痴から、この記事でどうこうしようってわけじゃない。

ただ吐き出させてくれ。

うちみたいな弱小ベンダー新卒で入ってきた後輩がガチ天才プログラマだった。

だが、その手の天才の御多分にもれず協調性に難ありで、大手をふられてきたのだろう。

入社後の研修期間中、そいつは1週間で3万行のHaskellコードを書き、独自社内wikiシステムを完成させた。

超使いやすい。

ただし、その1週間、そいつは1日も会社に来なかった。

研修終わって俺の下でプロジェクトに参加するようになっても、使いづらいったらありゃしない。

まず、俺がやれと言ったことをやらない。

もっとエレガントなやり方があるのに、なんでそんなやり方をするんだと言ってきかない。

それはな、お前の好きなエレガントな解法で解決できるのは、お前の目の前にある問題だけだからだよ。

システム全体、保守運用人材確保、全領域から見た折衷案しかエンジニアリングでは解法として採用されないんだ。

お前の馬鹿にするPerlだって、30年にも渡る資産の蓄積には、いくらお前一人が頑張ったって、勝てやしないんだよ。

でもこいつ、本物の天才だし、うちみたいなところで腐らせておくには惜しいんだよな。

Matzみたいに、全く新しいことを初めて、勝負しろとは言ってるんだが。

2015-01-26

http://anond.hatelabo.jp/20150126124138

kenokabe氏は攻撃的過ぎる。

オブジェクト指向やらLispやらHaskellやら、実績のある概念言語否定するにあたって、あれだけ強い言葉使ってたら喧嘩になるのが当たり前。

あるいは、それで実用的なソフトウェア作ってみせたなら、まあ周りも黙るだろうけど。

彼は「俺が正しい、わからないのはあなたの読解力が無いから」だからね。

このままだと炎上が繰り返されるのが目に見えてた。

2015-01-18

みんな大好き

#毛の壁 氏について。

人格的なことは触れないとしても、みんな思うのは、「どうして色々読んでるっぽいのにああなれるのか」ということだと思うので、ちょっと考察してみた。

恐らく氏は、センテンス、辞書の項目くらいの長さのものの把握には長けている。ただ、文脈を読むとか、全体像を把握するとかそういう能力が欠如してる。多分、話の筋に展開があるとセクション単位のものも把握できない。

そのため、ミクロ理解のみで全体を捉えようとするから認識現実齟齬が起きる。また、一見同じ形をしているが、論じるべき階層がそもそも異なるようなことを混同してしまう。もちろん物事の体系的な理解も出来ない。そうなると多分いわゆる構造化が必要レベルソースも書けない。形式的定義証明理解も怪しいのだろう。

そう考えると、関数型プログラミング遅延評価だと思うのも、評価戦略としての遅延とライブラリレベル提供される lazy/force を混同するのも、S式Lisp 構文を混同するのも理解できる。アカデミックな体系的学習必要haskell, ML に手が伸びないのもわかるし、数学的基礎と言っておきながら基礎論が全く出てこないのも分かる。ラムダ計算を知らないとすると、Lisp のあのへんてこな改造(?)もうなずける。局所的なスコープクラスモジュール単位アクセス制限の話で揉めてたのは、多分モジュールクラスをまともに扱ったことがないからなのだろう。それは github珍妙コードからもなんとなく推測できる。

全く無駄時間を過ごしたが、なんかある意味未知との遭遇で楽しかった(小並感

これが氏の発するカリスマオーラなのだろうか。

2015-01-15

あの人のは新興宗教だよなー

オブジェクト指向は糞だ!Lisp設計は間違ってる!Haskellは筋が悪い!これが真の関数型だ!

つって、既存の実績ある言語開発者が貶されて、何もプロダクト作ってない奴の珍説が広まるのはなあ

2015-01-13

http://anond.hatelabo.jp/20150113025512

俺の主張は

既存言語と巷に流行解釈で十分楽にプログラミングできる」

「こいつの提唱する謎の概念にはきっと価値がないだろう」

ってことだよ。

もちろんこの主張が正しい証拠は何もないけど、同時に間違っているという主張も何もない。

少なくとも、実際にこいつの提唱する謎関数型プログラミングで楽にプログラミングができるという証拠はまだ何もない。

Haskellとその巷に流行解釈以上の価値提唱しているようには見えないね

それは俺がバカからだって言うなら、そんなバカでも分かるような確たる証拠をつきつけてみせてくれや。

例えば、同じプログラム実装するなら、JavaよりHaskellが10倍短く10倍早くプログラムが書ける。

文字数を数えたりストップウォッチ時間測るだけだからバカでも分かる簡単な事実だ。

話は同じぐらい確たる証拠を突きつけてからだね。

それができないなら、きっと謎概念には価値がなんだろう。

2015-01-04

名古屋、もしくは愛知県IT 企業アルバイトしたいのだけど...

タイトル通り

いろいろわけあって、東海地方の6年制大学20代後半で入学することになって勉強している。私立だけれども。

それで、アルバイトをしたいのだけど、どうアプローチをすればいいのかわからない。

一応、CodeIQ で『働きたい』という意思表示をしているのだけど、すべて東京方面会社からオファーで、

お断りさせていただいている。一応は名古屋で働きたいと希望をだしているのだけど。

今できるプログラミング言語RubyJava ぐらい。

C, PHP, JavaScript はよくわからなくなってしまった。

HTML5 + CSS3 は十分に勉強すれば対応できる気はするのだけれど、時間が足りない。

もちろん、RailsiOSAndroidフレームワークは忘れてしまった。

あと、SwiftHaskell は興味がある(つまりは、習得できていない)。

それと Linux はなんとなく、サーバー構築等々ぐらいなら出来る自信はある。

ついでにいうと、以前も仕事をしていたといっても、アルバイトだったりするので、職歴とは言えない。

そんなこんなでクズ人間なのだけれども、どこか雇ってくれる場所はないのだろうか。

2014-12-02

僕はもうプログラミングしなくていいんだ

大学回生の夏、下宿の扉に「出入禁止」とチョークで大書し、親を呼ばれて精神病院に連れて行かれた。

 

パソコンを買ってもらったのは小学三年生の冬だった。今でも覚えている。1996年12月2日のことだ。Windows95発売で世間は揺れていた。インターネット回線がうちに来たのは翌97年の1月、これはそこそこ早い導入だったと思う。さらに翌々年の99年にはケーブルテレビ常時接続になった。親には先見の明があったが、しかしパソコンには詳しくなかった。PC-8001も確かそうだ。親はこれが次世代の必需品になると確信して買っていたが、買った一方で使い道が分からなくてオブジェとして放置していた。親はPC-8001パソコンだと言っていたけれど、僕にとってパソコンはおっきなテレビが標準で付属しているものだったし、マウスもなかったので、それがパソコンだとは到底思えなかった。でも親は言った。今度来るのは違うんだ、オフィスも入っているパソコンなんだ。僕は聞いた。一太郎っていうやつは入ってないの?テレビで言ってたよ、と。親は答えた。オフィスってのは一太郎より機能がスゴイんだよ。僕はへぇ、とだけ言った。どちらにせよペイントは入っているだろう。ペイントなら親戚の家で使わせてもらったことがある。パソコンお絵かきができるのだ。マウスをカチカチして、キーボードをカチャカチャするのだけが楽しみで、納品の日を一週間ひたすら待った。その頃、漢字宿題提出が滞っていて、そのままでは居残りでさせられることになっていた。僕は久々に奮起した。いつもは踏み倒していた宿題を、全部一気に終わらせた。家に帰るとパソコン電気屋さんの手で設置されつつあった。今は亡き、ニノミヤで買われたパソコンであった。

 

97年にインターネットを始めた。一日一時間まで。実のところ電話代の問題ではなく、一時間ほど使うとブルースクリーンが発生するからだった。一日一時間以上動かすと壊れるから。PC-8001キッチリ買った親なのに、それぐらいの(?)ITリテラシーであった。ただ別にそれを責めるつもりはない。僕はすぐにアングラサイトに入り浸った。人に飢えていたのだ。普通のチャットには人がいない。テレホタイムにならないと、誰一人ログイン氏亡いのだ。でも、アングラサイトなら四六時中書き込みがある。僕は思う存分厨房行為を楽しんだ。煽り騙りなんかは、小学生がやっても大人がやっても大して変わらないものだ。You is a big fool manという文句をリアルタイムで目にした人は、多くても数百人だっただろう。何千、何万のツイッタラーが押し寄せ、ブクマが1000以上付くような今の炎上とはほど遠い暢気さだ。当時の匿名掲示板とはそういうものだった。誰一人本気で投稿しなかったし、しかし誰一人面白くない書き込みをしようとはしなかった。トイレでもネタを考え、思いつけばすぐに投稿し、ワラタが付くのを待ち続ける。あやしいあめぞうあやしい、2ch。人の多いところから人の多いところへ。ワラタが多くもらえる場所へ。気づいたらインパクが終わっていた。

 

その一方で僕は中高一貫私立校入学していた。高校受験がないことから、ネット依存さらに加速した。しかし2000年を境にアングラ掲示板は衰退の一途をたどり、2ch一強時代を迎えていた。1ch.tvボコったりするなど楽しいネタがないわけではなかったが、匿名掲示板ネタの宝庫と言うより、本気でちゃんと議論することもできる場所になり始めていた。ちゃんと議論しようとしたらすぐさま崩しにかかるのが2ch隆盛以前の匿名掲示板文化であったが、2003年頃を境にはっきりと潮目が変わっていったように思う。まあその辺はどうでもいい。アングラと非アングラの境目は消え始めていた。

 

その狭間に、僕は生きていた。

 

自分掲示板を設置することにした。けれども何をして良いのか分からない。CGIレスキューに救援要請をして本も買った。Perlだ。Perlしかない。しかしPerlがどうして動いているのかは、全く分からなかった。何十行、何百行もの文字の羅列が、どこでどうなって、掲示板になるのか。インタプリタコンパイラ?訳が分からない。そもそもCPUがどうやって動いているのかも分からない。僕にとってプログラムとは、セットアップウィザードCD-ROMをギュンギュン言わせながらインストールするものであって、掲示板というものは、Teacupで借りるものだったからだ。でもどうやらそうじゃないらしい。コンピューター翻訳するのがコンパイラです。さっそくコンパイラを使ってみましょう……

 

お手上げだった。

 

コンパイラがないのだ。コマンドプロンプトにはない。Linuxを入れる?使い方が分からない。Vine Linux初心者お勧めだった頃の話だ。ボケッとしててもGNomeぐらいは動かせる程度には簡単になっていたが、そこからターミナルを開いてgccでコンパイルするなんて想像も付かないことだった。Hello, Worldはなんとか表示できても、それをGUIで動かす方法が分からない。僕はデスクトップに「Hello, World」のポップアップウインドウを表示させたかったのに。全然訳が分からなかった。

 

プログラムが動いている方法を知らなければならない。プログラミングを学ばなければいけない。しかし全体像を把握するにはあまりにもほど遠い……。絶望感が支配し始めていた。Hello, Worldはできたけれど、その先が全くわからない。どの参考書を読んでも分からない。ググってもググっても分からない。ポインタで躓く初心者が多いです!……どの本にも書いてあったけれど、僕はポインタどころか、変数の種類がたくさんあるところでお手上げだった。int?char?long???意味不明文字列が並び続ける。メモリメモリって、挿したらいいんじゃないの?確保?fopen????どんなプログラミング言語も、何一つ分からなかった。その頃インターネットは加速し始めていた。切るのが当たり前だったJavascriptが復権し、Ajaxと名を変えてやってきた。掲示板スクリプトもどんどん高機能化し、もはやPerlを知るだけでは何一つできないようになってしまった。苦痛の日々が始まった。どの言語も、全く分からなかった。分からなければならないという焦りが募っていった。

 

あるとき、一年間ほど、とりあえずお手上げのままにしておくことにした。大学受験が迫ってきたからだった。そして案外あっけなくそれは終わった。僕は某大学情報科学科に入った。

 

教授ガイダンスで説明したとおり、情報科学科のプログラミング演習はそれほど多いものではなかった。一回生の時なんか、キーボードを目で追って人差し指で打っている人もいるぐらいだった。学校の授業はアテにならない。そして大学受験でいったん引っ込んだ、とにかく十代でなにかしないと、という焦りが復活してきた。

 

大学キャンパスは広すぎた。何をして良いのか全く分からなかった。授業内容はひどくつまらなく、何が役に立つのかも分からず、ただただ苦痛で、キャンパスサークル活動に打ち込んで楽しく過ごせるほど社交的ではなく、かといってオタク集団に混じる勇気も無く、とにかく、とにかくここで四年間、四年間で何かしないと、何かしないと就職に間に合わない、大学院進学に間に合わない、十代のうちに何か大きな事を成し遂げなければならない。日々研鑽に励み、日々プログラミングスキルを磨き、日々勉強会に参加し、日々コードを書き、日々環境設定をし、日々本を読み、そして日々コードを美しく書かなければならない、そういう焦りだけがどんどん加速していった。大学生協で片っ端からプログラミングの本を買った。ド初心者向けのPerl本から、美しいコードは何か、みたいな本まで。でも、どれ一つ、僕のスキル向上には役に立たなかった。プログラミングスキルの向上=自分自身の地位=生活の保障、と思っていた自分には、悪夢のような現実だった。

 

とにかくインターネットと一緒に歩んできた僕にとって、ITスキルはすなわち力であり、むしろITスキル以外は何の価値も持たないもの、と思えるほど脅迫的な観念にとらわれていた。入ってくる情報さらに増えていった。Cができるのは当たり前、Ruby on Railsがアツい、Java、PHPはもちろんできるよね、MySQLは当然使えるよね、もちろんHaskellSchemeObjective-Cもやらなきゃね……何一つできないのに、習得すべき言語だけがどんどん増えていく。加えて美しいコードを書け!という文句が飛んでくる。クソッタレが。何が美しいコードじゃ。goto使ってもいいだろ。好きなだけ使わせろクソッタレが。全部getsで書いてやる。クソが。アルゴリズムアルゴリズム勉強会勉強会ビューティフルコードMacMacMacジョブズジョブズジョブズ……???????????????

 

それでもなんとか、そう、なんとかなった。友達が優秀だったのだ。僕には到底できないような、きれいに整理されたコードを書く人だった。聞けば在学中から外注プログラマをやっていて、それなりに稼いでいたのだという。性格ちょっとアレで、風俗に勇気を出して行こうかどうしようか迷ったけどその金でオナホ買ってシコってオナホを床に叩きつけたみたいなヤツだったけれど、そいつからもらったコードを、わざと汚く成形し、変数名も汚らしくし、提出し、なんとかなった。結局自分最初から最後までプログラムを作ることはできなかった。丸々コピペはしなかったけれど、コピペがなければ卒業は無理だっただろう。

そうして三回生の終わり、試験がどっと押し寄せてきた。一月のことだった。機械学習と……なんだっけ?そういう感じの試験が、2月の初日、行われることになった。三回生はただでさえ試験が多かったが、その大トリこそが機械学習だったのだ。

 

僕は試験放棄した。

 

まるで意味が分からなかった。推論、それは分かる、機械学習機械学習??やっていることは数式だしベイズがどうの……まるで分からない。泣きそうだった。三年間必死こいて勉強したり勉強会に行ったりプログラミングスキルを上げようとしたり本を読んだり色々したのに、何一つ得るものは無かったのだ。僕はあやしいわーるどオマンコ連呼していた頃から、何一つ成長出来なかったのだ。そしてそれは、間違いなく、疑いようがなく、自分のせいだった。自分頭が悪いせいで。自分の勉強不足のせいで。自分のせいで……コンピュータとともに、十何年も育っていた僕にとって、コンピュータに関するスキルこそが、全ての力の基準だったのに、その全てを否定されたような気持ちだった。プログラミングができなければ、死ぬだって友達はみんな就職して、SEになったりSIerで働いたりネットワーク管理者になったりしてるのに、僕はなんで、こんなところに。そいつらに取り残されるのに。みんな勉強会に出てMacを持ち寄ってハッカソンしてるのに。泊まり込みでプログラミングしたりしてるのに。なんで僕は、fgetsすらマトモに使えず、getsとscanfだけであなた名前を入力してください オマンコ オマンコさん、こんにちは!みたいなプログラムしか書けないんだ。

 

大学回生になった。研究室を選択する必要があったがしなかった。しないでは困るとのことで、適当に書いたらその一番上に配属された。でも一切研究せず、下宿に引きこもって何もしないをした。今日輪講はここまで進みました!という報告が毎週回ってくるが、まるで研究室では日本語でなくアラビア語公用語になっているのではないかと思えるぐらいの光景だった。この頃、近所の人の証言によれば、言動がおかしく、訪ねてきた人に暴言で返し、殺す殺すなどの声が聞こえ、時折モノを投げつける音が聞こえたりしたそうだ。まあよく知らない。僕は普通に何もせずぼんやりネットを見ていただけのような気がするけど。

 

それからしばらく経った。

 

結局僕は中退した。そして別の大学に入り直した。今度は、工学じゃない別の場所に。みんなキーボードの文字を読みながら指先でキーを叩いている。安心する光景だった。僕らはプログラミングを習わなくてもいい。これから習う必要も無い。タッチタイピングだって、できるに超したことはないだろうけど、できなくてもいい。ただ、そこにある便利なモノを使えば良いだけなのだChromeを使っていて、うっかり開発者向けコンソールを開いてしまっても、何も分からなかったことにして閉じて良いのだ。きっとマクロを書けば、楽ちんに勝手にやってくれるような作業を、人の手で何度もやる。それでいいんだ。マクロを考えるために必死になる必要なんか無い。マウス右クリックコピーペースト。それでいいのだ。キーバインドすら覚えなくて良い。メモ帳を使ってもいい。viやEmacsキーバインドを覚えなくてもいい。マウスも使えないようなエディタと格闘する必要は無い。Macを買っても、XCodeportsを入れる必要は無い。iTunesiPhoneを同期させて、音楽を聴くだけでいいんだ。

 

僕はもうプログラミングしないでいいんだ。

 

それが分かったとき、全てから解放されたような気がした。僕を苦しめ続けたプログラミングというものは消えてなくなった。パソコンでやる作業は、昔と一緒、匿名掲示板オマンコと書き込むだけだ。それ以上のことをしなくてもいいんだ。勉強会に出てハッカソンする必要は無いんだ。プログラミングスキルを錬磨しないと死ぬなんてのはウソだったんだ。美しいコードを書かないと天罰が下るというのはウソだったんだ。毎日毎日はてブホッテントリを見てると、プログラミングマスターしなければならないこと、何何する方法開発者必須スキル、便利ツール、Macでのアプリ開発、セキュリティ、通信、データベース勉強会ハッカソン、そういうもので溢れている。苦しくないのか不思議で仕方ない。もちろんプログラミングをしていて楽しい人もいるんだろう。けれど、僕みたいに、プログラミングという行為が苦痛で苦痛で苦痛でしかない人もいる。たとえ1000回の同じ操作でも、人力でやる方がマクロを書くよりも楽だという人も、ここに存在するのだ。そしてそのような人の存在も当たり前に肯定されるのだ。みんな苦しまなくて良いんだ。誰かが勝手にやってくれればいい。できる人にお金を渡して、僕らはそれを享受するだけで良いのだ。ここでプログラミングという言葉を連呼したけれど、コーディングという言葉との違いとか、そういうのを気にするような人とおつきあいする必要は無いのだ。いずれプログラミング必須スキルになるとか言われて何年も何年も苦しみ続けてきた。けれど、そんなことをする必要は無いんだ。

 

さようなら。僕はもうプログラミングしません。

 

 

 

 

それでぶっちゃけここからが本番なんだが、十代でなんとかしないと、という焦りはこないだの青木君の小四なりすましの話に似ている。僕もそうだった。僕らの世代だと登大遊氏なんかが結構輝いてて、ああいう感じにならなきゃ、と思っていた節はある。十代の時になにか成し遂げないといけない、そのためには誰かに認めてもらわなければならないという焦りは、どれくらいの「大人」に理解してもらえることなのだろうか?誰かの承認を得たいという承認欲求を、同じ世代の誰かを使って満たすことができず、むしろ同じ世代の誰かを一緒に引き連れて、承認欲求を満たしてくれる「教祖」にすがりつく。NPOの大学生が「承認」を欲し、政治家が「承認」を与えているのだ。AO入試用の作文?図?みたいなものも見かけたが、「私はリーダーシップがあります!」とか実にくだらないことしか書いていない。しかしそういうものでさえ、学生団体とやらは「承認」してくれる。結局、オウム真理教が丸ごと開けたポジションに、バラックが建ち並び闇市が行われていて、コミュニケーションで自然と得られるはずの承認欲求が、法外な札束で取引されている、そんな感じのような気がする。

 

意外にブクマが増えていた。PC-8001は俺が産まれる前に買われたもので、ずっとオブジェだったのだ。動くかどうかもわからない。テレビに接続するコードがなかったから。

2014-10-09

Haskellerが嫌い

Haskellerが嫌い

Haskellはきらいじゃないけど

Haskellerのあの偉そうな感じが受け付けない

Haskell先進的だからだろう

自分

Haskellが好きです」

って言って

相手に

「え? まだそれ? 面白いの?」

って言われないと確信しているあの感じ

しろ言語ユーザ自分よりフィロソフィーが足りないと思ってそうなあの感じな

普通は尖った言語なんて使ってたらそうなっちゃもの

先進的な言語を使うこと自体が悪いわけではないけど、

Haskell好きだけはここ十年くらいプログラミング言語DISを受けていないから結果的に奴らは増長しているのだ

しろHaskellを使っていることがなんかステータスになると思っているのだ

これからは目を爛々と輝かせたHaskellerに上から目線

Haskellが好きです」

と言われたら

「あーIOモナド副作用じゃないよ詐欺言語だよねー」

と返事を返すことにしよう

そうしようじゃないか!

http://anond.hatelabo.jp/20141009194334

2014-08-12

保守性・管理性が上がるPHPスマートコードレビュー12

1. 括弧の省略

PHPにおいてはif文やwhile文において、1行であれば括弧を省略することができます

<?php
if (...) 
  hoge();
while(...)
  hoge();

これは、保守性・管理性を上げたいのであればやってはいけません。括弧がつくことで視認性が下がることなどありません。むしろインデントに騙されてしまい、ミスが増えます。例えば下の例です。

<?php
$a=0;
$b=0;
while ($a < 10)
  $a++;
  $b++;

さて、このとき $a はいくつですか? $b はいくつですか?

答えは $a が 10、 $b は 1 です。$b は while のスコープにはないので、ループしません。

括弧でくくられていればこのようなミスを防げます。括弧はきちんと書きましょう。

2. 三項演算子

ネストしすぎると可読性が損なわれるため注意が必要ですが、うまく使うとスマートに書けます。うまく活用しましょう。

3. switch

条件分岐が多い時にうまく使いましょう。

ただし if 文で素直に書いた方が速度は速いという噂もあります

実用上の違いはほとんどありませんので、チームの方針に従いましょう。

4. ループ

PHP にはループ制御構文が用意されています。主に下記の3つを用途にあわせてうまく使い分けましょう。他にもループに関する構文や関数はありますが、基本的には下記で事足りるでしょう。

  1. for

主に回数でループさせたい場合は for 文を利用するといいでしょう。

例えば、10回同じ処理をする場合は下記のように書きます

<?php
for ($i=0; $i<10; $i++) {
  // 


  

2014-07-17

関数型入門以前

これ読んでも関数型分からないけど、入り口の前あたりに立つために

関数型言語覚えたらなんの役に立つの

プログラマとしての引き出しが増える。

って書くと「そんなもんどんなプログラミングテクニックだって一緒だわ」って言われそうだけど、でもそうとしか言い様がない。

とりあえず、オブジェクト指向と同じで、プログラム構造化して、複数レイヤーに切り分けて部品化していくテクニックだとは言える。

ただオブジェクト指向とは大分切り口が違う。何ていうか、割と直交する切り口でプログラム構造を切り分けていく。

なので、関数型とオブジェクト指向と両方憶えるだけで、大分切り口の引き出しが増える。

オブジェクト指向関数型両方憶えると、プログラマとしての引き出し増やすのに効率が良い、って思えば良いかも。

具体的にどう切り分け方が違うの?

オブジェクト指向は、プログラムの各部品を「あれの中のこれの中のそれの中にあるあれ」みたいな感じで組み合わせる。

部品が更に細かい別の各部品で構成されていて、それぞれの部品が噛み合わさって、複雑な一つのプログラムを構成するような切り方。

関数型言語は、プログラム部品を「あれをした物にこれをした物にそれをした物にあれをする」みたいな感じで組み合わせる。

もっというとプログラム全体を簡単に記述するできるDSLがあって、そのDSLを簡単に実装するためのDSLがあって、DSLの入れ子構造で一番小さい部品シンプル関数、みたいな切り方。

どう使い分けたら良いの?

ケースバイケース。

ではあるんだけれど、シンプル部品を大量に組み合わせて構成するのがしっくりくるならオブジェクトで、部品数が少ないんだけど一個一個が複雑な動作する構成にしっくりくるのが関数型……かも?

関数型言語の紹介見てると、何かひたすらイミュータブルなデータを弄繰り回す説明ばっかり出てくるんだけど…

関数型言語たる条件として「関数が第一級オブジェクト」ってのがあるんだけど、関数が第一級オブジェクトだとイミュータブルなデータを素直に扱える。

で、イミュータブルなデータ構造使うと色々便利、ってことで実例として一番出てくるという。

何か型型言ってるんだけど、型くらいC言語にすらあるわ。メモリ領域の確保量を示すあれが何でそんなに重要なの?

関数型言語エポックメイキング的な言語が三つくらいあって、元祖Lispとその流れ汲んだMLMLの一種で関数型をある種の到達点に持っていったHaskellって感じ(独断偏見)。

で、このうちのMLって奴が、プログラミング言語に型システムがついてるんじゃなくて、型システムプログラミング言語がついてきた存在だったりする。

型で色々やるために生まれたわけで、まぁなんというかそもそも型と密接な関係にあって、Haskellもその流れを汲んでて、こいつが超有名になった、って感じ。

おかげさまで、型使って色々やったりする方法が日々考えられているわけです、静的型付関数型の世界では。

クロージャって、大まかな概念wikiとかで理解したけど、関数型でどう使われてるの?

関数型言語ではよく「関数関数を引き取って、合成した関数を返す関数」みたいなのが使われるんだけど、関数関数の合成って、それ合成された関数がもともと引数として与えられていた関数憶えてないと無理やん? 自分自身の構成部品憶えてられないわけだから

クロージャあると憶えててくれるわけですよ。

そんな感じで高階関数実用的なレベルで使うのには大体必須と言う。

モナドとやらは何に使うものなの? 何が便利なん?

関数型言語DSLを作りまくる言語みたいに書いたけど、モナドちょっと複雑なDSLを簡単に作らせてくれる仕組みだと思っとけば良い。

Haskell副作用が一切ない純粋関数型言語って言うけど、副作用なしでどうやって入出力してるの?

まず純粋定義だけど「全ての関数は同じ引数を与えられた際、必ず同じ値を返す」ってことで、これがいわゆる副作用がないって状態だ。

で、これって逆に言えば「プログラムである関数に対して、絶対に同じ引数を与えさえしなければ、その関数がどんな値を返したところで、事実上純粋だと言えてしまう」ってことでもある。

本末転倒感があるんだけど、HaskellではIOモナドという仕組みと特別main関数を使って「呼び出すたびに絶対に違う引数自動的関数に与えてくれる仕組み」を実現していて、こいつを使って入出力する。

うん……凄い本末転倒。ちなみにこの自動的に与えられる引数はRealWorldって名前がついていて、要は「刻一刻と変わり続け絶対に同じ状況にならない現実世界の状態を引数に取っちまっているようなもんだからしょうがないだろ?」的な感じ。

2014-06-04

http://anond.hatelabo.jp/20140604122737

変数副作用)が使えるかどうかはデカイ。

全然方言じゃない。

変数脳でHaskellとかClojure書こうとすると再帰で頭パンクする。

2014-05-23

http://anond.hatelabo.jp/20140522162254

いいぞ、もっとやれ

しかしな、「静的型言語」がダメだとは言ってないだろ。

あとJavaだろうがHaskellだろうが結局テスト必要になるぞ。

そんな限定的な1項目(型エラーの検知)だけで優劣語れるわけないだろ。いいか、

優劣を語れる項目なんていくらでもあるんだ。

激論を交わせ、俺はお前に期待している。

2014-05-22

http://anond.hatelabo.jp/20140522193505

Haskellでどうやって設計するのかが分からないんだけど。

Scalaオブジェクト指向使って設計できるけど。

Scalaの勝ち。

http://anond.hatelabo.jp/20140522185418

そもそもオブジェクト指向がクソだろw

カプセル化隠蔽とかバグ隠蔽しか思えん

オブジェクトポインタに似たクソさがある

まともな言語で言えばHaskell

普及率とかで総合的にみればScalaだろ

2014-05-15

未来の為の寛容さ

関数本と称したデタラメ本なんかどれだけ高く平積みしたところで、どうでもいいと思ってるよ。間違って買っちゃった初心者右往左往するだろうが、きっといつかは正しい知識に戻ってくるだろうし、それで諦めちゃう人はどのみち辞める定めなんだろう。たとえQiitaとかで議論を吹っかけられようと、話し合いが成立しないと判った時点で席を立てばいい。煽られようとワザワザ付き合ってやる必要はない。でも実際のお前らは腹を立て、戦い、傷ついてPTSDになって、数スレを消費した。そんなナイーブなお前らが、今回の事件は何故かスルーできた。

悪意のカタマリだろうと、他愛のない道化はむしろ放置でいいと思うんだよ。色んな奴がもっと好き勝手に書くべきだ。ちゅーんさんはモナド本を書いていいし、漫画解説する関数型があっていいし、遅延評価解説本は望まれている。市井プログラマー素人技術本を書いていいんだ。関数型プログラミング繁栄はそういう態度の先にあると思う。選択肢は多い方がいい。その中で、何が本当に重要かは読者が決める。ヘンテコリンな奴をありのまま受け入れる寛容さは必要だと思うんだ。

でも今回のはそれに収まらない。重要さのレベルが違うだろ。どこぞの馬の骨じゃない。あの子日本Haskellコミュニティの若手ホープじゃないか。今は女性関係で腹を立てているだけかもしれないが、将来トップに立った彼に「あなたライブラリは負の価値しか持ちません」っつって包丁画像突きつけられたらどうする。Slackでは「勉強会に参加する学生が少ない」とか嘆かれてたけど、俺が学生なら、もはや頼まれても行きたくない彼女言及しなければ安全? 俺はそんな風には全然思えないし、正直不安だよ。



…いや、だからどうしろって言う意見はない。どうすればいいかは判らない。お前らの冷静さにビックリしたというのが感想だ。他人が頭ごなしに言っても伝わらないだろうし、本当に必要なのは排斥することじゃなくて、自分の考えを親身になって聞いてくれる仲間だと思う。ただ正論ねじ伏せるのでなく、それでいて「単なる腰抜け」じゃない誰か。

彼はスレ民でもあった筈だが、ム板のこのスレはそういう話に適さないだろう。俺たちが場を提供することはできない。勝手だが身内に期待したい。圏論の話ならいつでも歓迎です。

以上、スレ汚し済まなかった。コードポイントフリーにする作業(たのしい)に戻ります

--------------------------

この文章は当初2ちゃんねるプログラムHaskellスレに投げる予定だったが、スレ汚しになると判っていて書くのもどうかと思い、失礼してこちらに置きました。あとリツーイータビリティ。(この記事リンクフリーです)

2014-04-11

http://anond.hatelabo.jp/20140411144631

できるだけイミュータブルにすべき、だと関数型でいいじゃんってなるよね。

多態とかはHaskellでもClojureでもできるし。

ログイン ユーザー登録
ようこそ ゲスト さん