問題タブ [d]
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.
python - (C ではなく) D で Python 拡張モジュールを作成できますか?
D は C とリンク互換性があると聞きました。D を使用して Python の拡張モジュールを作成したいと考えています。うまくいかない理由を見落としていますか?
embedded - D (プログラミング言語) の組み込み
Dについて読んだことの多くが好きです。
- 統一されたドキュメンテーション (そうすれば私の仕事はずっと簡単になります。)
- 言語に組み込まれたテスト機能。
- 言語でのデバッグ コードのサポート。
- 前方宣言。(同じ関数を2回宣言するのはばかげているといつも思っていました。)
- プリプロセッサを置き換える機能が組み込まれています。
- モジュール
- エイリアシングの代わりに適切な型チェックに使用される Typedef。
- ネストされた関数。(咳PASCAL 咳)
- インおよびアウト パラメータ。(それはどれほど明白です!)
- 低レベルのプログラミングをサポート - 組み込みシステム、そうそう!
でも:
- D は、OS を実行しない組み込みシステムをサポートできますか?
- 16 ビット プロセッサをサポートしないという明確な宣言は、そのようなマシンで実行される組み込みアプリケーションから完全に排除するのでしょうか? 問題を解決するのにハンマーが必要ない場合もあります。
- ガベージ コレクションは Windows や Linux では優れていますが、残念ながら、組み込みアプリケーションでは明示的なメモリ管理を行う必要があります。
- 配列の境界チェック、好きでも嫌いでもあります。設計保証には最適ですが、パフォーマンスの問題に対して常に許容されるわけではありません。
- OS を実行していない組み込みシステムでは、マルチスレッドのサポートにどのような影響がありますか? 割り込みも嫌いなお客様がいます。OS/マルチスレッドがはるかに少ない。
- 組み込みシステム用の D-Lite はありますか?
基本的に、D は数メガバイト (1 メガバイト未満の場合もあります) しかなく、OS を実行していない組み込みシステムに適しています。コンパイル時に (要件ごとに) 最大メモリ使用量を知る必要があり、場合によっては 32 ビットよりも小さいものでプロセッサー?
いくつかの機能に非常に興味がありますが、デスクトップ アプリケーションの開発者を対象としている印象があります。
16 ビットの実装に適さない具体的な理由は何ですか? (16 ビット アーキテクチャが、ランタイムを保持するのに十分な量のメモリをフラッシュ メモリまたは RAM にアドレス指定できると仮定します。) 32 ビット値は、ライブラリ コードを使用して、16 ビットよりも遅く、より多くの操作を必要としますが、それでも計算できます。
c# - Dのスコープの失敗/成功/終了は必要ですか?
try / catch / finalを持つ言語を使用する場合、Dのfailure / success / exitスコープステートメントは引き続き役立ちますか?Dは、これらのステートメントがDで使用される理由を説明する可能性のある最終的なものではないようです。しかし、C#のような言語では、それは役に立ちますか?私は言語を設計しているので、多くのプロを見つけたらそれを追加します。
d - D の連想配列に基づく並べ替え
Dアプリのさまざまな場所で与えられた例に従おうとしています。通常、言語を学習するときは、サンプル アプリから始めて、純粋にテストするために自分で変更します。
私の目を引いたアプリの 1 つは、渡されたテキスト ブロック内の単語の頻度をカウントすることでした。辞書は連想配列 (要素は頻度を格納し、キーは単語自体) で構築されているため、出力は順不同でした。そのため、サイトで提供されている例に基づいて配列をソートしようとしました。
とにかく、例はラムダ 'sort!(...)(array);' を示しました しかし、コードを実行しようとすると、dmd はコンパイルしません。
煮詰めたコードは次のとおりです。
このコードをコンパイルしようとすると、次のようになります
ここで何をする必要があるか誰か教えてもらえますか?
DMD v2.031 を使用しています。gdc をインストールしようとしましたが、これは v1 言語仕様のみをサポートしているようです。dil を見始めたばかりなので、これが上記のコードをサポートしているかどうかについてコメントすることはできません。
memory - mallocとD/Tangoでの解放は、メモリを解放しませんか?
これがWindowsの簡単なd/tangoコードです:
プログラムを実行すると、メモリは約2MBの低さを維持し、100MBの配列をポインタに割り当てると、メモリ使用量は約100MBに跳ね上がります。これは問題ありません。ただし、空きメモリが残った後(私はタスクマネージャを見ています)、プログラムの最後まで100MBです。
私はそれがウィンドウズのページファイルキャッシュか何かにあるかもしれないと思ったので、私は単純なC++プログラムを試しました:
私はそれをg++でコンパイルしましたが、すべてが正常に機能しているようです。プログラムの起動時-メモリ使用量〜900kb、割り当て後〜100MB、空き後〜1.2MB ..
それで、私は何を間違っているのですか、それともこれはバグですか?
enums - 名前付き列挙型を、Dで匿名であるかのように参照できますか?
私はCライブラリへのDブリッジを実行しています。これは、定数のように参照するtypedefの列挙型を使用して、Cコードを作成しましたが、関数の引数などに名前を付けることができます。例:
現在、私はそれを次のように参照する必要があります:
しかし、私はむしろ:
私はこれを行うことができます:
しかし、私はライブラリモジュールでそれをしたくないので、それが使用されている場所でそれをしなければならないでしょう、それは面倒です。
これを行う方法はありますか?
string - D で C 文字列を処理するにはどうすればよいですか?
C ライブラリのヘッダー ファイルを D モジュールに変換していますが、C 文字列をどのように処理すればよいか疑問に思っていました。
DMD 1 を使用すると、次のように動作します。
しかし、DMD 2 (私は個人的に使用していますが、モジュールが両方で機能することを望みます) を使用すると文字列が const になるため、モジュールを使用して同じコードを動作させるには
私は何をすべきか?char*
「クライアント」コードを使用して文字列を変更可能にするだけですか?または、コードをコンパイルするコンパイラのバージョンに応じて型を変更しますか? 前者の場合、それらを変更可能にする最良の方法は何ですか? 私は .dup でそれができると思っていましたが、コンパイラにはそれがありませんでした。後者の場合、どうすればいいですか?私はこれを試しました:
残念ながら、DMD 2 バージョンは DMD 1 に対して有効なコードではなく、バージョン ブロック内のすべてのコードは、結果の実行可能ファイルにコードが含まれていなくても、コードをコンパイルするコンパイラに対して有効なコードでなければなりません。したがって、現在、コードは両方でコンパイルされますが、最初にエイリアスを変更する必要があります。これは、ご想像のとおり、理想的ではありません。
struct - D で構造体のグローバル配列を初期化するにはどうすればよいですか?
SO に D 個の質問 (=p) を入力するという 1 人での探求を支援するために、別の問題に遭遇しました。構造体の配列をグローバルに初期化します。観察:
結果:
Digital Marsのドキュメントを調べても、まったく明らかなことは何も見えないので、Stack Overflow の勇敢な住人にもう一度目を向けます。[0]が識別子であるのと同じように、エラーメッセージは実際の問題とはあまり関係がないと思います(しかしdmd
、それは宣言子だと思いますが、AFAICT はdocsを調べていますが、そうではありません)?
gcc - gcc ビルド時間の改善
GCC(GDC)のDフロントエンドを改善しようとしています。
GCC-4.3.1 でコンパイルされた d フロントエンドを取得しました。しかし、GCC-4.1.2 を使ったときと比べるとビルドにものすごく時間がかかりました。これは gdc のバージョンです。
組み込みの仕様を使用します。
ターゲット: i686-pc-linux-gnu
構成: ../configure --enable-languages=d --prefix=/usr/local/gdc --enable-static --disable-shared
スレッドモデル: posix
gcc バージョン 4.3.1 (GCC)
ビルドに30分近くかかったと言いますが、4.1.2だと10分くらいかかりました。かかる時間を短縮するにはどうすればよいですか?私がやろうとしているのは、D フォルダー内にあるものを変更することだけです。
osx-snow-leopard - ユキヒョウのDMD2
SnowLeopardでDigitalmarsDコンパイラ(バージョン2)を試した人はいますか?アップグレードしたいのですが、動作するDコンパイラが欲しいです。