みけCATのにっき(仮)
つれづれなるまゝに、日くらし、PCにむかひて、心に移りゆくよしなし事を、そこはかとなく書きつくれば、あやしうこそものぐるほしけれ。
(本当か!?)
出典

C言語のコードとは?

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

C言語のコードとは?

投稿記事 by みけCAT » 8年前

「コンパイルが通りません。ソースコードはこれです。」や
「コードを貼り付ける場合は [​code] と [/code] で囲って下さい。」などの表現がありますが、
そもそもコード(ソースコード)とは何でしょうか?

まず、これは普通のC言語のソースコードです。

CODE:

extern int puts(const char* s);

int main(void) {
    puts("hello, world");
    return 0;
}
では、これはC言語のソースコードでしょうか?

CODE:

extern int puts(const char* s);

int main(void) {
    puts("hello, world")
    return 0;
}
これはさっきのソースコードと似ていますが、puts()の後のセミコロンが抜けているので、コンパイルが通りません。
ここで考えてみてください。コンパイルが通らないということは、
このテキストの場合はテキストが文法にあてはまらないということです。
すなわち、このテキストはC言語という言語に含まれず、これはC言語のソースコードではないということになるでしょう。

それとも、「これはC言語のソースコードに似ているからC言語のソースコードと言って良い」でしょうか?
もしそうだとすると、「似ている」とはどういうことでしょうか?機械学習かなんかで判定するのでしょうか?
例えば、このテキストも、「C言語のコンパイラに入力してコンパイルさせるとエラーが出るテキスト」という点でさっきのテキストに似ています。
これはC言語のソースコードでしょうか?

CODE:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc varius augue
tortor, sagittis blandit purus accumsan elementum. Mauris vulputate arcu
pulvinar, finibus erat sit amet, molestie justo. Sed mattis metus et est
maximus, a porttitor leo ultricies. Pellentesque varius nisl gravida,
molestie arcu sed, consequat risus. In varius pharetra leo, eget blandit
elit vestibulum id. In ac orci nec turpis imperdiet aliquam. Aenean lacinia
dui ac purus pretium, maximus accumsan metus aliquam. Morbi congue tellus a
porta commodo. Duis volutpat quam eget risus elementum consectetur. Aenean
finibus, tortor non porttitor accumsan, nibh arcu rhoncus purus, non
facilisis ligula libero in odio. Quisque nec ex at nisi pellentesque
placerat. Vivamus nec risus velit.
もし2番目のコンパイルが通らないテキストはC言語のソースコードであり、
3番目のコンパイルが通らないテキストはC言語のソースコードではないと主張するのであれば、その根拠は何でしょうか?

さらに、これは3番目のテキストに似ていますが、コンパイルが通るC言語のソースコードです。

CODE:

int a;
#if 0
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc varius augue
tortor, sagittis blandit purus accumsan elementum. Mauris vulputate arcu
pulvinar, finibus erat sit amet, molestie justo. Sed mattis metus et est
maximus, a porttitor leo ultricies. Pellentesque varius nisl gravida,
molestie arcu sed, consequat risus. In varius pharetra leo, eget blandit
elit vestibulum id. In ac orci nec turpis imperdiet aliquam. Aenean lacinia
dui ac purus pretium, maximus accumsan metus aliquam. Morbi congue tellus a
porta commodo. Duis volutpat quam eget risus elementum consectetur. Aenean
finibus, tortor non porttitor accumsan, nibh arcu rhoncus purus, non
facilisis ligula libero in odio. Quisque nec ex at nisi pellentesque
placerat. Vivamus nec risus velit.
#endif

YuO
記事: 947
登録日時: 13年前

RE: C言語のコードとは?

投稿記事 by YuO » 8年前

みけCAT さんが書きました:「コンパイルが通りません。ソースコードはこれです。」や
「コードを貼り付ける場合は [​code] と [/code] で囲って下さい。」などの表現がありますが、
そもそもコード(ソースコード)とは何でしょうか?
ここでいう(ソース)コードとは,コードという言葉を使った人が対象言語処理系への入力に使う文字列でしょうね。
対象言語処理系がそれを受理できるかどうかにかかわらず,です。

言い換えるなら,「書いた本人」または「見た人間」が「コードだと思う物」が上記で言う「コード」です。
# 場合によっては「コードの断片」かもしれませんが。

codeタグを使って囲っている場合,Textのような汎用系を除くと,
「それを記述している人間はそれが(その言語の)コード(断片)だと主張している」と捉えるべきものでしょう。
コード(断片)らしき物があり,それをコード(断片)として取り扱うような文を書いている場合に,
書いた人間に対して「コードを云々」も,「どこがコード(断片)かを明らかにしろ」という要求と言い換えられるかと思います。

アバター
新SUE
記事: 0
登録日時: 9年前

Re: C言語のコードとは?

投稿記事 by 新SUE » 8年前

切れた輪ゴムは輪ゴムと言えるのか、みたいな問題ですね(なんか違う?)

アバター
usao
記事: 1887
登録日時: 11年前

Re: C言語のコードとは?

投稿記事 by usao » 8年前

質問時には「コード」の一部分のみを抜粋して提示することもあるわけだが,
その部分「のみ」ではコンパイルが通らない場合,それは 「コード」ではない ということになるのであろうか?
という,大変奥深い問題に発展し得る.
何らかの部分省略が許されるのであれば,例えば,
>コンパイルが通らないテキスト
も,提示されなかった部分に何かすごいマクロ群があって,
全体像を見たら立派な(?)コードだったという可能性も有り得るわけだ.
つまり,ある一連の記述があるとき,
「どの部分がコードなのか? ということについて,観測者には判断がつかない」.
(この文面だって,実は「コード」かもしれない)

「コードはこれです」とか「コード部分をタグで囲ってください」というのは,
この問題に対する対処方法のひとつであって,
「記述のうち,どこがコードであり,どこが違うのか」という認識を共有するために必要な儀式であろう.