1

私はクリーンなコードのファンです。私は自分の言語が自分がやろうとしていることを表現できるのが好きですが、それを反映する構文も好きです。

たとえば、私はジェイルブレイクされたiPhone用のObjective-Cmethod_setImplementation()で、ランタイムの機能を使用して他のコードにパッチを適用する多くのプログラムに取り組んでいます。または、PyObjCでは、構文を使用する必要がありますUIView.initWithFrame_()。これも、メソッド名の構造化方法ではかなりひどく読みにくいものです。どちらの場合も、言語は構文でこれをサポートしていません。これを行うための3つの基本的な方法を見つけました。

  • 非常識なマクロ。この「CaptainHook」を見てください。私が探していることを使いやすい方法で実行しますが、完全にクリーンではなく、大きなハックです。
  • 非常に優れた構文を実装する「Logos」もありますが、Perlで記述されており、大量の正規表現を使用してコードを解析しています。これは私を怖がらせます。%hook ClassNameを追加するというアイデアは好きですが、正規表現を使用してCまたはObjective-Cを解析することは好きではありません。
  • 最後に、Cycriptがあります。これはJavaScriptの拡張機能であり、Objective-Cランタイムとインターフェイスし、JavaScriptでObjective-Cスタイルのコードを使用して、それを他のプロセスに挿入できるようにします。これは、JavaScriptに実際にパーサーを使用しているため、おそらく最もクリーンですが、私は一般的にその言語の大ファンではありません。

これを可能にするために、PythonとObjective-Cの拡張機能を作成する必要がありますか?このような非常に特殊なニッチでのみ構文を変換するために、私の言語用のパーサーを作成する価値はありますか?デフォルトのObjective-CフッキングまたはPyObjCの恐ろしい構文をそのまま使用する必要がありますか?

4

2 に答える 2

2

コンパイラーまたはインタープリターの設計の経験がない場合、私の答えは断固として NO です。これは、コンピューター サイエンスにおける最大の課題の 1 つです。

経験があれば、私の答えは「それは本当にばかげた考えです」に変わります。

これが、他の人が使いたくなる大きな成熟した製品になることを想像していますか? そうしないと、優れたアプリケーションを作成する気が散ってしまうだけです。

于 2010-03-19T02:29:28.137 に答える
1

プログラミング言語には 2 種類しかありません。当然のことながら、誰もが文句を言う言語と、誰も使用しない言語です。プログラムを作りたい人は、美しいとかきれいだからという理由で言語を選ぶのではありません。彼らがそれを選ぶのは、それがサポートされていて、利用可能であり、あなたが使えないほどひどいものではないからです。

改善できると思われるものを見つけた場合、それを修正できると言いたくなることがあります。しかし、この場合、コストはおそらくそれ以上の価値があります。ある程度クリーンにするか、もう少し一貫性を持たせることよりも大きな目標を満たさないプログラミング言語は、普及しない傾向があります。これらの分野での漸進的な進歩は、ソフトウェアを作成するプロセスを改善するために本当に、本当に必要なものではないからです。あいまいなペット言語のプロジェクトは、貢献するコスト (あなたにとって新しく、幅広いサポートやドキュメントがない誰かのペット言語を学ぶこと) が高すぎるため、死んでしまい、人気を得られない傾向があります。

言語の設計やいじくりに興味があるなら、これは興味深いかもしれません。それは思っているよりも難しいことです。すべての主要な言語の設計者は、実用性と互換性のために美しさと純粋さを犠牲にして、多くのトレードオフに対処しなければなりませんでした。一方、ソフトウェアを書きたい場合は、与えられた不完全なツールに対処してください。

于 2010-03-19T06:15:56.110 に答える