アカウント名:
パスワード:
C言語でランタイムエラーになるものの多くがPascalではコンパイル時のチェックで引っかかるので助かるC言語でデバッガに頼らなければならないデバッグ作業がPascalでは関数の実行経路のトレースバックのチェックで済むことが多いので助かる(言語仕様で規定されているのではないが、Pascal系というかWirth系の言語のコンパイラ作成のお約束になっている機能がいろいろあって助かる)Modula-2やOberonもいろいろと勉強になった
> C言語でランタイムエラーになるものの多くがPascalではコンパイル時のチェックで引っかかるので助かる
この部分の意味が判らないのですが、Pascal のコンパイラはコードの静的解析を行っていて、静的解析で実行時エラー(ランタイムエラー)が検出できる、ってことですか?
コードの静的解析がまともに使える様になったのは2010年以降で、1980年代のコンパイラがそこまでの静的解析を実装できていたとは俄かに信じられないのですが一体何が「助かる」だったんでしょう?
当時のC言語は宣言されてない関数も呼べたりして引数の数や型が合わなかったら普通に暴走してたり(今でもできるかも)returnを書き忘れても何の警告も無かったりしたので、そういうのをちゃんと弾いてくれる、程度の意味でしょう。程度は低くても静的解析と言えなくもない。
> 当時のC言語は宣言されてない関数も呼べたりして引数の数や型が合わなかったら普通に暴走
当時のC言語はプロトタイプ宣言がなく、一方でPascalはプロトタイプ宣言(に準ずるもの)があった、と言う事ですか?
> 程度は低くても静的解析と言えなくもない。
プロトタイプ宣言のことでしたら、それは静的解析とは全く別次元の話です。
>プロトタイプ宣言のことでしたら、それは静的解析とは全く別次元の話です。プロトタイプ宣言が必須の言語仕様しか知らないとそう感じるだけでは?
>>プロトタイプ宣言のことでしたら、それは静的解析とは全く別次元の話です。> プロトタイプ宣言が必須の言語仕様しか知らないとそう感じるだけでは?
そうですかね?1995年に書かれた、静的解析ツールに関する論文(結構有名なやつ)でさえ- 静的解析ツールのアイデア自体は1970年代からある- C言語のプロトタイプ宣言程度の技術は静的解析とは言えないと書いてありますよ。
具体的にはこのpdfの2.1節の後半です。https://web.archive.org/web/20110927010304/http://www.ida.liu.se/~TDDC... [archive.org]
その論文の表現も"far from complete"で、「完璧とは言えない」であって「こんなもん静的解析じゃねーよ」とまでは言ってないようですが、何れにせよこのツリーで静的解析の定義を深堀りする意味はないでしょう。「コードの静的解析がまともに使える様になったのは2010年以降で、1980年代のコンパイラがそこまでの静的解析を実装できていたとは俄かに信じられないのですが」の部分が余計な仮定で、当時のC言語は遥かに酷かったので相対的に簡単なチェックでも充分「助かる」だったというだけの話。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
ソースを見ろ -- ある4桁UID
Pascalは助かる (スコア:1)
C言語でランタイムエラーになるものの多くがPascalではコンパイル時のチェックで引っかかるので助かる
C言語でデバッガに頼らなければならないデバッグ作業がPascalでは関数の実行経路のトレースバックのチェックで済むことが多いので助かる(言語仕様で規定されているのではないが、Pascal系というかWirth系の言語のコンパイラ作成のお約束になっている機能がいろいろあって助かる)
Modula-2やOberonもいろいろと勉強になった
Re: (スコア:0)
> C言語でランタイムエラーになるものの多くがPascalではコンパイル時のチェックで引っかかるので助かる
この部分の意味が判らないのですが、
Pascal のコンパイラはコードの静的解析を行っていて、静的解析で実行時エラー(ランタイムエラー)が検出できる、ってことですか?
コードの静的解析がまともに使える様になったのは2010年以降で、1980年代のコンパイラがそこまでの静的解析を実装できていたとは俄かに信じられないのですが
一体何が「助かる」だったんでしょう?
Re: (スコア:0)
当時のC言語は宣言されてない関数も呼べたりして引数の数や型が合わなかったら普通に暴走してたり(今でもできるかも)returnを書き忘れても何の警告も無かったりしたので、そういうのをちゃんと弾いてくれる、程度の意味でしょう。
程度は低くても静的解析と言えなくもない。
Re: (スコア:0)
> 当時のC言語は宣言されてない関数も呼べたりして引数の数や型が合わなかったら普通に暴走
当時のC言語はプロトタイプ宣言がなく、一方でPascalはプロトタイプ宣言(に準ずるもの)があった、と言う事ですか?
> 程度は低くても静的解析と言えなくもない。
プロトタイプ宣言のことでしたら、それは静的解析とは全く別次元の話です。
Re:Pascalは助かる (スコア:0)
>プロトタイプ宣言のことでしたら、それは静的解析とは全く別次元の話です。
プロトタイプ宣言が必須の言語仕様しか知らないとそう感じるだけでは?
Re:Pascalは助かる (スコア:1)
>>プロトタイプ宣言のことでしたら、それは静的解析とは全く別次元の話です。
> プロトタイプ宣言が必須の言語仕様しか知らないとそう感じるだけでは?
そうですかね?1995年に書かれた、静的解析ツールに関する論文(結構有名なやつ)でさえ
- 静的解析ツールのアイデア自体は1970年代からある
- C言語のプロトタイプ宣言程度の技術は静的解析とは言えない
と書いてありますよ。
具体的にはこのpdfの2.1節の後半です。
https://web.archive.org/web/20110927010304/http://www.ida.liu.se/~TDDC... [archive.org]
Re: (スコア:0)
その論文の表現も"far from complete"で、「完璧とは言えない」であって「こんなもん静的解析じゃねーよ」とまでは言ってないようですが、何れにせよこのツリーで静的解析の定義を深堀りする意味はないでしょう。
「コードの静的解析がまともに使える様になったのは2010年以降で、1980年代のコンパイラがそこまでの静的解析を実装できていたとは俄かに信じられないのですが」の部分が余計な仮定で、当時のC言語は遥かに酷かったので相対的に簡単なチェックでも充分「助かる」だったというだけの話。