3

私はしばらくの間プログラミングをしており、Java と PHP と Web サイトにかなり精通しています。私が混乱しているのは、プログラマーがそれらを一緒に使用する方法です。Facebook と Google が Python、C、Java、PHP などのあらゆる種類の言語をすべて 1 つの製品に使用しているという話を耳にしますが、それがどのように可能になるかについては混乱しています。

また、別の副次的な質問: Twitter や Facebook のような大規模なオンライン企業で働くソフトウェア エンジニアは、具体的にどのような仕事をしているのでしょうか? ほとんどのコードはデータベースと情報を扱っているため、いくつかのチュートリアルでオンラインで学べるもの以外に、サーバー側で実行する必要があるメジャー レベルのプログラミングは何でしょうか?

4

4 に答える 4

6

これは信じられないほど広い質問ですが、ここでは漠然とした答えを示します。多くの場合、大規模なアプリケーションには多数のコンポーネントが含まれます。たとえば、何らかのレポート エンジン、ビジネス ロジック、Web インターフェース、デスクトップ インターフェース、Web サービス API、モバイル インターフェースなどがあるとします。理論的には、これらはそれぞれ異なる言語で記述され、データベースまたは Web サービスのようなもの。

2番目の質問に。大企業では、安定性を維持し、新機能を開発し、発見されたバグを修正し、効率を向上させるためにやるべきことがたくさんあります。たとえば、Facebook (および Google) は、多数のソフトウェア エンジニアを採用して、毎日受け取る大量のボリュームに対処するのに役立ちます。

編集ここでは、もう少し明確にし、質問に対する直接的な回答を示します。

ほとんどのコードはデータベースと情報を扱っているため、いくつかのチュートリアルでオンラインで学べるもの以外に、サーバー側で実行する必要があるメジャー レベルのプログラミングは何でしょうか?

真実は、ほとんどの場合、高レベルのプリンシパルは同じです。Web で基本的な PHP/MySQL チュートリアルを実行した後、Facebook クローンを簡単に作成できます。違いは次のとおりです。あなたのクローンは、Facebook が日常的に目にするユーザーの一部に到達する前に死んでしまいます。SQL インジェクションやその他の悪意のある攻撃によってデータが常にハッキングされるため、速度が遅く、信頼性が低く、人々が離れていきます。そして、それは分散コンピューティングについてさえ話していません。ですから、はい、大まかに言えば、知っておく必要があるのはそれだけです。実装と現実は、はるかに複雑です。

于 2012-04-08T23:39:31.610 に答える
0

ご想像のとおり、この種のアーキテクチャには数千人の同時ユーザーへのスケーリングに深刻な問題があるため、大規模な「Webサイト」は、PHPコード、HTMLテンプレート、およびデータベースがあるという従来の意味では構築されません。

これを軽減するためにできることは、Webサイトをいくつかのコンポーネントに分割することです。

  1. 複数のアプリケーションサーバーにリクエストを分散するロードバランサー
  2. UIを生成し、ユーザーアクションを処理するアプリサーバー
  3. ビジネスロジックを処理し、それをDBサーバー間で分散するミドルウェアサーバー
  4. 何らかの方法でデータを保存するDBサーバー

このシステムのすべてのコンポーネントは異なる言語で実装されている可能性があり、リクエストの種類(モバイルデバイスなど)に応じて異なるアプリサーバーを使用している場合もあります。

このタイプのシステムは、多層アーキテクチャと呼ばれます。このトピックに関する学術書もあります。

于 2012-04-08T23:45:14.203 に答える
0

最も複雑な製品は、多数の部品で構成されています。たとえば、StackExchangeには、ブラウザで実行できるようにJavaScriptで記述されたブラウザで実行されるコードがあります。ただし、Webページを作成するコードはブラウザーで実行されないため、JavaScriptで記述されていません。また、複雑なデータベースクエリが必要な場合は、SQLで実行される可能性があります。大きなパズルの各ピースは、そのピースが行うこととそれが実行される環境に最も適した言語で実装されています。

Gmailについてありがとう。JavaScriptで書かれたブラウザ内の部分があります。Webサーバー、データベース、メールサーバー、バルクストレージシステム、インデックス作成、その他多くの要素もあります。

于 2012-04-08T23:52:40.233 に答える
0

これがあなたが探している実際の答えです
Web サイトで C および C++ アプリケーションを使用する方法がわからないため、混乱していますが、多くのことに使用されていることを伝えたいと思います。その画像のアドレスをパラメーターで渡してプログラムを実行すると、アプリケーションは画像を検証します...そして、将来の使用のためにいくつかのデータを保存する必要があります。そのため、アプリケーションは共通のデータベースを使用します。サイトが使用している場合、googleplus に画像をアップロードすると、人の顔が見える部分にタグの候補が読み込まれ、そのアプリによって行われ、画像データが google が使用している共通のデータベースと php に保存されます。そこからその情報を取得します。これは、より機能的な Web サイトを開発する手法です。たとえば、ローカルホストで作業中に自宅のコンピューターをシャットダウンするプログラムを作成しました。

<?php
$command="shutdown -s -f -t 5";
shell_exec($command);
?>

このスクリプトをApacheで実行すると、サーバーがシャットダウンされ、同様に、Cpanelがインストールされていない独自のサーバーのコマンドラインで電子メールアカウントを作成する場合など、いくつかのアプリにパラメーターを渡すことができます...
そして2番目の部分の答えあなたの質問:
実際、ソフトウェア エンジニアは、ウェブサイトの機能を向上させるためにサーバーで実行できるアプリを開発するために雇われています... たとえば、ウェブサイト用のウェブスクリプト言語しかない場合、Google は顔も認識できませんでした。 Facebook、人工知能はウェブサイトでは不可能です..
この投稿はあなたの混乱を解消するかもしれません...

于 2012-04-09T06:33:00.013 に答える