はてなキーワード: Perlとは
あ、まず前提として、
はたして貴女を幸福にするかどうか、それはまた別問題だけれど。
IT系の超かしこい男なども多く、
多くっつーかIT系でないのにプログラミング大好き男っていうのは超かしこい学生(まぁこれは有望株)か研究者系なんか、
あとはまったくかしこくもないクセに頭いいつもりして「Lispやってます(キリッ ハローワールドくらいですが」とか言っちゃうアホしかいないわけで、
したがって、釣り師たる女たちにとっては、
なかなかあなどれない釣り場です。
では、プログラミング大好き男に「どの言語が好き?」と訊ねられたとき、
まず最初に、その男がCOBOLのようなタイプのレガシーコードと
あとはC/C++、そして(TechEdに参加するほどではないけれど)VisualBasicが大好きな、
貴女はかれの目を見て、微笑みとともに質問など無視して、こう言いましょう、
「わたしが、仕様書を作ってあげる♪」
これこそまさに必殺の答えです。
そこでプログラミング大好き男が、えへへ、とやにさがったならば、
貴女は、ひそかに、「コピペ量産しやすい技術的ポイントを抑えた仕様書」あたりを
ひそかに練習しておきましょう。これで成功まちがいなしです。
しかし、ここでは、もう少しハイブロウな(?)いわゆるプログラミング好きの男の
落とし方をお伝えしましょう。
「わたしは、JVM上のScalaが好き。
型推論もあるしラムダ式やクロージャもスクリプト言語みたいに書けるの、豊富な組み込みのコレクションメソッドはいつも便利だし、
XMLリテラルもCaseクラスによるパターンマッチもTraitベースのMixi-inも、大好き♪」
もしも貴女がそう答えたならば、
かれの貴女への恋心は、
20%増量になるでしょう。
なぜって、Scalaは、
コンパイルは遅いながらも、そこがまた
ちょっぴりメモリを多く積めばいい富豪プログラミングみたいなふんいきをかもしだしていて。
質高くふるまっていて、なおかつ、
JVM上で動くくせにJavaが「やるやる」と言ったまま実装してなかったラムダ式と仮想拡張メソッド、型推論を実装した功績もあって。
したがってScalaこそは、
本来なんの接点もないまったく縁もゆかりもない別々の世界に生きている、
インタプリタ言語大好きな綺麗系OLと、玉もあれば石も混じっている、そんなプログラミング大好き男たちが、
この世界で唯一(いいえ、JVM系列のJRuby、Clojure と並んで唯三)遭遇しうる場所です。
●
では、参考までに、危険な回答を挙げておきましょう。
プログラミング大好き男に「どの言語が好き?」と訊ねられたとき、
「MicrosoftのVisual Basic for Applicationが好き♪ 週3回は Excelでコーディングするの。」
特にOfficeは平凡ながら、ま、無難にまとめてあるものの、
しかし、「新UIのリボンUI!」「メトロUI対応!」とかなんとか無意味な自慢を吹聴し、
VBAはさらにプログラミングについての謬見を撒き散らした罪がありますから、プログラミング大好き男にとっては天敵なんです。
ティーガー戦車乗りのオットー・カリウスは「ティーガー乗りなら誰でも片側の履帯がはずれ僚車に牽引されて帰ってきた経験を持つはずだ」 って言ったけど
社内SEかSIerなら誰でもクソみたいな前任者が書いたクソみたいなExcel-VBAコードを直した経験があるはずなんです。
また、もしも貴女が「PHPが大好き♪ あたしが書いたPHPのWebサイトが、さくらサーバに7件あるよ♪」
と答えたとしても、同様の効果をもたらすでしょう、
なぜって、PHPは、1990年代にはWeb系を目指す人にとっては簡単で要件を満たすWebサイトが簡単に作れる輝きの道だったものの、
しかし2000年代そうそうから、セキュリティ関係の問題で転落し、
いまや、あの貧弱な言語能力では、Rubyの魅力に遥かに及びません。
(注1)
「わたし、.NET FrameworkのC#が好き、フォームアプリでも書くけど、
最高に好きなのはASP.net♪ SQLServer連携も、ajax control toolkitもすっごくおいしいの。」
と、答えたとしたらどうでしょう?
なるほど、貴女の趣味は高く、
たしかに.NET Frameworkは、C# が cool であるのみならず、
.NET Framework上で動く F# や IronPythonやIronRuby、マネージJScriptも最高においしいんですけれど、
しかし、貴女の答えを聞いて、プログラミング大好き男はきっとおもうでしょう、
(なんだよ、MS信者な女だな、カネかかりそう)って。
(注2)
貴女が、プログラミングが大好きで、言語の名を挙げるにしても、
たとえば、JavaScript(node.js)ならば安心でしょう、
なぜならば、JavaScriptは、かけだしのプログラミング初心者にもマニアにもともに愛されるめずらしい言語で、
貴女がその名前を挙げても必ずしも、(jQueryがやっとの初心者と思われることはあっても)あなたがプログラミング言語おた宣言をしているとは受け取られないでしょう。
むしろ「へぇ。ちゃんとprototypeは使ってる?」と聞かれたら「当たり前じゃない。むしろnode.jsでいいMVCフレームワークが分からないんだけど…」と話を振ってみましょう。
男は嬉々として、30個くらいのnode.jsのフレームワークを教えてくれることでしょう。(まぁどれもどれで帯に短し襷に長しなんですが)
あるいはRighno上で動かしたコードをnodeへ移植する話とか、CoffeeScript、甚だしきはClojureScriptを振ってみてもいいかもしれません。
しかし、たとえば、世界が(つーか竹内先生とポール・グレアムが)誇る超絶関数型言語の名作、Common Lispにせよ、
selfと書きまくることと海外で使われてることに定評のあるPythonにせよ、
バージョンアップごとに言語仕様が変わり、かなり素敵なものではあるもののobsolatedな罠にはまりやすいRubyにせよ、
まったく読めない$_だらけで頭悪い仕様をリセットしてPerl6にする(そしてまた全く読めない)Perlにせよ、
気さくなクジラ飛行机さんがふるまう素敵においしい日本語プログラミング言語のひまわり・なでしこにせよ、
基地外トリッキー言語の代表BrainFxck・Glass・Missa・WhiteSpaceにせよ、
ましてや貴女が、「Haskellが大好き♪ わたし、プロジェクト・オイラーの問題もうほとんどHaskellで、解いちゃった♪」
と答えたならば、どうでしょう?
これはかなり博打な答え方で、
なるほど、Haskellは、純粋関数型でありつつも副作用のある操作が行える超絶名言語ゆえ、
あなたがそう答えた瞬間、プログラミング大好き男がいきなり超笑顔になって、
「へぇ、やっぱりHaskellなら大抵の問題は4行以内くらいで解いちゃった?」とか言いながら
鼻の下がだら~んと伸びちゃう可能性もあるにはありますが、
しかし、逆に、(なんだよ、この女、プログラミングおたくかよ)とおもわれて、どん引きされる可能性もまた大です、
なぜって、必ずしもプログラミング大好き男がプログラミング大好き女を好きになるとは、限らないですから。
男たちは、女を導き高みへ引き上げてあげることが大好きゆえ、
もしも貴女が、「Haskellが大好き♪」なんて言ってしまうと、
そこにはもはや、男が貴女に圏論のモナドを教育する余地がまったく残されていません、
したがって貴女のその答えは、
プログラミング大好き男の貴女への夢を潰してしまうことに他なりません。
ま、ざっとそんな感じです、貴女の目にはプログラマーたちはバカでスケベで鈍感に見えるでしょうが、
しかし、ああ見せて、プログラマーはプログラマーで繊細で、おざなりに扱われると傷つきやすく、ローカル変数の名前一つにも気を使い、女と自分の将来に夢を持っています、
貴女の答え方ひとつで、プログラマーの貴女への夢は大きくふくらみもすれば、
一瞬で、しぼんでしまいもするでしょう。
●
では、スキットを繰り返しましょう。
「わたしは、JVM上のScalaが好き。
型推論もあるしラムダ式やクロージャもスクリプト言語みたいに書けるの、豊富な組み込みのコレクションメソッドはいつも便利だし、
XMLリテラルもCaseクラスによるパターンマッチもTraitベースのMixi-inも、大好き♪」
そして、その瞬間、プログラミング大好き男の目がらんらんと輝いたなら、
貴女はこう重ねましょう、
「それからね、いま、わたしが使ってみたいWebアーキテクチャは、
Play Framework、素敵なリアルタイム嗜好のアーキテクチャって噂を聞いたから。
あなたのお暇なときがあったら、わたしをPlayへ連れてって♪」
これでもう完璧です。
PlayFrameworkと、Play(遊ぶ・じゃれる)のダブルミーニングでかれの股間も刺激しちゃえます。
そうなったらこっちのもの、
デートの日には、ペアプロ用に Happy Hacking Keyboard をばっちり決めて、かわいい下着をつけて(注3)、
github.comの通販で売ってるoctcatのTシャツか、facebookの「いいね!」ボタンがムネのところにあるTシャツ、 あるいは初音ミク(ないし彼のお気に入りのアニメキャラ。北米ならMyLittlePonyで鉄板なんだけど)のコスプレを着てゆきましょう。
その日から、プログラミング大好き男は貴女の虜になるでしょう。
注1:
(と、書いたもののPHPの現状をよく知りません。グローバル変数だらけになるのとか旧ASPみたいなもんなのかなぁ。count($array); とか書くのアホと思うがpythonも同じだった)
(あと、マジで単機能とかTwitter連携とか診断メーカー的なのでもPHPで7つも作ってる女子居たら付き合いたい)
注2:
もっとも。objective-Cなんていう言語をやることに比べれば個人で行う程度なら金のかからない手法もなくはないのですが。
注3:
プログラマーにとっての「かわいい下着」と、女性にとっての「かわいい下着」の定義にずれがあるので注意。
半数くらいのプログラマーはしましまぱんつが可愛いと思ってる気がするので、妙齢の女性が着用するには抵抗あると思うが、ボーダー柄のコットンショーツ(ただしキャラ絵のは除く)とか、
過度でないていどにフリルがついたものがオススメ。また、色は、レッドだとプログラミング大好き男は引いてしまう(だってそれはコンパイルエラーのときの色だ)ので、薄ピンクかホワイト、薄ブルー、せめて黒(に差し色でピンクとか)あたりに留めたい。
補記:
元ネタ: http://tabelog.com/tokyo/A1301/A130101/13002457/dtlrvwlst/3464106/
補記2:
「プログラマー」か「プログラマ」かの問題については、特に意味は無いが前者を採用した。
補記3:
言うまでも無いけど、ネタです。
「嫉妬」や「僻み」という感情は、人間にとっては自然なもので、押さえ込もうと思ってもできるものではありません。
一時的に押さえ込めたとしても、ふとしたきっかけで溜まった鬱屈が爆発して大惨事になる場合も多いです。
このような負の感情とうまく付き合うには、押さえ込もうとするのではなく「ズラす」のが有効です。
具体的には、ネットでの個人叩きやレイシズムなど、他人の存在を否定するような発散方法から、
プロ野球やサッカーでアンチ球団をつくる、「perlはオワコン、PHPは糞の山」だと喚く、2ちゃんねるのゲハ板やアニメ板での抗争に参加するような発散方法に変える、とか。
もちろん、より建設的な方向に昇華できればよりよいのですが、世の中の多くの人は昇華できるレベルの才能を持ち合わせていないので、
ちょっとよくわからないんだが、LispにしろPrologにしろ199X年代には少なくとも大学で授業として教えるような”古典”だったわけだが
2005年だったか、2006年だったかに出版の話があったようでその後2007年に発売されたわけだが、当時Lispの情報ってあんまりなくて、翻訳苦労してるみたいなことをはてダに書いていた(ような気がする)。
すくなくともLISPの情報が少ないということはなかったと思うぞ。
Perlが198X年代だがLISPは195X年代で、超がつくほどの古典言語で、日本語でも山ほど文献があるはずなんだが、最近は進化していないので、ネット上に文献があるか?という話では難しいが、古い図書館に行けば古い本がいっぱいあるだろ。
界隈ではかなり前から Python界の perlcodesample こと @makotokuwata のリスクについて語られていたが、いよいよ具体的な弊害が出て来ているようなので、かいつまんでメモ。
https://twitter.com/makotokuwata/status/315510592171556864
この人、「HaskellDBはORMより素敵!」「ORMと全然違う!」と言ってるけど、ActiveRecordすら知らない可能性でてきた。まあ、なんだ、Javaしか知らずに「静的言語はクソ」と言う人もいる世の中だし、最近のORM知らずにORMより凄いと言う人がいてもおかしくない。
まあその通りだ。しかし、次のツイートを見れば完全に自己矛盾しているのがわかる。
HaskellDBのことを知らずにORMの方がすごいと主張している訳だ。口が悪いだけで、ほんと話にならない。
この人はkwatchでググればわかる通り大昔から perlcodesample 的な振る舞いを続けていた人だ。他人の意見を聞けない視野の狭さとか、独善的な振る舞いなど、共通点は多い。インタネットの黎明期にはこういう知識が中途半端にあって調子に乗ってしまう人は他にも多かったので別段珍しい訳でもないのだが、この人のプロフがほんとの意味でのリスクだ。
https://twitter.com/makotokuwata
Pyを広げるのに熱心なだけの人間
いや、この人別にPythonのメインストリームにいないし、迷惑。本当にPythonを広めたいなら、プロフィールを「Perlを広げるのに熱心なだけの人間」に変えて欲しい。
貢献をしていない者は口を開くな、貢献した者だけが口を開いて意見を言う資格がある。いつもdankogaiはそう言う。
Perlのためにdankogaiがたくさんコードを書いて貢献したのは知っている。
で、その貢献とやらは何十年にも渡って僕らが崇め続けなければならないほど凄いものだったのか?
僕らはいつまでdankogaiに「凄いですねー」ってご機嫌を取り続けないといけないの?
英語圏でこれほどまでに自分の過去の貢献を誇示し続けるOSSプログラマって少ないよ。
だいたいPerlのために貢献したプログラマなんて数十万人規模でいるでしょう。
いつまでも昔の功績をひけらかすような態度ってOSSの思想からは随分と遠いところにあるような気がするんだけど、
英語圏から切り離された日本じゃいつまでもdankogai様を神と崇めないといけないらしい。
OSSのいいところって世代も学歴も人種も年収も性別も関係無く、書いたコードのみで貢献できるところにあると思う。
でもさ、過去に書いたコードがいつまでも崇められる世界じゃないでしょう。
そういうのがはびこったら結局昔の人が権力を持つような硬直した世界になる。
老人がはびこる世界になる。
そういう世界とは対極であり続けているのがOSSなんじゃないの?
dankogaiがいつまでも過去の貢献を振りかざし続けるのはもうそれは老害と言われても仕方が無いんじゃないかなあ。
古参OSSプログラマがみんな過去の貢献にあぐらをかいて若者を見下すようになったらOSSは確実に終わる。
最近の流れ
「PHP糞!シネ!」⇒「言語仕様で飯は食えねぇんだよ!あと Javascript は糞」
「PerlオワタwwwPythonサイコーwww」⇒「dankogaiだけど何か質問ある?あと Javascript は糞」
Javascript の人気に嫉妬。
...というか...
何だろうこの「えー。だって Javascript だって糞じゃん~?」みたいな流れ。どっちかがどっちかを参考にした可能性はあるけど、こういうふうに「糞仕様だけど普及してしまった言語」の代表格として出てくるようになったのは興味深い。
じゃあ、Javascriptを擁護する文脈では誰が引き合いに出されるのでしょうか?
ダートマスから脱出してきたおっさんですが、今はPerl使ってます。使ってて楽しいから。
プログラミングは急な坂を上る時代に入ると90年代に例えられましたが、これからは崖を登ることになるでしょう。
プログラミング巨石文明が終わり、数学に裏打ちされた摩天楼を作る時代が、すぐそこまで来ています。
でも、まだ大丈夫かな。
娑羅双樹の花の色、盛者必衰の理をあらはす。
おごれる人も久しからず、唯春の夜の夢のごとし。
たけき者も遂にはほろびぬ、偏に風の前の塵に同じ。
それじゃ、またね。
同じレイヤーの言語で考えると、PerlとRubyとPythonって書き方似ています・・・?
C++とかレイヤーの違う言語を交えると、似ているとは思いますが。
Perlは詳しくないので「いや、ちゃんとこれはこういう利点があるんだよ!」っていうのがもしかしたら有るのかもしれませんが(あったら誰か教えてください)、他言語をメインに使っていてたまにPerlに触れる人間からすると互換性の問題とかは承知ですが、いい加減
use strict; use warnings;
とか
my $hoge = 'fuga';
とかを態々書かなくても、defaultで強制させるべきかと...
そういう「これは書かなければいけない」というのを「態々書かせる」のがPerlにはとっても多く感じられます(他の言語にそういうのが全く無いとは思わないけど、Perlはこの3つの言語では特に多く感じる)。
Python2と3の互換性の話がありましたが、ある程度は(上手いこと)解決していくべきではないでしょうか?
(だって、今だにuse warning;とかmyとか書かない人いるんでっせ・・・レビューでそういう点を潰しますけど)
↑のようなことをある程度の互換性を上手いこと解消して、Perlに慣れていない他言語エンジニアでも気持よくPerlを書けるようにならないと、本当にPerlが使わなくなっていくのではないかなぁ、、、と思います。
また、どんな素晴らしい言語でも、書く人によってはどこまでも駄目駄目なコードが書ける訳ですが、Perlは(最もなんて言わないですが)駄目なコードの可読性が他言語よりも低く、保守しにくいと思われます。
素晴らしいエンジニアが書いたコードは非常に良いのですが。。。
よく「Perlは書くのは良いけど、他の人の書いたコード読むのは嫌」っていう話を聞くのですが、こういうことから来ているのかな、と感じます。
あと、
と仰るなら、
「またテキスト処理はPerlはRubyに比べて2~3倍くらいは速いはずです。」
”はずです”、ではなくそれこそ目に見える情報を提示して欲しかったです。
注:僕は他言語に比べるとPerl力がかなり低いですが、Perl嫌いじゃないですよ(あ、お前は解っていない!そもそもお前の技術力が低いんだよ!っていう意見は当たりかもしれません)
perl信奉者に粘着が多い印象があるからじゃない?dankogai筆頭として。
2005年に突如現れたRailsによって国内でRuby利用者が急増したのがPerl滅亡への第一歩となった。書きやすさに作者がとことんこだわって作られたRubyの魅力を一度知ってしまうとPerlの古くさく読み辛く書き辛い文法に誰もがうんざりし始める。
Ajaxで再発見されたJavaScriptのブームもPerl終焉に若干ながら貢献している。ブラウザというPerlが全く手を出せないジャンルの王者JavaScriptの持つ華やかさに誰もが憧れ、そして手元のPerlの古くささに反吐が出始める。不器用で不細工なところも含めて愛していた女房とつつましく送っていた人生に、突然ぴちぴちのボイン女子大生が転がり込んで来たようなものである。
iPhone市場が本格的に立ち上がり、Perlとは全くの無関係であるスマホアプリ全盛期がやってきていよいよPerl滅亡へのカウントダウンが始まった。そして極めつけはソーシャルゲームバブルである。ここでもPerlとかいう言語は全くの蚊帳の外で大絶賛凋落中。
Perlなんぞ全くお呼びでない世界の話。段々とwebテクノロジーの世界に高度な数学的知識を持ったアカデミック層が跋扈しはじめ、専門学校でプログラミング言語を学んだだけの人間がハッカーなどと名乗ると恥ずかしい時代になってきてきた。
遂にPerlにとどめを刺したのはPythonである。守備範囲は当然ながらPerlと駄々被りで読みやすく書きやすく世界的なシェアもうなぎ上り。完全にPerlが不必要な世の中になってしまった。
2005年までのPerlはまさに我が世の春を謳歌していたが今や目も当てられない惨状でプログラミング言語のシーラーカンス・COBOLとすら比較され出す始末。昔Perlの人として売り出していたハッカーも、いつのまにかPythonの人になっているケースも海外では多い。10年でここまで時代は変わる。今のメインテクノロジーも明日は我が身だ。小手先の技術に乗っかってモダンだのハッカーだの聞こえのいい言葉を汚い口でまき散らして消えて行ったPerlエンジニア達の死を無駄にしてはいけない。変化の速い時代に生きる我々に必要なのは本質を学ぶ事だ。コードの書き方とかどうでもいいんだ。もっと10年20年たっても色あせない情報工学を身につけなければならない。
元記事はそんなに外してもいないと思いますけどね。
静的型付き言語として関数型言語を持ち出してくるのは、論点が違うような気がしました。
静的型、型推論の嬉しさって、関数が一級かどうかでも違ってくると思いますし。
(つまり、静的型の得失について、scheme vs ML での議論と Java vs Perl の議論は別物だと思います)
結局は適材適所という結論にしかならないと思いますが、たとえば Web 系なら静的型付き言語で書いても面倒臭さの方が多そうです。
Web 系で一番面倒なのは文字列の扱いなので。そこは型システムで何も解決しないですよね。
そういうことより、文字列を関数名として $funcName(arg1, arg2) みたいにコールできたりとか、
そういう柔軟さが便利なのですよね。
こういうの、静的型がある言語だと大変ですよね。Java ならリフレクションですよね。
他の言語ではどうするのでしょう。おそらく、自前で関数テーブルを作ることになるでしょうか。
静的型を持たない言語での開発が、大規模になると破綻するというようなことが言われます。
大規模開発といっても、大抵フレームワークの規約に沿って実装するだけですし、
規模を LOC だと考える限りにおいては、大規模になっても複雑さは LOC に比例しませんから。
単純にモジュール数が増えるだけで、一つ一つは単純な実装の繰り返しですよね。
おさしみにたんぽぽを乗せるお仕事と変わりません。たんぽぽの山が積まれていて途方に暮れるだけです。