C言語系でシンタックスが似ているのでjavascriptを学んだ人は次にPHPをやるといいとききましたがrubyやpythonよりもPHPのほうが文法が似ているので簡単に習得できると考えてよいでしょうか?
Nodejsは同じJSですが、非同期IO、コールバック地獄などがあり、同じ言語なのにPHPよりも初めてサーバサイドの言語を学ぶ人には難しいと聞き混乱しています。
同じ言語だからNodejsが文法も関数も新しいことをちょっとした違い程度を学ぶだけでいいので絶対良いと思っていたのですが、
PHPとJSの違い以上にJSとNodejsは違うと考えるべきなのでしょうか?
しかもPHPはWEBアプリ制作で5年以上揺るがない8割近くの仕事を占めているが、
その次がrubyが1割くらいで、Nodejsとpythonたちが残り1割というイメージが当分ゆるがないと考えるべきなのですね。
Nodejsはそもそもサーバサイドの言語として、流行らないでこのままなのでしょうか?海外ではかなり使われていると聞きますが。
これが正しい認識であればやはり、WEBアプリ制作やWEBのサーバサイドのプログラミングを小規模サイト政策で請けるのであれば、PHP一択となるのですかね。
前にも似たような質問をしてしまいましたが、非常に重要な選択なので、
色々な方の意見をお聞かせください。
http://mikumikuplay.com/it/beginner_should_learn_javascript_and_php/
より
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答6件
0
農民「今度武士になろうと思うんですが、武器は何を練習したらいいですか?」
旅人「農民なら日常的に鎌を使ってるだろ? 鎖鎌が習得しやすいんじゃない?」
農民「わかりました」
数日後
農民「士官に来ました。鎖鎌が少し使えます」
武士「実績は?」
農民「使い方の本を読みました」
武士「いらん。銃の使い方教えるから鎖鎌は捨ててこい」
投稿2017/03/05 09:29
総合スコア28660
0
もし、「仕事が多い」という理由でPHPをするのであれば、同時に「できる人も多い」ということを忘れてはいけません。
[中間発表版]2016年版プログラミング言語別給与ランキング – HRog
「プログラミング言語別 平均年収」を発表! – 求人検索エンジン「スタンバイ」
根拠になるデータや算出方法が異なるので単純に比較できませんが、どちらも、
平均年収: Python > Ruby > JavaScript > PHP
求人数: PHP > JavaScript > Ruby > Python
となっています。PHPは求人数が多いのに平均年収が低いです。これは需要が多いが供給はもっと多いと言うことです。物価と同じで、供給が多くなるほど、つまり、できる人が多くなるほど単価は下がります。PHPは典型的な供給過多の例です。なお、Javaも同じ傾向があります。
つまり、PHPだけできるようになっても、同じようなPHPだけできるライバルがたくさんいるので、別にあなたである必要は無い、替わりの人はいくらでもいると言うことです。未来は誰にもわかりませんが、PHPが下火になったとき、今できている人ができなくなるわけではないので、この供給過多はさらに増すことになるでしょう。そのときは二束三文の仕事しかないかも知れません。
「仕事が多い」と言うことを単純に良い評価とすることは大変危険です。需要だけではなく、供給をみないと、参入すべきかどうかの判断はできません。そういったセールスマンの謳い文句みたいなのを鵜呑みにしてはいけません。
※ もちろん、PHPで高い給料を貰っている人もいます。ただ、そういう人はPHPの内部(Cのソース)まで知り尽くしていたり、ライブラリを自分で作ることができたりするような人です。
【追記1】言語難易度と平均年収について
難しいから給料が高いというわけではありません。言語の難しさと仕事としてできる人の多さはあまり関係ありません。需要に対して供給が少ないと給料が高くなるだけです。そもそも「言語の難しさ」というのは人によって指標が異なるため、絶対的なことは言えません。(私はC++よりJavaScriptの方が難しいと考えていますが、某所でそう書いたらはてブで叩かれました。)
二つの資料で平均年収が異なるのは算出方法の違いです。資料の最後にどのようにして算出したかが書いてあります。各資料内で言語間の違いは参考になりますが、資料間での比較は無意味です。また、どちらも求人情報からですので、実際のプログラマの平均年収ではありません。
顧客の立場から言うと、仕様通りに作ってあって、ずっと保守してくれるならなんでもいいと言うのが本音です。そして、安ければさらにいいというだけです。保守してくれることが前提ですので、あなたが保守をしないのであれば、保守する立場の人が保守しやすい言語を指定するだけです。
【追記2】文法と言語設計について
プログラミング言語間の違いは文法(シンタックス・書き方)よりも考え方の方が重要になります。文法の違いなど何度か書いていればそのうち慣れます。しかし、言語の考え方、いわば言語設計自体は体系だって覚えないと使いこなすことはできません。
ES5以前のJavaScriptはプロトタイプベースオブジェクト指向というかなり特殊な分類に入る言語です(他にメジャーなプロトタイプベースオブジェクト指向はLuaしかありません)。ES6からはクラス構文が追加され(中身はプロトタイプベースのまま)クラスベースオブジェクト指向としても書けるようになりましたが、ES5以前しか知らなければ、(Lua以外の)どの言語をやってもオブジェクト指向については初めから学ぶような物になることでしょう。
PHPとJavaScriptで似ていることはC言語風文法という所だけで、言語設計は大きく異なります。あえて共通点を探すとなると、悪名高い曖昧な==
と厳密な===
があることぐらいでしょうか。ただ、曖昧な==
であってもPHPとJavaScriptではその法則が異なります("" == null
がPHPではtrueですがJavaScriptではfalseです)。関数をそのままオブジェクトとして扱えるという点で、まだPythonの方がJavaScriptに近いと思います。
【追記3】Node.jsについて
Node.jsで使う言語はJavaScriptそのものです。Chromeと同じJavaScriptエンジン(V8エンジン)を使っています。Chrome版のJavaScriptにはDOMがあるように、Node.jsではブラウザには必要ないIO処理などが標準ライブラリとして追加されているに過ぎません。別の何かでは決してありません。もし、Node.jsができないというのであれば、そもそもJavaScriptができていないと言わざるをえません。非同期もコールバックもブラウザのJavaScriptでも言えることであり、Node.js特有のことではありません。
もし、JavaScriptはわかるけどNode.jsが難しくてわからないとか言っている人がいれば、そもそもその人はJavaScriptがわかっていません。やり方は何も変わらないからです。Node.jsが難しいと感じるのは、非同期処理ではない旧来の言語でサーバーサイドを書いていた人達です(同期処理と非同期処理ではシステムの設計そのものから違いがでてくるから、旧来の方法が使えなくなるため)。JavaScriptをきちんと学んでいる人にとっては何ら苦になる物ではありません。
なお、PHPという言語の善し悪しについては、私がするとただの悪口になってしまうので控えさせていただきます。
投稿2017/03/05 11:01
編集2017/03/05 21:30総合スコア21735
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/03/05 12:36
2017/03/05 21:31
退会済みユーザー
2017/03/06 02:18
2017/03/06 09:57 編集
0
なんか、率直な感想なんですけど、こういうことって、まともなコードが書ける人が気にすることじゃないの?
割と定期的にこの手の質問が上がるように思えるのですが、どの質問者もいったい何年先の心配しているんだろうと思います。しかも、この手の質問する人たちって、はたから見ると、スタートラインにすら立っていない。
行動を起こす前から、「効果が上がる方法は?」とか、「効率的に‥」とか聞くけど、結局楽したいだけでしょ?って思っちゃいます。
PHP vs Ruby とか何でわざわざ一つに絞る必要がある?
両方できる人が世の中で勝つに決まっていることじゃね?そんなこと小学生でもわかることじゃねーのか。
問い合わせフォーム作ってと言われて時に、phpをやったことが無くてもグクレバコピペと編集程度でできてしまうレベルなんですね。
ググってコピペで済むなら誰が金払ってくれるんでしょう。ググって業者を探すより、作った方がお金の節約になるし、自分でできちゃうなら誰も頼まない。
基本的な質問ばかりしている質問者が、プロフィール見ると意外とプログラマとして会社勤めしているとかたまに見受けられるけど、大丈夫かこの国のエンジニア?
一体どれだけのプロダクトが奇跡的に動いているんだ…
投稿2017/03/05 12:45
編集2017/03/05 20:11総合スコア266
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
個人的な見解ですが…
プログラミング言語をどうするか?
という以前に、もっと環境(ここではWEB関連でしょか?)の
理解を進めた方がいいような気がしますわ~
そのために PHP をチョイスするというのはありだと思いますし、
下地が理解できていれば、どの言語を選んでも
実装に苦労することは少なくなると思います。
とくに仕事としてやっていきたいと考えていらっしゃるなら
そのへんを疎かにしない(最新技術の情報収集も含めて)
のは大事だと思います。
個人が趣味でやるなら、好きなようにすればいいと思います。
投稿2017/03/05 07:31
総合スコア7458
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/03/05 09:13
2017/03/05 12:51
退会済みユーザー
2017/03/06 02:23
2017/03/06 11:11
退会済みユーザー
2017/03/06 12:03
0
それなりに長く業界でのたくってる身から言わせてもらうと、
「どれだっていいじゃん、そんなとんでもなく違わないし」
ですね。
むろん、それぞれの言語系で作法が異なりますから、PHP に向いた仕事、Ruby で(というか Ruby on Rails ですかね)やるのが楽な仕事、Python でやる仕事、あるいは JavaEE でがりがりやる仕事、どれもそれなりにあるのです。ですが根幹となるアルゴリズムやサービスに必要な作法は、どのような言語であれ同一になります(得手不得手は別として)。
つまり、本来は言語で選ぶわけではないのです。どれを選べば(その仕事に対しては)コストパフォーマンスがよいか、だけの話です。案件の場合、たいていは事前の設計でコストパフォーマンスを考慮して、使用する言語が決定しているわけで。(このコストパフォーマンスには、人材の集めやすさも考慮されている)
そして給料の話ですが、今そうだからといってこれからもそうだとは限らないのです。
例えばかつては Perl がもてはやされた時期がありました(それこそ今の PHP や Ruby なぞ目じゃないくらいに)。Java も今は供給過多(しかも供給される質が低下している)だから安くなっているのであって、自然淘汰でまた回復する可能性は十分にあります。
※個人的にはなぜ Python 推しなんだろうとは思いますが…… Trac の改造で触りましたけど
投稿2017/03/06 03:11
総合スコア13703
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/03/06 03:50
2017/03/06 03:57
退会済みユーザー
2017/03/06 04:13
0
ベストアンサー
業務上PHPを使用したアプリを運用しております。
使用環境でC10K問題等はないので、PHPでの運用を選択しました。
社内開発&社内でのみ運用とあって、開発期間が少なく他の言語(当初はC#)を断念しました。
それでも、会社から言われた3ヶ月の倍の6ヶ月かかってようやく本稼働しました。
サーバーサイドの言語として、PHPはHTMLの感覚で書けるのでお勧めですが、
一度使ってしまうと、楽すぎて他の言語を見たくなくなるのも事実だと思います。
また、当然ながらサーバーサイドで片付かない処理はクライアントサイドで行うので、
PHPだけで100%作りきるのは難しい問題かと思います。
ざっくりJSはクライアントサイド
Nodejsはサーバーサイドで小規模な計算または、C10K問題(クライアント1万件接続問題)の為
PHPはコーディング(と言えるのか微妙な位)が楽なサーバーサイド
と私は認識しております。
また、Webアプリと言ってもサーバーサイド・クライアントサイド両方を使用せざるを得ない場合が多いと思います。
昔はFLASHのアクションスクリプトもありましたが、今は非推奨ですので。
WEBのサーバサイドのプログラミングを小規模サイト政策で請けるのであれば、PHP一択にせざるを得ない状況が多いと思います。
Webアプリとして、工数によっては他の言語も選択肢に入ると思いますが、PHPは必ず入ってくるかと思います。
何が正しいのかは、環境によって変わってくるかと思います。
開発に十分な時間・費用が掛けれるのであればPHPで無くても良いと思います。
が、現状の社会のスピードから考えるにPHPが第一選択となるのも仕方ないのかと思います。
付け加えると、PHPをきっちり勉強しなくてもCを理解しててJSが出来てれば、ぶっつけ本番で何とでもなります。
だって、コンパイルとかしないし。
投稿2017/03/05 07:24
総合スコア25
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/03/05 07:55
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/03/05 10:07
2017/03/05 10:29
2017/03/05 11:16