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

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

4
Apollo 11ミッションのコードに使用される開発プロセスは?
アポロの任務には、電卓ほど複雑な技術はなかった。 こちらのリンクから、Apollo Guidance Computer(AGC)に関する情報があります。 オンボードのApollo Guidance Computer(AGC)は約1立方フィートで、2Kの16ビットRAMと36Kのハードコアコアロープメモリで、銅線は小さな磁気コアに通されているか、通されていません。16ビットワードは通常、14ビットのデータ(または2つのオペコード)、1符号ビット、1パリティビットでした。サイクルタイムは11.7マイクロ秒でした。プログラミングはアセンブリ言語と逆ポーランド語の解釈言語で行われました。 そのため、そこにあるものを調査したときにいくつかのソースコードに出くわし、素晴らしいコメントに気付きました(たとえば、TEMPORARY、I HOPE HOPE HOPE) VRTSTART TS WCHVERT # Page 801 CAF TWO # WCHPHASE = 2 ---> VERTICAL: P65,P66,P67 TS WCHPHOLD TS WCHPHASE TC BANKCALL # TEMPORARY, I HOPE HOPE HOPE CADR STOPRATE # TEMPORARY, I HOPE HOPE HOPE TC DOWNFLAG # PERMIT …

8
コンストラクターではなく、JavaとC#の静的mainメソッドが必要な理由
Applicationクラスのインスタンス(エントリポイントを含む)でアプリケーションインスタンスを表すのではなく、(特に)JavaとC#が静的メソッドをエントリポイントとして持つことにした理由について、プライマリソースまたはセカンダリソースからの明確な回答を探しています。適切なコンストラクタであること)。 私の以前の研究の背景と詳細 これは以前に尋ねられました。残念ながら、既存の回答は単に質問を懇願しているだけです。特に、次の答えは私を満足させるものではありません。 コンストラクターがオーバーロードされると、あいまいさが生じます。–実際、C#(およびCとC ++)では異なる署名を使用できるMainため、同じ潜在的なあいまいさが存在し、対処されます。 staticこの方法は、その初期化の順序は明らかである前に、何のオブジェクトをインスタンス化することはできないことを意味します。–これは事実上間違っています。一部のオブジェクトは前にインスタンス化されます(静的コンストラクターなど)。 したがって、親オブジェクトをインスタンス化することなく、ランタイムによって呼び出すことができます。–これはまったく答えではありません。 なぜこれが有効で興味深い質問であると思うのかをさらに正当化するために: 多くのフレームワークは、クラスを使用してアプリケーションを表し、コンストラクターをエントリポイントとして使用します。たとえば、VB.NETアプリケーションフレームワークは、専用のメインダイアログ(およびそのコンストラクター)をエントリポイント1として使用します。 JavaもC#も技術的にmainメソッドを必要としません。まあ、C#をコンパイルするには1つが必要ですが、Javaでもそれは必要ありません。また、どちらの場合も実行には必要ありません。したがって、これは技術的な制限ではないようです。そして、最初の段落で述べたように、単なる慣習としては、JavaとC#の一般的な設計原則に不自然に合わないようです。 明確に言うと、静的メソッドを使用することには特別な欠点はありません。それは明らかに奇妙です。そのため、技術的な根拠があるのではないかと思いました。main 私は単なる推測ではなく、一次または二次情報源からの決定的な答えに興味があります。 1ただし、Startupこれをインターセプトする可能性のあるコールバック()があります。
54 java  c#  history  entry-point 

6
誰が最初のループ構造のアイデアを作成しましたか?
while (1) { if (1+1==2) { print "Yes, you paid attention in Preschool!"; } else { print "Wait... I thought 1+1=2"; } } 開発者として、私たち全員が非常に頻繁にループを使用する必要があります。私達はことを知っています。私が疑問に思っていたのは、ループを持っているという考えを誰が考えたのですか?どの言語がループを導入しましたか?最初のループ構造は何でしたか?それはたwhileループ?forループ?等?
53 history  loops 

4
Unixパイプの正確な工夫は何ですか
ダグラス・マックロイがどのようにコンセプトを思いついたのか、そしてケン・トンプソンがそれを一晩でどのように実装したのかという話を聞いたことがあります。 私が理解している限り、パイプは、1つのプロセスが書き込みと他の読み取りを行う2つのプロセス間でメモリを共有するシステムコールです。 OSの内部や概念に精通していない人として、私はストーリーの「天才」とは一体何なのか疑問に思っていました。メモリを共有する2つのプロセスのアイデアですか?それとも実装ですか?または両方? PS:パイプの有用性やシェルでの使用方法を知っています。問題は、の概念と実装に関するものです|

8
Itaniumプロセッサがコンパイラを書くのが難しいのはなぜですか?
よく知られているように、IntelのItanium 64ビットプロセッサアーキテクチャは、革新的なEPIC命令セットが優れたコンパイラを書くのが非常に難しく、IA64の優れた開発者ツールが不足しており、そのアーキテクチャ用のプログラムを作成する開発者が不足していたために失敗した、だから誰もハードウェアをあまりソフトウェアなしで使いたくなかったので、プラットフォームは失敗しました。馬蹄形の爪 優れたコンパイラ。 しかし、なぜコンパイラはそんなに難しい技術的な問題だったのでしょうか?コンパイラベンダーがEPICの明示的な並列処理を実装するのが難しいとしたら、そもそもなぜそれらに負担をかけるのでしょうか。この問題に対する優れた、十分に理解された解決策がまだ存在していなかったようではありません。代わりにその負担をインテルに負わせ、コンパイラ作成者にもっと簡単なターゲットを与えます。 Itaniumは1997年に登場しました。この時点までに、UCSD P-Codeバイトコードシステムは20年近く近く、Z-machineはわずかに若く、JVMはプログラミング言語の世界でホットな新星となりました。Intelが「単純なItaniumバイトコード」言語を指定せず、このバイトコードを最適化されたEPICコードに変換し、そもそもシステムを設計した人々としての専門知識を活用するツールを提供しなかった理由はありますか?
50 history  compiler 

4
最初のC ++コンパイラはどのようにC ++で作成できますか?
Stroustrupは、最初のC ++コンパイラであるCfrontがC ++で作成されたと主張しています(Stroustrup FAQ)。 しかし、最初のC ++コンパイラをC ++で作成することはどのように可能ですか? コンパイラーを構成するコードもコンパイルする必要があります。したがって、最初のC ++コンパイラーをC ++で作成することはできませんでしたか?

13
割り当て演算子が左側に割り当てられるのはなぜですか?
私はちょうど友達プログラミングを教え始めました(Pythonを使用しています)。変数の作成と代入演算子について議論し始めたとき、彼女はなぜ右の値が左の名前に割り当てられているのかを尋ねました。 。 私にとってそれは自然に思えたので、あまり考えたことはありませんでしたが、彼女は左から右の方が自然であると言った、それが私たちのほとんどが自然言語を読む方法だからです。 私はそれについて考えて、割り当てられた名前(プログラマが再利用する必要がある)が簡単に表示され、左に揃えられているため、コードがはるかに読みやすくなると結論付けました。 aligned = 2 on = 'foo' + 'bar' + 'foobar' the = 5.0 / 2 left = 2 + 5 とは対照的に: 2 = aligned 'foo' + 'bar' + 'foobar' = on 5.0 / 2 = the 2 + 5 = right # What were the names …

22
従来のBASICは商用ソフトウェア開発に使用されたことがありますか?その場合、制限はどのように克服されましたか?
私を含む私たちの多くは、自宅のコンピューターで書かれたプログラムでプログラミングの生活を始めました。 10 PRINT "ENTER RADIUS" 20 INPUT R 30 PRINT "CIRCUMFERENCE="; 2 * R * PI 40 PRINT "AGAIN?" 50 INPUT A$ 60 IF A$="Y" THEN GOTO 10 70 END もちろん、行番号ベースのBASICは、最も基本的な方言のような構造の文逃したもので、スパゲッティコードを作成するためのがちだったWHILEすべてのものが、やって、FORと-loopをIF、GOTOとGOSUB。QBASICとVisual Basicが登場した1991年以前に、BASIC方言について話しています。 BASIC方言は、熱望するプログラマーの中で悪いスタイルを促進したかもしれませんが、そのようなBASIC方言で作成されたより大きな商業プロジェクトはありましたか?もしそうなら、彼らはどのようにして明らかに欠点を抱えて対処し、回避しましたか? 「深刻」とは: ゲームではありません(たとえば、Pimaniaなど、一部の商用ゲームがBASICで記述されていることは知っています) フリーウェアではない 些細ではない、つまり、かなり大きい(たとえば:少なくとも1500 LOC) 複数の顧客に販売(社内開発ではない) 「ミッションクリティカル」がプラス
46 history  basic 

8
OOPの前に、データ構造体のメンバーは公開されていましたか?
OOP言語を使用してデータ構造(キューなど)を実装する場合、データ構造の一部のメンバーはプライベートにする必要があります(キュー内のアイテム数など)。 キューは、structおよびで動作する一連の関数を使用して手続き型言語で実装することもできますstruct。ただし、手続き型言語では、メンバーをstructプライベートにすることはできません。手続き型言語で実装されたデータ構造のメンバーは公開されていましたか、それとも非公開にするためのトリックがありましたか?

4
構造体とクラスがC#で概念を分けているのはなぜですか?
C#でプログラミングしているときに、理解できない奇妙な言語設計の決定につまずきました。 したがって、C#(およびCLR)には2つの集約データ型があります:(struct値型、スタックに格納され、継承なし)およびclass(参照型、ヒープに格納され、継承あり)。 この設定は最初はいい感じに聞こえますが、その後、集計タイプのパラメーターを取るメソッドに出くわし、実際に値タイプか参照タイプかを判断するには、そのタイプの宣言を見つける必要があります。時には非常に混乱することがあります。 一般的に受け入れられている問題の解決策は、すべてstructのを「不変」(フィールドをに設定readonly)として宣言して、起こりうる間違いを防ぎ、structsの有用性を制限しているようです。 たとえば、C ++ははるかに使いやすいモデルを採用しています。スタックまたはヒープのいずれかにオブジェクトインスタンスを作成し、値または参照(またはポインター)で渡すことができます。私はC#がC ++に触発されたと聞き続けていますが、なぜこの1つの手法を採用しなかったのか理解できません。組み合わせるclassとstruct経由で参照として(明示的に)二つの異なる割り当てオプション(ヒープとスタック)と一方の構築物へと値として周りにそれらを渡したりrefしてout、キーワードはいいことのように思えます。 質問は、なぜやったclassし、structC#とCLRで別々の概念の代わりに、2つのアロケーションオプションを持つ1つの集約タイプになりますか?

15
言語はCPU設計にどのように影響しましたか?[閉まっている]
私たちはされていることが多い語ったが、これは真実ではない、ハードウェアは、プログラムがそれだけでコンパイルされたバイナリコードを見ているように書かれている言語を気にしないこと。たとえば、謙虚なZ80を考えてみましょう。8080命令セットへのその拡張には、C-スタイル(NULLで終了する)文字列をスキャンするのに役立つCPIRなどの命令が含まれますstrlen()。設計者は、Cプログラムの実行(文字列の長さがヘッダーにあるPascalとは対照的に)が、設計で使用される可能性が高いことを特定している必要があります。別の古典的な例は、Lisp Machineです。 他にどんな例がありますか?たとえば、特定のプロセッサが特定の言語の規則を好むようにする命令、レジスタの数とタイプ、アドレス指定モードはありますか?私は特に同じ家族の改訂に興味があります。

9
なぜRDBMSではなくファイルシステムがログに優先されるのですか?
質問はそのタイトルから明確でなければなりません。たとえば、Apacheは、使用されている規模に関係なく、RDBMSではなくファイルにアクセスログとエラーログを保存します。 RDMSの場合はSQLクエリを記述するだけで機能しますが、ファイルの場合は特定の形式を決定し、正規表現を記述するか、パーサーとして操作する必要があります。そして、細心の注意を払わないと、特定の状況で失敗することさえあります。 しかし、誰もがログを維持するためにファイルシステムを好むようです。私はこれらの方法のいずれにも偏っていませんが、なぜこのように実践されているのか知りたいです。それはスピードや保守性などですか?

3
「究極のラムダ」というフレーズの起源と意味は何ですか?
私は数年前から関数型プログラミング言語をいじり続けてきましたが、このフレーズに出会っています。たとえば、これは「The Little Schemer」の章であり、これは確かにこの名前でブログに先行します(いいえ、この章は私の質問に答える助けにはなりません。) 私はラムダの意味を理解しています。匿名関数の概念はシンプルかつ強力ですが、このコンテキストで「究極」が何を意味するのか理解できません。 私がこのフレーズを見た場所: The Little Schemerの第8章のタイトル ブログ:http : //lambda-the-ultimate.org/ 一連の「Lambda the ultimate X」ペーパー:http : //library.readscheme.org/page1.html ここに参照がありませんが、誰か助けてもらえますか?

2
「レッド/ブラックツリー」という用語はどこから来たのですか?
A レッド/ブラックツリーは平衡二分探索木を実装する1つの方法です。それがどのように機能するかの原理は私には理にかなっていますが、選択した色はそうではありません。他の色や属性一般とは対照的に、なぜ赤と黒なのでしょうか?「赤と黒」と聞くと、最初に頭に浮かぶのはチェッカーボードとレミゼラブルです。どちらもこの文脈では特に当てはまるとは限りません。

3
「main」がintまたはvoidではなくdoubleまたはStringを返すことができないのはなぜですか?
例えばC、C ++、およびJavaなどの多くの言語では、main方法/機能は、の戻り型有しvoidまたはintではなく、doubleまたはString。その背後にある理由は何ですか? main実行時ライブラリによって呼び出されint main()、int main(int,char**)そのようないくつかの構文を想定しているため、それを実行できないことを少し知っています。 だから私の質問は次のとおりです。なぜそれがmain持っているタイプ署名を持っており、別のものではないのですか?

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