問題タブ [language-features]

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.

0 投票する
2 に答える
577 参照

language-features - Greenspunning: あなたが作成した言語の最も印象的な拡張機能と、その価値があったかどうか

グリーンスピニング。私たちは皆、必要なものを得るために、言語に欠けている機能をハックする機会がありました。Java で疑似モナディック パターンを実装し、Javascript で Y コンビネータを実装し、C で変数の不変性を実装する...

より優れた機能を求めて、最も印象的な回避策は何だと思いますか? 後から考えると、ハッキングする価値はありましたか? さらに良いことに、それは Ruby のstring#to_procのように、後のバージョンの言語で受け入れられた機能になったのでしょうか?

0 投票する
3 に答える
317 参照

c# - IUsable:IDisposableよりも優れた方法でリソースを制御する

構成を使用するコードブロックがデリゲートとして関数に渡される場合、C#に「Usable」パターンがあればいいのにと思います。

およびユーザーコード:

長所:

  • 制御された実行、例外
  • 「Usable」を使用した事実は、コールスタックに表示されます

短所:

  • 代理人の費用

それは実現可能で有用だと思いますか、そして言語の観点から問題がなければ?あなたが見ることができる落とし穴はありますか?

編集:デビッドシュミットは次のことを提案しました

このようなサンプルシナリオでは機能しますが、通常はリソースがすでに割り当てられており、次のように表示する必要があります。

GlobalResource(はい、グローバルリソースが悪いことは知っています)がIUsableを実装している場合。あなたが書き直すことができるのは短いです

しかし、それは少し奇妙に見えます(そして、インターフェースを明示的に実装するとさらに奇妙になります)。これはさまざまなフレーバーで非常によくあることなので、言語の新しい構文糖衣に値すると思いました。

0 投票する
3 に答える
4193 参照

programming-languages - オフサイドのルールをどのように実装しますか?

トリックを実行するジェネレーターを既に作成しましたが、オフサイドルールを実装するための最良の方法を知りたいです。

手短に:オフサイド ルールとは、このコンテキストでは、インデントが構文要素として認識されることを意味します。

これは、使用可能な形式でインデントをキャプチャするトークナイザーを作成するための疑似コードのオフサイド ルールです。言語によって回答を制限したくありません。

このレイアウタは、一度に複数の NEWLINE を生成することはなく、インデントが発生しても NEWLINE を生成しません。したがって、解析ルールは非常に単純なままです。かなり良いと思いますが、それを達成するためのより良い方法があればお知らせください。

しばらくこれを使用しているうちに、DEDENT の後にとにかく改行を発行するのが良いことに気付きました。この方法では、INDENT DEDENT を式のトレーラーとして保持しながら、NEWLINE で式を区切ることができます。

0 投票する
11 に答える
7664 参照

language-agnostic - あなたのお気に入りの言語は、深層再帰をどのように処理しますか?

私は最近 Python の学習を始めましたが、(デフォルトで) 1000 の深い再帰制限を見つけてかなり驚きました。30000 くらいに設定すると、C と同じようにセグメンテーション違反でクラッシュします。ただし、C はかなり高くなるようです。

(Python 関係者は、いつでも再帰関数を反復関数に変換でき、常に高速であるとすぐに指摘します。それは 100% 真実です。しかし、それは実際には私の質問の内容ではありません。)

Perl で同じ実験を試みたところ、約 1000 万回の再帰で 4 ギガの RAM がすべて消費され、^C を使用して試行を停止しました。明らかに、Perl は C スタックを使用しませんが、再帰の際に途方もない量のメモリを使用します。関数を呼び出すためにどれだけの作業をしなければならないかを考えると、それほど衝撃的ではありません。

Pike で試してみたところ、約 2 秒で 100,000,000 回の再帰が得られたことに完全に驚きました。それがどのように行われたかはわかりませんが、反復プロセスへの再帰を平坦化したのではないかと思います-実行中に余分なメモリを消費していないようです. [注: Pike は些細なケースを平坦化しますが、より複雑なケースでは segfault を実行します。そう言われています。]

私はこれらの無用な機能を使用しました:

他の言語 (PHP、Ruby、Java、Lua、Ocaml、Haskell など) が再帰をどのように処理するのか、またなぜそのように処理するのか、非常に興味があります。さらに、関数が「末尾再帰」である場合に違いが生じるかどうかに注意してください (コメントを参照)。

0 投票する
2 に答える
620 参照

sql-server - クラシック ASP: SQL テーブルから翻訳されたページ テキスト、より高速な方法?

page_id従来の ASP VBScript を MS SQL Server と組み合わせて使用​​すると、3 つの整数を取る関数が得られますheading_idlanguage_id

翻訳テーブルでページ見出しを検索します...

このテーブルには約 10,000 行が含まれています...

見出し列は nvarchar(1000) に 3 つの int 列を加えたもので、行あたり最大 2KiB であることを意味します...

したがって、私の質問は、ADO の GetRows または別のメソッドを使用して、このテーブルをメモリ (たとえば、アプリケーション オブジェクト) にコピーする価値があるか、それとも「大きな」データ サイズのために価値がないかということです。

1 ページあたり約 1 ~ 250 の見出し (462 ページ) があり、1 ページあたり平均 34 の見出しがあります。

したがって、ページあたり最大 34 回のデータベース呼び出しを節約するために、大量のメモリとアプリケーションへの呼び出しを使用します。

考え?

0 投票する
5 に答える
331 参照

php - PHP はメジャー バージョンのリリースで大幅な変更を続けますか?

そのため、私はバージョン 4 で PHP を使い始め、5 に切り替えなければなりませんでした。現在、バージョン 6 が進行中であり、多くのことが再考されていることを理解しています。

変更は良いものかもしれませんが、将来、PHP のロードマップについて知っている人はいますか? 平らになりそうですか?

0 投票する
27 に答える
192834 参照

c# - C#で静的メソッドにインターフェイスの実装を許可しないのはなぜですか?

なぜC#はこのように設計されたのですか?

私が理解しているように、インターフェースは動作を記述するだけであり、特定の動作が実装されるインターフェースを実装するクラスの契約上の義務を記述する目的を果たします。

クラスがその動作を共有メソッドに実装したい場合、なぜそうすべきではないのですか?

これが私が考えていることの例です:

0 投票する
6 に答える
7370 参照

c# - ループで array.length または list.count を実行するのはコストがかかりますか?

for(int i = 0; i < arr.length; i++)JavaScript では、次のような for ループを作成すると、毎回配列の長さを計算するためコストがかかることを私は知っています。この動作は、リストと配列の c# でもコストがかかりますか。それともコンパイル時に最適化されますか? また、Java などの他の言語についてはどうですか?これはどのように処理されますか?

0 投票する
7 に答える
693 参照

language-features - bignum を使用するオーバーヘッド

数値が含まれる場合に、自分の言語でデフォルトのデータ型として bignum を使用するかどうかについて、この問題に遭遇しました。私はこれを自分で評価し、利便性と快適性とパフォーマンスの質問に減らしました。その質問に対する答えは、最適化されていないプログラムでパフォーマンス ヒットがどの程度大きくなるかによって異なります。

fixnum または整数で十分だった場所で bignum を使用した場合のオーバーヘッドはどれくらい小さいでしょうか? 最高の実装でどれくらい小さくできますか? どのような種類の実装が最小のオーバーヘッドに達し、どのような種類の追加のトレードオフが発生しますか?

言語をデフォルトで bignum に設定した場合、全体的な言語パフォーマンスの結果にどのような影響を期待できますか?

0 投票する
2 に答える
12170 参照

c# - 呼び出し元関数をどのように見つけますか?

「現在のメソッドを呼び出したメソッドを見つけるにはどうすればよいですか?」の正確な複製としてクローズされました。

これはc#で可能ですか?