私は、この非コード コード (ファイルの残りの部分の言語ではない、非コード) の現在の使用法と、そのような非コード コードの歴史に特に魅了されています。
場合によっては、これはメタプログラミングと呼ばれることもありますが、それがすべての場合をカバーしているとは思いません。
私はそれが多くのことに使用されているのを見てきました.(私の経験では)Cコメントの「Autodocs」で80年代までさかのぼり、ドキュメントを生成するために使用され、PHPのようなインタープリター言語での非常に複雑な現代の化身までずっとコメント ブロックにアノテーションがあり、それらはドキュメントに使用され、PHP 構文が不十分な場合に追加の意味を追加したり、その他の種類の「メタ」データを追加したりします。
その大きな寄せ集めのようです。そして、それについてどのように感じているかはまだわかりません。なんとなく間違っているようです。しかし、それでも私はそれに大きな有用性を見出しています。
私たちのコードのほぼすべてに含まれる非コード コードのこれらすべてのケースをカバーするためにどのような一般的な用語を使用するのか、また、この件名とその歴史、ベスト プラクティスなどに関する何らかの決定的な文書があるかどうか疑問に思っています。ありませんが、自分で調べて書きたいものとして興味があります。
たとえば、PHP の世界では、次のようなものがあります。
/**
* This is a "docblock" and PHP can introspect on it
*
* The annotation below is common, and is used by processors to generate
* documentation. It can also be used by an IDE to provide hints while
* coding. Its also kinda redundant because in this case PHP is already
* providing the same information... it also has no effect on the code,
* unless some code is written to introspect on it and then do something.
*
* @param Request $request
*
* Another handy one, describing what is returned. PHP doesn't have
* a way to do this in the code, so this one is more useful.
*
* @return Response
*
* Here's some more annotations. The syntax is different, because, well,
* there's no restrictions...
*
* This is for generating Swagger API documentation. Cool huh? Again,
* it has no effect on the code. Period. Notice how it also specifies the
* type as a Response object (given that you understand this new syntax).
* Note also that this duplicates the functionality of @return above, but
* we need both because different tools are using them each.
*
* @SWG\Api(
* path="/gettax",
* description="Calculate tax",
* @SWG\Operation(
* method="POST",
* type="Response",
* @SWG\Parameter(paramType="body",required=true,type="GetTax")
* )
* )
*/
public function calc(Request $request) ....
とにかく、私が見ているのは、この種のものを使用する非常に多くのツールですが、多くの重複と断片化があります. 少なくともPHPの世界では。そして、長年のプログラミングを振り返ってみると、この種のものは新しいものではないと思います.
この件について検索したかったのですが、探していたものを取得するのに適した検索用語がありませんでした。これは、そのような方法の起源、長年にわたってうまく機能したかどうか、ベストプラクティスなどに関する歴史的な文書でした.これはすべてメタプログラミングと見なされますか?
これらはどのような進化を遂げているのでしょうか。ある時点で言語の適切な部分になるのでしょうか、それとも新しい言語に組み込まれるのでしょうか?
この主題は一般的に私に興味を持っていたので、他の誰かがこの主題について決定的なテキストを書いたのではないかと思いました。
これらは実際にはドメイン固有言語の形式であると思います。ホスト言語は何かを表現することができないため、DSL を使用してコードに埋め込み (コメント内、またはホスト言語がサポートする機能 (注釈など) を使用) して、ホスト言語に関連付けたい他の情報を表現します。必ずしもコード フローに影響を与えることはありません。