アカウント名:
パスワード:
きっかけはこのおもしろい(オブラートに包んだ表現)ツイートではないかな
https://twitter.com/fnya/status/1192036095820615680 [twitter.com]
C言語で条件の部分が数値にしか見えない場合は可読性が多少上がるかもしれない。ブール型の扱いが厳密な言語なら可読性があるように書かないとコンパイルエラーになるから、そういう言語しか使ってなければおかしく見えるかもね。
最近、
(cond) ? (a = 1) : (a = 2);
ってコードを見かけてちょっと頭を抱えた。
if (cond) { a = 1; } else { a = 2; }
か
a = (cond) ? 1 : 2;
か、どっちかにしろ、と。
三項演算子は「代入処理は一つ(代入先は同じ)」であることを明確にできるのが、ifに対するメリットだと思うが、この例だと台無しというか両方の悪いところ取りでもう。一番可読性いいのは、
a
ALGOLからLisp、ML、Haskellあたりの関数型言語は大抵if式ですね。Smalltalkのやつも式と言うのかな
SNOBOLは構造化プログラミングが提唱される以前の言語であるため、ループは基本的に無条件分岐(goto文)で行われる。全ての式は実行後、次に処理する行のラベルを選択でき、省略時は次の行が実行される。標準入出力はINPUT/OUTPUTという変数に代入処理を行うことで実行される。if文に相当する物は無く、代わりに式を実行後、成功か失敗かで次に処理する行を変更することができる。これは具体的には
LINE = INPUT :S(LABEL1) F(LABEL2)のような場合(これは標準入力から1行読み込み変数 LINEに代入している)、その処理が成功した場合は LABEL1の行の処理へ、失敗した場合は LABEL2の行の処理へ遷移することを表している。
論理値ではなく成功・失敗で分岐するところがおもしろい例外ともまた違う
同じ人が作った構造化言語であるIcon [wikipedia.org]も似たかんじこちらは他の言語に先んじてジェネレータなどがある
SNOBOLは学生の頃に授業で使わされたことがあります。数年前(数年先輩)の学生が、学科のコンピュータ用に処理系を作ったと聞きました。可変長の文字列処理に長けた言語という印象だけ残っていますが、ほとんど覚えていません。
内容のないコメントですが、懐かしかったので。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
長期的な見通しやビジョンはあえて持たないようにしてる -- Linus Torvalds
発端? (スコア:3, 参考になる)
きっかけはこのおもしろい(オブラートに包んだ表現)ツイートではないかな
https://twitter.com/fnya/status/1192036095820615680 [twitter.com]
Re: (スコア:1)
C言語で条件の部分が数値にしか見えない場合は可読性が多少上がるかもしれない。
ブール型の扱いが厳密な言語なら可読性があるように書かないとコンパイルエラーになるから、そういう言語しか使ってなければおかしく見えるかもね。
Re: (スコア:0)
最近、
ってコードを見かけてちょっと頭を抱えた。
か
か、どっちかにしろ、と。
三項演算子は「代入処理は一つ(代入先は同じ)」であることを明確にできるのが、ifに対するメリットだと思うが、この例だと台無しというか両方の悪いところ取りでもう。
一番可読性いいのは、
Re: (スコア:0)
ALGOLからLisp、ML、Haskellあたりの関数型言語は大抵if式ですね。
Smalltalkのやつも式と言うのかな
Re:発端? (スコア:0)
SNOBOLは構造化プログラミングが提唱される以前の言語であるため、ループは基本的に無条件分岐(goto文)で行われる。全ての式は実行後、次に処理する行のラベルを選択でき、省略時は次の行が実行される。標準入出力はINPUT/OUTPUTという変数に代入処理を行うことで実行される。if文に相当する物は無く、代わりに式を実行後、成功か失敗かで次に処理する行を変更することができる。これは具体的には
LINE = INPUT :S(LABEL1) F(LABEL2)
のような場合(これは標準入力から1行読み込み変数 LINEに代入している)、その処理が成功した場合は LABEL1の行の処理へ、失敗した場合は LABEL2の行の処理へ遷移することを表している。
論理値ではなく成功・失敗で分岐するところがおもしろい
例外ともまた違う
同じ人が作った構造化言語であるIcon [wikipedia.org]も似たかんじ
こちらは他の言語に先んじてジェネレータなどがある
Re: (スコア:0)
SNOBOLは学生の頃に授業で使わされたことがあります。
数年前(数年先輩)の学生が、学科のコンピュータ用に処理系を作ったと聞きました。
可変長の文字列処理に長けた言語という印象だけ残っていますが、ほとんど覚えていません。
内容のないコメントですが、懐かしかったので。