世紀の傑作ゴミプログラミング言語

この世のプログラミング言語の悪い部分を全て集めたらどうなるか。
19
しょしー @syocy

ログ出力の有無で顕在化する並行処理のバグとか過剰なログ出力でディスクがあふれてシステム停止とかを見ているので、多くの言語が採用する「ログ出力は副作用のないものとして扱う」という姿勢に疑問を持つ。むしろ積極的に言語機能で保護・制限すべき部分なのでは。デバッグ時のprintは別としても。

2018-03-25 18:38:37
Masaki Hara @qnighy

ログって必要だから出してるんですよね。単に型などで制限するという方針だと、ログを出さないプログラムが書かれるだけなのでは

2018-03-26 17:56:15
きしもと @ksmakoto

入出力が昔は言語の機能で(ライブラリじゃなく)、古臭い教科書(から更新されてない教科書)だと、どんな言語にも必ず入出力の機能がある、とか書いてあったりするが、最近また入出力が絡む機能を言語が持つようになってきているとかいうあたりか

2018-03-26 18:01:15
Masaki Hara @qnighy

多くのプログラミング言語はUNIX風のstdin, stdout, (stderr)を標準で持っているけど、ALGOLやJSのようにそういうのがない状態で登場する言語もたまにある

2018-03-26 18:04:21
Masaki Hara @qnighy

単に難しいというだけだとMalbolgeになってしまうので、「一見普通のプログラミング言語だけど、あらゆるプログラミング言語から落とし穴を拾い集めてきていて、ちゃんと動くプログラムを書くのが非常に難しい」あたりが狙いどころだろうか。

2018-03-26 18:13:13
淡中☆圏 @tannakaken

considered harmfulな要素のみで作られた言語

2018-03-26 15:46:36
Masaki Hara @qnighy

各言語の「ここが失敗だったな」という設計を寄せ集めた言語作ってみたいなあ(処理系がつらそうなので作らない)

2018-03-26 19:43:28
Masaki Hara @qnighy

null、配列が共変、ダイアモンド継承問題、スライシング問題、多彩なリテラルのための複雑な字句解析器、トークンベースのマクロ、実体化のタイミングでの名前解決、挙動を変える特殊化、ダイナミックスコープ、複雑な型構文

2018-03-26 19:47:42
Masaki Hara @qnighy

関数とコンストラクタが区別されていない、シングルスレッド、暗黙のthis、暗黙のthisを増やせる構文、実装ファイルとインターフェースファイルに同じことを二度書く、比較演算子における暗黙の変換

2018-03-26 19:53:45
Masaki Hara @qnighy

代入が=、代入演算子が代入された値を返す、暗黙の下位型変換、デフォルトグローバル変数、演算子オーバーロードの乱用、不必要にステートフルなライブラリ、弱い擬似乱数

2018-03-26 19:59:19
でこれき @dico_leque

引数が足りないときはundefinedが入るとか、配列の領域外に値を設定すると自動的にそこまで配列が拡張されるとか

2018-03-26 19:53:01
【ゲムマ両サ-19】はすじょい (hsjoihs) / ヒンジ壊しP @hsjoihs

@qnighy 変数の巻き上げとかブロックスコープの欠如とかどうです?

2018-03-26 20:01:38
Masaki Hara @qnighy

文字列がバイト列、ライブラリごとに色々なエンコーディングを仮定している、文字列が書き換え可能、配列とタプルを区別しない

2018-03-26 20:08:45
りく(いしゅみ) @isyumi_net

@qnighy 配列と連想配列の区別がないもお願いします。

2018-03-26 20:06:49
Masaki Hara @qnighy

strictモードを持つ言語だと何が失敗だったかわかってかなり参考になりそう

2018-03-26 20:09:50
Masaki Hara @qnighy

JavaScriptやPerlなどが有名

2018-03-26 20:13:22
koba @kobae964

@qnighy bashのexpr周りで、スペースがあったりなかったりすると失敗するのとかもお願いします

2018-03-26 20:11:53
Masaki Hara @qnighy

@kobae964 あーあれもすごいですね

2018-03-26 20:12:17
orumin @orumin

世紀の傑作ゴミ言語が生まれようとしている。

2018-03-26 20:11:46
Masaki Hara @qnighy

名前のググラビリティーが低い、名前のググラビリティーが危険、複数の競合するビルドツールがある、複数の競合するパッケージマネージャーがある、エヴァンジェリストが初心者を萎縮させている、言語自体に競合するフォークがある(或いは多すぎる)

2018-03-26 20:19:03
Masaki Hara @qnighy

標準入出力がないために他ツールとの噛み合わせが悪い、単純に標準ライブラリが貧弱(自身のコンパイルのために必要な分しかない)、抽象的なライブラリ関数と具体的なライブラリ関数が併存している

2018-03-26 20:22:58
イショティハドゥス@2日目V01a @Ishotihadus

論理演算が is とか not とか and とかで記号じゃない

2018-03-26 20:16:28
イショティハドゥス@2日目V01a @Ishotihadus

各言語の「ここが失敗だったな」という設計を寄せ集めた言語作ったらただの Python 2 になりそう

2018-03-26 19:44:00
1 ・・ 5 次へ