質問

クラスでは、停止問題、チューリングマシン、リダクションなどについて学びました。多くのクラスメートは、これらはすべて抽象的な概念であり、役に立たない概念であると言っています。コースは終了し、何も失うことはありません。)

理論が役立つのはなぜですか?日常のコーディングで使用したことがありますか?

役に立ちましたか?

解決

大学を卒業したとき、私は他の皆と同等であると仮定しました:<!> quot;私はCSでBSを持っているので、他の多くの人と同じように、私たちは基本的に同じことをすることができます。<!> quot;最終的に、私の仮定が間違っていることを発見しました。私は際立っており、私のバックグラウンドはそれと関係がありました。特に私の学位です。

<!> quot; slight <!> quotが1つあることは知っていました。違いは、<!> quot; B.S。<!> quot;私の大学はCS学位プログラムの認定を取得した国で最初(1987年に2番目と思われる)の1つであり、その認定を取得するために2番目のクラスを卒業したためです。当時、私はそれがそれほど重要であるとは思いませんでした。

高校や大学でも、CSで特によくやったことに気づきました。同僚よりもはるかに優れており、多くの教師よりも優れています。私は多くの助けを求められ、いくつかの個別指導を行い、研究プロジェクトを支援するように頼まれ、誰もいないときに独立した研究を行うことを許可されました。手伝うことができて嬉しかったが、その違いについてはあまり考えなかった。

大学(USAFA)の後、私は空軍で4年間過ごしましたが、そのうち2人はCS学位を申請していました。そこで、同僚のほとんどがコンピューター関連の学位やトレーニングさえ持っていることに気付きました。空軍は、5か月の認定トレーニングに私を派遣しましたが、そこで再び学位やトレーニングの不足に気付きました。しかし、ここで私は違いに気付き始めました-私が出会った人々の多くが彼らが何をしているかを本当に知らなかったことが完全に明らかになりました、そしてそれは訓練または学位を持つ人々を含みました。説明してください。

空軍の認定トレーニングでは、合計13人(私を含む)でした。空軍士官または同等の人として、私たち全員が理学士号を取得しました。私は年齢とランクに基づいて中間にいました(私は6人のO-1と6人のO-3以上のうちO-2でした)。この訓練の終わりに、空軍は私たち全員に、国防総省の任意の部分のコンピューターまたは通信システムを取得、構築、設計、保守、および運用するための同等の能力があるとゴム印を押しました。

ただし、13人のうち、コンピューター関連の学位を取得したのは6人のみでした。他の7人は、航空学から化学/生物学、心理学までの学位を持っていました。 CSの学位を取得した6人のうち、2人はどんな種類のプログラムも書いたことがなく、コンピュータを何気なく使用したことはありませんでした(論文の執筆、ゲームのプレイなど)。私たちの別の2人が、CS学位プログラムの間に1台のコンピューターで正確に1つのプログラムを書いたことを知りました。他の1人と私だけが複数のプログラムを作成したか、複数の種類のコンピューターを使用しました。実際、2人が多くのプログラムを作成し、多くの種類のコンピューターを使用したことがわかりました。

5か月のトレーニングの終わりに向けて、クラスにはプログラミングプロジェクトが割り当てられ、4つのグループに分かれて個別に実施しました。インストラクターがクラスを分割して、<!> quot;プログラミングの才能<!> quot;を広めました。そして、チームリーダー、技術リーダー、開発者の役割を割り当てました。各グループには、インストラクターが提供するフライトメカニクスライブラリの上にフライトシミュレータ用のフルスクリーンのテキストベースのユーザーインターフェイス(1990年)を(Adaで)実装するための1週間が与えられました。私は4人のチームの技術リーダーとして割り当てられました。

私のチームリーダー(コンピューターの学位を持っていなかった)は、プロジェクトをタスクに分割するように他の3人に依頼し、それぞれの3分の1を割り当てました。その最初の日の半ばまでに3番目のタスクを完了し、残りの2時間を他の2人のチームメイトの支援、チームリーダーとの会話(BSing; ^)、およびコンピューターでのプレイに費やしました。

翌朝(2日目)、私のチームリーダーは、私たちの他の2人のチームメイトが進歩していないことを個人的に通知しました(1人は実際に<!> quot; if <!> quot;コンパイルするステートメント)、彼は私に彼らの仕事を引き受けるように頼みました。午後半ばまでにプロジェクト全体を終了し、私のチームは残りの時間をシミュレータの飛行に費やしました。

同程度のCS学位を持つ他の男も彼のチームの技術リーダーとして割り当てられ、3日目の終わりまでに終了しました。また、シミュレーターの飛行を開始しました。他の2つのチームは、週の終わりまでに終了していないか、大幅な進歩さえしていませんでした。私たちは他のチームを助けることを許されなかったので、そこに残されました。

その間、3日目の半ばまでに、フライトシミュレーターが<!> quot; wrong <!> quot;を振る舞うように見えることに気づきました。私のクラスメートの一人が航空学の学位を取得していたので、彼にそれについて尋ねました。彼は謎に包まれ、飛行機が飛ぶ原因を実際には知らなかったと告白しました!?!びっくりしました!彼の学位プログラム全体は、安全性と衝突調査に関するものであり、飛行の背後にある実際の数学や科学ではないことが判明しました。一方、私はおそらく航空学の未成年者でした(USAFAを覚えていますか?)が、翼を設計し、実際の風洞試験を実施しました。そのため、シミュレーターが<!> quot; right <!> quot;。

を飛ばすまで、インストラクターが提供するフライトメカニクスライブラリの書き換えを静かに過ごしました。

それ以来、私は20年近く、請負業者として、また時には従業員として、常にソフトウェア開発と関連活動(DBA、アーキテクトなど)を行ってきました。私は同じことをもっと見つけ続け、最終的には若々しい思い込みをあきらめました。

では、正確に何を発見したのですか?すべての人が平等であるとは限らず、それでいいのです。効果的にプログラムできるので、私はより良い人ではありませんが、あなたが私から必要なものであれば、私はより有用です。私のバックグラウンドが本当に重要であることを学びました:     電気技師と電気技師の家族で育ち、     電子機器キットの構築、     私は実際のコンピューターにアクセスできなかったため、学校/公共図書館のすべてのコンピューターの本を文字通り読む     それから私の高校がコンピューターを持っていた新しい都市に移動し、     その後、自分のコンピューターをプレゼントとして受け取り、     多くの異なるサイズと種類のコンピューター(PCからメインフレーム)があった学校に通う、     非常に良い工学学校から認定された学位を取得し、     さまざまな種類のコンピューターでさまざまな言語の多くのプログラムを作成する必要があり、     ハードプログラム(カスタムアセンブリ言語を使用した自分の仮想マシン、ハフマン圧縮の実装など)を作成する必要があります。     自分でトラブルシューティングする必要がある     部品から自分のコンピューターを構築し、すべてのソフトウェアをインストールします。     など。

最終的に、私は自分の能力が、コンピューターがどのように電気レベルから動作するかを知る基盤の上に構築されていることを学びました-ディスクリート電子部品、回路、サブシステム、インターフェース、プロトコル、ビット、バイト、プロセッサー、デバイス、ドライバー、ライブラリ、プログラム、システム、ネットワーク、現在私が日常的に取り組んでいる大規模なエンタープライズクラスの大企業まで。だから、いまいましいことがうまく行かないとき、私は正確にHOWとWHYを知っている。そして、何ができないか、何ができるかを知っています。そして、私は何が行われ、何が試され、何が比較的未調査のままであるかについて多くを知っています。

最も重要なことは、すべてを学んだ後、気の毒なことを知らないことを学んだことです。潜在的に知っておくべきことすべてに直面して、私の知識はごくわずかです。

そして、私はそれに満足しています。しかし、試してみることをお勧めします。

他のヒント

実話:

大学院で初めてプログラミングの仕事を始めたとき、私が働いていた会社を経営していたのはパイロットでした。私が雇われてから数週間後、そのうちの一人が私にこの質問をしました:

  

アーカンソーには106の空港があります。   あなたがするプログラムを書くことができます   に必要な最短の敗走を見つける   それらのそれぞれに着陸しますか?

私は、彼が巡回セールスマン問題とNP完全性についての私の知識について質問していると真剣に思っていました。しかし、彼はそうではなかったことがわかりました。彼はそれについて何も知りませんでした。彼は本当に最短経路を見つけるプログラムを望んでいました。 106階乗の解決策があり、最良の解決策を見つけることはよく知られている計算上困難な問題であると説明したとき、彼は驚きました。

これが一例です。

もちろん、便利です。

テンプレートエンジンで作業している開発者を想像してください。あなたはそのようなことを知っています...

Blah blah blah ${MyTemplateString} blah blah blah.

簡単なものから始まり、置換を実行するための生意気な小さな正規表現があります。

しかし、徐々にテンプレートが少し派手になり、開発者は文字列のリストとマップをテンプレート化する機能を備えています。それを達成するために、彼は簡単な小さな文法を書き、パーサーを生成します。

非常に巧妙になったテンプレートエンジンには、引数の値に応じて異なるテキストブロックを表示する条件付きロジックの構文が最終的に含まれる場合があります。

CSの理論的背景を持つ人は、テンプレート言語が徐々にチューリング完全になりつつあることを認識し、インタープリターパターンがそれを実装するのに良い方法である可能性があります。

テンプレート用のインタープリターを作成した場合、コンピューター科学者は、テンプレート要求の大部分が重複しており、同じ結果を何度も繰り返し生成していることに気付くかもしれません。そのため、キャッシュが開発され、高価な変換を実行する前にすべてのリクエストがキャッシュを介してルーティングされます。

また、一部のテンプレートは他のテンプレートよりもはるかに複雑で、レンダリングに時間がかかります。たぶん、誰かがテンプレートをレンダリングする前に各テンプレートの実行を見積もるというアイデアを得ます。

しかし、待って!!!チームの誰かが、テンプレート言語が実際にチューリング完全である場合、各レンダリング操作の実行時間を推定するタスクは停止問題のインスタンスであると指摘しています!!いいや、やらないでください!!!

理論に関することは、実際には、すべての実践は理論に基づいているということです。理論的に。

最もよく使うもの:

  • 計算の複雑さにより、適切に拡張するアルゴリズムを記述する
  • メモリ割り当て、ページング、CPUキャッシングの仕組みを理解し、効率的なコードを記述できるようにします
  • データ構造の理解
  • スレッド化、ロック、および関連する問題の理解

チューリングマシンなどに関するものについては、私たち全員が動作する制約を定義しているので重要だと思います。感謝することが重要です。

代数の学習と計算機の使い方の教え方の違い

代数を知っている場合、同じ問題が異なる形式で現れる可能性があることを理解し、問題をより簡潔な形式に変換するための規則を理解します

電卓の使用方法しかわからない場合は、(a)すでに解決済み、(b)解決できない、または(c)他の問題のような問題でボタンを押すのに多くの時間を費やす可能性があります(解決済みまたは未解決)異なる形式であるために認識されない

しばらくの間、コンピューターサイエンスは物理学であると考えます...質問はばかげているように思えますか?

私の友人は、いくつかのテンプレートを使用して言語の作業を行っています。私は少しコンサルティングをするように頼まれました。テンプレートがチューリング完全である場合、VMのようなプロパティと、コンパイラがそれをどのように/どのようにサポートするかを実際に考慮する必要があるため、ディスカッションの一部はテンプレート機能についてでした。

私の話はここまでです。オートマトン理論はまだ関連性があるため、まだ教えられています。停止の問題はまだ存在し、実行できることの制限を提供します。

今、これらのことは、データベースの騎手がC#コードを打ち立てることに関連していますか?おそらくない。しかし、より高度なレベルへの移行を開始するときは、ルートの<!> amp;を理解する必要があります。基礎。

日常の業務に直接適用するわけではありませんが、正式なコンピューターサイエンスに関する教育が私の思考プロセスに影響を与えていることは知っています。正式なアプローチから学んだ教訓があるので、確かに最初から間違いを避けています。

学習中は役に立たないように見えるかもしれません。しかし、クラスメートは最終的に、彼らが教えられたもの、または少なくともその背後にある思考パターンを使用するという問題に出くわすことになります...

ワックスオン...ワックスオフ...ワックスオン...ワックスオフ...とにかく空手とはどういう関係があるのですか?

ある仕事で、私は配電モデルのネットワークトレースアルゴリズムを改善するタスクを割り当てられました。彼らが使用していたアルゴリズムが遅すぎるためです。 3相ネットワークは、本質的に3つのnツリーでした(電気ネットワークではループが許可されていないため)。ネットワークノードはデータベース内にあり、元のチームの一部はインメモリモデルを構築する方法を把握できなかったため、トレースはデータベースの連続した深さのSELECTによって行われ、各フェーズでフィルタリングされました。したがって、ノードをトレースするには、変電所から10個のノードに少なくとも10個のデータベースクエリが必要になります(元のチームメンバーはデータベースの奇抜でしたが、アルゴリズムの適切な背景が欠けていました)。

ノードの3つのnツリーネットワークをデータベースからデータ構造に変換するソリューションを作成しました。各ノードはノード構造配列に一度格納され、nツリーの関係は二重を使用して3つのバイナリツリーに変換されました。配列内のリンクされたポインター。これにより、ネットワークをどちらの方向にも簡単にトレースできます。

それは少なくとも2桁速く、3つは非常に長い下流のトレースでした。

悲しいことは、nツリー、バイナリツリー、ポインター、および二重リンクリストのクラスを、データベースとVBについてトレーニングされた他のプログラマーに理解してもらうために、実際に教える必要があったことです。アルゴリズム。

<!> quot; how <!> quot;の間の古典的な二分法です。および<!> quot; what <!> quot;。クラスメートは<!> quot; how <!> quot;を見ていますソフトウェアをプログラムするために、彼らは近い焦点に非常に焦点を当てています。その観点、実装の観点からは、停止状態やチューリングマシンのようなものを知ることは重要ではないようです。

<!> quot; How <!> quot;ただし、コンピュータサイエンスで行うと予想される実際の作業はほとんどありません。実際、私が知っているほとんどの成功したエンジニアは、おそらく実際の仕事の20パーセント未満でそれを置くでしょう。 <!> quot; What <!> quot;行うことがはるかに重要です。そのためには、コンピューターサイエンスの基礎が重要です。 <!> quot; What <!> quot;あなたがしたいのは、実装よりも設計にずっと関係しています。そして良いデザインは...まあ、それを単に<!> quot; non-trivial <!> quot;と呼びましょう。

<!> quot;ソフトウェア設計を構築するには、2つの方法があります。1つは、単純に欠陥をなくすことであり、もう1つは、非常に複雑にすることです。明らかな欠陥はありません。最初の方法ははるかに困難です。<!> quot; -C.A.R.ホア

勉強を頑張ってください!

計算の基本モデルを理解することは有用だと思います:実際にはチューリングマシンをレジスタマシンに変換する必要はありませんが、2つの非常に異なる問題が実際に同じ概念のインスタンスであることを確認する方法を学習します重要なスキルです。

ほとんどの知識は<!> quot; practical <!> quot;ではありませんが、予想できない方法でドットをつなぐのに役立ちます。または、より複雑なアイデアを説明するための豊富な語彙を提供します。

重要なのは、あなたが勉強する特定の問題ではなく、それらを勉強することで学ぶ原則です。私は毎日仕事でアルゴリズム、データ構造、プログラミング言語、およびオペレーティングシステムに関する概念を使用しています。プログラマーとして働いている場合、システムパフォーマンスに影響を与える決定を常に下すことになります。正しい選択をするためには、基本的な抽象概念の強固な基盤が必要です。

画期的な仕事をしている会社で働いている場合、アーキテクトや開発者にどのようなメリットがあるかを伝えることが重要です。あらゆる種類のテクノロジーについて多くの誇大宣伝があり、自分自身のポジショニングは難しい場合があります。科学的および理論的な用語でイノベーションを組み立てると、間違いなく有利になり、顧客はあなたが本物だと感じます。私は人々に伝えることができます:状態、エンコーディング、非決定性(すなわち複雑さ)に対処する新しい方法があり、間違いなく今日よりも生産性を高めることができます。

キャリアについて長い目で見れば、理論について学ぶことで深みが得られ、成長する必要があります。 5番目または6番目のプログラミング言語の学習に対する投資収益率は、2番目および3番目のプログラミング言語の学習よりもはるかに少なくなります。理論に触れると、自由度がどこにあるのか、どのように適切なトレードオフを行うことができるのかについて、実際のエンジニアリングの感覚が得られます。

重要な概念1)状態、2)エンコード、3)非決定性。あなたがそれらを知らないなら、彼らはあなたを助けません。理論から得られるものは、全体像と、基本概念がどのように適合するかという感覚です。直感を磨くのに役立つはずです。

例:上記の回答のいくつかは、停止の問題とチューリングマシンについて言及しています。大学でチューリングの論文に出くわしたとき、私はまったく悟りを感じませんでした。ある日、ゲーデルの不完全性定理と特にゲーデルの番号付けに出会いました。物事は多くの意味を成し始めました。数年後、私は本屋でGeorg Cantorについて読んだ。今、私は本当にチューリングマシンと停止の問題を理解し始めました。自分で試して、<!> quot; Cantor's Diagonal Argument <!> quot;を調べてください。ウィキペディアで。知的にあなたが遭遇する最も素晴らしいものの一つです。

思考の糧:状態遷移マシンを設計する方法は、典型的なチューリングマシンだけではありません。 1本のテープではなく2本のチューリングマシンを使用すると、多くのアルゴリズムの速度が大幅に向上します。 http://www.math.ucla.edu/~ynm/papers/ eng.ps

これらの洞察に私がこの本を読むことで行ったよりももっと効率的に自分自身を公開することができます。この投稿の下部にあるリンク。 (少なくとも、Amazonの目次をチェックして、これが何であるかを理解してください):

ローゼンバーグのセンセーショナルな本を見つけました。 http://www.amazon.com/The-Pillars-Computation-Theory-Nondeterminism/ dp / 0387096388 私見の理論に関する本が1冊しかない場合は、これを1本にしてください。

私がCSを卒業した後、私は同じように考えました。私たちが研究した多くの理論は実際にはまったく役に立ちません。これは短期間で正しいことが判明しましたが、複雑なタスクを扱う瞬間、理論は間違いなく実践よりも価値があります。数年のコーディングの後、誰もが<!> quot; work <!> quot;しかし、すべての人がその方法を理解できるわけではありません。パフォーマンスの問題、ネットワークの遅延、精度、スケーラビリティなど、特定の時点で私たちのほとんどが何を扱うかに関係なく、この段階では理論は重要です。複雑なシステムを扱うときに適切なソリューションを設計するためには、メモリ管理の仕組み、プロセスとスレッドの概念、メモリの割り当て方法、パフォーマンスのための効率的なデータ構造などを知ることが非常に重要です。

たとえば、ある時、私はたくさんの数学的計算を含むプロジェクトに取り組んでいて、ある時点でソフトウェアが失敗しました。デバッグ中に、いくつかの数学的操作の後、値1.000000000002のDOUBLEとして数値を受け取ったが、数学的な観点からは<!> gtにならないことがわかりました。 1プログラムの後半の段階で、伝説的な NaN 例外が発生していました。これを理解するのに少し時間を費やしましたが、<!> quot; DoubleとFloatの近似 <!> quot;にもっと注意を払っていた場合、レッスンはその時間を無駄にしなかったでしょう。

私は毎日使用していません。しかし、それは私に毎日役立つ多くの理解を与えてくれました。

CS理論の世界から日々の至福に必要なのは、マントラの発話<!> quot;低結合と高凝集<!> quot;だけであることがわかりました。 ロジャーS.プレスマンは、 Steve McConnell が流行させました。

はい、私は通常、状態図を使用してプログラムの形状とフローを設計します。 理論的に機能したら、コーディングとテストを開始し、状態を確認します。

これらは、プロセスの動作を他の人に説明するための便利なツールでもあることがわかりました。

シンプル。たとえば、 RSACryptoServiceProvider を使用している場合、それが何であり、なぜ信頼できるのかを知りたいです。

C ++テンプレートは実際にはある種のラムダ計算であるためです。 www.cs.nott.ac.uk/types06/slides/michelbrink_types_06.pdf

をご覧ください

現在、分散アルゴリズムコースの勉強をしています。フォールトトレランスについての章があり、分散アルゴリズムが正しく処理できるように、失敗(または誤動作)するプロセスの数の上限に関するいくつかの証拠が含まれています。

多くの問題では、不正なプロセスの限界はプロセスの合計数の最大3分の1です。私の意見では、これは非常に便利です(より良いアルゴリズムを開発しようとするのは無意味だとわかっているからです)。

理論コースを直接使用しない場合でも、何かをよく考えるのに役立つ場合があります。

上司があなたに何を頼むのかわからない、ジェフリー・L・ホイットレッジが言ったように、あなたはそれが有益ではないと思った何かを使わなければならないかもしれない。

正直に言うと、私はここでの多くの答えに反対です。コンパイラーのコースを受講せずに、最初のコンパイラーを作成しました(楽しみのために、本当にコーヒーが多すぎます/空き時間があります)。基本的には、別のコンパイラのコードをスキャンして、パターンに従いました。私は頭の上のCでパーサーを書くことができましたが、私の人生がそれに依存している場合、プッシュダウンオートマトンを描く方法を覚えているとは思わないでしょう。

おもちゃの(命令型)プログラミング言語に型推論を配置することに決めたとき、最初に<!> quot; typed lambda calculus <!> quot;と呼ばれるものを見つめて、おそらく5つの論文を調べました。なにが…..... **** ....?最初に<!> quot; generic variables <!> quot;で何かを実装しようとしました。および<!> quot;非ジェネリック変数<!> quot;何が起こっているのか分かりませんでした。その後、すべてを廃棄し、必要なすべてのもの(サブタイピング、ファーストクラスの関数、パラメーター化された型など)をサポートして、実際に実装する方法を考え出すノートを用意しました。 <!> amp;テストプログラムを書いている間に、理論上のがらくたを見つけようとするのに1週間以上の価値がありました。

コンピューティングの基本(つまり、仮想メモリの動作、ファイルシステムの動作、スレッド化/スケジューリング、SMP、データ構造)を知っていることは、すべて非常に有用であることが証明されています。複雑さの理論とBig-Oが有用であることが時々判明しました(特にRDBMSの設計などに役立ちます)。停止する問題とオートマトン/チューリングマシンの理論?決して。

これは古いことは知っていますが、理論は「役に立たない」と主張している人たちへの短い返信です。

基礎理論なしでは、 実践はありません。

  

理論が役立つ理由

理論は、他の物が構築される基礎となる基礎です。理論が適用されると、実践が結果となります。

今日のコンピューターを検討してください。今日の一般的なコンピューターはチューリングマシン上でモデル化および構築されています。これは、簡単にするために、計算の抽象/理論モデルです。この理論モデルは、コンピューティングの基礎にあり、ハイエンドサーバーから携帯電話まで、今日使用しているすべてのコンピューティングデバイスは、基礎となる基盤が健全であるため機能します。

アルゴリズム分析を検討します。簡単に言えば、アルゴリズム分析と時間複雑性理論を使用して、問題(P、NP、EXPなど)およびアルゴリズムの動作を分類します。さまざまなクラスのさまざまな問題を解決しようとするとき。

友人の1人がXのある場所で仕事をし、マネージャーが次の例のようないくつかの簡単なリクエストを行ったとします:

  

例1:いくつかの州のさまざまな都市を訪れる多数の配送車両があります。各車両の最短ルートを把握し、すべての可能性から最適なものを選択するシステムを実装するためにあなたが必要です。できますか?

理論を考えると、友人はトラベリングセールスマン問題(TSP)を与えられたことに気付かず、このシステムの設計を考え直さずに開始します。 >すべて最初に要求された可能性は非常に遅いため、システムは実用的な目的には使用できません。

実際、彼らはシステムが「許容範囲」で動作する理由を何も考えていない。 5つの都市をチェックするとレベルは変わりますが、10の都市では非常に遅くなり、40の都市に上がるとフリーズします。彼らは、それが only &quot; 5都市テストよりも2倍と8倍多い都市だと推論します;プログラムが「2倍と8倍の時間」を単純に必要としないのはなぜでしょうか。それぞれ...

理論を理解すれば、少なくとも一目で次のことを実現できます。

  1. TSPです
  2. TSPはNPハードです
  3. アルゴリズムの成長順序は O(n!)
  4. です。

数字はそれ自体を物語っています:

+--------------+-------+-----------------------------------------------------------------+
|  No. Cities  | O(N!) |  Possibilities                                                  |
+--------------+-------+-----------------------------------------------------------------+
|       5      |   5!  | 120                                                             |
|      10      |  10!  | 3,628,800                                                       |
|      40      |  40!  | 815,915,283,247,897,734,345,611,269,596,115,894,272,000,000,000 |  <-- GG
+--------------+-------+-----------------------------------------------------------------+

彼らは、最初は自分のシステムが想像したように機能しないことを 認識していました。システムは後に非実用的であると見なされ、かなりの時間、労力、およびその他のリソースがプロジェクトに割り当てられ、最終的には無駄になった後にキャンセルされました。

この失敗の後、管理者は&quot;まあ、おそらくそのシステムは過小評価されていたと思う;結局のところ、私たちの国には多くの都市があり、最近キャンセルされたシステムが成功したためには、コンピューターが必要なほど速くありません。

管理チームは、プロジェクトの失敗の原因として低速コンピューターを非難します。結局のところ、彼らはCS理論の専門家ではなく、そうである必要はなく、そのトピックの専門家になるはずであり、彼らに知らせたはずの人々はそうしなかった。

しかし、彼らは別のプロジェクトを念頭に置いています。実際にはもっとシンプルなもの。 1週間後に来て、次のように言ってください:

  

例2:少数のサーバーのみがあり、不明な理由により無限サイクルに陥り、サーバーを占有するプログラムを送信し続けるプログラマーがいます。プログラムを書くにはあなたが必要です

どのフィールドに入るかによります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top