C言語系でシンタックスが似ているのでjavascriptを学んだ人は次にPHPをやるといい?

解決済

回答 6

投稿

  • 評価
  • クリップ 2
  • VIEW 3,469
退会済みユーザー

退会済みユーザー

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/
より

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • 退会済みユーザー

    2017/03/26 18:51

    複数のユーザーから「問題・課題が含まれていない質問」という意見がありました
    teratailでは、漠然とした興味から票を募るような質問や、意見の主張をすることを目的とした投稿は推奨していません。
    「編集」ボタンから編集を行い、質問の意図や解決したい課題を明確に記述していただくと回答が得られやすくなります。

回答 6

+14

農民「今度武士になろうと思うんですが、武器は何を練習したらいいですか?」
旅人「農民なら日常的に鎌を使ってるだろ? 鎖鎌が習得しやすいんじゃない?」
農民「わかりました」

数日後

農民「士官に来ました。鎖鎌が少し使えます」
武士「実績は?」
農民「使い方の本を読みました」
武士「いらん。銃の使い方教えるから鎖鎌は捨ててこい」

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/03/05 19:07

    ↑まさにこれ

    キャンセル

  • 2017/03/05 19:29

    わからない。結局どっちがいいの?

    キャンセル

  • 2017/03/05 20:16

    +1しました。

    > toutouさん
    鎖鎌でも鉄砲術でも酔拳でも、なんでもいいと思いますよ。
    「炬燵兵法」という言葉の意味を調べてみてはいかがかと。

    キャンセル

+13

もし、「仕事が多い」という理由で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/06 06:31

    > saiboutaiさん
    長くなりそうなので、回答に色々追記しました。

    キャンセル

  • 2017/03/06 11:18

    お返事ありがとうございます。

    >>>
    【追記3】Node.jsについて


    Nodejsは、参考先サイトにはJSができてもPHPよりも難しいと記載がありましたが、
    そうではないのですね。
    JSの基礎がきっちりわかればやはりシンタックスが同じで、
    関数も3割るくらいは同じなので、PHPより簡単か同じくらいなのですね。

    rubyやpythonのほうが、文法もすべてが違うので、大変なのですね。


    ただPHPの評価は低くても、小規模サイト制作の仕事だと使わざる負えないことが多いでしょうから、
    最低その場合に対応するためにPHP工房で問い合わせフォームを導入できるようにだけしておけば、
    そのような仕事はクリアーできるので、まずこれだけPHPを学んで、
    それ以上追及しても評価されないので、その後すぐにNodejsに移るという手が、
    いいとこどりかなと思いました。
    小規模サイト制作の仕事だと使わざる負えない場合9割は問い合わせフォームで、
    せいぜいショッピングカートがまれにある程度だと思うのでこれで仕事としては処理できるかなと思います。




    ・下記のような記事も見たのですが、
    read("ファイル名", function(data) {
    });
    の部分はJSの基礎をやっている自分には特になんとも感じません。
    eventlisnerとかと似ているなとしか思わないので、そのような人には特に難しいわけではないのですね。
    日本語の情報が少ないというのは確かにありますが。


    >>>
    node.jsはシングルスレッドノンブロッキングIOなのでコードが難しい
    例えばPHPでファイルを読む時に以下のような書き方ができます。
    $data = read("ファイル名");
    ブロッキングIOの書き方です。分かりやすいですよね。

    それに対して、node.jsの場合、ノンブロッキングIOの書き方をしなければなりません。
    read("ファイル名", function(data) {
    });
    ファイルを読んで取得したデータをコールバック関数の引数として受け取らなければならないんです。初心者には難しいですよね?
    http://mikumikuplay.com/it/nodejs-yori-php/

    キャンセル

  • 2017/03/06 18:56 編集

    > saiboutaiさん

    私には、あなたの中では既に結論が出ていて、単に不安だから、賛同者が欲しいだけとしか思えません。色々言い訳しているだけで、私の言っていることの一割も伝わってないようです。なので、はっきり言います。

    * 案件が多いからと言う理由だけで言語を選択するのは危険。
    * JavaScriptと同じC言語風文法だからといって簡単になるわけではない。

    だからといって、PHPを学ぶのを辞めた方が良いというわけではありません。私が言いたいのは、そんな言い訳じみたことを自分にしても意味が無いということです。

    「問い合わせフォームやショッピングカートを作りたい」→「できあがりのPHP工房やEC-CUBEを使えばできそう」→「これらをカスタマイズするにはPHPの知識が必要」→「PHPを学ぼう」

    これで十分じゃないですか?なぜ、これで不安になるのですか?今必要だからする、それだけで十分なはずです。

    あなたがしたいのは何ですか?プログラミングですか?それとも仕事でWebサイトを作ることですか?もし、プログラミングをしたいというのであれば、より広い視野を持てるように全く別の言語(CとかHaskellとか)を私は勧めますが、単にWebサイトをつくりたいというのであれば、必要だと思った物(PHP)をやれば良いのです。何も迷う必要は無いかと思います。PHPの将来が不安?はっきり言いますけど、安泰な言語なんて存在しません。JavaScriptだって5年後、10年後はわかりません。でも、今JavaScriptが必要で、PHPが必要なら、それを学べば良いだけです。

    もし、仮に、本当のプログラマーになりたいなら、EC-CUBEを使う側ではなく、EC-CUBEを作る側になりたいなら、最終的に全部やるぐらいの勢いがないと厳しいです。難しそうだから避けようという人は本当のプログラマーにはなれません。

    キャンセル

+8

なんか、率直な感想なんですけど、こういうことって、まともなコードが書ける人が気にすることじゃないの?

割と定期的にこの手の質問が上がるように思えるのですが、どの質問者もいったい何年先の心配しているんだろうと思います。しかも、この手の質問する人たちって、はたから見ると、スタートラインにすら立っていない。

行動を起こす前から、「効果が上がる方法は?」とか、「効率的に‥」とか聞くけど、結局楽したいだけでしょ?って思っちゃいます。

PHP vs Ruby とか何でわざわざ一つに絞る必要がある?

両方できる人が世の中で勝つに決まっていることじゃね?そんなこと小学生でもわかることじゃねーのか。

問い合わせフォーム作ってと言われて時に、phpをやったことが無くてもグクレバコピペと編集程度でできてしまうレベルなんですね。

ググってコピペで済むなら誰が金払ってくれるんでしょう。ググって業者を探すより、作った方がお金の節約になるし、自分でできちゃうなら誰も頼まない。


基本的な質問ばかりしている質問者が、プロフィール見ると意外とプログラマとして会社勤めしているとかたまに見受けられるけど、大丈夫かこの国のエンジニア?

一体どれだけのプロダクトが奇跡的に動いているんだ…

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+3

個人的な見解ですが…
プログラミング言語をどうするか?
という以前に、もっと環境(ここではWEB関連でしょか?)の
理解を進めた方がいいような気がしますわ~

そのために PHP をチョイスするというのはありだと思いますし、
下地が理解できていれば、どの言語を選んでも
実装に苦労することは少なくなると思います。

とくに仕事としてやっていきたいと考えていらっしゃるなら
そのへんを疎かにしない(最新技術の情報収集も含めて)
のは大事だと思います。
個人が趣味でやるなら、好きなようにすればいいと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/03/06 11:23

    http://ponpoco.hatenablog.jp/entry/2015/03/06/011518

    このあたりの、情報やパケットのヘッダーにどんな情報があるかなど、サーバ側というよりもTCP/IPの基礎側のことですかね?
    スリーウェイハンドシェイクとか

    キャンセル

  • 2017/03/06 20:11

    あーっと、表現がまずかったかな。
    WEBページが表示される仕組みとか
    WEBページでできること、あたりのことです。
    もちろんTCP/IPレベルで理解できるなら
    それに越したことはないと思います。

    キャンセル

  • 2017/03/06 21:03

    レンダリングの仕組みなどですね。

    キャンセル

checkベストアンサー

+2

業務上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 16:55

    ありがとうございます。

    phpはサーバサイドなのにクライアントのjavaScriptより簡単なんですね。

    cssの次がphpでその次がjavaScriptですかね。


    よってjavaScriptが分かれば、
    問い合わせフォーム作ってと言われて時に、phpをやったことが無くてもグクレバコピペと編集程度でできてしまうレベルなんですね。

    ビックリしています。
    恐らくはプログラミング言語で最も簡単なんですね。

    キャンセル

+2

それなりに長く業界でのたくってる身から言わせてもらうと、
「どれだっていいじゃん、そんなとんでもなく違わないし」
ですね。

むろん、それぞれの言語系で作法が異なりますから、PHP に向いた仕事、Ruby で(というか Ruby on Rails ですかね)やるのが楽な仕事、Python でやる仕事、あるいは JavaEE でがりがりやる仕事、どれもそれなりにあるのです。ですが根幹となるアルゴリズムやサービスに必要な作法は、どのような言語であれ同一になります(得手不得手は別として)。
つまり、本来は言語で選ぶわけではないのです。どれを選べば(その仕事に対しては)コストパフォーマンスがよいか、だけの話です。案件の場合、たいていは事前の設計でコストパフォーマンスを考慮して、使用する言語が決定しているわけで。(このコストパフォーマンスには、人材の集めやすさも考慮されている)

そして給料の話ですが、今そうだからといってこれからもそうだとは限らないのです。
例えばかつては Perl がもてはやされた時期がありました(それこそ今の PHP や Ruby なぞ目じゃないくらいに)。Java も今は供給過多(しかも供給される質が低下している)だから安くなっているのであって、自然淘汰でまた回復する可能性は十分にあります。

※個人的にはなぜ Python 推しなんだろうとは思いますが…… Trac の改造で触りましたけど

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/03/06 12:50

    >>>
    ※個人的にはなぜ Python 推しなんだろうとは思いますが…… Trac の改造で触りましたけど

    pythonはrubyと同じくバージョンが古いものの、ロリポなどのレンサバでも使えるという意味と、
    人工知能ビックデータ関連でこれから伸びていき給料も良いので需要があるという観点で候補にいてれています。
    あまり個人的には良くなかったのでしょうか?

    キャンセル

  • 2017/03/06 12:57

    まあ文法の癖がちょっと気になる、程度ですけどね。
    他の言語も同時に触ってると切り替えにちょっと戸惑う、くらいで。

    キャンセル

  • 2017/03/06 13:13

    JSを基準に考えるとNodejsとPHPが文法的にそっくりか同じで、
    ruby、pythonはちょっと違うが、方言程度という事ですかね。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.22%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる