あなたはどのWeb開発プラットフォームを選びますか? 166
ストーリー by hylom
親しみやすい宗教か、信者が多い宗教か 部門より
親しみやすい宗教か、信者が多い宗教か 部門より
headless 曰く、
本家/.「Ask Slashdot: Which Web Platform Would You Use?」より。
自分のWebサイトで使用するアクティブコンテンツ(データベース駆動、Webサービス)を初めて開発しようとしている。個人的にはPHPが良いかと思い始めているが、開発プラットフォームは他にも数多くある。また、PHPを馬鹿にする人々もいるようだ。私は/.erが選ぶプラットフォームとその理由に興味を持っている。本格的に開発を始める前に、皆さんのご意見を得るとともに実際的な問題を少しでも多く知っておきたい。PHPを使うべきでない理由は何だろうか。
本家/.では各自おすすめの開発プラットフォームを挙げているほか、「どの宗教が一番良いかを尋ねるようなものだ」という意見もみられる。/.Jerのご意見はいかがだろうか。
PHP以外だね (スコア:2)
だったら使わないのが幸せだと思うよ。
Re: (スコア:0)
そうだなーPHP は empty() とかマジでやばい
"0" の文字列は true を返すとか、
empty()は実は関数じゃなくて、関数の戻り値をそのまま渡すとダメとか。
http://php.net/manual/ja/function.empty.php [php.net]
やっぱり (スコア:2)
ターゲットによる?
Java屋なのでJSP/Servletを推したいんだが、ケータイゲーム?ソーシャルゲーム?をやっているヤツからすると、PHPの方がいい。PHPがいい理由は
・初学者教育のレベルが低くてすむ=次が見つけやすい
・memcacheやら何やら、で高負荷でも処理する環境/動作実績がそろっている。
なんだそうで。確かにそれをいわれると、JSP/Servletはちょっと落ちるのかな?とも思ってしまいます。
-- gonta --
"May Macintosh be with you"
Re:やっぱり (スコア:3, 興味深い)
典型的なWebアプリケーションのロジック部分の性能はDBがボトルネックになることがほとんどで、
Javaの最も有利な点の一つであるVMの底力を発揮する機会が少ないですよね。
あとは、静的型付けによる生産性とかあるけど、若者は重いIDEよりテキストエディタでサクサク書くのが楽みたいですね。
後はEJBやStrutsの呪いとかの不幸な歴史もマイナスだな。
Re: (スコア:0)
WebアプリとVMの底力の関係について具体的な説明をお願いします。
Re:やっぱり (スコア:1)
底力と書いたのは、ベンチマーク的なコードの実行性能の意味。
Java VMで実装された言語処理系はCなどのバイナリと比べても10倍遅い程度で、処理の種類によってはJITが効いてバイナリを凌駕する事もある。
PHPあたりだとさらに10倍遅い感じでしょうか。
だけど、一般的なDBにCRUDを発行するのが主な仕事であるWebアプリではそんな性能はそれほど重要じゃない。
Javaの性能を活かす分野はウェブサーバだったり、テンプレートエンジンだったり、アプリケーションフレームワークだったり
エンジン的なものだと思います。
Joel曰く (スコア:2, 興味深い)
言語をめぐる論争 - The Joel on Software Translation Project [joelonsoftware.com]
Re: (スコア:0)
私もこれに近い意見で、今まで使ってきた言語かそれに近いものを使うのが一番マシな気がする。
「今どきの言語」ってだいたいどれも定番のフレームワークとかがありますよね。
それぞれのフレームワークの出来に、言語の「慣れ」によるメリットを捨てて乗り換えるほどの生産性の差はあるんですかね?
全くの未経験者です!とか転職につなげたい!とか言うんならまた別ですけど。
全部使ってみるのが一番 (スコア:1)
まあ情報量とか実績からすればPHPなんでしょうけど。
敷居が低いが故、なんちゃってPGが多いから煙たがられるんでしょう。
言語仕様的にはPHP5.3以上で作れば問題ないかと。
問題になるのは知識不足によるセキュリティホール量産とかでしょうか。
それもフレームワークを前提にすればある程度勝手に解決されるんですが。
これから覚えるのであればRubyを押しますがね。
サーバもVPSが安いので自分でインストールすれば済みますし。
ただredmineをインストールした時に細かいバージョン差異で動いたり動かなかったりでイライラしたのが引っかかります。
Re: (スコア:0)
言えてますね。
プロダクトの行く末は、初期段階における基礎設計の良し悪しに左右されると思いますが、
その段階で「良い設計」について熟知している人間が居ないと、致命的な選択ミスを犯す危険性が高くなる。
Re: (スコア:0)
「使ってみる」程度で適正に評価できるとは思えないけどなあ。
「ほげ」言語のパラドックスの呪縛で「なんだか意味のわからない機能がついてる」で終わるとかありがち
Re: (スコア:0)
使ってみた結果、これだけはハッキリ言えるが、言語としてのPHPはクソ。
豊富なライブラリも含めると、でっかい糞。
そこに初級へたっぴ開発者もあわせると、相乗効果で巨大糞スパゲッティコードのできあがり。
仕事で初心者にPHPを書かせるんなら、最後まで自分の尻ぬぐいもやらせろよな。
それができないからって人に泣きつくんじゃねえ。
自分の書いたコードの尻ぬぐいをやれるようになって、ようやく犯人前だ。
できねえ奴はプログラマー失格だ。
とりあえずPerl (スコア:1)
ODBCの罠 (スコア:1)
PHP+unixODBC+NVARCHARフィールドという組み合わせで、Unicode処理の不整合で罠に嵌ってしまった。
フィールドサイズの1/3しか取り出せない(T_T) (書き込みはフルサイズ可能)
Perl+unixODBC+NVARCHARフィールドでも同じ問題が発生したが、こちらはDBD::ODBCモジュールを改造して
自前パッケージを作ることで回避できた。
PHPの場合はPDO内部の処理に該当するので、そこだけ改造してパッケージ化というわけにもいかない。
現在PHP環境でのこの問題は放置状態。どうしたものやら。
PHPはマジもう要らない (スコア:1)
PHPは生産性、メンテナンス性が悪すぎ。
PHPでできるWebアプリなら、Python/Ruby使えば良いのに、なぜいまさらPHPという感じだ。
こういう主張をいうと、大抵PHPのほうが人が集めやすいからと言うんだけど。
Webアプリ開発の敷居の低さはわかるけど、そんな人材取って、ほんとに役に立つの?
「PythonやRubyはやったことないけど、PHPなりなんなりをマスターしてるし、たぶん大丈夫ですよ」
っていってくれる人の方が、PHPできるって触れ込みで来る人よりよっぽど役に立つのだが。
さくっと検証ページとかページ遷移だけ確認するページとかをPHPで作ることは良くあるけど、
Symfonyを使うくらいならDjango使った方がよっぽどマシなんだが。
なお、大規模チームが必要なら静的コンパイル言語を選ぶ。
Re: (スコア:0)
おまえな、PhthonやRubyがどれほどのものだってんだ?
伝統的なHello,WorldをPHPより簡単にかけるようになってから言えよ。
PHPはな、
Hello, World
たったこれだけでHello,Worldなんだよ。分かるか?この気高き1文が。
便器にしか興味のない掃除のおばちゃんじゃなければ分かるはずだ。
Re:PHPはマジもう要らない (スコア:2)
gorubyなら
h
たったこれだけでHello,Worldなんだよ。分かるか?気高き一文字が。
…いや、仕事で使わないでくださいorz
Re:PHPはマジもう要らない (スコア:1)
これはもうPHPのdisに加担してるんだか、反発してるんだか判断つきかねます
Re:PHPはマジもう要らない (スコア:1)
(私は PHP を応援したり、逆に PHP を否定したりするつもりもありませんが)
このスレッドの投稿者が「PHPは生産性、メンテナンス性が悪すぎ」と言っているのは、おそらく、HelloWorld のような簡単な事例ではなく、おそらく、もっと大規模なシステムを構築する場合について、言っているのかと思いました。
たとえば、こう考えてはどうでしょうか?csh では 「echo Hello, World.」 で HelloWorldプログラムをかけるのに、Java 言語では「public class HelloWorld {public static void main (String [] args) {System.out.println ("Hello, World")}}」 と、比較にならないぐらい長い、からといって、csh の方が生産性が高く、Java 言語は生産性が低い、とは必ずしも言えないように思えます。HelloWorld に関しては確かに、csh の方が生産性が高いかもしませんが、より大規模なシステムを構築する場合は、Java 言語の方が、生産性が高いかもしれません。(恐らくそうでだと思いますが。)
もっとも、この例は、ここでの論点をはっきりさせるための極端な例であって、PHP が csh と同程度だとか、Python や Ruby が Java のように高機能だとか、いうつもりではありませんし、私自身の、PHP と Python と Ruby の生産性についての考え方を表すものでもありません。私が言いたいのは、
ということです。いかがでしょう?
Re: (スコア:0)
そういうとき俺ならHTMLを使うね
Re: (スコア:0)
>PHPでできるWebアプリなら、Python/Ruby使えば良いのに、なぜいまさらPHPという感じだ。
これって「PHP」と「Python/Ruby」を入れ替えても通じるよね。
結局、言語云々じゃなくてそもそもの要求定義次第だと思うんだけど、違うかな?
言語有りきのPGM論って結論でないから不毛だよ。
Re: (スコア:0)
> これって「PHP」と「Python/Ruby」を入れ替えても通じるよね。
>結局、言語云々じゃなくてそもそもの要求定義次第だと思うんだけど、違うかな?
違うよ。
「PHPを使うのは糞」というのが、プログラマーの共通認識としてあるんだよ。
その常識を持った上で読めば、逆が無理だって分かるでしょ。
Re: (スコア:0)
ああ通じますね、日本語の文法的には。
ただ、ここは国語の勉強をするところではないのですよ。
せめて「今更、Python/Ruby」という説明を付け加えてくれませんと。
Re:PHPはマジもう要らない (スコア:1)
規格化は Ruby 1.8 をベースに行われているんですが、今年 6 月でメンテナンス終了、来年 6 月でセキュリティー修正終了なんですよね。
JIS X 3017 (および ISO) の 1.9 に合わせた改定がそれまでに十分な期間を持って行われている必要があると思いますが、どうなんでしょうね。
C教徒 (スコア:0)
C教徒の私としてはC言語をお勧めします。
理由はC言語だから。宗教だし。
Re:C教徒 (スコア:1)
こんな人は偽教徒です。皆さんご注意ください
関数の第1引数の名前を_thisにしてしまう。ただし、thisが予約語なのかわからないから"_"をつけてしまう
大して速くも出来ない癖に__asm__ __volatile__を唱えてしまう
コンパイラの型付けを信奉し、引数以外の変数を拒み、再帰してしまう
GoFを2,3ページ読みかじった感じのコードをCで書いてしまう
Cを高級アセンブラとか抜かす
templateとvoid*の違いを知っている
strtok()を使ってしまう
Re: (スコア:0)
いくら異教徒とはいえ、自らに苦行を科す姿を見るのはいたたまれない気持ちになりますね。
C#かな。 (スコア:0)
個人的にはC#かな。Windowsに依存していまうが、一度覚えると非常に非常に生産性が高い。IISや.net、visual studioなどを無料で使えるあたり、とっつきやすい。
Javaでも、いいかもしれないが、Windowsベースの方が初心者にはとっつきやすいと思う。
PHPは、別に悪くはないが、CGIベースの開発がメインで少し古いような気がする。
新たにWEBの世界に来るのであれば、できるだけ最新技術で勉強を始めた方が良いと思っている。
Re: (スコア:0)
Re:C#かな。 (スコア:1)
当面の仕事はC#、ただしWebアプリではないんだけど、
ぐたぐたな構造にしようと思ったらいくらでもできそうなところはまずいと思う。
partialとかget,setとか。
個人的には get;set; が一番気持ち悪い。使うけど。
あれはマクロとして考えればいいのか何なのかよくわからない。
#存在自体がホラー
Re:C#かな。 (スコア:1)
あと、DateTime が null 不可とか、Dictionaryに要素を追加する際に既にあるキーだとそのまま追加できないというのが許し難い
#存在自体がホラー
Re:C#かな。 (スコア:1)
とりあえず Generics と LINQ と Visual Studio の楽さに慣れると果てしなく楽ですよ。
その上で VB.NET は (最新版でかなり楽になったとはいえ) C# よりもやっぱりちょっと書きづらいところがあります。ラムダ式とか。
Visual Studio などがある場合、IntelliSense が強烈に働いてくれます。さらに ReShaper、Code Contracts、Pex and Moles 他などを突っ込み始めると、どんどん効率が上がっていって他言語/環境で作業するのが苦痛になっていきますね。
レガシーコードをテストでカバーしていく作業とか、他言語ではやりたくなくなるくらい楽ですし。
Re: (スコア:0)
使いにくいところ、貧弱な機能を具体的にあげてもらえませんか。
実際に環境を選ぶ時に参考にしたいので。
Re: (スコア:0)
勉強し始めの奴に聞くなよ。
文字通り理解できていないんだよ。
Re: (スコア:0)
Re:C#かな。 (スコア:1)
C#というか、IE+IIS+Visual Studioだと、単一のIDEで全部デバッグできる。ブラウザー側のJavaScriptもWebサーバー側のASP.NETも。加えてバックエンドのサービス部分もC#なら。更にSQL Serverも…とMicrosoftは囲い込みしてる。
これは他にはない生産性の高さと言えないかな?
Re:C#かな。 (スコア:1)
言えないんじゃないかなあと思う
1.IE+IIS+SQLServerという縛りがある
2.IDEが単一である事自体の利点がいまひとつない
IDE内のそれぞれのデバッグ機能を使うのと、デバッグ対象別にそれぞれのツールを使うのは大して変わらないような気がする
生産性というと漠然とした言い方になるけど、IDEが単一である事が利点と言えるのは
1.開発環境がプアで多くのツールを同時に使うのが難しいので単一のアプリですませられる方がよいような気がする。
でも、高機能なIDEもそれなりに重くなるような気がするなあ。というよりその場合、テキストエディタ最強になるかな。
2.開発に使用するツールは購入しなければならないという縛りがあるので、必要なライセンスは少ない方がいい。
という条件下での優位性になる気がする。
あと、各層を横断的に同時にデバッグしなければならないとしたら、設計自体を見直した方がいいんじゃないかな
#存在自体がホラー
Re: (スコア:0)
ネットからサンプル拾ってきてつなぎ合わせるだけでアプリが完成だー
Re: (スコア:0)
> サンプル拾ってきてつなぎ合わせるだけ
コピペ・プログラマwww
c#一票なのですが、.NET Frameworkはc#だと物足りなくて
使いにくいけど、VBだとやたらとウザくて萎えるのですよ
Re: (スコア:0)
VB だと萎えるけど、(物足りなさを解消できて)満足ってこと?
Re: (スコア:0)
偏ってるがC++"だけ"の場合と比べるなら、メモリブレークポイントが使えない、vs2008 64bitではマネージドとnativeコードの同時デバッグ実行ができない。個人的には流行りものを何でも取り入れてるC#の節操のなさが嫌い、けどそこが好きだという人もいるかも。
言語だけの問題ではない気が… (スコア:0)
どのフレームワークを選ぶ(or フレームワークを使わないという選択をする)かも大事な気がするけど。
Symfony?
Cake?
Rails?
Django?
PHPはいいね~ (スコア:0)
PHPは何でもアリな感じが面白いね
マシン語を直書きしてた頃に比べると時代が変わったなと思うよ
でもプログラマの範疇のプログラマがPHPを嫌うのは何となく分かる気がする
Re: (スコア:0)
そりゃ変数定義必要なしで型宣言もなくて基本的には自動的に変換してくれるからね。
だからこそPHPには比較演算子として「==」だけではなくて型チェックまでする「===」なんていう比較演算子まである始末。
ただPHPの連想配列は型宣言が必要ないのでJavaの連想配列に比べてめちゃくちゃ便利。(Javaの連想配列はいまいち使い勝手がよろしくない)
Re:PHPはいいね~ (スコア:1)
>PHPの連想配列は
せめてハッシュテーブルって言ってよ。
>型宣言が必要ないのでJavaの連想配列に比べてめちゃくちゃ便利。
は?
なんかスゲーバカっぽい発言。
型が無いからPHPコードはバグの温床になってるのに、それが便利って言っちゃうのは
「自分はバグを大量生産する初心者下手糞プログラマーです」
と自白してるようなもんですよ。
Re:PHPはいいね~ (スコア:1)
便利だからバグの温床にもなるんでしょう。fgetsを皮切りに便利さがバグの温床になった
例はPHPに限らず枚挙いとまがないですからね。
PHPでも型を意識したコーディングはできますよね。便利であるという意見表明に対して
馬鹿であるとか下手なプログラマであると罵声を浴びせるのは如何なもんかなあ?
大人気ないと言うか。
もっとも型を意識して安全性に考慮したコーディングをしても
型変換がアンドキュメンテッドな動きをしたぞとか、PHPのバージョンを換えたら型変換が
微妙に変わったとか、そういったことは起こりえるかもしれない。ブラックボックス化が進むと
便利になるがバグの温床にもなると。
言語の仕様はキツくして、OOPとかで抽象化して便利にするという、良くある方向が
安全ってことなんでしょうかね。
Re:PHPはいいね~ (スコア:1)
PHPって知らんけど、連想配列の実装がハッシュテーブルとは限らんのでないの?
PHPはどうなのか知らんけど、型の無いのと動的型付けなのは違うんでないの?
Re:PHPはいいね~ (スコア:1)
一般に型がないと言われる言語はPHPを含めて動的型付けですね。
PHPは代入時に型が決まって、型変換はルーズな言語だけど
型を強制するsettype()とか、C言語風のCastで型変換を強制できるので、変数型を意識した
コードも書けないことはないと。
静的型付けの言語からやってくると、このルーズな変数型の扱いは最初は気持ち悪いんだけど
楽だなと思えるようになる。楽に慣れ過ぎると落とし穴にハマるかもしれないので、適当に
形を意識しつつ書くって感じですか。
動的型付けの言語の言語がバグの温床だというのは極論すぎると思うけど背景には
型を意識しないルーズなコードを書くプログラマを量産してるんじゃというのもあるのかも
しんないですねー。
Re:PHPはいいね~ (スコア:1)
他の言語でプログラミングについて熟知している人間が、悪いところ良いところを把握したうえで、あえてPHPを使う分には便利な道具と言ってもいいでしょうけど、
「初めてのプログラミング言語は○○でした」って段階でPHPを選択するのは大間違いだと思う。
PHPの腐った部分をそうと気づかずに「プログラミングとはこういうものだ」なんてすり込まれたら取り返しがつきません。
そして、PHPには、「初心者でも簡単にマスターできそう」と思わせてしまう雰囲気があるのが最大の問題じゃないかなぁ。
とはいえ、PHP5になってerror_reporting のE_STRICT [php.net]ができたのでまだマシかな。5.4からはE_ALLにE_STRICTが含まれるようになったし。
#こないだの仕事ではPHP4を指定されてちょっと途方にくれました…
ここまでテンプレ (スコア:0)
・「~という言語は糞」というヤツに限ってその言語の特性をほとんど理解していない。
・「~というフレームワークは糞」というヤツに限ってそのフレームワークの使い方をあまり理解していない。
PHPの比較演算子を2項しか知らない、Perlのヒアドキュメントを知らない等、
だた知らないまま批評じみたことをしてご満悦の様子。実に微笑ましい。
そのくせ指摘すると自分のスタイルに合わないだけなのに、あたかも客観的な
意見のようにご高説を賜る栄誉を頂ける。実に幸せそうだ。
libphpを一度ダミーに差し替えたら「何を実行してもphpinfoが出る!」って
アワ食ってた。実に楽しそうだった。
# 自分の書いたコードを真っ先に疑え
# 次にミドルウェアの設定や環境を疑え
# 他人を疑うのは最後だ
# でも犯人は俺