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

このタグは、プログラミング言語または環境に固有ではない質問用です。

2
元のインタープリターから独立した「ブートストラップされた」インタープリターを作成することは可能ですか?
ウィキペディアによると、コンパイラを記述するという文脈での「ブートストラップ」という用語はこれを意味します。 コンピューターサイエンスでは、ブートストラップは、コンパイルするソースプログラミング言語でコンパイラー(またはアセンブラー)を記述するプロセスです。この手法を適用すると、セルフホスティングコンパイラが実現します。 そして、それがどのように機能するかを理解できます。しかし、話は通訳者にとっては少し違うようです。もちろん、セルフホスティングのインタープリターを作成することもできます。それは私が求めていることではありません。私が実際に求めていることである:それは、元の、最初のインタプリタの自己ホスト型インタプリタから独立させることが可能です。私の言いたいことを説明するために、この例を考えてみましょう。 最初のインタープリターバージョンを言語Xで記述し、インタープリターはYと呼ばれる作成中の新しい言語用です。最初に言語Xのコンパイラを使用して実行可能ファイルを作成します。これで、言語Xで作成されたインタープリターを使用して、新しい言語Yで作成されたファイルを解釈できます。 私が理解している限りでは、言語Xで作成したインタープリターを「ブートストラップ」できるようにするには、言語Yでインタープリターを書き換える必要があります。ただし、ここで問題があります。言語Yでインタープリター全体を書き換えたとしても、言語Xで作成した元のインタープリターが必要になります。インタープリターを言語Yで実行するには、ソースファイルを解釈する必要があります。しかし、ソースファイルを正確に解釈するにはどうすればよいでしょうか?もちろん、何もありえないので、最初のインタープリターを使用する必要があります。 言語Yで作成する新しいインタープリターの数に関係なく、Xで記述された最初のインタープリターを使用して後続のインタープリターを常に解釈する必要があります。これは単に通訳者の性質のために問題のようです。 ただし、逆に、通訳に関するこのウィキペディアの記事では、実際に自己ホスト型通訳について説明しています。関連する小さな抜粋を次に示します。 自己通訳とは、自身を解釈できるプログラミング言語で書かれたプログラミング言語インタープリターです。例は、BASICで書かれたBASICインタプリタです。セルフインタープリターは、セルフホスティングコンパイラに関連しています。 解釈対象の言語用のコンパイラーが存在しない場合、セルフインタープリターを作成するには、ホスト言語(別のプログラミング言語またはアセンブラー)で言語を実装する必要があります。このような最初のインタープリターを持つことにより、システムはブートストラップされ、言語自体でインタープリターの新しいバージョンを開発できます しかし、これがどのように行われるかは、まだはっきりしていません。何であれ、ホスト言語で書かれたインタープリターの最初のバージョンを常に使用せざるを得ないようです。 さて、上記の記事は、ウィキペディアがセルフホスティングインタプリタと思われるいくつかの例を提供している別の記事にリンクしています。しかし、よく調べてみると、これらのセルフホスティングインタープリターの多くの主な「解釈」部分(特にPyPyやRubiniusなどのより一般的なもの)は、実際にはC ++やCなどの他の言語で書かれているようです。 それで、私が上で説明したことは可能ですか?自己ホスト型インタープリターは元のホストから独立できますか?もしそうなら、これはどのように正確に行われますか?

5
自明ではない条件文をループの初期化セクションに移動する必要がありますか?
stackoverflow.comのこの質問からこのアイデアを得ました 一般的なパターンは次のとおりです。 final x = 10;//whatever constant value for(int i = 0; i < Math.floor(Math.sqrt(x)) + 1; i++) { //...do something } 私がやろうとしているのは、条件付きステートメントが複雑なものであり、変わらないということです。 ループの初期化セクションで宣言する方がいいですか? final x = 10;//whatever constant value for(int i = 0, j = Math.floor(Math.sqrt(x)) + 1; i < j; i++) { //...do something } これはもっと明確ですか? 条件式が次のように単純な場合 final …


8
別の関数のみを呼び出すパラメーターなしの関数の利点は何ですか
私がやっているチュートリアル(Javascript用)では、次のような関数を作成することをお勧めします。 function sayHello() { //Some comments explaining the next line window.alert("Hello"); } 難読化以外に、実際の生活でこのようなものを書くことには利点がありますか?もしそうなら、利点は何ですか?

5
Tennentの通信原理の良い説明は何ですか?
この質問は、Software Engineering Stack Exchangeで回答できるため、Stack Overflowから移行されました。 8年前に移行 。 私は、この原則が何であり、言語設計にとってそれが非常に重要であるのかを理解するのに苦労しています。 基本的に、すべての式に対して expr言語の、この構造とまったく同じである必要があると述べています。 (function () { return expr; })() また、Rubyはこの原則に従うが、Pythonは従わないと聞いた。これがなぜ真実なのか、それともまったく真実なのかはわかりません。

9
コードの中であなたの場所を維持するための良いテクニックは何ですか?
この質問は、Software Engineering Stack Exchangeで回答できるため、Stack Overflowから移行されました。 8年前に移行され ました。 ブックマークを使用してコードの1つのポイントを覚えていることを理解しています。しかし、調査しているコードの流れをどのように追跡しますか?例:複数のブックマークとそれらが作成された順序。 例: バグレポート:「壁の角で衝突が機能していません」 バグを再現すると、特定のポリゴンが衝突しないことがわかります。 衝突コードは利用できない開発者によって書かれました。そのため、調査は次のようになります。 調査中、特にGoogleなどの非コードアイテムを確認する場合、コード内での位置を失うことが合理的に予想される場合があります(このコードパスを既に見ましたか?またはどのコードパスを調査しましたか?この関数などに)。避けられない中断についても同じことが言えます(ボス:[Lengthy Pointless Report] NOWなどが必要です) コード内での自分の位置を追跡する方法を提供するためのテクニックやツールのリソースがあると便利です。 編集:上記の例は、回答を必要とする実際の問題ではなく、潜在的な説明として意図されています。 この質問を表現する別の方法は次のとおりです。 新しいシステムを学習するとき、コードを学習する際に現在の状態をどのように追跡しますか?それは理解することはありません理由コードは(コメントはのためにどうあるべきかである)、それが何を行いますが、どのようにそれはそれをしない(これはコードのみではなく、コメントを読んを通じて学習されます)。

11
OOPは実世界で支配的なプログラミングモデルですか?
オブジェクトはありませんか?まあ、ほとんどこれまで ACMのコミュニケーションのVIEWPOINTセクションで、「Objects Never?Well、Hardly Ever」という興味深い記事を見つけました。これは、オブジェクトファーストまたはオブジェクトレイトとは根本的に異なる視点です。彼は「オブジェクト-決して」または多分「オブジェクト-大学院」を提案します。 著者はOOPについて話し、OOPが実際のプログラミング環境でどのように使用されるかについて質問しました。彼は、OOPは支配的なプログラミングモデルではないと考えています。たとえば、プログラミングの70%は、OOPがあまり適していない組み込みシステム向けに行われていると彼は言います。 大学の一部の教授は、OOPの利点について話したい場合、コードの再利用について話します。別の例として、再び、彼は、これは現実世界の実際のケースではない、と主張します。コードの再利用は大学で主張されているものよりも難しい: OOPの使用は、ほとんどの人が信じているほど普及しておらず、支持者が主張するほど成功していないため、CSカリキュラムの中心的な位置は正当化されないと主張します。 スタックオーバーフローの人々がこれについてどのように考えているかを知るのは興味深いですか?OOPは、プログラマーの観点から見れば、主要なプログラミングモデルですか? アプローチを1つだけ選択/学習/使用する必要がある場合、それはOOPですか?どうして?

10
言語に依存しないプログラミングの本[閉じた]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 8年前に閉鎖されました。 ロックされています。この質問とその回答はロックされています。なぜなら、質問はトピックから外れていますが、歴史的に重要だからです。現在、新しい回答やインタラクションを受け入れていません。 言語にとらわれない素晴らしいプログラミングやソフトウェア開発の本はありますか?なぜ読む必要があるのですか?

1
ファイルリーダーをテストするにはどうすればよいですか?
私はいくつかのファイル形式のプロジェクトに取り組んでいます。一部の形式は.xsdsによって指定され、他の形式はそれぞれのWebサイトのドキュメントによって指定され、一部はドキュメントのないカスタムの社内形式です。ムワハハハハ。 どうしたの? ファイルリーダーをテストしたいと思いますが、これを実行する方法が完全にはわかりません。アプリケーションのフローは次のとおりです。 file.___ ===> read by FileReader.java ===> which creates a Model object どこFileReaderインタフェースがあります public interface FileReader { public Model read(String filename); } Modelファイルが読み込まれたときに移入された属性の数を持っています。次のように見えます public class Model { List<String> as; List<String> bs; boolean isAPain = true; // ... } 私は何を試しましたか? 私の唯一のアイデアは、各ファイル形式のファイル「ジェネレーター」を作成することでした。これらのジェネレーターは基本的に、いくつかの変数(たとえば、ファイルで生成するコメントの数)を受け取り、サンプルファイルを出力してから読み込み、結果Modelを最初にファイルの生成に使用した変数と比較するビルダーです。 ただし、これにはいくつかの問題があります。 生成されるファイルは、実際のファイルのようには見えません。ジェネレーターはコンテキストをまったく認識しません。 私が手動で変数を設定しているので、ジェネレータがエッジケース用に生成したかどうかを認識するのは困難です。この方法は、1ダースのサンプルファイルを作成するよりもましです。 これを行うためのより良い方法はありますか? 編集:それは私が実際に意味するものなので、ユニットを統合に変更しました。 EDIT2:これは私が言及したエッジケースの例です。 各ファイルは、頂点とエッジで構成されるグラフを表します。これらの頂点とエッジはさまざまな方法でアタッチできます。 v1 …

4
あなたが作成するために雇われたソフトウェアに代わるオープンソースの代替物を作成することは倫理的でしょうか?
特定の学術機関の学生に販売される教育ソフトウェアを作成するために雇われたとしましょう。あなたはこのプロジェクトに取り組んでいる唯一の開発者であり、すべてのコードを書いています。プロジェクトの代替となるオープンソースは、世界中の恵まれない学生に利益をもたらす可能性があります。要するに、無料の代替手段は人類のより良い利益に貢献するでしょう。あなたが開発のために支払われているソフトウェアの代わりにオープンソースを作成することは「OK」でしょうか? PSソフトウェアは、教育機関の学生のみが使用します。商業的に配布する予定はありません。アプリケーションは、他の人の知的財産を利用しません。

6
2011年のCプログラミング[終了]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 6年前に閉鎖されました。 ロックされています。この質問とその回答はロックされています。なぜなら、質問はトピックから外れていますが、歴史的に重要だからです。現在、新しい回答やインタラクションを受け入れていません。 何ヶ月も前に、私は主に幅広いOS(Linux、* BSD、HPUX、VMSなど)をサポートするPOP3サーバーを維持しながら、生活のためにCコードをカットしました。 私はCのスキルからさびを取り除き、Cで簡単なFORTHをコーディングすることで言語実装について少し学ぶつもりです。 しかし、2000年以降、Cの世界で物事がどのように変化したのか(またはそうでないのか)疑問に思っています。 comp.lang.c 可能な限りANSI C(ただし、C99としてのC89はそれほど広くサポートされていません) gcc -Wall -ansi -pedantic 静的解析ツールの代わりに Emacs Ctags Autoconf + make(およびVMS、HP-UXなどの良さについてはポイント2を参照) 過去11年間Cで書いている人なら誰でも(もしあれば;-))何が変わったのか教えてもらえますか? (他のニュース、聖なるがらくた、私はこれを10年以上行ってきました)。

6
基本的なデータ構造として(階層的な)ファイルシステムを使用する方法
私は独学で、CSの学位を持っていません。データ構造について学べば学ぶほど、OSの基本的なデータストレージ構造として、どのようにファイルシステム、ディレクトリ、およびファイルを抱えているのでしょうか? 私はそれがシンプルであることを理解していますが、最近ではネイティブで利用可能なオプションが増えているようです。私の知る限り、ファイルシステムの基本機能を改善する唯一のプロジェクトはReiserFSでした。ReiserFSでは、誰が、いつ、ファイルのどの行が変更されたかを知ることができました。 たとえば、ファイルにネイティブタグを付けて、画像、図、ワードプロセッシングドキュメント、コードリポジトリ全体をすべて単一のプロジェクトに属するものとしてタグ付けできるとしたら、本当に役立ちます。私はファイルシステムのパラダイムに固執しているので、それらをすべて単一のフォルダー/ディレクトリに入れることができることを知っていますが、それらがすでに異なるディレクトリに存在し、そこにとどまる必要がある場合はどうなりますか?私はそこにこれを行うことができるプログラムがあることを知っていますが、なぜそれらはファイルシステムにないのですか? RDBMSで得られるような、ファイルシステムの何らかのリレーショナル機能があれば便利です。それはVista / 7の一部であるはずだったが、それは機能リストからも外れたことを理解している。 確かに、どのプログラムでもバイナリファイルを保存でき、その中に必要なデータ構造を持つことができます。OSがファイルシステムの単純な階層を超えて、データを保存するより複雑な方法を提供できないのはなぜですか?

6
ユニットテストフレームワークは本当に必要ですか?
現在、私の仕事では、C ++アプリケーション用の単体テストの大規模なスイートを用意しています。ただし、単体テストフレームワークは使用しません。それらは、基本的にassertとcoutをラップするCマクロを単に利用します。何かのようなもの: VERIFY(cond) if (!(cond)) {std::cout << "unit test failed at " << __FILE__ << "," << __LINE__; asserst(false)} 次に、次のような各テストの関数を作成します。 void CheckBehaviorYWhenXHappens() { // a bunch of code to run the test // VERIFY(blah != blah2); // more VERIFY's as needed } CIサーバーは「ユニットテストに失敗しました」を選択し、ビルドに失敗し、開発者にメッセージを送信します。 また、セットアップコードが重複している場合は、本番環境にある他の重複コードと同じようにリファクタリングします。ヘルパー関数の背後にラップし、いくつかのテストクラスをラップして、頻繁に使用されるシナリオを設定します。 CppUnitやboostユニットテストのようなフレームワークがあることは知っています。これらはどのような価値をもたらすのだろうか?これらがテーブルにもたらすものを見逃していますか?それらから得ることができる何か有用なものはありますか?私たちが持っているものは非常にシンプルでうまく機能しているように見えるので、特に本当の価値を追加しない限り、依存関係を追加することをmしています。

8
GUIをグラフィカルにレイアウトすることは「不正行為」と見なされるべきですか?
私には、私よりプログラミング経験が少し多い友人がいます。私たちが使用しているさまざまなプログラミング技術すべてについて話していて、Interface Builderが会話の中で登場しました。 私は自分自身を教えてきたものを除いて、プログラミングなしの背景なので、私は個人的に信じているIBとすべてのそれの機能(IBOutlets、IBActions)ヘルプ(そのことについては、すべてのスキルレベル、)私のスキルレベルのコーダー短い時間で彼らの完全なプロジェクト。 IBに対する彼の見解は少し熱狂的です。彼は、Interface Builderを利用するコーダーは、手作業でインターフェイスをレイアウトする必要がないという事実を「ごまかし」ていると考えています。 質問: GUIビルダーを使用してインターフェイス要素をレイアウトすることは、「不正行為」と見なすべきですか(ほとんどのプログラミングでは、コードを手作業でインターフェイスをレイアウトする必要があるため)。どうして?

9
ほとんどのプログラミング言語がブロックコメントをネストしないのはなぜですか?
私が知っている限り、いくつかはそうですが、人気のあるものはどれもありません。コメントをネストすることについて何か悪いことはありますか? 私が取り組んでいる(小さな)言語でブロックコメントをネストする予定ですが、これが悪い考えかどうかを知りたいです。

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