web-dev-qa-db-ja.com

「実際の」プログラミング言語とは何ですか?

最近、ある先生が「PHPは本当のプログラミング言語ではない」と言ったが、私の意見では、弱い正当化だけを示した。

  • コンパイルされていません。
  • スクリプト化されています。
  • すべてのプラットフォームで実行されるわけではありません。

PHPは「実際の」プログラミング言語とは見なされませんか?「実際の」プログラミング言語とは何ですか?真剣に考えられるように言語をコンパイルする必要がありますか?

バックグラウンド

私は2日前に学校のAレベルコンピューティングクラスに導入レッスンを行いました。コースの最初の年にJavaを使用しています。Javaしかし、一般的なプログラミングの基礎(変数、関数、オブジェクト指向、ループなど)については十分に理解しています。

先生が最初に行ったタスクは途方もなく速いものでした。彼女は概念、それらがどのように機能するのか、あなたが現実的にそれらをどのように使用するのかを説明することを気にせず、ほとんどの学生(全体的にプログラミングに慣れていない)を見て非常に喜んでいるようでした彼女が何について話しているのか、あいまいな考えを持っていない彼らの席で。後知恵では、学生は9月が始まる前に科目を変更する機会があるため、コンピューティングAレベルを実際に「処理」できるのは誰であるかを非常に迅速に確認しました。

最初の唯一のタスクは、Javaコマンドラインアプリケーションを作成してバイナリをデナリ(10進数)に変換することでした。これを行う2時間のテイスターセッションがあり、説明の後、バイナリシステム作業は、全体として、どこから始めれば最も霧深いアイデアを持っているのかにもかかわらず、開始しなければなりませんでした。1時間後、他の人よりも遠くにいる人もいましたが、本当に重要なことを達成した人はいませんでした。彼は人々を助け、次にどこに行くべきかを見に来ました。

自慢せずに、私はおそらくクラスで最も経験があり、エクササイズで最も遠いものを得たでしょう。彼は私に以前の経験があるかどうか尋ねました。私は、特にPHPで「はい」と言い、Javaアプリケーションがコードのいくつかの画面に急速に成長している間に、バイナリを数行のPHPに変換するための何かを書くことができると冗談を言ってコメントしました。

彼は、「PHPは本当のプログラミング言語ではありません!」と答えました...!いくつかの議論の後、彼は上記の3つの理由を述べました。ただし、Apacheを実行するプラットフォームでPHPを実行できることを指摘しましたが、Apacheが何であり、Apacheがまったくないことを彼が本当に知っているとは思いません!

68
Jack

最初に、プログラミング言語とは何かを知る必要があります。最低でも、 プログラミング言語 はコンピューターによって読み取られ、特定の操作の実行を指示するものです。多くの人は 汎用プログラミング言語Turing complete であることも期待しています。ただし、 ドメイン固有言語 がチューリング完全ではないが、それでもその特定のドメインに役立つプログラミング言語である場合があります。プログラミング言語はコンパイルまたは解釈でき、多くのプラットフォームまたは特定の1つのプラットフォームで実行できます。異なるニーズには異なるプログラミング言語が必要です。明らかにPHPはプログラミング言語です。

「実際の」プログラミング言語の私の定義は、現実世界で少なくとも1つの実用的な使用法があるプログラミング言語です。これは、通常は実用的ではない 難解なプログラミング言語 とは対照的です。 PHPは実際の問題を解決するために広く使用されているので、間違いなく特に美しい言語ではありませんが、実際のプログラミング言語であるというこの要件を容易に満たしています。

PHPは実用的な言語です。これは、Webページ(元々はパーソナルホームページの略称)をすばやく作成できるようにするという特定のニーズから作成され、必要に応じて言語が拡張されました。理論的な背景や強力な設計原則がその作成を駆動しなかったため(言語の正式な仕様さえありません)、他の多くの現代言語よりもクリーンではありません。外国語の文字/ユニコード文字の正しい処理などの機能は、その後明らかに追加され、他の言語と完全に統合されていません。この無頓着さと理論的厳密さの欠如は、多くの人々(特に学者)が言語を嫌う原因となります。これは、教師がPHPを「本物の」言語と見なさない理由の一部です。

ただし、PHPは、Facebook、Yahoo!、Wikipediaなどの非常に大規模なサイトであっても、設計目的に優れており、多くのサイトで使用されています。

101
Mark Byers

コンパイルされていません

PHPはコンパイルできます(例: [〜#〜] hhvm [〜#〜] )。

スクリプト化されています

これは、PHPはコンパイルされません。

すべてのプラットフォームで実行されるわけではありません

Javaも同様です。

本当に悪い先生がいるようですね。

59
Quentin

もちろんPHPはプログラミング言語です。彼はおそらく"本当の"プログラミング言語と同じ意味で"本当の"男性キッシュを食べないでください

34
Dipstick

定義:プログラミング言語

これによれば、PHPはプログラミング言語のようです。それがrealプログラミング言語であるかどうかは完全に主観的です。それがgood言語であるかどうかも主観的です。確かに、applicationプログラミング言語としては最も一般的には使用されませんが、canはシェルアプリケーションの開発に使用されます- [〜#〜] cli [〜#〜] 。私はこれをやったことがないので、私の理解は大ざっぱですが、それはpossibleです。

さて、PHPは「スクリプト化」されています(これはスクリプト言語を意味します)。すべてのプラットフォームで実行されますか?あなたが判断する:

PHP:Hypertext Preprocessorは広く使用されている汎用スクリプト言語で、元々は動的なWebページを生成するWeb開発用に設計されました。この目的で、PHPコードがHTMLソースドキュメントに埋め込まれ、Webページドキュメントを生成するPHPプロセッサモジュールを使用してWebサーバーによって解釈されます。汎用プログラミング言語として、PHPコードは、コマンドラインモードでインタープリターアプリケーションによって処理され、目的のオペレーティングシステム操作を実行し、標準出力チャネルでプログラム出力を生成します。グラフィカルアプリケーションとしても機能します。 PHPは、最新のWebサーバーのプロセッサとして、およびほとんどのオペレーティングシステムとコンピューティングプラットフォームのスタンドアロンインタープリターとして使用できます。

ソース: http://en.wikipedia.org/wiki/PHP

Javaはすべてのプラットフォームで実行されますか?いいえ。JVMが存在するもののみ。

最後に、言語をコンパイルする必要がありますか?多くはそうではありません。 Javaでさえ、CまたはC++と同じ方法でコンパイルされません。それから、Perl、Pythonなども見る必要があります。

個人的には、PHPは本当のプログラミング言語だと思います。そこで始めて、C/C++とJavaに簡単に移行しました。 Javaと同じ目的で使用することはなく、その設計はJavaとは異なりますが、それはあまり意味がありません。私にとってJavaよりも学ぶことは簡単でした。

21
TNi

まず第一に、コンパイルも解釈もされていないこと(彼がスクリプトによって意味していること、確かにあいまいで、とにかく異なる目的に使用されていること)は、同じコインの異なる側面であり、したがって実際には同じ理由です。

すべてのプラットフォームで実行されるわけではない最後の理由は、混乱を招くだけです。彼はJavaの移植性を宣伝しようとしており、PHPは単にJavaではないようです。ただし、Javaは、JVMという非常に特定のプラットフォームで実行されます。そのプラットフォームは他の多くのプラットフォームで実行されるため、Javaに移植性を与えますが、従来の「ポータブル」の使用とはまったく異なります。たとえば、Cは移植性があり、PDP-11から最新の組み込みデバイスまでのすべてで実行されます。

ただし、Cは独自の抽象プラットフォームのルールを指定することでそれを行い、コンパイラはそれらのルールに従ってCコードをアセンブリに変換します。これは、Javaの移植性がCの移植性に似ている方法です。どちらも、特定の具体的なマシン(プロセッサ)の指示に変換されるルールを定義します。違いはそれがいつ起こるかです。

コンピュータサイエンスの問題はすべて、別のレベルの間接参照で解決できます。
—デヴィッド・ウィーラー

実際には、アセンブリまたは「マシンコード」でさえ、プロセッサによってそのネイティブアクションに解釈されます。 (このための良いソースは手元にありませんが、 モダンハードウェアのクラッシュコースで軽くカバーされていることを思い出します 、これはとにかく良いプレゼンテーションです。)プロセッサの速度が速くなると、特定のプログラムがasmにあるのか、インタープリターを介して実行されているのか、使用率の低いボックスにほとんど気づきませんが、これが「実際のプログラミング言語」の定義です遊びに来ます。

「本物のプログラミング言語」を定義する唯一の賢明な方法は「本物の仕事を成し遂げるための言語」としてですが、それは「本物」の定義にも本当に挑戦しています。 (ただし、 難解なプログラミング言語 で区別を確立します。たとえば、 Malbolge で実際の作業を行う人はいないため、 "real"の定義については、そして、今日と比較して、プログラミング言語の選択は、過去の実装戦略とオーバーヘッド(ランタイムインタープリターなど)によってはるかに制限されていました。ただし、今日でも、一部の言語は 特定のアプリケーション および予想される負荷に関して他の言語よりも「本物」です。すべての言語は要件に依存します。

あなたの先生は、おもちゃのWebアプリケーションでPHPしか経験していないようです(そして、おそらく 'application'を使用することは、彼が見たもののストレッチです)。玩具プログ​​ラムは実際の仕事ではありません。 PHPには間違いなく多くの問題がありますが、jestを除き、実際のプログラミング言語ではないとは言えません。

デバッグは嫌悪感が予想され、不本意ながら実行され、永遠に自慢します。
—ダン・カミンスキー

「本物」と「難しい」(「本物の仕事」に関連する)の​​特定の関連性があり、先生はこの感情を表現している可能性があります。これは常に bikeshedding (これにはより良い用語がありますが、覚えていません)の形として私に現れました。物の価値の推定は努力に関連していますそこに入れる必要がありました(たとえば、屋根の色と標識があるべきかどうかを入力するときに自転車置き場がより重要です)。私たちは他の理由よりも本質的に自分の努力を高く評価します-他の理由がないとしても、たとえそれが理にかなっていないとしても、それに精通しているからです。 PHPは、その欠点にもかかわらず、いくつかのことを簡単にします。そのため、PHPとその中に書かれたプログラムは価値が低いと認識されます。

10
Roger Pate

Facebook、Digg、Wikipedia、Yahoo。それらは本当のウェブサイトではないと思います。

9
Daniel

PHPを学んでいた頃、私もPHPがプログラミング言語であるとは信じていませんでした。

どこでアイデアを選んだのかはわかりませんが、スクリプト言語はプログラミング言語ではないことをどこかで知りました。そのため、この考え方をJavaScriptやSQLなどの他の言語に適用しました。

それ以来、気が変わって、C#やJavaなどのような高レベル(PHP、Javascriptなど)から低レベル(c、アセンブラなど)に至る言語の範囲があることを理解しました。間に。

5
Matt Ellen

あなたが正しいです。これらの理由は弱すぎます。実際、PHPを実行するのにApacheも必要ありません。
。したがって、「PHPはコンパイルされた言語ではない」と言うことができますが、それは「実際のプログラミング言語ではない」という意味ではありません。 Javaプログラムはマシンコードにもコンパイルされません-まあ、それは実際の言語でもありません。q.e.d。

3

OTで申し訳ありませんが、この写真には多くの問題があります。できるだけ早く、そのクラス、部門、およびその学校から脱出できることを願っています。 2月が来れば、学期分の知識に近いものは何もないと約束します。そして、もしあなたが私のような人なら、あなたの先生があなたのために無駄にしている時に、あなたは教室の時間をフラストレーション、ent、そして怒りに費やすでしょう。

その女性は教師ではありません!コーディングのイントロとしての10進数からバイナリへ?恐ろしい!

それはフェニックスの大学(ha!)ですか?

3
Pete Wilson

本物のプログラミング言語、本物の人間、または実世界のようなものはありません。 PHPでプログラミングできるのであればプログラマーです。

1
BobTurbo

更新:投票する前に注意深く読んでください、これはPHP/Javaへの私のアプローチではありません、私は彼の先生がPHP/Javaをどのように見ているかを見ようとしています事。ありがとう。

あなたの先生が思ったと思うこと:PHPはwebserver内でロックされている言語で、主にWebページを生成するために使用されます。

一方、JavaはWebページにも使用される汎用言語ですが、電子レンジや自動車のような他の業界で使用され、デスクトップを書くことができますJavaなどのアプリケーション.

これを念頭に置いて、あなたの教えた人が「PHPは本当のプログラミング言語ではない!」と言った理由は理解できます。

私は偏っていません、私は両方が好きではありません、Java&PHP :) ...しかし、両方を使用する必要があります

1
dwich

「だから、「プログラミング言語の定義」では、何がPHPではなく「適切な」言語になりますか?」

本当の理由は、ほとんどの人が汎用アプリケーションプログラミング言語としてそれを使用しないという事実です。

これは、常により適切な言語が存在するためです(1つの例外を除いて、何PHPはWebプログラミングのために作成されました)。PHP is "他の異なる言語と比較した場合の問題の例には、安定した移植可能なGUIツールキットの不足(少なくともWindows/MacOS上)、スレッド化の不足、速度の不足などがあります。オン。

最終的に、PHPで一般的なアプリケーションを作成する人は、ほとんどがプログラミング言語としてPHPをよく知っている人です。PHPで新しいアプリケーションをゼロから作成する理由はありません。ほとんどの実験的または才能のあるプログラマーは、これを検討することは決してないでしょう。

0
Cerpheus

確かに、PHPはプログラミング言語です。基本的にチューリング完全言語です。つまり、その「力」は他のプログラミング言語の「力」と等しいことを意味します。厳密な(実際に存在する)と比phor的な意味(PHPを使って生計を立てている人がいます)ですので、あなたの教師は何らかの形で偏っているようです。

ただし、先生の態度にはいくつかのポイントがあります。 PHP and Java根本的に異なる背景から来ています。有用であるにもかかわらず、PHPは非常に無秩序です。 Java PHP関数の標準ライブラリ-後者は無関係なツールの巨大なセットのように見えます。さらに、多くのPHPチュートリアル。プログラミング方法を学習しているので、優れたツールを使用して学習するのが最善です。Javaは、 PHPよりもプログラミングを学びます。

PS。 Googleが「PHPが悪い」という情報を得るには、PHPは世界最高のツールではありません。

0
el.pescado