アカウント名:
パスワード:
C言語は標準設定で、ポインタ・配列の境界チェックをしたり、セキュアな代替関数がある命令(snprintfとか)は、非セキュアなオリジナル命令を無効にするとかすればいいとおもう
もちろん、コンパイルオプションや、コード内で明示的に指定することでそれらを無効にして、高速なコードを書きたい人は書けるようにして
OSやlibc等速度が必要なコードはチェックを無効にしてビルド、一般アプリはチェックを有効にしてビルドとか
何故今でもC言語を使う必要があるかというと、あえてそういうチェックを外す必要のある低レイヤーの実装に必要だからで、そんなお節介な仕様を標準化されても「C言語でなければならない人」にとっては迷惑なだけではないかと。逆にそうした保護を言語仕様でやってもらわなければならない用途には、今や他の言語を選ぶべきなんじゃないですかね。
昔はそういうチェックを自動でやってくれる言語(コンパイラがするか実行時チェックかは措くとして)がいろいろあったと思うが、今は猫も杓子もc言語、c言語を使わぬ者プログラマに非ず、という雰囲気でしてねえ。
K&Rの時代には、変数名関数名も極力短く(つまりはタイプ量を少なく)していたのが、その後はタイプ量など気にせず長い名前にするようになったし。
短い識別子はコンパイラとカリンカの制限のためでは
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
※ただしPHPを除く -- あるAdmin
標準設定の問題? (スコア:0)
C言語は標準設定で、ポインタ・配列の境界チェックをしたり、
セキュアな代替関数がある命令(snprintfとか)は、非セキュアなオリジナル命令を無効にするとか
すればいいとおもう
もちろん、コンパイルオプションや、コード内で明示的に指定することでそれらを無効にして、
高速なコードを書きたい人は書けるようにして
OSやlibc等速度が必要なコードはチェックを無効にしてビルド、
一般アプリはチェックを有効にしてビルドとか
Re: (スコア:0)
何故今でもC言語を使う必要があるかというと、あえてそういうチェックを外す必要のある低レイヤーの実装に必要だからで、そんなお節介な仕様を標準化されても「C言語でなければならない人」にとっては迷惑なだけではないかと。
逆にそうした保護を言語仕様でやってもらわなければならない用途には、今や他の言語を選ぶべきなんじゃないですかね。
Re: (スコア:0)
昔はそういうチェックを自動でやってくれる言語(コンパイラがするか実行時チェックかは措くとして)がいろいろあったと思うが、今は猫も杓子もc言語、c言語を使わぬ者プログラマに非ず、という雰囲気でしてねえ。
K&Rの時代には、変数名関数名も極力短く(つまりはタイプ量を少なく)していたのが、その後はタイプ量など気にせず長い名前にするようになったし。
Re:標準設定の問題? (スコア:0)
短い識別子はコンパイラとカリンカの制限のためでは