問題タブ [language-history]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
parameter-passing - 「名前渡し」とは何ですか。正確にはどのように機能しますか。
ウィキペディアとグーグルをチェックしましたが、ALGOL60で名前渡しがどのように機能するかについてはまだ頭を悩ませることができません。
python - Python の静的メソッドの構文はどのように選択されましたか?
私はしばらく Python を使用してきましたが、メソッドを static として宣言するための構文が独特であることがわかりました。
通常のメソッドは次のように宣言されます。
静的メソッドが宣言されています。
静的メソッド行を追加しない場合、コンパイラは自己欠落について不平を言います。
これは、他の言語ではキーワードと宣言文法を使用するだけの非常に単純なことを行うための非常に複雑な方法です。この構文の進化について誰か教えてもらえますか? これは単に既存の言語にクラスが追加されたからでしょうか?
クラスの後半に staticmethod 行を移動できるので、パーサーが簿記に非常に熱心に取り組んでいることも示唆しています。
後で追加されたデコレータ構文を認識していることに注意してください。元の構文が言語設計の観点からどのように生まれたかを知りたいです。私が考えることができる唯一の考えは、 staticmethod アプリケーションが関数オブジェクトを静的メソッドに変換する操作を呼び出すということです。
perl - Perl バージョンの後方非互換性の具体例は何ですか?
Perl 1.0 の最初の公開リリース (1987 年 12 月 18 日) から現在の安定版リリース 5.10.1 (2009 年) まで 22 年が経過しました。
この 22 年間に、次の注目すべきリリースが行われました。
- Perl 1.0 (1987 年 - 初期リリース)
- Perl 2 (1988 年 - より良い正規表現)
- Perl 3 (1989 - バイナリ データ ストリームのサポート)
- Perl 4 (1991 - Camel Book に記載されている Perl のバージョンを特定)
- Perl 5 (1994 年 - 主要な変更が導入され、インタプリタがほぼ完全に書き直されました)
- Perl 5.6 (2000 - 64 ビットのサポート、Unicode 文字列、大きなファイルのサポート)
- Perl 5.8 (2002 - Unicode サポートの改善、新しい IO 実装)
- Perl 5.10 (2007 - 新しい switch ステートメント、正規表現の更新、スマート マッチ演算子)
Perl の歴史における下位互換性の具体例を探しています。
質問:
- Perl の 22 年の歴史の中で、Perl バージョン X を対象とする Perl ソース コードがバージョン Y (Y > X) で実行されない、Perl 後方非互換性の例はありますか?
可能であれば、参照とコード例を含めてください。
c# - C#はJavaよりもC ++にどのように影響を受けていますか?
C#の歴史を見ると、C#はCやC++のアップデートと見なされていたことがわかりました。これは私にとって少し驚きでした。表面的には、C#とJavaの間ではるかに一般的なアイデアが見られます(ガベージコレクションが思い浮かびます)。私はJavaでコードを書いていませんが、通常はJavaコードを理解するのに問題はなく、C#で簡単に転置できるJavaのパターンに関する本を日常的に読んでおり、C++については正直言って同じことは言えません。
だから私の質問は、C#はJavaよりもC++にどのように近いのかということです。これは単にJavaを認めることを拒否するだけですか、それとも私は何かを見逃したり誤解したりしていますか?
javascript - JavaScriptプログラムがプレーンテキストで配信されるのはなぜですか?
javascriptプログラムをプレーンテキストで出荷することにしたのはなぜですか?パフォーマンスの向上を達成するためでしたか、それとも作成者はjavascriptがはるかに複雑なアプリケーションで使用され、開発者がソースコードを保護したいと思うかもしれないとは想像もしていませんでしたか?
php - PHPでの大文字のブール値と小文字の比較
PHPを学んでいたとき、「通常の」小文字バージョンとは「安全」に使用できなかったためTRUE
、常に大文字バージョンのブール値を使用する必要があることをどこかで読みました。FALSE
true
false
何年も経ちましたが、私が書いたすべてのPHPスクリプトは大文字バージョンを使用しています。しかし、小文字バージョン(つまり、Zend Framework)で記述されたPHPをたくさん見たので、私はそれを疑問視しています。
大文字バージョンを使用する理由はありますか、それとも小文字を使用してもまったく問題ありませんか?
編集:これがにも適用されることを言及するのを忘れましNULL
たnull
。
programming-languages - プログラミング言語はどのような順序で派生していますか?
たとえば、基本的にオブジェクト指向ベースのすべての言語は、基本的に C# または C++ の派生物であることを知っています。正しいですか? 入った順番わかる人いますか?C -> C++ -> C# -> PHP などのように。
java - Javaの単項プラス演算子の目的は何ですか?
Java の単項プラス演算子は、C++ を介して C から来たようです。
以下の効果があるようです。
- オペランドがラッパー オブジェクトの場合、ボックス化を解除します
- オペランドをにプロモートします (まだより広く
int
ない場合)int
- 多数の連続するプラス記号を含む邪悪な式の解析が少し複雑になります
これらすべてを行うためのより良い/より明確な方法があるように私には思えます。
このSO questionでは、C# の対応する演算子について、「必要に応じてオーバーロードするためにある」と誰かが言いました。
ただし、Java では、どの演算子もオーバーロードできません。では、この単項プラス演算子は、C++ に存在したという理由だけで Java に存在するのでしょうか?
c - C コンパイラが外部名の前にアンダースコアを追加するのはなぜですか?
私は長い間 C で作業してきたので、コンパイラが一般的に an の先頭にアンダースコアを追加するという事実がextern
理解されています... しかし、今日の別の SO の質問で、アンダースコアが追加される本当の理由について疑問に思いました。ウィキペディアの記事によると、その理由は次のとおりです。
ランタイム言語サポートからの貢献との衝突を避けるために、すべての外部スコープ プログラム識別子の先頭にアンダースコアを付加することは、C コンパイラにとって一般的な方法でした。
これには少なくとも真実の核があると思いますが、すべてのexternにアンダースコアが追加された場合、衝突を防ぐのにあまり役に立たないため、実際には質問に答えていないようです.
先頭のアンダースコアの理論的根拠について、誰かが良い情報を持っていますか?
creat()
追加されたアンダースコアは、Unixシステム コールが「e」で終わらない理由の一部ですか? 一部のプラットフォームの初期のリンカーでは、名前が 6 文字に制限されていると聞いたことがあります。その場合、外部名の前にアンダースコアを追加するのは、まったくクレイジーなアイデアのように思えます (今、私は 5 文字しか操作できません...)。