Following is the email I received from Google for this article. This is so unhelpful to identify the cause. After carefully reviewing the article, I found one URL that was flagged to contain malware(probably usual old domain expired and purchased by other problem) so I removed that link. Please review and re-publish this article. I hope Google's flagging system tells me why it trigger the flagging.
Hello, As you may know, our Community Guidelines (https://blogger.com/go/contentpolicy) describe the boundaries for what we allow-- and don't allow-- on Blogger. Your post titled "最悪のプログラミング 言語、BANCStar" was flagged to us for review. We have determined that it violates our guidelines and have unpublished the URL http://cpplover.blogspot.com/2013/09/bancstar.html, making it unavailable to blog readers. Why was your blog post unpublished? Your content has violated our Malware and Viruses policy. Please visit our Community Guidelines page linked in this email to learn more. If you are interested in republishing the post, please update the content to adhere to Blogger's Community Guidelines. Once the content is updated, you may republish it at https://www.blogger.com/go/appeal-post?...reducted This will trigger a review of the post. For more information, please review the following resources: Terms of Service: https://www.blogger.com/go/terms Blogger Community Guidelines: https://blogger.com/go/contentpolicy Sincerely, The Blogger Team
BANCStar/README.md at master · jloughry/BANCStar · GitHub
「世界最悪のプログラミング環境?」と題して、アメリカのメジャーな銀行(First Interstate Bank of Washington)で、1991年に実際に使われていたらしい、BANCStarというプログラミング言語が紹介されている。BANCStarの存在自体は1997年、Joe Loughryが公開しているのだが、この度Githubにページが作られたので、注目を集めている。
BANCStar (joe.loughry@gmail.com)
世界最悪のプログラミング環境?
これがBANCStarのソースコードだ。
2999,,, 8600,,,1 3000,829,6,30089 10829,2446,22245,22012 11585,15855,22002,22002 11586,15865,22002,22002 11587,15875,22002,22002 11588,15885,22002,22002 11596,15965,22002,22002 11597,15975,22002,22002 11598,15985,22002,22002 11599,15995,22002,22002 11600,16005,22002,22002 11601,16015,22002,22002 11602,16025,22002,22002 11603,16035,22002,22002 11604,16045,22002,22002 11605,16055,22002,22002 11606,16065,22002,22002 11607,16075,22002,22002 11608,16085,22002,22002 11609,16095,22002,22002 11610,16105,22002,22002 11611,16115,22002,22002 11612,16125,22002,22002 11613,16135,22002,22002 11614,16145,22002,22002 11615,16155,22002,22002 11616,16165,22002,22002 11617,16175,22002,22002 11618,16185,22002,22002 11619,16195,22002,22002 11620,16205,22002,22002 11621,16215,22002,22002 11622,16225,22002,22002 11623,16235,22002,22002 11624,16245,22002,22002 11625,16255,22002,22002 11626,16265,22002,22002 11627,16275,22002,22002 11628,16285,22002,22002 11629,16295,22002,22002 11630,16305,22002,22002 11631,16315,22002,22002 11632,16325,22002,22002 11638,16385,22002,22002 11639,16395,22002,22002 11677,22002,22002,22002 11678,22002,22002,22002 11679,22002,22002,22002 11680,22002,22002,22002 11691,22002,22002,22002 11693,22002,22002,22002 11707,22002,22002,22002 11749,22002,22002,22002 3001,351,2, 10190,3512,22002,22002 10191,3522,22002,22002 10192,3522,22002,22002 10193,3522,22002,22002 3000,192,1, 10193,1902,1912,1922 10863,3552,22002,22002 10864,3562,22002,22002 10865,3572,22002,22002 10866,3582,22002,22002 10867,3592,22002,22002 10505,3662,22002,22002 10414,3912,22002,22002 10415,3922,22002,22002 10416,3932,22002,22002 10563,4072,22002,22002 10562,4082,22002,22002 10566,4102,22002,22002, 3001,,, 31597,10001,716,108 31598,10001,785,108 31599,10001,717,108 31600,10001,710,107 31601,10001,786,108 31602,10001,715,108 31603,10001,787,108 31604,10001,714,108 31605,10001,713,108 31606,10001,712,108 31607,10001,711,108 31608,10001,765,108 31609,10001,766,108 31617,10001,767,108 31618,10001,768,108 31619,10001,769,108 31620,10001,770,108 31621,10001,771,108 31622,10001,772,108 31623,10001,776,108 31624,10001,777,108 31625,10001,778,108 31626,10001,779,108 31627,10001,780,108 31628,10001,781,108 31629,10001,782,108 31630,10001,797,108 31631,10001,763,108 31632,10001,764,108 8500,,2, 1254,2301,1,-2301入社して初日にこのようなコードを紹介されたと想像して欲しい。1990年1月の筆者だ。7人のプログラマーによる部署が、このようなコードのファイルを数百個も、実務のために保守していたのだ(我々が作り出したのではない。我々はどうしても保守しなければならなかったのだ。)
歴史的興味のために、当時筆者が苦労しながら作成したドキュメントの一部を紹介しよう。これはコードを前にしてもがき苦しむ前任者のプログラマーの意図を、できる限り正確に再現しようと試みたものである。
コード例
このファイル(最初の1ページのみ)、['C16LNAPP.SCN']は、1991年にワシントンのFirst Interstate Bankで実務に使われていたコードの一部だ。もう使われていないし、また歴史的興味のために、許可を得てここで公開している。
銀行でのサイドプロジェクトとして、筆者はLISTと名付けた洗練されたフォーマッターを書いた。その出力は、[PDF注意] ここでみることができる。シンタックスハイライトとフロー記法の他に、LISTはプログラマーが必要としていた関連情報を表示できた。相互参照だとか集計だとかドキュメントの画像だとかだ。時間があれば残りを上げる。
Wikipediaページ
BANCStarプログラミング言語にはWikipediaのページがある。
筆者の1997年の記事
筆者の以下の記事を1997年に書いた。Brian ConnorsによってTuring Tarpit(オリジナルのリンク消失)から公開されて、2000年に更新された。BANCStarのソースコードの別の例でもある。
思うに、世界にとうとうBANCStarを紹介できるようになった。
以下の実際のBANCStarのソースコードは、実務システムからのものだ。筆者はこれにより機密情報を漏らす心配をあまりしていない。この世界にこのコードを読める人間は10人しかいないからだ。
8607,,,1 11547,15475,22002,22002 1316,1629,1,1649 3001,1316,3,30078 11528,22052,22002,22002 9301,0,1528,1528 31568,10001,800,107 8560,,,1568 8550,210,, 3001,,, 3100,1316,3,30089 11547,15475,22002,22002 3001,1316,3,30089 3001,1317,3,10000 8400,,, 8550,700,801, 3001,,, 9301,0,522,522 3000,1284,3,10001 8500,,3, 8500,,5, 1547,,1,-2301確かこのようなコードのファイルが1350個ほどあったはずだ。ほとんどのファイルは数百行ほどの長さだが、中には千行以上ものファイルもあった。このシステムは1990年代初めにメジャーな商業銀行で使われていた。
BANCStarの興味深い特徴
BANCStarプログラムにおける合法な文字種は、0から9までの数字と,コンマ、マイナス記号、キャリッジリターンだけである。空行は許されていなかった。もし、ファイル内に"."があるならば、コンパイラーはクラッシュする。
コメントは厳格に禁止されていた。
提供されているコントロール構造は、3000("conditional")、3001("block conditional")、3101("reverse block conditional")、また、8500("GOTO")、8550("combination GOTO")
システム全体で、変数と定数の総数は2000という制約があった。画面に表示するものから印刷するものまですべては、定数として定義されなければならず、貴重なスペースを消費した。結果として、ほとんどの計算は二十個ほどの「ワーキングストレージ」変数で行われた。これは常に再利用される。システムのあらゆるものはグローバルであった。新しいプロジェクトは必ず、必要な計算の間だけ「借りる」ことのできて、後から元の値に戻しても、本来の所有者が気がつくことなく問題なく動く、ワーキングストレージ番号を探すことから始まった。
コード中のラベルは絶対番地であった。そのため、新しいページが追加されるか削除されるかした場合、以降のGOTOは必ず再調整されなければならなかった。
その他覚えているいくつかのこと
BANCStarは、実のところ、「スクリーンジェネレーター」が付属していて、アプリケーションを構築する際には、それが使われるはずだった。しかし、バージョン5.1cのジェネレーターはとても制約が激しく、経験あるプログラマーはすぐに見切りをつけて、ランタイムモジュールが実際に実行する内部コードを直接いじり始めた。
筆者が1990年の初頭にシアトルにやってきたとき、筆者はBancSTARマシン言語を日常的に直接書き、スクリーンジェネレーターを完全に無視する7人のプログラマーの部署に入社した。彼らが初めて筆者に言語を見せた時、筆者は冗談であると思った。しかし、数週間もすれば、筆者はコードを読み書きしていた。助けとなるのはBancSTARプログラマーのお気に入りのツール:ドットマトリックスプリンター、たくさんのたくさんの別の色の蛍光ペン、プロンプトファイルという名前の三リングタイプのバインダー。システムの何十種類者テーブルを印刷した紙束、そして、なにか変更した場合は、宗教的盲信をもって常にすべてをアップデートした(先にストレージの再利用と書いたのは冗談ではない。もし、整数定数1000を使いたい場合で、誰か他人がかつて一度でもその変数を使っていた場合は、コードをリンクして、何も変化がないことを祈ったのだ。)
我々はBancSTARで巨大なアプリケーションをプログラミングするための内製のツールもいくつか開発した。また、Broadway & Seymourに宣伝しに行ったこともある。しかし、どうも彼らは、我々が内部的な、低級な、ドキュメント化されていないマシン語を直接書いていることを、信じなかったようだ。
BANCStarは、まあ確かにひどいコードだが、本来人間が直接使うことを想定しているのではなかった。実際には、Broadway & Seymourとかいう会社によって売られていたプロプライエタリなコンピューターのシステムの一部だ。「スクリーンジェネレーター」とかいうGUIのツールがあり、プログラミングはそのツールを使って行い、ツールが内部表現としてこのようなコードを生成するというものだった。この内部表現は、おそらくコンピューターに実装されたVMかなにかで実行されていたのだろう。
まあ、よくあることだが、そのような高級ツールの出来が良くないと、人間は高級層を無視して低級層を直接叩くようになるということだ。
ただまあ、こんなクソな環境を保守するにも、結構な労力が必要であり、たとえこのような環境だとしても、内部表現を生成するより高級な言語を開発するべきだと思うのだが、なぜかそうはならないで、人間が低級なコードを手書きするようになるとは、悲惨だ。おそらく、長期的な視野がなく、その日その日の目標を達成することだけが評価されるような環境だからこそ起こる悲劇なのだろう。
それにしても、銀行系とか医療系のソフトウェアでは、この手の悲惨な話をよく聞く。一体何がこのようなクソプログラミング環境を作り出すのだろうか。閉鎖的だからだろうか。まだコンピューターの黎明期から積極的にコンピューターを導入しようとした歴史があるからだろうか。
The Worst Programming Environment in the World? | Hacker News
Hacker Newsでは、他にも医療系がひどいという話が挙げられている。
特に、MUMPSというデータベース用のクソ言語が話題となっているようだ。Wikipediaにあるコード例では、それほどクソには見えないが、実際のコードは非常に一文字変数のため、非常にクソだという。
This is awesome!
ReplyDelete