金沢大学「シェルスクリプト言語論」は偽開発技術
これはUSP社独自のユニケージを普及させるための授業 git、RDBMS、関数、ライブラリ使うな シェルスクリプトとC言語以外使うな POSIXで標準化されれてないものは ソフトウェアの高い互換性と長い持続性が実現できない 全部自分たちで作れ、USPが作ったコマンドだけを作れ 大野 浩之, 森 祥寛, 松浦 智之 (USP所属) USPが作ったコマンドだけを使え SQLの代わりにUSPの独自コマンドを使え! https://richlab.org/coterie/lpf.html そんな中,まさにその疑問や悩みに応えるような内容の講義「シェルスクリプト言語論」を 金沢地区の大学向けに、2016年から開講してきました.ここまで4回(4年)開講し, 内容が洗練されてきたところでついに書籍化しました. 講義内容 https://richlab.org/j/2352 頭が悪い授業内容の一部 https://richlab.org/j/2772 シェルスクリプトにおける開発マネジメント ・デバッグ ・そもそもバグをつくらせない ・IDEのないシェルスクリプトの2つの方法 ・バグ付きコード「数字のマジック」のデバッグ演習 ・バージョン管理 ・基本はコピー(高度ばver.管理ツールに頼らない) ・履歴が見たくばUNIXコマンド その0.[基本] バグは取るより、生み出すな ・デバッグはそもそも「無駄な作業」 ・時間の無駄・労力の無駄 ・デバッグでバグを潰すくらいなら、はじめからバグらせるな ・どうやって? ・1行書いてはテストせよ。 ・分岐やループの無いプログラムなら、容易にできる。 ただのUSP製品の宣伝をしてるだけの授業 https://richlab.org/j/2v62 ・usp Tukubai(通称Tukubai)コマンド ・シェルスクリプトによるシステム開発を補完・強化するために作られた独自UNIXコマンド ・シェルスクリプトを、単なるサーバー管理言語から、アプリケーション開発言語へと進化させる。 ・データ整理が特に得意で、RDBを過去のものにする処理速度を誇る。(参照→ 「スピードがすべてを駆逐する」) ・一部は、無償版(Open usp Tukubai)も公開されている usp Tukubaiなんか世界中で「使われていません」 RDBよりも「圧倒的に遅く」「クラウドで使えません」 SQLは広く使われており、どこでも使えます 自己矛盾する授業内容 https://richlab.org/j/2d62 ・一人(一社)が所有・支配しているものは 標準語ではない。 ・その人の意向で、使い方のルールが 変わってしまう恐れがある。 ⇒話者(ユーザー)が翻弄される ・いざという時の代替品がない。 ⇒サポート終了や欠陥発覚で、話者(ユーザー)の 逃げ道がなくなる。 ↑それはUSP研究所が独自で開発している プロプライエタリなコマンドのことです! RubyやJavaやSQLといった標準規格が存在するものは「標準語」です オープンソースは移植性が高く実際にどこでも動いている wikipediaに日本語版のページのみあるの泣かせるなw 自分らで必死に記事自作したんやろな >>1 の学籍はもうすぐ消滅するだろうけど こういう情報はありがたい >>7 何を言ってるんですかぁぁ!!! wikipediaの「POSIX中心主義」のページは 「POSIX中心主義」の公式ページですよ! 秘密結社シェルショッカー 日本支部 https://github.com/ShellShoccar-jpn の 所在地(東京都内某所)の横にwikipeidaのリンクが書いてあるでしょう! 所在地は彼らの所在し、そしてリンクは公式ページのリンクです POSIX原理主義の公式サイトは http://posixism.org/ です。 そこにすべての情報が集約されています。 提唱者のrichmikan=リッチー大佐=USP研究所所属の松浦 智之 が自らドメインを取得しています。 2017年、POSIX原理主義は世界に進出する https://richlab.hatena blog.com/entry/2016/12/25/030845 まだ中身がないから、松浦 智之とシェルショッカーの二人のアイコンを デカデカと宣伝してるだけです。これが一番大事なことですからね! あと書籍の宣伝。 公式ページはあるけれど今はwikipediaを公式ページとしているだけです! まだそこにしかPOSIX原理主義の情報はありませぇぇん!! POSIX原理主義(笑) echoの挙動すら統一できてないくせに >>12 echoの挙動が違うだって? どの環境でも使えるシェルスクリプトを書くためのメモ ver4.60 https://qiita.com/richmikan@github/items/bd4b21cf1fe503ab2e5c > シェルスクリプトは環境依存が激しいから…… > などとよく言われ、敬遠される。それなら共通しているものだけ使えばいいのだが、 共通しているものだけを使えばいい! シェルスクリプトは、どこでも動くコードを書けばどこでも動く! JavaやRubyはだめ! どこでも動くコードを書けばどこでも動く!という理屈を言っていいのは シェルスクリプトだけに許される特権 POSIX原理主義(POSIX中心主義)は、あとづけ、こじつけの言い訳理論 https://ja.wikipedia.org/wiki/POSIX%E4%B8%AD%E5%BF%83%E4%B8%BB%E7%BE%A9 > POSIX中心主義は、上記の原理をソフトウェアの分野に応用し、次の三つの指針を提唱した[2]。 > > POSIX準拠 > 交換可能性担保 > W3C勧告準拠 第一指針 POISX準拠していれば(=POSIXコマンドだけ使っていれば)どこでも動く! POSIX原理主義者「ああ、なんて完璧な理論なんだ」 ↑実はこれがPOSIX原理主義の唯一の主張であり間違った理論 反論1 POSIXコマンドだけではネットワーク使えないよ? POSIX原理主義者「うっさいなー、じゃあ交換可能性が担保されていればOKってことにすればいいだろ」 ↑後付の言い訳 理論1 反論2 POSIXコマンドはブラウザで動かないよ? POSIX原理主義者「うっさいなー、W3Cで準拠してるのも認めてやるよ」 ↑後付の言い訳 理論2 第ニ指針、第三指針は、POSIX原理主義が間違っていることをごまかすために 後付で作られたこじつけ、言い訳 なぜそう言えるのかと言うと、ブラウザで動くJavaScriptは、パイプで繋いでシェルスクリプトのように書くことができないから このことについてPOSIX原理主義では、何も理論が存在しない。 後付でJavaScriptを認めたが、その先の理論はなにもない 独自コマンドtukubaiを使わないとSQL相当のことができないってのは痛いなあ・・・ tukubaiはPOSIX原理主義に反してるよねこれ >>15 POSIX原理主義の言い訳 「君はPOSIX原理主義を理解してない。POSIX原理主義の本質は ライブラリがなければ自分で考えて自分で作ればいいという理論だ。 そのことは公式サイト(wikipedia)には書いてないがな」 POSIX原理主義者「POSIXではsleepでミリ秒の指定ができない? だから私が作った。https://qiita.com/richmikan@github/items/65a55a405874e655fbac すごいだろう?ないものは作ればいい!」 いやでもGNUもBSDでもsleepコマンドはミリ秒の指定できますよね? POSIX原理主義者「それはPOSIXじゃない!使ってはならない。 だから私は自分で作った!それを使え」 GNUやBSDのsleepコマンドを使いますよw POSIX原理主義者「UNIX哲学にはどうしてもC言語じゃなきゃダメな局面がなければすべきではないと書いてある」 書いてませんよ? POSIX原理主義者「すべてのPOSIXコマンドは、どうしてもC言語じゃなければ行けないから、C言語で書いてある!」 basename、dirname、cut、true、false、head、tail、nl、あたりは シェルスクリプトで簡単にかけますよ POSIX原理主義者の理論はぜ〜んぶ適当 居酒屋のおっさんの自分語りレベル POSIX原理主義者「yesコマンドは素晴らしいコマンドだ。その本当に意義を理解できるのはUNIX哲学を理解してる我々のみ!」 うん、でもyesコマンドってPOSIXコマンドじゃないですよね? POSIX原理主義者「え?」 え?じゃなくてyesコマンドは、あんたの理論では使ってはダメなの POSIX原理主義者「C、C言語で書けば、」 yesコマンドは使えないコマンドだからPOSIXコマンドじゃないの POSIX原理主義者「yesコマンドはこのような使い方が、」 それはあんたが適当に思いついただけの変な使い方。本来の用途じゃないの。移植性もないの POSIX原理主義者「自分で再発明することの素晴ら」 あんたが作ったものは使えないし、あんたが作ったものよりGNUやBSDの信頼性があるものを使う POSIX原理主義者「UNIXはC言語とシェルスクリプトで作られている RubyやPerlやPythonやPHPが使われてないのは、移植性がないと思ったからに違いない」 単にUNIX開発全盛期時代にRubyやPerlやPythonやPHPが登場してなかっただけです あと根拠もないのに「違いない」という思い込みを学生に披露しないでください POSIX原理主義者「POSIXコマンドだけを使っていれば10年後もそのまま動く!どこでも動く!POSIXコマンドが改定されることはない!」 でもtarコマンド削除されましたよね? POSIX原理主義者「POSIXコマンドはcompressだ!compressを使え!」 でもLinuxにインストールされてないんですが? POSIX原理主義者「Linuxは完全にPOSIXに準拠してない!POSIXに準拠している環境ならどこでも動く!」 そのPOSIXに準拠している環境ってなんですか? POSIX原理主義者「商用UNIXとmacOSだ!(どやぁ)」 じゃあ、どこでも動くんじゃなくてPOSIXに準拠してる商用UNIXとmacOSだけで動く LinuxはPOSIXに準拠してないから動かないって言わなきゃね POSIX原理主義者「LinuxもだいたいPOSIXに準拠してるからだいたい動く。動かないものを避ければだいたい動くはずだ」 すっげー適当 理論のレベルじゃない ただの思いつきで言ってるだけ SQLと同じことをするためにTukubaiという独自開発した ライブラリに依存してくださいというのはおかしい Tukubaiはプロプラライセンスで提供されているから会社が潰れたら共倒れじゃん オープンソースのもあるけどPythonで作られてるからPythonがバージョンアップしたら終わりじゃん 他人が作ったライブラリに依存するのはダメだけど自分の会社が作ったライブラリ に依存するのはOKという態度はダブルスタンダードだと思うんだよね Tukubaiへの依存がロックインでなくて何なのだって感じだなあ あとユニケージのソースコードはマジックナンバーだらけで可読性がうんこ >>30 > あとユニケージのソースコードはマジックナンバーだらけで可読性がうんこ あ、マジか・・・ それは思いつかなかった。 たしかにマジックナンバー使っててわかりづれぇなって 思ってたけど、それユニケージの文化なのか >>28 > オープンソースのもあるけどPythonで作られてるからPythonがバージョンアップしたら終わりじゃん あれPythonの互換性が高いことを証明するために あえて放置してるんじゃないの? Pythonは修正しなくても動く!互換性が高い!ってw >>27 それは知らんかった https://ja.wikipedia.org/wiki/SQL 確かに、SQL86から存在するんだな POSIXは一応1988年からあるけど、シェルは1992年のPOSIX.2からだったよね >>32 Python2からPython3へのバージョンアップで互換性を捨てて議論が紛糾したのはついこの間の話だからなあ よりによってPythonなのかって感じ >>34 彼らの理屈ではシェルスクリプト以外がノーメンテで何年も動いたら困るわけよ。 シェルスクリプトだけが唯一ノーメンテで何年も動く言語だって主張してるわけだからね だからあえて互換性を捨てたPython選んだんだと思うよ ま、そのTukubaiがメンテナンスされてないところを見ると 今もそもまま動いちゃうんでしょ? それにしてもホントTukubaiって汎用性がなくて使い物にならんよなw 昔これ使ってたプロジェクトにいた事あるんだけど、データ量が大きくなるとウユニケージコマンドが異常終了して使い物にならなかった まぁソートとか全部オンメモリーでやろうとするんだからそうなるわな デモでは少量データしか使ってなくて、速い事を散々アピールしてた 偉い人たちがころっと騙されてたわ 最終的にはApache Sparkに切り替えて難を逃れたらしいけど >>37 > まぁソートとか全部オンメモリーでやろうとするんだからそうなるわな sortコマンドを使ってるとしたら、それは違うよ sortコマンドに限らないけど、標準的なシェルコマンドの殆どは メモリを食わないように設計されてる 省メモリは一見いいことのように思えるけど メモリは使って事意味がある。メモリを使うことで処理を早くできる。 データベースとかメモリにキャッシュすることで高速に処理できる シェルコマンドはメモリを無駄にしてるのでバッチ処理やシーケンシャル処理以外は遅い で、sortコマンドもメモリを食わないようになってる マージソートで検索すれば詳細が見つかると思うが ある程度の量のデータをソートする場合、/tmpディレクトリに以下に 小さなファイルをいくつも作って、最終的にマージソートして結果を出してる だからメモリは食わない まあユニケージコマンドのソートならどうせそこらへん適当だろうから メモリ食いまくってるかもしれんな > デモでは少量データしか使ってなくて、速い事を散々アピールしてた > 偉い人たちがころっと騙されてたわ やっぱそれか。郵便番号のAJAXが速いとか言ってるもんな あのCSVはたかだか数MB。HDDでも100MB/s、SSDなら1GB/s以上の速度が出る現代で 一瞬(0.1秒)で終わっても当たり前としか言いようがない。 しかも書き込みはないし、サーバーあいだの同期も不要だしな 実際のトランザクションが必要な処理をシェルスクリプトというか ユニケージコマンドでやったら破綻するのは当たり前 反面教師として 「こういう環境で開発しなければいけないこともあるので覚悟しとけよ」 というのならわからないでもない 嫌すぎる・・・ってか こういう環境で働いてもらいます。 やろ? 大学の講義でシェル教えるのにやるならありだけど商業アプリでやるのはあたおか 世間で広く使われてる技術を教えるのならまだしも ユニケージ、我社が開発したコマンドを使いましょう みんなが使ってるgitは使ってはいけません。我社のやり方はこうです。 みんなが使ってるデータベースは使ってはいけません。我社のやり方はこうです。 みんなが使ってるライブラリは使ってはいけません。我社のやり方はこうです。 ってUSPのやり方を教えつけるとしたら、 それはただの技術者の囲い込み目的だと思う 技術者っていうか、技術者の卵か 本物の技術者は相手にしない 無知な人だけが騙されるって詐欺と同じじゃねーかw この理論の論文みたけど、案の定というか何も参考にしてないんだよな もちろんリファレンス的なのは参考にしてるけど それ以外は全部自分が発表したものとか個人サイトを参考にしてるだけ プログラミングというのは何十年もの多くの人が考えた 理論の積み重ねなんだけど、こいつの理論は完全独自 独自だから他の文献を参考にしてない もちろんオリジナルの理論発表してるから、すごいって意味じゃないよ オリジナルの理論がありえない世界で、オリジナルの理論を披露してるってことは 完全に世の中の理論から外れた大間違いの理論ってこと 自分勝手に自分の言いたいことを言ってるだけだからなあ 何の価値もない この講義ってどういうタイミングどういう生徒が受講するんだろ CS入門的な立ち位置? >>49 CS入門ってなに?よくわからんけどググったら、受講案内?のPDFが出てきたよ https://www.ucon-i.jp/newsite/city-college/kamoku/2021b/%E5%BE%8C%E6%9C%9F15_%E3%82%B7%E3%82%A7%E3%83%AB%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E8%A8%80%E8%AA%9E%E8%AB%96.pdf 開講期間 9月30日 〜 1月27日 単位数 2単位 定員数 20名 特別聴講学生等定員、科目等履修生定員、シティカレッジ聴講生定員 ・特別聴講学生等定員 別途負担費用 教員の指示に従う ・科 目 等 履 修 生(社会人で単位を必要とする者) 検 定 料 入 学 料 授 業 料 別途負担費用 9,800円 28,200円 29,600円 教員の指示に従う ・シティカレッジ聴講生 (社会人で単位を必要としない者) 10,000円 > 皆さんの中で,プログラミングを勉強して,さまざまなプログラムを作成したいと考えたことのある方は,どれだけいるだろうか? しかし, どのように学んで良いか分からない。JAVA? Python? R? Oracle? PHP? C?などと言われても,何を学んで良いか分からない。そんな こともあるでしょう。特に,多くのプログラミング言語では,1,2年毎に大きなバージョンアップなどがあり,その前後で作成したプログラムが 動かなくなったり,新しいプログラムが作れなくなったりします。 1、2年で動かなくなる??? 新しいプログラムが作れなくなる??? そういえば2014年にShellShockと呼ばれるBashの脆弱性が問題になったなー シェルショッカーはそこから来てるのかな 脆弱性の種を蒔いてるんじゃなかろうか >>52 それと仮面ライダーの敵組織のショッカーをかけてるんでしょ? 怪人小鳥男とか初期の仮面ライダーのタイトルのパクリだし(第一話は「怪奇蜘蛛男」) bashはGNUだし嫌いなんだと思うよ。UnixとかFreeBSDの世界の人たちみたいだし POSIXに準拠していればShellShockでbashが使えなくなっても問題ないとか 鬼の首を取ったように騒いでいたし。脆弱性なんかすぐに塞がれたじゃんと。 あいつらのが言ってるPOSIX以外は使えなるかもしれないっていうのは 所詮プロプラな商用Unixの場合の話。使っていたUnixが使えなくなって 移植で痛い目にもでもあったのでは?POSIX以外はだめだってFUD攻撃をしてる UnixやFreeBSDはなくなるかもしれんけどLinuxがなくなるとかありえないし >>50 新しいプログラムが作れなくなるのはUSP(ユニケージ)が独自で作ったusp Tukubaiのことだなw ユニケージの独自コマンドはプロプラだから契約してないと完全版は使えないよ オープンソース版はなぜかも元々のC言語版じゃなくてPythonで作られた劣化版。 しかもメンテされてなくて放置状態。自分たちの独自技術(笑)を 公開したくないという意思がはっきりと感じ取れる >>55 伏せ丼を広めようとする迷惑な客みたいなものかな 伏せ丼 https://www.weblio.jp/content/%E4%BC%8F%E3%81%9B%E4%B8%BC > ラーメン店で、ラーメンのスープを飲み終わった後に、丼を逆さまにする行為を意味して用いられている語。 > 一般的に、スープが垂れてこないほど全部を飲み干したということを表し、 > 作り手への敬意を伝える意味があるとされているが、 銀の弾丸とは言ってないが、言ってることの多くが的外れで間違いだらけ あ、一つ思い出したよ これこれ Bashでif~then~else~fi文使う場合に忘れちゃならないこと https://qiita.com/richmikan@github/items/eefbaed716e5ed198973 > Bourneシェルやzshを使っている場合はこれで大丈夫。ところが Bashで動かそうとするとエラー になってしまう。 > Bashでは、thenやelif、else節の後に有効なコードを置かずに済ませることは許されないらしい。上記の例のようにコメントを置いてもダメだ。 偉そうに言ってるけど、これはBashの動きが正しい BourneシェルとBashはともにエラーになる。zshの方がおかしい こんな感じで、こいつ検証してるんか?っていう 間違いだらけな記事ばかり書いてる Qiitaで公開してるだけあって低品質w >>58 自分の方に非があるって一切考えてないんだろうなw シェルスクリプト言語論といいながら、シェルスクリプトの歴史も教えず gitを使うなとかRDBMSを使うなとか 自分たちが考えた理論を教えるのは詐欺だと思う for i in $(seq 5) do echo "$i回目" name=$(shuf -e 森 野 熊 沢 -n 1) if [ "$name" = "沢" ] then tput setaf 3 ; echo "金$name" ; tput sgr0 else echo "金$name" fi sleep 3 done この松浦智之(リッチー大佐)が事実確認もせずにデタラメばっかり書いてるのどうにかならんかね? いやもう手遅れなんだろうし、なにかしたいわけじゃないけどさ どういう人生を送ればこんな人間が出来上がるのか 類は友を呼ぶの言葉通り周りも同じような奴らが集まってるっぽいし わかっててデタラメ書いてるのか、自分がデタラメ書いてるのもわかってないのか 人間学的な調査したくなるわ @ko1nksmって人の方がシェルスクリプトに詳しそうではあるな、シェルショッカーとリッチー大佐が嫉妬してかすごく絡んでる >>66 本人ですか?w どこがデタラメって何でもシェルスクリプトでできるといいながら C言語で書かれたUnixやコマンドに依存しまくりで POSIXじゃないテキストエディタとかブラウザとか GUIを使ってるとか矛盾してるところだよ それらを誰かが作っていたからいいものを なければシェルスクリプトで作るんか?w >>69 1つ目 これに反論できたら次を言ってあげるよw ユニケージ「俺らの実績はC言語で作ったものばかりだ」 C言語じゃないと呼び出せないAPIなんていくらでもあるのに シェルスクリプトだけで全てを作れるわけないわな なんであんな事言ってるのかと思ったらUnix哲学に シェルスクリプトで書いたものをパフォーマンスのために C言語で書き直そうとするなってのがあるからなんだよ それをUnix哲学には全部シェルスクリプトで書けと書いてあると勘違いしてる 松浦智之(リッチー大佐)はやっぱり嘘ばっかり付いてるなwww リチャード・ストールマンがIEEEにPOSIXの仕様を提出したとか言ってるぞこいつ https://github.com/ShellShoccar-jpn/csp_en > Richard Stallman, the founder of the Free Software Foundation, > proposed to the IEEE a specification which extracts almost only > typical interface specifications from the Unix OSes. That is the origin of the POSIX. その0.[基本] バグは取るより、生み出すな ・デバッグはそもそも「無駄な作業」 ・時間の無駄・労力の無駄 ・デバッグでバグを潰すくらいなら、はじめからバグらせるな ・どうやって? ・1行書いてはテストせよ。 ←これがデバッグでは? ・分岐やループの無いプログラムなら、容易にできる。 ←精神論では?旧日本軍かな?w テストはデバッグじゃないよ。テストして見つかったバグを直す作業がデバッグ あとからバグが見つかることを想定してない時点で、その理論は使い物にならない 自分で特定の環境では動きが違うコマンドがたくさんあるってさんざん書いてるだろうに 1行書いてはすべての環境でテストするのか? POSIX原理主義は穴がありすぎなんだよ >>81 前に英語の仕様が読めてないって指摘されてるまとめがあるし、英語苦手な人なんだろうね ストールマンがIEEEにPOSIX「という名前」を提案したという英文の 名前の部分を読み飛ばした上に、最後まで読んでないんだろうな いろいろと残念な人だね 問題があると思うんだったら ここで騒ぐだけではなくてしかるべき処置をすればいいのに その大学の学長? 文科省のどっか? に通報するとか POSIX原理主義の生産性が高いのは事実だからな どっかのスレで12万件の郵便番号検索を行うのにはRDBMSの方が優れているって 言ってた人がいたが結局実証できてなかったからな >>87 え?データ無いの? それ逆に言えばRDBMSよりもPOSIX原理主義の方が12万件の検索で速いと 具体的な数字を上げずに主張していましたってことになるよね このように他人の言葉を捻じ曲げるのは得意だけど 建設的な議論ができない人って感じだった >>87 どっかのスレって、この話してんのここと↓しかねーだろ それぐらい覚えとけよ gitを使わずにディレクトリコピーでバージョン管理 https://mevius.5ch.net/test/read.cgi/tech/1631002816/ DBよりフォルダのほうが速いよっていうVBの人いなかったっけ。 雑誌記事まで書いちゃったと思うけど。 犯人は、お客様に納品するだけでは飽き足らず、DBよりフォルダのほうが速いよって趣旨の記事まで上梓してしまったという。 奴は本気だ。 恐ろしい。 >>97 マジレスするとどんなプログラムも最終的にはOSのAPIを呼んでる OSのAPIをどれだけ呼び出すか、OSのAPIだからって速いわけじゃない 遅いAPIもある。適切なものを最小限で呼び出さないと遅くなる >>95 それ特許出願してる もちろん却下されてるw 検索したら見つかるよ 何も発明してないってボロクソに言われてるwww >>99 データストアとしてファイル名を使う発想は素晴らしいと思うけどね 特許審査官が情弱だったのだろ、日本のダメなところと言えるよね read.cgi ver 07.5.1 2024/04/28 Walang Kapalit ★ | Donguri System Team 5ちゃんねる