私もなるべく静観していようと思っていたのだが、こういうやり取りを読んで「そうか、PHPはダメなんだな。」なんて思ってしまう人が出てこないかと不安になってきた。こんなことでプログラマーの間口が狭くなってしまい、素晴らしいサービスが世の中に出てくる機会を減らすのかと思うと居てもたってもいられなくなった。
なので少し書いておきたい。
初心者向けの言語 - Matzにっき
http://www.rubyist.net/~matz/20080204.html#p01
初心者への間口を広くするために基本機能はフラットにし、オブジェクト機能などを追加して抽象化もできる言語にすればいいじゃないか、と思う人もいるかもしれない。
が、個人的にはそれはうまくいかないと思う。そのような言語では学ぶことを拒否する「自称初心者」はいつまでも抽象化機能を身につけず、質の悪いプログラムを生産し続けるだろう。
もちろん、志の高い人はそのような言語を通じて抽象化機能について学び使いこなせるようになるだろうが、それくらい志が高ければ、最初から初心者にこびない言語を使っても同じくらいか、もしかするとより短い期間で、良いプログラマに成長するだろう。
なんという乱暴な論理展開だろう。これが本当にあの緻密な計算とバランス感覚に溢れたRubyの設計者の言葉なのか?
対象が「学ぶことを拒否する自称初心者」であっては、そりゃどんな言語でもダメだろうに。
(※追記4より転記:元記事では冒頭で「自称初心者についてはここでは扱わない」としているにも関わらず、自称初心者を前提に話を進めている。「初心者」に対するこういう曖昧さが、議論をカオスにしているんじゃないだろうか?)
また、「志が高い人であれば、最初から初心者に媚びない言語を使えばいい」という話も、まるで「志の高さ」というのは選ばれた人だけが最初から持っている資質とでも言いたげである。
実際には、誰でも最初は初心者なはずだ。「志」などという曖昧な(抽象的な)ものも、それを経験していく過程で初めて芽生えていくものであって、最初から高い「志」なんてものがあるとすればそれは単なる勘違いである可能性の方が高い。
また、Matz氏の話を聞いていると、彼にとってはプログラミングというものは数千万円規模のものだけが重要で、それ以外は「趣味」として価値が低いかのような位置づけをしているように感じる。
プログラミングなんてものはとっくにコモディティ化しているというのに。
特にネットの世界ではプログラミングというのは「ちょっと腹が減ったのでカップめんでも作ろう」ぐらいの気軽さで使われるようになっている。
その点、ちょっとページ中に動的な部分を作りたい、という場合に気軽に使えるPHPが普及するのも当然だろう。
彼らのようなライトユーザーが、確実に恩恵を受けている。それまでプログラミングに縁の無かった人々が、こうしてプログラミングに触れる機会を作っている。
それは事実であり、そこで一旦話を切らねばならない。
ところがMatz氏はそこからどうしても、「初心者はいつまで経ってもライトな使い方しか理解しようとしない。だからPHPerは永遠に初心者」という方向に持っていきたいようだ。
PHPにはもちろん、オブジェクト指向機能が存在する。それは氏も認めるところだろう。
(どこかの日記で「オブジェクト指向機能が壊れている」などと書かれていたものがあったが、恐らく古い情報か誤解を元にしたものだろう。PHP5のオブジェクト指向機能は問題なく動く。)
よって、ライトユーザーがフラットな基本機能だけを使っている事で問題に突き当たったり、誰かに指摘されたりした場合の「次のステージ」がしっかりと用意されているのである。
また、PEARなどのライブラリはこうしたオブジェクト指向に沿って作られているものが多く、それらに触れる事で学ぶことも多い。
しかし氏は、一度初心者向け機能に慣れ親しんでしまうと、より抽象度の高い難しい機能は使いたくなくなる(つまり、堕落する?)というような考えを持っているようだ。
とはいうものの、初心者向け言語への要求があるのは事実である。 それを否定するつもりはない。
そのうちのいくばくかは、初心者向け言語から入門して段階的に(スムーズに)進歩できるという「誤解」によるものだろう。しかし、すでに述べたように「初心者向け」という性質は、良いソフトウェア開発に必要な性質とある程度矛盾する。
「誤解」? 本当にそうだろうか。
皆さんは、「幼児でも扱えるから」という理由で「日本語」をビジネスに使う事を避けるのだろうか?
また、世の中には幼児と同程度の言葉遣いしかできない大人の日本人が溢れていて、それは日本語のせいだ、と思っているのだろうか?
日本語は幼児でも扱える程度に基本は簡単である。と同時に高度に抽象化した複雑な意思疎通も行える言語である。
誰が、「日本語は、子供でも扱えてしまうという性質の為、誰も高度な会話をしようとしなくなる言語である」などと考えるだろうか?
そもそも、具象があっての抽象である。具象レベルでの経験がないものに抽象概念をいきなり教えて分かるのは天才だけである。
確かに、例えば英会話などで単純な構文を連発して稚拙ながらも複雑な要件を片付けてしまうような人はいるだろう。彼らの英語は非常に稚拙な為、上級者から見ると苦笑いするようなケースも多いはずだ。ビジネスの大事な場面で必要な重大な失敗をやらかす可能性もある。
では、ビジネスで英語を使おうとする人は皆、完璧な英語になるまでビジネスでそれを使うべきではないのだろうか?
語学経験があまりない人は、ここで「そうだろうな」と頷いてしまうかもしれない。
しかし、それは理想であり、現実には有り得ない。分かりやすい理由を2つ挙げると、
(1) 人は経験(特に失敗)からしか学べない。
(2) 完璧になるまで待っていたらチャンス(時間)は逃げてしまう。
この2点はそのままプログラミング言語学習にも当てはまる。
つまり、最初からいきなり高度なレベルを要求する(何度も書くが、具象レベルを体験していないものに抽象レベルは理解が難しい)のは、そもそも「入門者は帰れ」と言っているようなものなのだ。Matz氏は自分が初心者だった頃のことを忘れてしまったのだろうか? それとも氏はいきなり全てを理解して生まれてきたのだろうか?(そうかもしれない)
なんにせよ、こうした態度は良いプログラマーを育てる土壌として適切だとは思えない。
「初心者そのものを否定している訳じゃない、初心者に教えるならもっと“しっかりした”言語を教えるべきだと言っているだけだ」
そう反論する人もいるかもしれない。しかしほとんどの初心者は「しっかりした言語」を学びたいと思っている訳ではなく、他に目的があり、それを解決する為にプログラミングを学びたいだけなのだ。
プログラミングとは目的を解決する為の手段でしかない。プログラミングそのものを目的とするような人々は、もちろん私は個人的に好きだし、尊敬もするが、何のためにプログラミングを覚えたいのか、というプリミティブな欲求部分を無視して理想論を語るだけに留まらず、自分の意見に沿わない相手をまるで向上心の無い怠慢者であるかのように扱うのは、私には「老害」と映る。
長くなったのでまとめよう。
(1) プログラミングはコモディティ化しており、様々な場面で、より気軽に扱えることが求められている。特にウェブ上でそれが顕著である。
(2) 「最初から高度な話から入ればいい」はプログラミングそのものが目的の理想論であり、プログラミングが手段でしかない大半の現実世界では低いハードル(経験を積む機会)の存在の方が重要である。
(3) 低いハードルから入ったからといって、高いハードルを超えられない、なんてことはそれこそ誤解である。
私は、PHP5を使ってもっといろんな人がプログラミングの楽しさを知って貰えると嬉しいと思っている。
PHPはオブジェクト指向プログラミングも普通にできるし、MVCへの移行もフレームワークが揃っている(もちろん自前でも問題なく可能だ)。
PHPはほとんどのレンタルサーバに入っており、テキストエディタでコードを書いてアップロードすればいきなり試せる。
「すぐに試せる」これこそが、この変化の時代にもっとも重要なキーワードではないだろうか?
「正しい言語」「正しいコードの書き方」なんてものを探している間に、一つでも二つでも、「目的」を達成する奴の方が、私は好きだ。そして結果的にそいつの方が「正しさ」に早く近づくことだろう。
そしてもし、その過程で何らかの問題意識を持ち、「PHPでは自分の問題は解決できない」となった時に、Rubyの素晴らしい抽象化機能の世界の門をくぐるというのは、とても素敵なストーリーなのではないだろうか。
尚、セキュリティの話についてはこちらをどうぞ。
セキュリティ過敏症 - ぼくはまちちゃん!
http://d.hatena.ne.jp/Hamachiya2/20080131/security
【追記】
この話から、「失敗させた方がいいって言うなら、欠点だらけの言語であればあるほどいいってことか?」のように受け取る方もいるかもしれないので、先に書いておく。
このエントリは「失敗させた方がいい」という主旨ではなく、「御託よりも経験(やること)こそが重要である」という主旨である。その結果として失敗はあるだろうが、それは糧となるだろう、というだけの話だ。ここでいう経験とは、「プログラミングの経験」ではなく、プログラミングを実行することによって得られる「結果」つまり「目的達成の経験」のことである。
【追記2】
ブックマークコメントで、「にほんごのぶんしょうをぜんぶひらがなでかいたらよみにくいとかそういうはなしでは」というものがあった。ありがたい題材である。自然言語である日本語や英語を比喩として使うのは危険かとも思ったが、こういう例が出てくるとあながちおかしくもなかったのかもしれない。
このように、日本語は全部ひらがなで書いても意思疎通が可能だ。読みにくいという問題はあるが、「使える」のである。これと同様な事が、例えば同一ページ中にロジックコードもHTMLも全部書いてしまうようなPHPスクリプトに言えると思う。元コメントもそういう事例を指しているのだろう。
しかし、ひらがなから日本語へ入ったものが将来的に漢字を使い始めるのは無理なんじゃないかなどと言う理由が無いのと同様に、PHPerも、より高度な抽象化へと進めないという理由はないはずである。このエントリではそういう点を指摘している。
【追記3】
このエントリを読んで、「またアンチRubyかよ」とか思ってしまう人が居たら嫌なので、いくつか補足を。このエントリでは主に反論をメインにしている為、反論そのものが私の主張だと思われてしまいがちかもしれない。
私は、以前書いた「デザイナー向けの入門言語」についてのエントリを読んでもらっても分かる通り、Rubyは非常にこなれた良い言語だと思っている。一時期、初心者向けの入門言語として本気で検討したこともあったぐらいだ。
だから誤解しないで貰いたいのだが、私は「PHPが言語としてRubyより優れている」などとは思っていない。あまり言語に優劣を付けたくないのだが、言語としては圧倒的にRubyの方が好きだ。
問題はそれを使う際の環境である。
今、プログラミングが最も活躍できるシーンはウェブだと考えている。人がプログラミングに求めるシーンも同様だ。
そして、このエントリでも書いているように、私はプログラミングを上達させるには、まず実践することが何よりも大事だと考えている。
興味ある分野で、すぐに実践できること。これが最も重要だ。
だから、適当なレンタルサーバにHTMLをアップロードし、ちょっとスクリプトを追加するだけでいきなり実践に入れるPHPを入門者向けにお勧めしているのだ。
言語仕様よりむしろ、それを取り巻く環境が入門者向きだと考えている。
「環境のせいにするなよ、自分で環境ぐらい作れ」という意見もあるとは思うし、まさに理想的な考え方だとは思うが、初心者にそれは酷だと思う。自分で環境を作るというのは当然、目的そのものではない。
PHPの言語仕様については、むしろ「まあ、これなら必要充分でしょ」という位の認識である。PHP5のオブジェクト指向機能はむしろ学術的になりすぎで、もう少し実用向けにシンプルにしても良かったと思うぐらいだ。とはいえ、PHPの言語仕様は充分シンプルで、癖があまり無い。他言語にも移行しやすいはずだ。それは初心者にも安心してお勧めできる利点だろう。
ただもし、RubyがASPやJSP、PHPのような「Server Pages技術」を持つようになり、それが一般のレンタルサーバに普及したら、私はPHPではなく「Ruby Server Pages」を入門者向けに勧めるかもしれない。多少の言語仕様の癖の強さには目を瞑って。にもかかわらず、今回のようなMatz氏の発言を見ていると、そんな気も微妙に萎えてしまうのが残念である。
ちなみに「Ruby Server Pages」でググったら、Google Codeにまさにそんなプロジェクトを見つけてしまった。
http://code.google.com/p/ruby-server-pages/
ホントに出来たらなかなか面白そうだ。
【追記4】
さて…もうここまで読んでいる人はいないだろうが…moro氏のtwitter経由でこんなコメントをみつけた。
http://twitter.com/moro
今日のMatz日記へのTBがこの一連の論争におけるthe best of カオスな反論(反論?)だと思う。
意図を全然逆にとってるような
the best of カオスw
ちょっとウケた。
しかし、意図を逆に?
どの部分だろうか。議論で相手の意見を逆の意図で取ってしまうことはよくあるので、恐る恐る自分の記事とMatz氏の記事を見直してみたが、該当する箇所は見当たらなかった…。
カオスという意味では、Matz氏の元記事の最初で「自称初心者のような人はここでは扱わない」、としながら、PHPのようなやり方がうまくいかない理由として「自称初心者はいつまでも抽象化機能を身につけず、…」とか書いているので、カオスかもしれないが。
あと、
http://twitter.com/moro/statuses/676267522
『初心者がその先のステップを求めたときに困る|その先があることを示さない』、のに「初心者向き」で呼び込むのはどーよ。って話なのになぜか初心者を攻めてるように読んで反論してもなあ
というコメントも続けてあって、そうなのか?と思ってMatz氏の元記事を読み直してみたけど、どこにもそんなことは書かれていないような…。「初心者はその先のステップを求めない(学ぶことを拒否する)」というようなことは書いてあるようだが。
とうか、読めば読むほどMatz氏の元記事はカオスだ。
初心者というのを、「学ぶ意思がないもの」と「抽象化が苦手なもの」とでごっちゃにしている気がする。わざわざ自ら冒頭でそれらを区別しているのに…。
【追記5】
プログラミング自体はコモディティ化したけど, プログラミングの楽しさはまだそれ程ということか. rubyって楽しいと思うんだけど.
こんなブックマークコメントをもらった。
「プログラミングの楽しさ」がコモディティ化する・・・なるほど。もしそうなったら、確かに嬉しい。
これを読んで、ふと、Matz氏の「気持ち」が分かったような気がした。
おそらく、Matz氏にとって「プログラミングによって何かを実現する喜び」と、「プログラミングをする喜び」というのは、ほとんど同一のものなんだろう。
なので、何かを実現したいなら、当然そのコードは美しいものでなくてはならないし、美しいコードは当然より良く目的を果たすことができる、という感覚なのかもしれない。
現実には、やっつけ仕事だって目的を果たせるし、どんだけきれいなコードを書いても出来上がったものはツマラナイものだったりもする。
そんなことはもちろんMatz氏も分かっているとは思うのだけど、可能な限りそれらはセットであって欲しい、と願うのではないだろうか。そんな事をふと感じた。
私から言えるのは、初心者が書いた素朴なコードも、上級者が書いた緻密なコードも、それが動いた時に彼らに与える感動は同じだってことか。









たとえばStrutsしかできないJavaプログラマというのはけっこういて、プログラムの基礎に無頓着であるがゆえに問題を起こしてくれます。
PHPしかできない職業プログラマーというのは、StrutsしかできないJavaプログラマと比較して、一段と技術も意識も低いと感じます。VBしかできない職業プログラマとPHPしかできない職業プログラマは同じ匂いがします。
それが単純にその人の能力・資質・経験値のせいかというと、そうばかりとは言えない気がします。
たとえばVBではグローバル変数が躊躇なく使われがちです。巨大なサブルーチンも作られがちです。VBでは、ローカル変数を使うのに宣言が必要なので、サブルーチンや関数の呼び出しに対する心理的なコストが高いのです。
PHPでは、プレゼンテーションとロジックを分割せずに、HTMLの中に何でもコードを埋め込むようなことが行なわれがちです。すぐに結果が見たいから、ではないかという気がします。DB処理においてエラー処理を書かない人がたくさんいます。さらにいうと、DBのテーブル構造とプレゼンテーションが密な関係を持っているプログラムも普通に書かれています。彼らは特に疑問を感じないようです。
VBやPHPで保守困難なプログラムが作られがちな理由は、少なからず言語仕様に由来していると感じます。よくいえば、初心者がろくに分析も設計もせずに頭に思いついたことをそのままコードにすることがやりやすいのがVBなりPHPなんだと思います。言うなれば分析・設計の軽視を誘導する言語仕様だということです。
「どんな人でも最初は初心者」「失敗してこそ学ぶ」という点には同意しますが、最初におぼえる言語がVBだったりPHPだったりすることは、その人を不幸にするのではないか?という気が非常にします。分析・設計の価値を知らずにいることは、その人をデスマーチに誘うことになるからです。
「プログラミングには、コンピュータにしてほしいことを指示する以上の意味がある。それは考え方を表現するということだ」という趣旨のことがSICPの冒頭に書かれています。PHPにはそのための表現力が欠けています。PHP5はPHP4よりずっとよくなりました。しかしPHP6で予定されている機能を見ると、まだまだ改善の余地はあり、僕の印象ではPHP9くらいにならないと僕の満足するレベルには至らないという気がします。
たとえば、Schemeでプログラミングするとき、僕はたとえばPHPやRubyでプログラミングするときよりも「美しいコード」にこだわる気持ちになりがちです。いったん、目的の動作をするコードができあがっても、もっと美しく書けるな、ということに気付くのがSchemeのフィーリングです。PHPやRubyでは、目的の動作をするコードができあがると、そこで満足することが多いのです。これはSchemeの表現力に負うところが大きいと感じます。
ですから、どんな言語でも同じように学びを得ることができるという考え方には僕は反対です。PHPにはPHPの独特のフィーリングがあり、PHPにどっぷりと浸かることで、PHPの考え方に染まる可能性が非常にあると感じます。 — じょりちょこ
しかし、それから「人に教える」という経験を何度か積み重ねて来た結果、その考えは一方からしか見ていない理想論であり、間違いだということに気づきました。
理由はこのエントリに書いた通りですが、じょりちょこさんの言葉を借りて再度要点を繰り返すと、「考え方を表現するにはそれ相応の経験が必要である」という事です。
むしろ「考え方」とは、経験の裏返しであるとすら思います。重要なのは経験であり、ウェブという場で手っ取り早く経験を積み重ねることのできるPHPは、良いプログラマーを育てるのに向いていると思っています。
私はオブジェクト指向至上主義や「絶対的に美しいコード」というものを信じていません。場合によってはオブジェクト指向など害悪でしかない場面もあります。
目的を達成できるコードこそが良いコードであり、目的を忘れて「美しいコード」に現を抜かすのは、まず経験を積んでから、と信じています。
あ、いちおう書いておくと、私も「美しいコード」追求、大好きなんですけどね。
じょりちょこさんとは美味い酒が飲めそうです。
・プロの料理人なら基本を押えなきゃ。(じょりちょこ様)
・でも、料理はプロだけのものじゃなく、作りたいという気持が大事だ!(chikura 様)
・素人料理を否定するものでないけど、他人に食べさせるなら最低限の衛生管理はしてよね。(Matz 様)
と聞こえて、だとしたら、それぞれごもっともに思えます。
でも、そもそもの問題提起は
・素人でも(簡単に or 意識しなくても)衛生的な調理ができる方法 or 道具ってあるの?ないの?
じゃないのかなぁ。
PHP も Java も知らなくてお恥ずかしいんですが、この答えはどう思われますか?
(横からいきなり失礼しました。)
~ — osm @ 12:22AM 2008-02-05
そうですね…じょりちょこさんとMatzさんの主旨がそれぞれそうだとするなら、私の意見は、
「基本を理解する為にはまず経験が必要」
「最低限の衛生管理を知るためにも経験が必要」
「そして、経験を促す為には、ハードルは低い方が良い。その過程で失敗するのはやむをえない。」
となります。エントリに書いた通りです。
私は、プロになろうとする人であっても、PHPから入るのは良い事だ、と言う意見です。
そして、そもそもの問題提起がそういう点であったならば、どうして、そんな方法や道具があるかどうかすら分からない段階で、「素人が使うと衛生的でなくなる事がある道具」であるPHPを、そういう理由で批判できるのでしょう?
そうでない明確な方法があるかどうかすら分からないのに?
ということを、元エントリに対して言いたいです。
「元エントリはPHP批判が目的ではありませんよ」とは、さすがに仰らないと思いますが…。
ちなみに私は、PHPはちゃんと「なるべく安全であるように」改善をし続けていると思いますし、「素人が使っても絶対安全な、完璧な方法」も存在しないと思っています。 — chikura @ 12:38AM 2008-02-05
これ、良く聞く話ですが本当なんでしょうか?仕事用のPHPコードは結構見てますが、少なくとも私の周りではテンプレートエンジンがデフォルトで使われています。
職業プログラマのコードではなく、Web上に沢山存在する趣味プログラマーのコードを見ているだけなんじゃないだろうか?という疑問があるのですが。 — lets_skeptic @ 04:09PM 2008-02-05
ただ、仰る通り、趣味プログラマーなんかはそういうテクニックをツギハキ的に用いている人はいそうです。また、多くの初学者はそういうコードから入ることになるでしょう。
元記事ではそういう入り方をした人は、そこから抜け出すことができないからPHPはダメ、という主張に読めましたので、こういう反論をさせて頂いています。
PHPのテンプレートエンジンとかは(多くのライブラリもそうですが)、単にライブラリのソースファイルをサーバ上にコピーしてrequire_onceするだけで使えますから、便利です。 — chikura @ 04:22PM 2008-02-05
他にも未定義の変数の参照を平然と行なっていたり(E_STRICTで開発しろよ!)、グローバル変数によって挙動が変化する1000行近くある関数があったり、クラスの継承が9段階にも及んでいたり、明らかにセッションというものを理解しないで書かれたコードがあったり、一個のテーブルに数百もカラムがあったり、SQLインジェクション対策が場所によって異なる方法で実装されていて、中にはシングルクォートのことしか考えずに対策したつもりになっていたり、とか。気が狂いそうです。 — じょりちょこ
PHPでMVCフレームワークを使っても、同じような感じの人はいるんでしょうね。
こういう事例を見ると、むしろ、言語やフレームワークから人が学ぶのではなくて、やっぱり経験からしか学べないのではないかな、と思いました。 — chikura @ 11:41AM 2008-02-06
JavaやC#でも「インスタンス変数は必ずpublicに」とか言う変な人(当然リーダー)は居ました。
ここから誰も「publicという機構が簡単に使えるようになっていると、誰もprivateなんて使わなくなる。こんな言語はイカン」とは考えないと思うのです。 — chikura @ 02:03PM 2008-02-06
とはいえ...PHPの設計者たちには、もう少し勉強しろよ!という気はします。
サービス中のWebアプリケーションは簡単に書き換えられないのだから、セキュリティパッチと機能改善は別のリリースにすべきだと思いますし、後方互換性を確かなものにするためにも現状の仕様を形式的に定義することに力を入れた方がいいと思いますし。
ただ、今、PHPで食べている人が、VBerと同じ末路をたどらなければ良いが...という気がしなくもないんですが。 — じょりちょこ
個人的にはこれは教育の問題だと思っています。特に現場の教育がなってない。上司がダメなんです。
製造段階以前に、設計そのものがおかしいというのも大きいです。「今回は画面仕様しかありません」とか、ありえません。そりゃ、HTMLに直接ロジック書くよな、という。
言語でどうこうする以前に、設計スキルについてもっと底上げを図るべきなんじゃないかな、と思いました。そうすれば自然とプログラミング(製造)側もついていく気がします。 — chikura @ 08:50AM 2008-02-07
ちょっと話は変わりますが、設計時にクラス図だけ作って満足しちゃう人とか居ると思うんですが、これをユースケース・シナリオに沿ってコラボレーション図とか作って頭の中で「動かして」みると、クラス間の関係などの問題が浮かび上がってくる事が多いです。
同じことが設計書作成にも言えると思っていて、「それって静的な検証しかしてなくない?」というものが多すぎて。プロトタイピングはそういう問題点を事前に解消する良い手段ですが、そこまでしなくとも、設計図の上で「動かす」事はある程度可能ではないかと思っています。
設計技法こそ長年の積み重ねの知恵があるわけですから、「良い設計書とは」「良い設計技法とは」を議論した方が今後の日本のシステム開発にとって利益があるのかもしれないな、と思いました。 — chikura @ 11:48AM 2008-02-07
JSPで2000行のHTML&ロジック&SQLの塊を見たことがあるので。(お金稼いでいるシステムです)
レン鯖でコードを埋め込んだHTMLを上げるだけで動く、というのはほんとにお手軽で面白いとこなんですけども、
できてしまう(とりあえず動いてしまう)=動けばOK っていう流れというか文化というか状況があるのは確かなので、
不特定多数の初心者に対する意見であれば「そっから入るな」と言いたいですね。
目の前に入門者がいて、HTML埋め込みからやってみ、って面倒見れる状況であれば良いんですが。
PHPの「初心者のその先」までエスコートできる環境ってのがどうも希少らしいので、
お手軽でなければ入門できない人材は来るな、っていうのが本音というか悲鳴かもしれませんw — tak @ 08:13AM 2008-02-09
同じように思う人は少なからずいるようですね…。
でも「そっから入るな」は一意見としてはもちろんアリだしどんどん言って貰えればいいと思うんですが、「そこから入った人はダメになる」とまで一般化されてしまうと、反論したくなるのです。
現実は恐らく、「そもそもプログラミングそのものには興味が無い人」がPHPなら目的を達成できた、というだけだと思うんです。そういう人は、Rubyみたいな言語と環境を渡されても、恐らく目的を達成できないまま終わるだけでしょう。
その人はそれでいいじゃないかと。そういう人が「俺ってプログラマー!」って言って受託開発会社に面接に来たら追い返せばいいだけの話で。「PHPの経験があるとのことですが、デザインとコードの分離はされていますか?」「え、なんですかそれ?」「今日はありがとうございました。お帰りはあちらとなっています」。
極端な話、「RubyでRoRやってました。Ruby以外の言語はやってません」って言う人だからといって、いい人材とは限らないのと同じで、やってた言語を参考以上の決め手にしちゃうのって、乱暴すぎる気がします。
「お手軽でなければ入門できない人材は来るな」は、まさにこの記事のタイトル通りだな、と思います。笑
個人的には共感するところも多いんですけどね…。 — chikura @ 11:32AM 2008-02-09
なるほど、話がすれ違うわけだなあ。僕は開発会社に発注する側なんですよね。自分で作る場合もあるのですが、基本は発注。うちは下請け法を遵守しないといけない側なので、受託開発会社に発注・検収はできても、具体的な仕事の指図はできないわけなんです。そうすると、納品されてきたコードを見て「うわー、なんだこれは!」となることを体験するわけです。
「お金をもらってて、しかも何ヶ月もかけて、どうしてこんなコードが書けるんだろう?」
そう感じる体験は、Javaでもないわけではないのですが、PHPの方が多いです。
全然納期に間に合わないという状況になって開発会社から泣きが入り、アドバイスに出かけていってみると、素人以下のプログラマーが10人以上もとぐろを巻いていたりするわけで、PHP sucksって気分になるわけですよ。そうは思っても、法律上、直接現場の人々に指図も文句も言えないんでね... — じょりちょこ
その辺は、完成するまで待たずにちょくちょく途中のソースでもいいからチェックするぐらいしか方法ないですよね…。まぁ、ミクロレベルでは受託開発会社の中でも上司と部下の間で同じような事が起きてる訳ですが…。
とりあえず、じょりちょこさんがPHPの仕事で酷い目にあったと。その点は非常に良く分かりました。笑 — chikura @ 03:05AM 2008-02-10