10周年のSPコンテンツ!
17
しょしー @syocy
ログ出力の有無で顕在化する並行処理のバグとか過剰なログ出力でディスクがあふれてシステム停止とかを見ているので、多くの言語が採用する「ログ出力は副作用のないものとして扱う」という姿勢に疑問を持つ。むしろ積極的に言語機能で保護・制限すべき部分なのでは。デバッグ時のprintは別としても。
Masaki Hara @qnighy
ログって必要だから出してるんですよね。単に型などで制限するという方針だと、ログを出さないプログラムが書かれるだけなのでは
きしもと @ksmakoto
入出力が昔は言語の機能で(ライブラリじゃなく)、古臭い教科書(から更新されてない教科書)だと、どんな言語にも必ず入出力の機能がある、とか書いてあったりするが、最近また入出力が絡む機能を言語が持つようになってきているとかいうあたりか
Masaki Hara @qnighy
多くのプログラミング言語はUNIX風のstdin, stdout, (stderr)を標準で持っているけど、ALGOLやJSのようにそういうのがない状態で登場する言語もたまにある
Masaki Hara @qnighy
単に難しいというだけだとMalbolgeになってしまうので、「一見普通のプログラミング言語だけど、あらゆるプログラミング言語から落とし穴を拾い集めてきていて、ちゃんと動くプログラムを書くのが非常に難しい」あたりが狙いどころだろうか。
淡中☆圏 @tannakaken
considered harmfulな要素のみで作られた言語
Masaki Hara @qnighy
各言語の「ここが失敗だったな」という設計を寄せ集めた言語作ってみたいなあ(処理系がつらそうなので作らない)
Masaki Hara @qnighy
null、配列が共変、ダイアモンド継承問題、スライシング問題、多彩なリテラルのための複雑な字句解析器、トークンベースのマクロ、実体化のタイミングでの名前解決、挙動を変える特殊化、ダイナミックスコープ、複雑な型構文
Masaki Hara @qnighy
関数とコンストラクタが区別されていない、シングルスレッド、暗黙のthis、暗黙のthisを増やせる構文、実装ファイルとインターフェースファイルに同じことを二度書く、比較演算子における暗黙の変換
Masaki Hara @qnighy
代入が=、代入演算子が代入された値を返す、暗黙の下位型変換、デフォルトグローバル変数、演算子オーバーロードの乱用、不必要にステートフルなライブラリ、弱い擬似乱数
でこれき @dico_leque
引数が足りないときはundefinedが入るとか、配列の領域外に値を設定すると自動的にそこまで配列が拡張されるとか
hsjoihs@技術書典 く54D @hsjoihs
@qnighy 変数の巻き上げとかブロックスコープの欠如とかどうです?
Masaki Hara @qnighy
文字列がバイト列、ライブラリごとに色々なエンコーディングを仮定している、文字列が書き換え可能、配列とタプルを区別しない
弩.net Deltist開発者 @isyumi_net
@qnighy 配列と連想配列の区別がないもお願いします。
Masaki Hara @qnighy
strictモードを持つ言語だと何が失敗だったかわかってかなり参考になりそう
Masaki Hara @qnighy
JavaScriptやPerlなどが有名
koba @kobae964
@qnighy bashのexpr周りで、スペースがあったりなかったりすると失敗するのとかもお願いします
Masaki Hara @qnighy
@kobae964 あーあれもすごいですね
まちカドおるみん @kotatsu_mi
世紀の傑作ゴミ言語が生まれようとしている。
Masaki Hara @qnighy
名前のググラビリティーが低い、名前のググラビリティーが危険、複数の競合するビルドツールがある、複数の競合するパッケージマネージャーがある、エヴァンジェリストが初心者を萎縮させている、言語自体に競合するフォークがある(或いは多すぎる)
Masaki Hara @qnighy
標準入出力がないために他ツールとの噛み合わせが悪い、単純に標準ライブラリが貧弱(自身のコンパイルのために必要な分しかない)、抽象的なライブラリ関数と具体的なライブラリ関数が併存している
イショティハドゥス @Ishotihadus
論理演算が is とか not とか and とかで記号じゃない
イショティハドゥス @Ishotihadus
各言語の「ここが失敗だったな」という設計を寄せ集めた言語作ったらただの Python 2 になりそう
残りを読む(76)

コメント

asakurah @asakurah 2018年3月26日
色んな言語の落とし穴を集めた言語か…。考えてみるのは面白いなぁ
yasu⋈(HIRATA Yasuyuki)@アスカネット @hirayasu 2018年3月26日
当時の状況や経緯を考慮せず「この仕様がダメ」と断罪するのはちょっと…
yasu⋈(HIRATA Yasuyuki)@アスカネット @hirayasu 2018年3月26日
ちなみに、Perlだと "10" + "10" は20になりますね。
otsuyokodon @otsuyokodon 2018年3月27日
しかしガベージコレクションが良い考えだと思ったやつは誰なんだ。その考えかたがゴミだと思いつつある。GC様のふるまいを伺いつつプログラミングしなければいけなくなってしまった。
otsuyokodon @otsuyokodon 2018年3月27日
BAT という例がある。普通の言語だと思っていたら確実にはまる。
べんがろほ @6engaroho 2018年3月27日
for(i in 配列)の "i"が文字列になるやつとか、Luaの配列が1から始まるのとか。
saku @sakuuuuuuune 2018年3月27日
10年、20年後には、この時代はカオスだったねとか言われてるだろうなぁ
ワス @wsplus 2018年3月27日
その昔FORTRANつー謎言語あって、授業の最初に「現在使われていないが勿体ないから教える」と1年間講義が続き、その後Mac触って「本当に無駄だった」と悟った
ヘボピー @hebop_ 2018年3月27日
そこにMSX-BASICの「変数は最大2文字」と「ラベルが使えないので飛び先は行番号指定」を加えてよりカオスにするのだ。
tomtia_tw @tomtia_tw 2018年3月27日
まぁまだまだFORTRANは死んでないけどね。今年はFortran 2018も出るはずだし。
アズなんとかさん@奴隷貿易反対 @as_capabl 2018年3月27日
あえてCoqから「引数や型の推論は可能だが、直近で定義された型の合う定義を問答無用で持ってくる」というのを引っ張って来たい
アズなんとかさん@奴隷貿易反対 @as_capabl 2018年3月27日
Prologのバックトラッキングを入れて「手続き処理の最中でうっかり失敗すると失敗駆動ループが回る」というクソ仕様にしたら最強かもしれない
アズなんとかさん@奴隷貿易反対 @as_capabl 2018年3月27日
(バックトラッキング自体は失敗ではないけど、失敗駆動ループとかに悪用できるようにしたのは失敗だと思う)
みっくす・じゅーす @mixjuice_100cc 2018年3月27日
奥が深すぎて利用者が増える言語
nekosencho @Neko_Sencho 2018年3月27日
コンピュータは仕様がまるっきり別者になってるからね。 初期の、秒間数千回の計算、メモリ数千(大型コンピュータでさえ!)ってのと、パソコンですら秒間数兆回計算できる演算装置に数十億級のメモリがある時代では扱い方もぜんぜん違うだろ
いくた♥️なお/C97土南ツ30a @ikutana 2018年3月27日
命令文が先頭一致でマッチするってクソ言語があって、 ディスクを抜く前にREMOVEコマンドを実行しないとディスクが壊れてしまうのに、 REMOVってやると、コメントのREM文として処理してしまって、そのままディスクを壊してしまうっていう言語がありましてね。 DISK BASIC (通称N-DISK BASIC)というんですけど。
yasu⋈(HIRATA Yasuyuki)@アスカネット @hirayasu 2018年3月27日
FORTRANはスパコンとかで現役 (むしろ好んで使われる) だから、使われていないわけでは無いんだよなあ。あと、数学系とかでプログラミングが絡む場合、書籍でもFORTRANが使われていたり。(後者はPythonになりつつあるみたいだけど)
ぼんぼ (荒魂5%) @tm_bonvo 2018年3月27日
全行に行番号が必要だったり全ての変数がグローバルだったりするBASICとか、よくもまぁあんなんでそこそこの規模のコード書いてたなぁとか思う
hatano @_hatano_ 2018年3月27日
FORTRANは死んでいるといってよいのでは? Fortranは生きてるけど。
Ralph Rdlizer@Where'll we go from now? @Ralph_Rdlizer 2018年3月28日
hebop_ NECのPC9800シリーズのBASICがラベルを使えた当時、IBMマルチステーション5500系のBASICはまさに『ラベルが使えないので飛び先は行番号指定』になっていました。そのIBMのBASICで冒頭に置いている宣言系をデバック中にREMで括り、デバック後“リナンバーしてから”REMを外し、後にエラーが発生した際飛び先がズレていることに気づかず、当時新人だった私が気づいたことが…。
ログインして広告を非表示にする
ログインして広告を非表示にする