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

プログラミングとコンピューティングの歴史についての質問。

7
なぜインターネットプロトコルの作成者は、IPアドレスを使用して特定のコンピューターを識別することにしたのですか?[閉まっている]
休業。この質問には詳細または明確さが必要です。現在、回答を受け付けていません。 この質問を改善してみませんか?詳細を追加し、この投稿を編集して問題を明確にしてください。 5年前休業。 なぜインターネットプロトコルの作成者は、IPアドレスを使用して特定のコンピューターを識別することにしたのですか? 製造時に各コンピューターに一意のIDを割り当てて、そのIDをコンピューターの識別に使用するのはなぜですか。

5
HTML \ DOM仕様でハイパーリンクがAcceptヘッダーを設定できないのはなぜですか?
Acceptクライアントからのヘッダーの目的は、サーバーが要求への応答として受け入れるデータの種類を通知することです。このヘッダーは、JavaScriptの非同期HTTP呼び出しで設定できますが、HTMLでは設定できません。 たとえば、のようなリンクを考えてみましょう<a href="https://softwareengineering.stackexchange.com/some/resource">Get as CSV</a>。のような属性accept="text/csv"が許可されていて、ブラウザAccept: text/csvがそのリクエストと共にヘッダーを送信すると解釈した場合、サーバーはリクエストのセマンティクスに応答できます。それがなければ、などのリンクを作成する可能性が<a href="https://softwareengineering.stackexchange.com/some/resource?format=csv">Get as CSV</a>あり、サーバーは代わりに任意のクエリ文字列パラメーターに応答する必要があります。 Acceptマークアップによるヘッダーの設定を許可しないHTML \ DOM仕様の背後にある技術的および歴史的な理由は何ですか?

1
なぜApacheにはビルドと依存関係管理のための2つの別個のツールがあるのですか?
Apacheには2つの別個のツールがあります。 Apache Maven Apache Ant + Apache Ivy 彼らは両方とも同じニッチを埋めているようです。2つの質問があります。 2つのツールの主な違いのハイライトは何ですか? 2つの違いについて、本当に長い記事を書くことができると私は確信しています。詳細については探していません。 プログラミングの歴史-最終的に目的が非常に似ている2つの完全に独立したツールセットを作成するようにApacheが進化したのはなぜですか?

1
GCCがデフォルトでAT&T構文を使用するのはなぜですか?
タイトルはそれをすべて言うと思います:) GCCがAT&T / GAS構文を使用する特別な実用的な理由はありますか? 注:これは単なるデフォルトであり、切り替えることができます 注2:個人的には「インテルの構文」の方がずっと読みやすいと思うので、驚いたのはこのためです。
9 history  assembly  gcc 

1
`(seed * 9301 + 49297)%233280`ランダムアルゴリズムの元のソース?
シードされた(疑似)乱数ジェネレーターの作成例を検索すると、次のようなものに出くわします(特定の例http://indiegamr.com/generate-repeatable-random-numbers-in-js/): // the initial seed Math.seed = 6; // in order to work 'Math.seed' must NOT be undefined, // so in any case, you HAVE to provide a Math.seed Math.seededRandom = function(max, min) { max = max || 1; min = min || 0; Math.seed = (Math.seed * 9301 + …
9 history  random 

3
クイックソートが「クイックソート」と呼ばれるのはなぜですか?
この質問の目的は、他の並べ替えアルゴリズムに対してこのメ​​リットを議論することではありません-これを行う他の多くの質問があります。この質問は名前についてです。クイックソートが「クイックソート」と呼ばれるのはなぜですか?確かに、それはほとんどの場合「迅速」ですが、常にというわけではありません。O(N ^ 2)に退化する可能性はよく知られています。この問題を軽減するさまざまな変更がクイックソートにありますが、最悪の場合を保証されたO(n log n)に下げるものは、一般にクイックソートと呼ばれなくなりました。(例:Introsort)。 よく知られているすべてのソートアルゴリズムのなかで、これが「クイック」という名前に値する唯一の理由であることに疑問を感じます。これは、アルゴリズムの動作方法ではなく、通常(通常)の速度を表します。Mergesortは、データをマージするため、それと呼ばれています。ヒープを使用するため、ヒープソートと呼ばれています。Introsortは、QuicksortからHeapsortに切り替えるタイミングを決定するために自身のパフォーマンスを監視するため、「Introspective」からその名前を得ています。同様に、すべての遅いもの(バブルソート、挿入ソート、選択ソートなど)についても同様です。私が考えることができる他の唯一の例外は「Bogosort」です。これは実際には誰も実際に実際に使用したことのない単なる冗談です。クイックソートが「パーティションソート」や「ピボットソート」など、より説明的なものと呼ばれないのはなぜですか。それが実際に何をしているのか?それは「最初にここに来た」の場合でさえありません。MergesortはQuicksortの15年前に開発されました。(ウィキペディアによると、それぞれ1945年と1960年) これは、プログラミングの問題というより、歴史の問題だと思います。私はそれがどのように名前を付けたのか興味があります-それはちょうど良いマーケティングでしたか?

2
誰が最初に「高次関数」および/またはファーストクラスの市民という用語を作り出したのですか
Haskell、O'Caml、またはLISPが登場するずっと以前から、高次関数は学術研究の主題であり、数学ではSchönfinkel(1967年)とHaskell Curry(1968年)はすでにカレーなどの手法を適用していましたが、どのプログラミング言語でも利用できるようになる前でした。 Wikipediaによると、Scheme はファーストクラスの市民として適切な高階関数を導入した最初の言語でしたが、元のアイデアを私たちに帰すことができる人はいますか?たぶん、1930年代にラムダ計算を発明したアロンゾ教会ですか?より具体的には、私がいくつかの本やオンラインリソースでさまざまな言い換えで見た次の定義を誰が作り出したのですか? 関数が別の関数を引数として取る場合、または関数を返す場合、その関数は高次であると見なされます。関数を引数または戻り値の型として使用しない関数は、一次関数と呼ばれます。

2
JavaBean仕様のアクセサメソッドがJava開発の標準になったのはなぜですか。
JavaBeansの仕様は、 JavaBeanのように記述する Java Beanは、ビルダーツールで視覚的に操作できる再利用可能なソフトウェアコンポーネントです。 記述されたコード行の大部分はビルダーツールで視覚的に操作されることとは何の関係もないように見えるので、なぜJavaBean仕様がオブジェクト指向コードを記述する「方法」であるのでしょうか。 これは伝統的にJavaでオブジェクト指向のコードを記述する方法ではないため、ビルダーだけでなく、コード全体でFluent Interfacesを優先して、従来のゲッター/セッターを放棄したいと思います。
9 java  history 

3
Ariane 5のFlight 501の歴史的な影響は何でしたか?
Ariane 5ロケットの処女航海(Flight 501)での打ち上げから37秒後の分解は、歴史上、最も高価なソフトウェアバグの 1つと呼ばれています1: 欧州宇宙機関が10年間と70億ドルを費やして、3トンの衛星のペアを打ち上げるたびに軌道に打ち込むことができる巨大なロケットであるアリアン5を生産しました。 昨年6月にロケットがその初飛行に1分もかからず爆発し、フランス領ギアナのマングローブの沼地に燃えるような瓦礫を散布したのは、64ビットの数値を16ビットの空間に詰め込もうとする小さなコンピュータプログラムだけでした。 1つのバグ、1つのクラッシュ。コンピュータサイエンスの記録に記録されているすべての不注意なコード行の中で、これは最も壊滅的に効率が良いものであると言えます。ロケット工学の専門家へのインタビューと宇宙機関のために準備された分析から、算術エラーから完全な破壊への明確な道が現れます。 Flightの501の失敗とその後の調査は、安全上重要なシステムとソフトウェアテストの研究に影響を与えた大きな変化は何ですか? 私はバグ自体の説明を探しているのではなく、失敗の調査に触発された、または直接関連した調査という点での、バグの歴史的な影響の説明を探しています。たとえば、このペーパーでは次のように結論しています。 静的分析を使用して、次のことを行いました。 変数の初期化を確認し、 シェア変数の潜在的なデータアクセス競合の完全なリストを提供します。 Adaセマンティクスから潜在的な実行時エラーを徹底的にリストします。 私たちの知る限り、これはブールベースおよび非ブールベースの静的解析手法を使用して産業用プログラムを検証するのは初めてです。 同様に、この論文(pdf)は次のように述べています Ariane 5ランチャーとARDの組み込みADAソフトウェアの静的分析には、抽象解釈ベースの静的プログラム分析が使用されています。静的プログラムアナライザーは、スカラーや浮動小数点のオーバーフロー、配列のインデックスエラー、ゼロによる除算や関連する算術例外、初期化されていない変数、データ競合などのランタイムエラーの確定性、可能性、不可能性またはアクセス不能性の自動検出を目的としていますアナライザーは、Ariane 501フライトエラーを自動的に検出できました。組み込みの安全性クリティカルソフトウェア(航空電子工学ソフトウェアなど)の静的分析は非常に有望です。 この単一のイベントがソフトウェアテストのアプローチとツールに与えた影響を徹底的に説明したいと思います。 1 70億ドルという数字は、おそらくAriane 5プロジェクトの総コストを参照していると、ウィキペディアは、失敗により3億7000万ドル以上の損失が発生したと報告しています。それでもかなり高価な失敗ですが、70億ドルという数字にはほど遠いものです。
9 testing  history  bug 


5
WebプログラミングでJavaScriptを使用する歴史的根拠は何ですか?
私は科学生物学のバックグラウンドを持っており、Pythonもよく使用しています。 私はWeb開発から始めたので、JavaScriptがWeb上の主要なクライアント側言語であるのはなぜなのかと、いつも疑問に思っています。 JavaScriptの優位性は歴史的な事故なのか、それとも他の何かなのか また、Pythonをクライアント側のスクリプトに統合する際にハードルがあるかどうか知りたいのですが。

4
プログラミング言語でゼロから数えることの起源は何ですか?
これは私が長い間疑問に思っていた(そして尋ねられた)質問です。 (ほとんど?すべて?)プログラミング言語では、配列、文​​字列などのインデックスはゼロから始まります。多くの言語で採用され、時間が経つにつれて慣例になったことを認識していますが、だれでもこの起源を指摘できますか? おそらく、それはすべてバイナリに根ざしていることに関係しているのではないかと思いました。しかし、私は10進法での必要性を引き継ぐという考えがわかりません-なぜインデックスを1から始めないのですか? ゼロからインデックスを開始する決定が説明されている可能性があるプログラミング言語の歴史的な知識を持っている人はいますか? ありがとうございました! 編集:ダイクストラの文章は、数学的な観点からさらに役立ちますが、すべての言語がゼロインデックス化されているわけではないことを彼は指摘しました。WBTの説明は、なぜメモリアドレスに基づいてゼロから始めるのかについても理にかなっています。(一部の言語は、配列操作に基づいてわずかに異なるインデックス付けを処理することを知っています。) 私は必ずしも理由を探る必要はありません(理解を深めるのに役立つので非常に感謝しています)が、いつこれが規則になったのか、および/または特定の言語にたどり着くことができるかどうかという線に沿って探します。 したがって、たとえば、K&RのCでは、配列のインデックスについて説明するとき、KまたはRは「配列の添え字は常にCでゼロから始まる...」(p。22)と説明し、後で文字を処理する関数について説明します。配列、「...より有用な設計は、行の長さ、またはファイルの終わりが検出された場合はゼロを返すことです。ゼロは、有効な行の長さになることはないため、許容できるファイルの終わりを返します。」(p.127) K&Rに基づいて、私は次のように収集します。a)規則は他の場所から採用されているため、Cはゼロインデックスの背後にあるインスピレーションではありません。b)2番目の例に基づいて使用する理由はもっと深い可能性があります。私はK&Rがその明確な散文で非常に広く評価されていることを知っています。それが、これを含めるもう1つの理由です。別の文書化された言語がゼロインデックスの背後にある理由を説明するために私が期待したことの例を示すためです。 私はWBTとbtillyの両方が同等に良い理由を提供していると思います。設計の決定を文書化した古い(Cより前の)言語を知っている人はいるかもしれません。同時に、そのような情報が存在しない可能性があることも認識しています。

4
Cの未定義の動作がいつ因果関係の壁を跳んだのか
一部のハイパーモダンCコンパイラは、特定の入力が与えられたときにプログラムが未定義の動作を呼び出す場合、そのような入力は決して受信されないと推測します。その結果、そのような入力が受信されない限り無関係であるコードは排除される可能性があります。 簡単な例として、 void foo(uint32_t); uint32_t rotateleft(uint_t value, uint32_t amount) { return (value << amount) | (value >> (32-amount)); } uint32_t blah(uint32_t x, uint32_t y) { if (y != 0) foo(y); return rotateleft(x,y); } コンパイラは、の評価が0のvalue >> (32-amount)場合に未定義の動作を生成するためamount、関数が0でblah呼び出されることはないと推測yします。fooしたがって、呼び出しは無条件にすることができます。 私が言うことができることから、この哲学は2010年頃にいつか定着したようです。そのルーツについて私が見た最も初期の証拠は2009年に遡り、未定義の動作が発生した場合に明示的に述べているC11標準に安置されていますプログラムの実行のある時点で、プログラム全体の動作が遡って定義されなくなります。 コンパイラは、IEで未定義の動作(逆因果最適化を正当化するために未定義の動作を使用することを試みるべきであるという考えたrotateleft機能がそれを前提とするコンパイラを起こすべきではblah非ゼロと呼ばれている必要がありますy何が今まで引き起こすかどうか、yにゼロ以外の値を保持する)2009年より前に真剣に提唱されましたか?最適化手法として最初に真剣に提案されたのはいつですか。 [補遺] 一部のコンパイラには、20世紀でさえ、ループとその中で計算された値に関する特定の種類の推論を有効にするオプションが含まれています。たとえば、 int i; int total=0; for (i=n; i>=0; i--) { doSomething(); …

9
パンチカードがプログラミングに使用された理由
この投稿を改善したいですか?この質問に対する詳細な回答を提供してください。これには、引用や、回答が正しい理由の説明が含まれます。詳細が不十分な回答は編集または削除される場合があります。 私はプログラミング言語の歴史についての研究エッセイをやっていて、なぜプログラマーがパンチカードで自分のプログラムを書いたのかと思っていました。コンピューターの画面とキーボードは、プログラマーが使用する頃にはすでに存在していませんでしたか? Jacquard織機を使用して目的のデザインを制御するために最初に発明されたのは知っていますが、人々がプログラムするときに、なぜカードにプログラムを書くことに決めたのですか? コンピューターが非常に高価だったので、コンピューターにアクセスできる人が多くなかったため、パンチカードでプログラムを作成し、それを実行する会社や誰か、または組織に提出して結果を伝えていたのでしょうか。

2
Public / Private関数宣言の起源は何ですか?
質問 パブリック/プライベート関数パラダイムの起源は何ですか? バックグラウンド チャットでCのヘッダーファイルについて質問があり、それらの使用法は主にプログラマーではなくコンパイラーを支援するためのものでした。ただし、これは「プライベート」関数、またはヘッダーファイルでプロトタイプ化されていない関数の概念の最初の使用法であることは私の理解です。Cが関数を宣言するためにヘッダーファイルを使用していなかったとしても、C#またはJavaで見られるようなパブリック関数とプライベート関数の現在の概念はありますか?または、このコンセプトは最初に別の場所で開発され、Cヘッダー/ソーススキームに単純に実装されました
8 history 

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