タグ付けされた質問 「theory」

理論的な質問は、一般にすぐには実用的ではないトピックを扱います。このタグを使用するときは注意してください。質問は、コンピューターサイエンススタック交換サイトに適している場合があります。

11
システムの複雑さの増加は、プログラマーの次の世代にどのような影響を与えましたか?
「新しい」プログラマーとして(2009年に最初にコード行を書きました)、たとえば.NETフレームワークのようなものを使用して、今日非常に複雑な要素を示すプログラムを作成するのは比較的簡単であることに気付きました。ビジュアルインターフェイスの作成、またはリストの並べ替えは、ごくわずかなコマンドで実行できるようになりました。 プログラミングを学んでいたとき、コンピューティング理論も並行して学んでいました。並べ替えアルゴリズム、ハードウェアの動作原理、ブール代数、有限状態マシンなどのこと。しかし、理論で学んだ非常に基本的な原理をテストしたい場合、ライブラリ、フレームワーク、OSのようなものによって多くのテクノロジーが不明瞭になるため、始めるのが常にずっと困難であることに気付きました。 40/50年前には、メモリが十分でなく高価だったため、メモリ効率の高いプログラムを作成する必要がありました。そのため、ほとんどのプログラマは、データ型とプロセッサによる命令の処理方法に細心の注意を払いました。最近では、処理能力と使用可能なメモリの増加により、これらの懸念は優先事項ではないと主張する人もいます。 私の質問は、古いプログラマーがこれらのような革新を天の恵みまたは抽象化する追加の層と見るかどうかであり、なぜそう思うのでしょうか?そして、若いプログラマーは、拡張ライブラリの領域を探索する前に、低レベルのプログラミングを学ぶことにより多くの利益をもたらすでしょうか?もしそうなら、なぜですか?

11
単に言語の詳細を学ぶのではなく、実際にプログラミングの方法を学んでいることを確認するにはどうすればよいですか?[閉まっている]
本物のプログラマは1週間以内にどんな言語でも簡単に学べるとよく耳にします。言語は物事を成し遂げるための単なるツールである、と私は言います。プログラミングは、習得して習得しなければならない究極のスキルです。 単に言語の詳細を学ぶのではなく、実際にプログラミングの方法を学んでいることを確認するにはどうすればよいですか?また、1つだけではなくすべての言語に適用できるプログラミングスキルをどのように開発できますか?

4
コードレビューの目的は何ですか
私はコードレビューの価値で組織を売ろうとしています。私は彼らが雇われたいくつかの場所で働いてきました。私はそれらがスタイル選択の選択と機能的な決定を選択するのに使用されるのを見ました。私の直感では、最も効果的な目的は2つのオプションの間のどこかにあるということです。 それでは、コードレビューの目的は何ですか?

9
プログラム最適化の90/10ルールの意味は何ですか?
ウィキペディアによると、プログラム最適化の90/10ルールは、「プログラムの実行時間の90%がコードの10%の実行に費やされる」と述べています(ここの2番目の段落を参照)。 私はこれを本当に理解していません。これはどういう意味ですか?実行時間の90%をコードの10%だけを実行するために使用するにはどうすればよいですか?では、コードの他の90%はどうでしょうか?わずか10%の時間でどのように実行できますか?

22
なぜ一部のプログラマーは、理論と実践の間に対照があると思いますか?[閉まっている]
ソフトウェアエンジニアリングと土木工学を比較すると、私は異なる考え方を観察して驚いた:土木技師なら誰でも、庭に小さな小屋を建てたいなら、材料を手に入れて建てることができるのに対して、 10階建ての家(または、たとえばこのようなもの)では、崩壊しないことを確認するためにかなりの計算を行う必要があります。 対照的に、一部のプログラマーと話したり、ブログやフォーラムを読んだりして、次のように定式化できる幅広い意見をしばしば見つけます。理論と形式的方法は数学者/科学者向けであり、プログラミングは物事を成し遂げることです。 ここで通常暗示されているのは、プログラミングは非常に実用的なものであり、形式的な方法、数学、アルゴリズム理論、クリーン/コヒーレントなプログラミング言語などは興味深いトピックかもしれませんが、すべてが必要な場合は必要ないことです完了しました。 私の経験によれば、100行のスクリプト(小屋)をまとめるのにそれほど理論は必要ありませんが、複雑なアプリケーション(10階建ての建物)を開発するには、構造化された設計が必要です。定義されたメソッド、優れたプログラミング言語、アルゴリズムを検索できる優れた教科書など。 したがって、IMO(適切な量の)理論は、物事を成し遂げるためのツールの1つです。 私の質問は、なぜ一部のプログラマーが理論(形式的手法)と実践(物事を成し遂げる)の間に対照があると考えるのですか? ソフトウェアエンジニアリング(ソフトウェアの構築)は、例えば土木工学(住宅の構築)と比較して多くの人が容易に認識してい ますか? または、これらの2つの分野は本当に異なりますか(ミッションクリティカルなソフトウェアは別として、ソフトウェアの障害は建物の障害よりもはるかに許容されます)。 これまでの回答から理解したことを要約しようと思います。 ソフトウェアエンジニアリングとは対照的に、土木工学では、特定のタスクに必要な理論量(モデリング、設計)がはるかに明確です。 これは、土木工学が人類と同じくらい古く、ソフトウェア工学が数十年しか存在していないという事実に一部起因しています。 別の理由は、ソフトウェアがより不安定な種類のアーティファクトであり、より柔軟な要件(クラッシュする可能性がある)、さまざまなマーケティング戦略(すぐに市場に出すために良いデザインを犠牲にすることができる)などであるという事実です。 結果として、適切な設計/理論の量がソフトウェアエンジニアリングに適切であるかを判断するのははるかに困難です(少なすぎる->乱雑なコード、多すぎる->私は決して終わらない) (多くの)経験が役立ちます。 したがって、あなたの答えを正しく解釈すると、 理論が実際にどれだけ必要かについてのこの不確実性が、一部のプログラマーが理論に対して抱く愛と憎しみの混合の原因になります。


8
コンパイラ、アセンブラ、マシン命令などのようなコンピュータプログラミングの下位コンポーネントに問題がないことをどのように確認できますか?
私たちは日々の生活の非常に重要なタスクを含め、コンピューティングにますます頼るようになっているので、私はそれらの重要なコンポーネントがどのようにテストされるのかと思っていました。 より技術的には、コンパイラとアセンブラはどのようにテストされますか?(これは停止の問題に関連すると思います!!)

9
主キーを公開しないのはなぜですか
私の教育では、実際のプライマリキー(DBキーだけでなく、すべてのプライマリアクセサー)をユーザーに公開することは欠陥のあるアイデアであると言われました。 私はいつもそれをセキュリティの問題だと思っていました(攻撃者が自分のものではないものを読もうとする可能性があるため)。 ユーザーがとにかくアクセスを許可されているかどうかを確認する必要があるので、その背後に別の理由がありますか? また、とにかくユーザーがデータにアクセスする必要があるため、その間のどこかに外部の公開キーが必要になります。公開キーには主キーと同じ問題がありますよね? とにかくそれを行う理由についての例の要求があったので、ここに1つがあります。質問は、この例に当てはまる場合だけでなく、原則自体に関するものであることを忘れないでください。他の状況に対処する回答は明示的に歓迎されます。 アクティビティを処理し、複数のUIとシステム間通信用の少なくとも1つの自動APIを備えたアプリケーション(Web、モバイル)アプリケーションには複数の顧客がいるため、データの分離(論理的には、データは同じDBに格納されます)はシステムに必要です。各リクエストは、どのような場合でも有効性がチェックされます。 アクティビティは非常に細かいので、いくつかのコンテナオブジェクトにまとめられ、「タスク」と呼びます。 3つのユースケース: ユーザーAは、ユーザーBを何らかのタスクに送りたいので、ユーザーBにリンク(HTTP)を送信して、そこでアクティビティを実行させます。 ユーザーBは建物の外に出て、モバイルデバイスでタスクを開く必要があります。 アカウンティングは顧客にタスクの料金を請求したいが、REST-アプリケーションのAPIを参照するコードによってタスク/アクティビティを自動的にロードするサードパーティの会計システムを使用する 各ユースケースでは、エージェントがタスクとアクティビティのアドレス可能な識別子を持っていることが必要です(または、より簡単になります)。

3
サブクラスとサブタイプの違いは何ですか?
Liskov Substitution Principleについてのこの質問に対する最も高い評価の答えは、サブタイプとサブクラスという用語を区別するのに苦労します。また、一部の言語はこの2つを統合しますが、他の言語は統合しないという点も重要です。 私が最もよく知っているオブジェクト指向言語(Python、C ++)の場合、「タイプ」と「クラス」は同義の概念です。C ++に関して、サブタイプとサブクラスを区別することはどういう意味ですか?たとえば、Fooサブクラスではなく、サブタイプであるとしFooBaseます。のfooインスタンスがの場合Foo、次の行になります: FooBase* fbPoint = &foo; 無効になりましたか?

11
「4次元」は配列でどのように機能しますか?
抽象: ですから、私が理解しているように(非常に限られた理解しかありませんが)、私たちは(通常)物理的に作業する3つの次元があります。 1番目は線で表されます。 2番目は正方形で表されます。 3番目は立方体で表されます。 私たちが4番目に到達するまで十分に単純です-私が意味することを知っているなら、3D空間で描くのはちょっと難しいです...それは時間と関係があると言う人もいます 質問: さて、それはあまり意味がありませんが、それはすべて私にとって素晴らしいです。私の質問はこれに関するものではなく、MathSOまたはPhysicsSOで質問することです。私の質問は次のとおりです。コンピューターはこれをアレイでどのように処理しますか? さまざまなプログラミング言語で4D、5D、6Dなどの配列を作成できることは知っていますが、その仕組みを知りたいと思います。
30 theory  array 

9
カラースキームの生成-理論とアルゴリズム[終了]
チャートと図を作成し、配色とアルゴリズムの例に関する理論を探しています。 質問例: 補色または類似色を生成する方法は? パステル調、寒色、暖色を生成する方法は? ランダムではあるが異なる色をいくつでも生成する方法は? すべてを16進数のトリプレット(ウェブの色)に変換する方法は? 私の実装はAS3になりますが、擬似コードの例は大歓迎です。

18
私が知っておくべきコンピューターサイエンス理論のビットは何ですか?[閉まっている]
コンピューターサイエンスの学位ではなく電子工学の学位を持っている人として、私をより良い現実世界のプログラマーにするために知っておくべきコンピューターサイエンスのビットは何ですか? (現実世界では、プログラマとして日々の仕事で使用し、恩恵を受けるものを意味します-たとえば、データベースの正規化を理解することは、多くの種類があるクイックソートを理解するよりも実用的であることをお勧めしますライブラリの)。

7
実際の90のルール
コードの最初の90%が開発時間の最初の90%を占めています。コードの残りの10%は、開発時間の残りの90%を占めています。 —トムカーギル、ベル研究所 それは実際にはどういう意味ですか?プログラマーはかなりの量の仕事をしており、180%を自分たちから与えているのですか?

4
キロバイトブロックとポインターのすべての可能な順列のメモリは可能ですか?
これは頭​​をかき回すのに十分なほど難しい考えであり、編集/ヘルプを知っている人にとって読みやすくするためにどんな編集/ヘルプも大いに感謝します。 理論上、1キロバイトのすべての可能なバイナリ順列のコピーを1つ保存したハードドライブを使用し、システムの残りの部分にこれらの場所へのポインターを作成させることは可能ですか? このような方法で作成されたシステムは、単に情報を直接保存するよりも速いでしょうか? 別の方法を説明するには、文章を書く代わりに次のように言います。 「こんにちは、ボブです。」「そのサンドイッチは美味しそうです。」 ...ハードドライブに保存すると、アルファベットやその他の文字のすべての順列が最大数(たとえば1000文字程度)になり、次のような文が保存されます。 [ポインター#21381723]

8
理論的ではない実用的なプログラミング言語には予約キーワードがありませんか?
予約済みのキーワードを持たない実用的なプログラミング言語を探してきましたが、見つけることができませんでした。 私は自分の教育とエンターテイメントのためにプログラミング言語に取り組んでおり、まだキーワードを含める必要はありません。それが私の検索と質問につながった理由です。 コンパイラの作成者にとっては、この言語のエンドユーザーにとって重要であるとは思いません。コンピュータは、コンテキストから意味を推測できるほど強力になりました。作家が小説を書くときに名詞や動詞などにラベルを付ける必要があるのは、プログラマが関数や変数にfunction x() {}or set x = 1またはvar x = 1etcなどのラベルを付ける必要がある理由だけです。ステートメントのコンテキストから、それが関数宣言または呼び出しである、またはラベルが値への割り当てまたはそのラベル値への参照であると推測できる場合 ここに私の現在のパーサーが何をしているかの具体的な例として、通常の束だろう一般的な事柄をサポートするために予約されたキーワードが不要で、ノイズのようなfuncまたはfunctionまたはdecまたはものではありませんが。 関数宣言 sum3(a,b,c) -> a + b + c. 関数呼び出し x = sum3(1,2,3). xという名前の匿名関数 x = (a,b,c) -> a + b + c. y = x(1,2,3). 成功するプログラミング言語にとってキーワードがなぜ重要なのか知りたいのですが。
22 theory  languages 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.