私は特効薬を探しているわけではありませんし、個々の PHPer に戦争を始めるよう求めているわけでもありません。Zhihu についても同様の質問がありますが、PHP、Java、それぞれのプログラミング言語の特徴や利点は何ですか。 Python、C、C++? - C (プログラミング言語) ですが、とてもかわいくて賢いので、初心者が本当に知りたい質問はいくつかありません。
たとえば、PHP は WEB 開発とデスクトップ開発に使用できますが、PHP で開発されたデスクトップ ソフトウェアは存在しないため、実際には PHP という言語の方が Web 開発に適しており、これは正しい PHP のいくつかのレビューです。言語はツールであると言われますが、適切なタイミングで適切なツールを使用する必要があります。その機能を理解していなければ、どうやって使えばよいのでしょうか。しかし、言語の特性を理解するには、それを使用する一定の経験がある人だけが聞く必要があります。私がこの質問をする理由は、経験豊富な人々からこれらの特性を理解し、そこから学ぶためです。本当は言語戦争などを始めるつもりはなかった。
ご回答ありがとうございます ~ > _ 返信内容:
まず、「合理的」の定義が明確ではなく、「良いか悪い」という言葉も明確ではないため、この質問に明確に答える方法はありません。私は自分の意見しか表現できません。
ここでは、シリコンバレーの起業家精神のゴッドファーザーである Paul Graham の記事「Beating the Average」をおすすめします。まずは読んでみてください。
質問者が言うように、「PHP は WEB 開発とデスクトップ開発に使用できますが、PHP で開発されたデスクトップ ソフトウェアは存在しないため、PHP という言語は実際には Web 開発に適しているという評価です。」 PHP 「すべての汎用プログラミング言語 (General Purpose Programming Language) はチューリングと同等であり、計算能力に違いはありません。しかし、多くの人がデスクトップやネットワークのプログラミングにチューリング マシンを使用することを好まないのはなぜですか?」アプリケーション? !なぜみんなアセンブリを使わないのでしょうか? !したがって、コンピューター言語の長所と短所を議論する場合、チューリングの等価性に頼るのは非常に低コストな方法にすぎません。しかし、計算パフォーマンスの観点から見ると、すべての言語がパワーを待っているのは事実です。では、私たちが通常、ある言語が他の言語よりも強力であると主張するとき、私たちは何を議論しているのでしょうか。 !それとも、同じ主題の新しいバージョンが古いバージョンよりも強力であるということでしょうか? あるいは、もっと明確に言うと、Java 1.8 にはラムダがあるため、Java 1.7 よりも強力なのでしょうか? Java 1.5 ではジェネリックスが導入されていますが、1.4 よりも強力ですか? Python 3.5 には async コルーチンと await コルーチンがありますが、Python 3.5 は Python 3.4 よりも強力ですか?まず、新しいバージョンはより強力だと思います。ジェネリックの導入により、Lambda では関数を明示的に含めなくてもオブジェクトにラップできるようになりました。 Python のコルーチンは、プログラム フローの制御をある程度自由にします。また、ほとんどすべての機能は古いバージョンでも実装できるため、言語がさらに強力になっていないとも感じますが、それはよりイライラさせられます。 でも、でも1.5 で導入されたジェネリックを補うためにライブラリを使用できますか?明らかにうまくいかないようです。したがって、ライブラリで補える機能とライブラリで補えない機能に分けることができるため、1.4 よりも 1.5 のほうが本当に優れているという議論は起こらないはずです。この点。しかし、Java 1.8 が 1.7 よりも優れているかどうかについては、また議論していただいても構いませんが、この議論には何の成果もないと思います。
言語の方が優れているかどうかについては、私の定義では、言語 A の特性は言語 B のライブラリで補うことはできず、B が言語 B を使用できる場合、この特性では言語 A の方が優れています。 library A のこの特性を補うために、A の方が優れているかどうかは議論の余地があります。 私は通常、この種の論争を避けるか脇に置きます。
明らかに、C 言語はアセンブリよりも優れているはずです。まず、C 言語はより多くの型と構造を定義できますが、第 2 に、C 言語には 3 種類の制御フローがあります。ステートメント、シーケンス、条件、ループ (最初に提案したのがマッカーシーかダイクストラかホールだったか忘れましたが、知っているなら教えてください) アセンブリ ライブラリがどれほど強力であっても、C 言語の文法上の利点を補うことは不可能です。しばらくの間のように。
以下は純粋に個人的な意見です:
では、Java は C++ よりも優れているのでしょうか? Java には自動メモリ リサイクルがあり、C++ にもスマート ポインターがあります。唯一の違いは学習コストです。他の場所では、Java には C++ ライブラリでは補えない機能もいくつかあります。
Java は C 言語よりも優れていますか? Java のオブジェクト指向の考え方は抽象的な問題にすぎず、C 言語でもオブジェクト指向プログラミングが可能です。しかし、範囲外の配列インデックスなど、Java の方が実際に優れている側面もあります。
Haskell は Java よりも優れていますか?答えは「はい」です。 Haskell には、Java では利用できない数百行または数千行のコードの作成を節約できる機能が多数あります。
この記事は Blub と呼ばれるパラドックスを示しています:
Cobol やアセンブリ言語よりも強力な言語である Blub 言語 (架空の言語) を使用するプログラマーがいます。アセンブリの場合、それがコンパイラが望んでいることだからです。 Cobol に関しては、Blub を使用するプログラマは、Cobol プログラマが Cobol を使用して物事を成し遂げる方法を知りません。Cobol には XXX 機能さえないため、このプログラマは Cobol やアセンブリの使用方法を知りません。
この Blub プログラマーが Blub ほど強力ではない他の言語を見下すたびに、この能力の欠如は非常に明らかです。なぜなら、これらの言語には Blub プログラマーが使い慣れている機能がないからです。そして、彼らはより強力な言語に目を向けても、自分が上を向いているとは感じません。彼らが目にしているのは奇妙な言語 (ここで著者は Lisp を指しているはずです) だけであり、彼らは Blub がそれと同じくらい強力であるが、その中には奇妙なものがたくさん含まれていると考えています。 Blub で十分です。Blub の観点から考えます。
パラドックスはここで終わります。
これが言語論争の原因かもしれません。ほとんどの人は、使い慣れた言語が 1 つあれば十分です。この言語での考え方にすでに慣れています。後者はひどいです。
(ここで誰かが中国人に尋ねました。なぜ勉強するのですか? ここの「なぜ」の後には動詞が続きます。私たちは習慣的に目標について考えます。たとえば、中国の台頭のために勉強するなどです。巡礼のため、学び続けること、すべての世代に平和をもたらすには、常に目標が必要です。なぜここが英語で「for」に相当するのでしょうか。外国人はこの質問に次のように答えるでしょう。「知識自体が学ぶ価値があるからです。」外国人はユークリッドです。彼はギリシャ人で英語は話せないかもしれませんが、コンピュータ言語はもちろんのこと、自然言語は私たちの思考を制限すると言いたいだけです)
たとえば、再帰言語では、 、アセンブリでは、あなたが考える言語は常にいくつかのことをループするだけであり、これらのレジスタの山を処理するためにどの命令を使用するべきかだけを考えます。だから、飛び出して、今慣れ親しんでいるものを壊して、忘れてもう一度始めるべきです。Haskell、F#、Lisp、Scala、Scheme、Clojure、Ocaml、Erlang を見てみると、世界は豊かでカラフルです。 Haskell や F# には、Java、C++、C# のライブラリでは決して補うことができない機能がたくさんあります。しかし、これは Haskell と F# を使用しなければならないという意味ではありません。私が見たくないのは、あなたが長年 C 言語と C++ 言語を専門としていて、その後 Go の勉強に多くの時間を費やしたということです。 Python は十分ではないと思うので、新しいアイデアが得られるでしょう。
最後に Beating the Average からの引用:
アセンブリですべてのプログラムを手書きするのは間違いであることは誰もが知っていますが、より一般的な原則に気づいている人はほとんどいません。から、ほとんどが同じなら強力なものを使わないと間違いです。
もちろん、この原則には例外があります。既存のプログラムと連動するプログラムを作成する必要がある場合は、元のプログラムと同じ言語を使用することをお勧めします。ビットを操作するような非常に単純なプログラムを書く必要がある場合は、抽象化能力の低い言語で十分であり、高速になります。作成後に破棄されるような短いプログラムを作成したい場合は、作業を迅速に完了できる最も強力なライブラリを備えた言語を使用する必要があります。しかし、一般的なアプリケーション ソフトウェアの場合は、自分が知っている最も強力な (そして効率的な) 言語を使用する必要があります。アセンブリ言語など、他の同様の言語を使用するのは間違いです。
以下は、Wang Xiaobo の記事「就業経験」からの転載です。
出典、王暁波氏の著書
オンラインで読める最も静かな小説
テキスト作業体験
ソフトウェア会社の上司が以下の例に従わないことを願っています。
私は米国に留学していたとき、さまざまな雑務を働きました。あるとき、上海から来た老操さんと私は、中華料理店のために家を改築しに行きました。このレストランのオーナーは上海人で、口は尖っていて、頬は猿のようで、非常にケチです。人生の半分を料理人として過ごし、お金を貯めて、自分のレストランを開きたいと考えていますが、ちょっとしたことです。緊張している。曹操の言葉で言えば、この顔は本当に醜いです。仕事の初日、彼は私たちにこう言いました。「お金を節約するためだけにあなたたち二人を雇ったのです。そうでなければアメリカ人を雇ったほうがいいでしょう。」このプロジェクトは私の希望通りに行われなければなりません。使いたい道具や材料を教えていただければ、購入させていただきます。私を利用しようとしないでください...今の若者は本当に頭を使わず、ただ論文を書くために使える知識を求めているだけなんです、甘いと言うか悪意があると言うか本当に分かりません。学校では宿題をサボってばかりで、社会に出ると盗作ばかりしてしまう彼らは負け組です。
以前、アメリカが先進的な技術とビジネスを持っていることは知っていましたが、アメリカがまださまざまな国であるとは知りませんでした職人たち。私たちが働いている通りには、電気技師、配管工、大工などの大規模なグループのほか、装飾プロジェクトを担当する小さな請負業者もいます。彼らは私たちが仕事を始めると聞くとすぐに見に来ました。私たち。まず、私たちが大ハンマーやハンマーを振り回す姿を笑顔で見ていたが、それから私たちはボスを見つけるために後ろに走って行き、こう言った、「もしあなたが雇ったこの二つの宝物が今世紀中にこのレストランの改装を完了できたら、私は負けます」あなたは百ドルです。本当に耐えられず、ドリルを捨てたかったです。しかし、老操は歯に唾を吐き、「無視する!」と言いました。今世紀中に仕事を終わらせることはできないし、次の世紀もあるでしょう。とにかく、チーラオは私たちに賃金を支払わなければなりません...
諺にあるように、ダイヤモンドを持っていないならやめてください。磁器の仕事に就かないでください。家を飾る方法を知らずにこの仕事を引き受けるのは私たちの責任です。よくわかりませんが、力があれば小さな仕事をする資格はあります。老曹はもともと湖東造船所の出身で、船室の装飾を専門とする銅の労働者から昇進した技術者でした。彼は常々、レストランの装飾方法を知りませんでした。今はそれが最優先事項だといつも言っていました。道具を買ったりレンタルしたりすることはできますが、チラオのボスはいつも、他人を利用しようとしないでくださいと言いました。些細な利益に貪欲であると疑われるよりは、一生懸命働いてお金を稼ぐ方が良いでしょう。
徹底的に叩きのめした後、私たちはこのストリートで一定レベルの尊敬を獲得しました。ちなみに、私はセメントブロックを一つずつ取り出してゴミ箱に捨てました。 上司は台車を借りることに消極的でした。人件費を払ってから道具をレンタルすると損をすると感じたのだ。アメリカの職人たちが通りかかると、いつも雑談をしに来て、私たちの勤勉な仕事に深い敬意を表します。しかし彼らは、これはあなた方二人の仕事のやり方ではないと言いました。正直に言うと、彼らは皆、この改修プロジェクトを引き継ぎたいと考えていますが、価格については合意できません。次のステップは、古い間仕切り壁を取り壊すことです。とても簡単なことだと思って、大ハンマーを振って叩いただけで、たった一撃で上司に止められました。壁の木が壊れるだろうと彼は言った。隔壁にあった木はボロボロの木切れだけだった。しかし、上司はそれを床を作るために使うと言った。そこで、腐った木から釘を一本ずつ掘り出しました。アメリカ人たちは私たちを見て、何をしているのかと尋ねました。私が真実を話すと、アメリカ人たちはお腹を覆い、地面にしゃがみ込み、その場で転がりながら笑いました。今回は、老曹も我慢できず、私が話しすぎたと責めました...
釘を仕上げた後、新しい木材をいくつか購入しました。上司が私たちの大工仕事を試したいと言っています。まずはドアを作りましょう。老曹は木を切るのに鋸を使いました。「この鋸はそんなものではないと思います。木をまっすぐに丸く切ります。」なぜこれまで見てきた鋸とこれほど違うのでしょうか?私が仕事をしていると、アメリカ人の大工さんが来ました。彼は微笑んで、私たちが何をしたのか尋ねました。私は留学する前は大学の教師をしていましたが、学校に恥をかかせるわけにはいかないので言えません。老操の出自を語ることは湖東造船所の恥となるので言えない。私は言いました:私たちはアーティストです。これはまったくの嘘ではありません。私は海外に行く前に小説を出版していましたが、老曹は絵がとても上手で、彼の作品は上海の労働者芸術展にも出品されていました。私はひそかに誇りに思っています。私たちの芸術的気質は、他の人が一目見てわかるほど強いのです。思いがけず、彼はこう付け加えた。「あなたほど働く労働者はいないよ!」老いた美女が立ち去るとすぐに、老操はのこぎりを落として叫び始めました。このノコギリの正しい使い方は、庭の枝を切ることだということが分かりました...
私たちはチラオのボスの下で 1 か月以上働き、数百ドルの給料を稼いでいましたが、レストランは依然としてレストランではなく、冷蔵倉庫ではなく、廃品置き場のように見えました。あっという間に夏が過ぎ、秋が来て、学校に戻る時期が来ました。上司の顔はますます醜くなり、私たちに毎日残業するように促しました。彼は促しても無駄で、手にはハンマーと鉄の棒を持っていて、いくら頑張っても仕事ができませんでした。その通りにいるアメリカ人の職人たちもその匂いを嗅ぎ、私たち二人がバカにしているのを見ながら、全員がドアの前に集まり、チーラオのボスが彼らにプロジェクトを引き渡すのを待っていました。そんな状況下では老操も耐えられなくなり、ついに私との仕事を辞めてしまいました。したがって、このプロジェクトは熟した桃のようにアメリカ人の巨匠の腕の中に落ちました。元々は仕事を辞めて退職するタイミングでした。しかし、老曹は依然としてアメリカ人がどのように働くのかを見たいと考えている。彼は、このプロジェクトは卑劣に行われたが、それは彼のせいではなく、すべて悪い考えに満ちた赤い男のせいだと言いました。もし彼が望むようにやれば、外国の悪魔に中国人がどのように働くかを示すことができます...
アメリカの請負業者がプロジェクトを引き継ぎ、すぐに電気技師に分担しました、大工、配管工、今朝はあなたの午後、今日の午後は彼の午後、明後日は私の午後など。何度か電話をした後、トラックにいっぱいの道具を積んで誰かがやって来ました。私のことは言わないでください、老曹ですらこんなものは見たことがありません。電動ノコギリやカンナのほかに、屋内で運転できるバッテリー駆動のフォークリフトもあり、5 を 2 で割った 3 ストロークで、置き去りにされたガラクタを家の外に押し出すことができます。電気屋さんは電動昇降台に乗り、天井からワイヤーを上下に張り巡らせ、その下では大工さんが非常に熟練した技術で床を組み立てていました。既製のコンポーネントを使用していますが、作業が非常に速いことは認めざるを得ません。設置後、電気カンナが走り去り、明るくなったので、作業が終わると、すぐに機械を運び出し、新しい作業員と機械が入ってきて、あっという間にレストランの様子になりました。 .. 老曹と私は見てみました しばらくすると、彼は落胆して立ち去りました。なぜなら、私たちは皆労働者であり、尊厳を持って働く方法を知っているからです。