タグ付けされた質問 「language-design」

プログラミング言語のあらゆる側面の設計に関連する質問のタグ。

22
例外またはエラーコードの規則
昨日、私は同僚と、どのエラー報告方法が望ましいのかについて、激しい議論を交わしていました。主に、アプリケーションレイヤーまたはモジュール間のエラーを報告するための例外またはエラーコードの使用について説明しました。 エラー報告のために例外をスローするか、エラーコードを返すかを決定するために、どのルールを使用しますか?


17
JavaまたはC#で多重継承が許可されないのはなぜですか?
JavaとC#では多重継承が許可されていないことを知っています。多くの本では、多重継承は許可されていません。ただし、インターフェイスを使用して実装できます。それが許可されない理由については何も議論されていません。なぜそれが許可されていないのか正確に誰かに教えてもらえますか?

5
C#3.0オブジェクト初期化コンストラクターの括弧がオプションなのはなぜですか?
C#3.0オブジェクト初期化構文により、パラメーターのないコンストラクターが存在する場合に、コンストラクターで括弧の開閉ペアを除外できるようです。例: var x = new XTypeName { PropA = value, PropB = value }; とは対照的に: var x = new XTypeName() { PropA = value, PropB = value }; なぜコンストラクタの開き括弧と閉じ括弧のペアが後でオプションになるのか、私は興味がありXTypeNameますか?

5
C#ではconstパラメーターが許可されないのはなぜですか?
特にC ++開発者にとっては奇妙に見えます。C ++ではconst、メソッドで状態が変更されないことを確認するために、パラメーターをとしてマークしていました。const refrefで渡すために渡すなど、他のC ++固有の理由もあり、状態が変更されないことを確認してください。しかし、なぜC#でメソッドパラメーターconstとしてマークできないのでしょうか。 メソッドを次のように宣言できないのはなぜですか? .... static void TestMethod1(const MyClass val) {} .... static void TestMethod2(const int val) {} ....

7
PHPグローバル関数
グローバルキーワードのユーティリティは何ですか? ある方法を別の方法よりも好む理由はありますか? セキュリティ? パフォーマンス? 他に何か? 方法1: function exempleConcat($str1, $str2) { return $str1.$str2; } 方法2: function exempleConcat() { global $str1, $str2; return $str1.$str2; } いつ使用するのが意味がありますglobalか? 私にはそれは危険なように見えます...しかし、それは単に知識の欠如かもしれません。文書化された(例:コードの例、ドキュメントへのリンクなど)技術的な理由に興味があります。 前もって感謝します! バウンティ これはトピックに関する一般的な質問です。私(@Gordon)は、追加の回答を得るための賞金を提供しています。あなたの答えが私の意見に一致するかどうか、または別の見方をするかどうかは問題ではありません。globalトピックが時々出てくるので、リンクするのに良い「標準的な」答えを使うことができました。

3
ゼロベースの月の番号付け[終了]
現在のところ、この質問はQ&A形式には適していません。私たちは回答が事実、参考文献、または専門知識によってサポートされることを期待しますが、この質問はおそらく議論、議論、投票、または拡張された議論を誘います。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 一部の一般的なプログラミング言語は、1だけ離れた月の番号付けを使用します-Javaと同様にJavaScriptが頭に浮かびます。いくつか質問があります。 laypeopleが使用する月の番号付けを無視する場合は、一貫性を保つために、laypeopleが使用する日付の番号付けも無視し、各月の日数を0から開始してください。 これはなぜそれほど一般的ですか? そもそもこれは誰の考えでしたか?


6
単一のnull引数でJava varargsメソッドを呼び出す?
vararg Javaメソッドがfoo(Object ...arg)あり、を呼び出すfoo(null, null)場合、両方arg[0]とarg[1]とnullsがあります。しかし、を呼び出すとfoo(null)、argそれ自体はnullになります。なぜこうなった? どのようにして呼び出す必要がありfoo、そのようなことはfoo.length == 1 && foo[0] == nullありますかtrue?

4
'::'を 'に置き換えます。'C ++で曖昧さを作成しますか?
C ++では、演算子::を使用して、名前空間またはクラスのクラス、関数、および変数にアクセスします。 オブジェクトのインスタンス変数/メソッドにアクセスするときのように、言語仕様がこれらのケースの.代わりに使用された場合、::それにより、::? C ++では型名でもある変数名が許可されていないので、それが起こる可能性があるケースは考えられません。 明確化:::選ばれた理由を尋ね.ているのではありません。

7
Rの要因:煩わしさ以上のもの?
Rの基本的なデータ型の1つは因子です。私の経験では、要素は基本的に苦痛であり、私はそれらを使用することはありません。私はいつもキャラクターに変換します。何かが足りないように感じます。 因子データ型が必要になるグループ化変数として因子を使用する関数のいくつかの重要な例はありますか?ファクターを使用する必要がある特定の状況はありますか?


10
C ++が継承された友情を許可しないのはなぜですか?
C ++で友情が少なくともオプションで継承できないのはなぜですか?私は明白な理由で禁止されている推移性と反射性を理解しています(私はこれは単純なFAQの引用回答を回避するためだけに言っています)が、virtual friend class Foo;パズルの線に沿った何かの欠如は私を困惑させます。この決定の背後にある歴史的背景を知っている人はいますか?友情は本当に限定されたハックに過ぎなかったのか、それからいくつかのあいまいな立派な用途にその道を見つけましたか? 説明のために編集します。私は次のシナリオについて話しています。Aの子がBのいずれか、またはBとその子の両方にさらされているわけではありません。必要に応じて、フレンド関数のオーバーライドなどへのアクセスを許可することも想像できます。 class A { int x; friend class B; }; class B { // OK as per friend declaration above. void foo(A& a, int n) { a.x = n; } }; class D : public B { /* can't get in A w/o 'friend class …

9
なぜ一意の匿名型で言語を設計するのですか?
これは、C ++ラムダ式の機能として常に私を悩ませてきたものです。C++ラムダ式のタイプは一意で匿名であり、単に書き留めることはできません。構文的にまったく同じ2つのラムダを作成した場合でも、結果の型は異なるものとして定義されます。その結果、a)ラムダは、コンパイル時の無名型をオブジェクトと一緒に渡すことができるテンプレート関数にのみ渡すことができ、b)ラムダは、を介して型が消去された場合にのみ有用になりますstd::function<>。 わかりました、しかしそれはC ++がそれをする方法です、私はその言語のただの厄介な機能としてそれを書き留める準備ができていました。ただし、Rustが同じように見えることを知りました。各Rust関数またはラムダには一意の匿名型があります。そして今、私は疑問に思っています:なぜですか? だから、私の質問はこれです: 言語デザイナーの観点から、言語にユニークな匿名タイプの概念を導入することの利点は何ですか?

6
JavaScript以外の他の言語では、中括弧の開始位置に違いがありますか(同じ行と次の行)?
今日、O'ReillyのJavaScriptパターンをランダムに読んでいるときに、興味深いことが1つ見つかりました(27ページを参照)。 Javascriptでは、ブレースの開始位置が異なる場合、場合によっては違いがあります。 function test_function1() { return { name: 'rajat' }; } var obj = test_function1(); alert(obj); //Shows "undefined" ながら function test_function2() { return { name: 'rajat' }; } var obj = test_function2(); alert(obj); //Shows object JSfiddleデモ 他の言語にそのような振る舞いはありますか?もしそうなら、私は確かに私の習慣を変更する必要があります.. :) 私は主にPHP、C、C ++、Java、およびルビーについて心配しています。

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