構造化プログラミングが、混沌だったフローチャートに秩序を与えた【プログラミングパラダイム・シフト2】#65
「プログラミングパラダイム・シフト」シリーズ第2回。「構造化プログラミングはカオスに秩序をもたらした」「3つのルールだけで絡み合ったヒモが解ける」「機械中心主義から人間中心主義へ」など、構造化プログラミングの威力を語っています。
【サムネイル画像】
フローチャートは『RUNCIBLE-algebraic translation on a limited computer』より引用
【目次】
0:00 つまらないタイトルを扇情的に
1:27 機械語とC言語のたとえ
3:27 機械語はジャンプしまくっている
13:34 カオスに秩序をもたらしたパラダイム
20:04 ダイクストラもルターも不本意にバズった
23:17 3つのルールで書くだけ
33:48 必ずしも進化することがいいワケではない
46:07 機械中心主義から人間中心主義へ
49:07 次回からが本番
【参考文献】
○コーディングを支える技術
amzn.to/3TscsJp
○オブジェクト指向の考え方 5th Edition
amzn.to/3lpDaFQ
○WEB+DB PRESS Vol.132
amzn.to/3JtYkuv
○プログラミング言語大全
amzn.to/3yNiYRf
○はじめてのLisp関数型プログラミング
amzn.to/3yNj3V3
〇RUNCIBLE-algebraic translation on a limited computer
dl.acm.org/doi/10.1145/368481...
動画内のフローチャートの引用元
○息吹
amzn.to/40mP1E0
【サポーターコミュニティ加入はこちらから】
yurugengo.com/support
【親チャンネル:ゆる言語学ラジオ】
/ @yurugengo
【フランチャイズプロジェクト:ゆる学徒ハウス】
/ @yurugakuto
【おたよりフォーム】
forms.gle/BLEZpLcdEPmoZTH4A
※皆様からの楽しいおたよりをお待ちしています!
【お仕事依頼はこちら!】
info@pedantic.jp
【堀元見プロフィール】
慶應義塾大学理工学部卒。専門は情報工学。WEBにコンテンツを作り散らかすことで生計を立てている。現在の主な収入源は「アカデミックに人の悪口を書くnote有料マガジン」。
Twitter→ / kenhori2
noteマガジン→note.com/kenhori2/m/m125fc452...
個人KZread→ / @kenhorimoto
【水野太貴プロフィール】
名古屋大学文学部卒。専門は言語学。
某大手出版社で編集者として勤務。言語学の知識が本業に活きてるかと思いきや、そうでもない。
Twitter→ / yuru_mizuno
【姉妹チャンネル】
◯ゆる音楽学ラジオ( / @yuruongaku )
◯ゆる民俗学ラジオ ( / @yuruminzoku )
◯ゆる天文学ラジオ ( / @yurutenmon )
◯ゆる書道学ラジオ ( / @yurushodo )
◯ゆる生態学ラジオ ( / @yuruseitai )
◯ゆる哲学ラジオ (open.spotify.com/show/7t8NNVq...)
#プログラミングパラダイム・シフト #ゆるコンピュータ科学ラジオ_プログラミングパラダイム・シフト
Пікірлер: 299
「Aは有害である」(A considered harmful)というタイトルそれ自体もバズって、「~は有害である」というタイトルの論文が大量に出て来て、やがて「『~は有害である』は有害である」("Considered harmful" considered harmful)という論文まで出て来たらしい。
@pasolinipier2291
Жыл бұрын
「買ってはいけない」に対する「『買ってはいけない』は買ってはいけない」みたい。
@yurucom
Жыл бұрын
めちゃくちゃいいうんちく!!
@haruya.H
Жыл бұрын
9割本、本質本みたいなのがいつの世にもあるんですね…
@ken_to_delicat
Жыл бұрын
黒島先生が収集するやつー!
@tork1a11e
Жыл бұрын
『環境問題のウソ』って本が流行ったあと、『環境問題のウソのウソ』って本が出たのと似たものを感じる。
12:35 このフローチャート見て「美しい」「なんてわかりやすいんだ」と思っていた世代です。懐かしいです。
ボーッと聴いてたら「鼻白らむ」が「鼻血RAM」に聞こえて 「鼻血RAM」と「鼻血ROM」で議論してる二人がいるのかと思った。
@user-id6yv2nh5m
3 ай бұрын
ボーっと読んでたら「鼻白らむ」がVtuberの名前に見えて また変なキャラクターを作り出した二人がいるのかと思った
ゆるコンピュータ科学ラジオあるある ・脇道、脇道の脇道と逸れていっても、ちゃんと階層を把握していて正しく戻ってこれる堀元さん ・goto文で台本ブレイクする水野さん
@mentosukoala
Жыл бұрын
gotoで無理やり戻ってる気もする
だいたいどの言語でも、 変数と関数の定義に加えてif for while の構文が書けたら最低限使えるけど、それが偶然じゃなくて、あらゆるフローチャートを記述できると数学的に証明されてるのは面白いな
出てくる喩えが極めて正確ですね。お二人の聡明さが滲み出ている。
江戸川ダイキストラ「go toは害悪だから〜」 はただのコロナ政策批判で笑う
@user-fu7ps7ix7u
Жыл бұрын
名前からバシバシ来る泡沫政党のヤバい奴感
こういう番組の登録者が5万余りいるのが、昔々趣味でマシン語書いてた身としては嬉しい。 絶対番地にジャンプする大きなデメリットの一つは、デバッグ後に処理を追加することになったらそれ以降の番地が一斉にずれること。その修正が大きな手間だった。(処理が減った場合は NOPなど「何も処理しない命令」を埋めたりして一時しのぎしたり、そうすると貴重なメモリを無駄遣いすることになったりとか) 何もかもが皆懐かしい・・・
@SonodaMai74
Жыл бұрын
相対ジャンプを使えば多少は・・・修正箇所が減る・・・ うん、なつかしい;; JP と JR でしょうか。 < Z80が大好きだった
@SKYLINE4R35
11 ай бұрын
@@SonodaMai74 私もZ80(PC-6001)で育ちました。そもそもCPUという「計算機」でゲームができるのがなぜなのかわからなくて、市販のゲームを全部「レポート用紙にハンド逆アセンブル」したのが私の基礎知識の一部になってるのは間違いない。それを全部解析して理解したときは仕組みに激感動した。今も忘れない思い出。
構造化プログラミングが「自由度の高いはずのジャンプ命令をあえて禁止したことで、かえってプログラミング言語のパラダイムシフトに発展した」のも面白いけど、 21:34 の水野さんの話を引用して「ジャンプ命令を禁止することを実は多くの人々も望んでいて、それが広まる土壌があった」から受け入れられたというのも面白いところだと思う。
@forestbutter3332
Ай бұрын
プログラミングをやっている身としてはgo to等のジャンプは極めてスパゲティコードになりやすい 結局のところ、コードを読む時に人は上から下へ読むと言う方向性がジャンプ禁止したいと言う欲求の根源だと思う
自分は情報よりの人間なのですが、こうやってある程度言語学の知見がある人の視点が面白すぎて無限に見れる
義務教育にプログラミングを入れると論理的思考力が身につくと言われる理由を、 プログラミング素人の水野さんが初見でコンピューターサイエンティストより上手く説明できていることに皮肉を感じる。
楽しみに待ってました
18:16 「GoTo文に代わる一手法」→「GoTo文は有害である☆」は草
水野さんに一度C言語入門をしてもらって、世間で難しいと言われるポインタとかをどう理解するか、各概念にどう反応するかを見てみたいな。堀元さんの説明の仕方にもよるだろうけど、プリンとか言い出さない限りサクッといけそう 個人的な宗派としてはRustに入門してもらいたいが
息吹を読んで、 「思い出は全部記憶しているけどね、記憶は全部は思い出せないんだ」 という言葉の深さを改めて感じましたw by高校生
@user-tp9hz4fc2p
Жыл бұрын
「すべてがFになる」より引用
待ってたました
持ってる情報と閃きだけで構造化プログラミングのほぼ回答を持ってくるとは…!
初めてこのチャンネルを見ましたが、こういうのを待ってましたという感じです! 本職SEですが、ITの勉強ができてゆるく家事とかしながらラジオ感覚で聞けるの無いかなと思っていました。普通に解説している動画とかはあると思うんですけど、講義形式の動画はよし勉強するぞと腰を据えないといけなくて結局見なくなっちゃうんですよね。 例え話や脱線、いいと思います。色んな知識が組み合わさって楽しく聞けるというのがこのチャンネルの良いところだと思うので、むしろ自然言語に例えたり、関係のないSFの話をするくらいのほうがラジオ感覚で気楽に聴けると思います。 関係ないですが水野さんの声は後藤達也さんに似ていますね。
これはゆる言語ラジオのゲーム化の伏線回ですね
今回もおもしろかったです
C言語は、今でこそ「マシン語の次レベルの言語の代表格」みたいな扱いだけど、 それは「鳥類は代表的な恐竜」みたいな話で、登場当時のC言語はいっぱいあるうちの1つに過ぎなかったんだよな。
@minami_alinko
25 күн бұрын
>今でこそ「マシン語の次レベルの言語の代表格」 「今でこそ」……1980年代半ばにはもうそんなじゃなかったですか? 高速化が必要なところでは適宜C言語からアセンブラに切り替えてコードを書くということがしやすかったからですね。
「制限すると表現の幅が増える」 「制限するとできることが増える」って言うのは、数学でも同じですね〜 一般の位相空間を距離空間に制限すると、距離が使えるのでできることが増えるんですよね。
@US-wb8yp
Жыл бұрын
抽象的な議論は普遍的だけど言える内容は少ない。 具体的な話に制限すると限定的だけど言えることが多い。 みたいなことですかね。 他にもたとえば抽象的な集合論で議論できる命題は少ないけど、より具体的に群、体、ベクトル空間って話を制限してくと言える命題は多くなる。言葉をお借りすると、できることが増える
最後のまとめの部分から、最近はやりのChatGPTも元を正せば よりナチュラルな自然言語を機械語に変換して実行されているあたり、 より機械中心主義から人間中心主義になったとも考えられて面白い動画でした
38:50 堀元が『息吹』にgotoした瞬間
学生の頃、プログラミングをやってる友人が自主ゼミのとき数学でインデントを使ってましたね。長い証明のときは「Aを証明するための、補題Bを証明するための、場合b1のときの……」みたいになって、何の証明してるんだ?になりがちなので、何にせよ階層性を意識するのは人間の認知にあってるのかも
待ってた
39:32 テッドチャンのその物語、その対比を読んでみたいです。歴史を記録したから、負けた国は戦争の戦後の孫までも、戦勝国を恨んだり、戦勝国はずっと上から目線になるのでは?と思ったりしてたので、それをすでに描いた物語があると知ってとても読んで見たくなりました!!
Dijkstraは表記揺れでダイキストラとも書かれることに注意
そしてジャンプ地獄から解放された人類は今度はネスト地獄に悩まされるのであった…
プログラミング的思考とかプログラミング教育とかやってる人たちが「順次処理、条件分岐、繰り返し」とよく言ってるのは、このダイクストラさんの話がベースになってるのか。
息吹面白そうだったので他の欲しかった本に混ぜて早速買いました!
次回のオブジェクト指向楽しみだな🙆♂️
「カノッサの屈辱」でフジテレビの深夜番組を思い出す世代
@user-gm1zn5og2k
Жыл бұрын
「やあ皆さん、私の研究室へようこそ」懐かしいてすね。学生のころ、池袋でカノッサの屈辱展をやっていて、見に行ったのを覚えています。
次回の堀元さん「オブジェクト指向はマニュファクチュアだ!」
深掘をちゃんと手偏で書いてくれている堀元さんに好感が持てる
興味深いですね。確かに図みたいにブロックを見ていることに気付きました。ほとんどのエディタでインデントブロックの補助線が出ますし、2次元的な情報として捉えようとされていますね。ところで次回出てくるかもしれないJavaは goto を予約語としているけどなんもなし、という形で封印していますね。昔、おじさんプログラマがオブジェクト指向もよく分かんねえしgotoも使えねえしよぉみたいなことを言っていたのを思い出しました。あのおじさんもgotoは害悪だと深層では思っていたのだろうか
オブジェクト指向言語へのパラダイスシフトは、個人経営で仕入れから陳列、会計まで一人で何でもやってた八百屋さんが、スーパーマーケットに変わってそれぞれの業務を専任の担当者がこなす様になった感じだと思う。 忙しい部署に人を増やしたり、暇になったら簡単に首切れる様になった。 あと他(違うプログラム)からも専門性を持った人を即戦力としてリクルートしやすくなった。
@miturusatozaki5490
Жыл бұрын
Afterism発現。 蒸気機関(マルチスレッド)の普及による、仕事の分業化(オブジェクト指向)。 つまり、オブジェクト指向は産業革命だ! エウレカ!
「宗教改革」 待ちに待った「プリン」の対義語が出た
キリスト教はCSの例えに絶妙に親和性が高くてオモロい
マシン語の処理はゲームブックに似てるなと思いました。
水野さんは1次元的に表現するしかないというけど 本の目次も2次元的表現してる
@cdr6281
Жыл бұрын
目次を音読してみてください。適切なポーズを取らないと読めないはずですよ。それがインデントの代わりです。
自由を縛ると、楽になったり簡単になったりすることは結構ありそう。
@furusatonotkokyou
Жыл бұрын
AからBの最短経路の道の一部を取り壊すことで、仕方なく多少遠回りの道にみんながバラけてくれるから、結果渋滞が減った(逆に道を作るを渋滞が増えた)とかある …ちょっと違うかな
@RIAFeed
Жыл бұрын
Railsなんかそうですね、細かいルールに従えばフレームワークがよきに計らってくれるやつ。ルールから外れると地獄ですが。
@yu100nabeyan
Жыл бұрын
何してもいいよ、何描いてもいいよって言われるのが一番困りますね
@keramischmond
Жыл бұрын
「夕飯何でもいいよ」が一番困りますもんね 「鶏肉の消費期限が今日で、人参と玉ネギの半端があって、冷凍ブロッコリーが袋に半分……よし今日はシチュー!」みたいに制限を加えていってメニューを決める日々です
@furusatonotkokyou
Жыл бұрын
@@keramischmond 今ふと思ったんですけど、晩飯何がいい?って聞かれてる方も自由度高すぎて、何でもいいって答えてしまうのかと… 晩飯、〇〇と◇◇と△△どれがいい?みたいに聞くと答えてくれそう
16:41 dijkstraという姓は、北海沿岸のドイツとオランダにまたがる地域を治めていたフリースラント由来の名前らしいです。 で、エドガー・ダイクストラはどちらかというと、オランダ人とのことです。
私の頭の中では 処理を1つの流れの中で全部やっていたのが初期のプログラミング 処理をまとめてオブジェクト化して個別処理するのが1つのパラダイムシフト そのオブジェクトがマルチタスクで並行して動くのが2つ目のパラダイムリスト 最後に、各処理が別マシン(DB、サーバ、クライアント等)で分割処理するのが現状ですかね
機械語のジャンプは昔よくあったゲームブックみたいだな。RPGがテーマだったりする子供向けの本で この行動Aをするなら何ページに飛ぶ。この行動Bをするなら何ページに飛ぶってのがたくさん書いてあって物語が分岐する。 機械語を知らないんだけど、実際には機械語は命令自体もアドレスで表されるのかな。しかも2進数だったり16進数で書くのかな?かなり大変そう。
@user-kl7hd2vv3e
Жыл бұрын
アドレスに命令が入ってる感じ その命令を16進数表記とかで記す感じだね
@NekonyanDesu
Жыл бұрын
@@user-kl7hd2vv3e 教えてくださってどうもありがとうございます。とても難しいんですね
処理フローチャートが地下鉄みたいっていう場面がありましたが、現在の路線図の表現形式を作り出したのはハリー・ベックさんというロンドン地下鉄の信号整備エンジニアの人だったらしいので、何か通じるものがあるのかもですね
ルールの発明って重要なんやな
Go To Considered Harmfulっていうbe動詞を抜かした書きかたが新聞記事の見出しっぽくて煽りスキル高い
プログラミング学び始めのほんとに最初のころに、なんでここに戻るっていう書き方はできないんだ!って思った記憶があったことを思い出した 今はすっかり染まってしまったことを考えると、GOTOはなくても問題ない余計な表現なのに、自然言語で指示するときは自然な表現なので使ってしまうのかもしれない
一応、C言語にもラベルを使ったgotoは組み込まれているので、書こうと思えば書けなくはない。 ただ、「関数で名前を付けて、mainで呼び出す」という形式は、機械言語でも、回路によるプログラムでも、やっていたこと。 両方を知っている人からすれば、gotoで一つの文章の中でジャンプするよりも、完全に分けてくれた方が楽だよね。という話で、それこそ、別のモジュールに計算させて、並列で動かしてしまえばいいじゃん。という結果になってしまったりする。 機械言語なら、やろうと思えば帰ってくるまでの時間を比較的簡単に計算できるので、投げて、帰ってくるまでの時間に他の処理をやって、とかもできる。当時と比べれば格段にハイスペックになった現代のPCでやる必要性は一切ないし、スペックを計算に入れれば現代のPCでも帰ってくるまでの時間を計算することが出来なくはないが、かなりめんどくさいので、普通はやらない。
多くの人を動かす時には、制約を設けて秩序を保つ。 プログラミングに限らず世の中のプロジェクトは標準化や規約で成り立ってる。 オブジェクト指向プログラミングは継承して変わっていく感じからダーウィンの進化論あたりかな?
今Rustの学習してるけど、このパラダイムシフトってRustと一緒だ。選択と反復の概念を導入して可読性を上げたのがc言語。所有権と借用の概念を導入してメモリ安全性を上げたのがRust。
@minami_alinko
25 күн бұрын
>選択と反復の概念を導入して可読性を上げたのがc言語 ちがいます。 選択や反復はC言語以前の高級言語にはとっくに導入されてました。 (C言語よりよほど古いALGOL60にもFORTRAN IVにも当然ある) 可読性はC言語より前に生まれたPascalやCOBOLのほうが上です。 C言語なんてすぐ読みにくくなる言語だからこそ、「国際難読化Cコードコンテスト」とい奇祭があるくらいで。 当時のプログラマには「ソフトウェアの開発技法」というものがまとまっていなかったんですよ。それを、エドガー・ダイクストラやハーラン・ミルズがそれぞれ別個に「構造化プログラミング」を提唱しました。 一般的な”構造化プログラミング”の理解のされかたはミルズのほうに近くて、ダイクストラが提唱したのはもっと範囲が広いものでしたが、ごっちゃにされた。 ダイクストラにとって、goto悪玉論より「構造化プログラミング」が意図しない形でバズり倒したことのほうが気にくわず、後年、ダイクストラはミルズと(Pascal開発者であり「Go To Statement Considered Harmful」に題名を差し替えた犯人でもある)ニクラウス・ヴィルトへの恨み節を書いています。 パラダイムシフトが起きたとすれば「プログラミング言語」ではなく「コーディング手法の確立」なんですよ。
オブジェクト指向は天地創造ですね(ヒカリアレ)
プログラミングの進化はプログラムを機械語に翻訳するコンパイラの進化とも思う、それで人と機械が近くなった 果てはchatGPTのようなAIによって自然言語でプログラムできるようになっていくのかな、インターステラーのロボットみたいに
大学(農学部)のプログラミングの授業でc言語やってる時に先生からgotoはやめろって言われて当時はよくわかんなかったけど、よくわかりました
21:32 ごく最近のバズりの一つに いわゆる“ひろゆき現象”があるが、その是非はともかく この現象も現状に不満を持った人が多くいたという土壌があったからこそ これほど大きなブームにまでなってしまったんだろうと思う
@gutsnosada
Жыл бұрын
近い構造だけど少し違う結論を堀元さんがnote(とどっかの雑誌のインタビュー)で話してた気がする ひろゆきとビジネス書は同じ目的で消費されている、みたいな
オブジェクト指向命名者アラン・ケイにどこまで比重を置くかで、たとえ話も変わってくるなぁ。
人間が胎児の時、大脳ニューロンが極大になってなんでも覚えられる状態だけれど 成長とともにどんどんニューロンは減っていって出来ることが制限されることで人間として洗練された可能性が広がる、みたいな話を思い出しました
関係ない話を延々垂れ流されるのに対し、必死に元に戻そうと苦心する江戸川ダイクン、おもろい。
昔、アメリカの専門雑誌を読んでいる先輩が「プログラムはGOTO文を使ってはいけないんだ」と言っていて、「GOTO文を使わなきゃプログラムは作れないじゃないか!何を言ってるんだ?」と思いました。それから数年たち、日本でもGOTO文なしプログラムは当たり前になりました。
水野「若手の頃は言われましたよ(若手)」
表記体系の話は、慣例読みを思い出しました。口頭の単語(音列としての単語)上位だった時代のもので、表記ありきの現代ではもうほとんど起こらない現象ですね 難読地名が読みにくいというだけで改変されていくのは歴史が消えていくみたいで悲しい気持ちになります
@isamich1535
7 ай бұрын
地名については、「読みにくい」というか、呼ばれていたものに後から漢字を当てたのがほとんどだと思うので、漢字が変わるのはやむを得ないのかな?
構造化プログラミングはハードウェアのアーキテクチャーにも影響を与えたと思いますよ。CPUは知りませんが、DSPではループの回数がプログラムで任意に決まっていればループ内の命令をカウンターを使って回数回だけ実行するような仕様になっているプロセッサーがあったと思います。条件分岐でループから抜ける場合は分岐予測を如何に正確に行うかでパイプラインがフラッシュされるペナルティーを最小に抑えるかと言うハードウェアの話になるので構造化プログラミングとは関係ないですけどね。
構造化プログラミングの説明をするなら、構造化プログラミングで書かれていないC言語のコードと、構造化プログラミングで書かれたC言語のコードを比較しないと、C言語が生まれたことや、if文やfor文が導入されたことが構造化プログラミングだと勘違いする人が出そうな気がします。
「すごろくみたい」むっちゃわかる!
初心者の頃、何も知らずにフローチャートを書いたら、自然とスパゲッティーコードになった記憶があるので、 アルゴリズムを考える上で構造化定理の原則を適用することは必ずしも人間には自明でないことなのかもしれないですね。 当時のコンパイラは最適化なんて全く効いてないといっても過言ではなかったでしょうから、 その時代の人たちはgoto文を排除することで起きるパフォーマンスの低下をどのように考えたのかなど、 気になることが色々ありますね。
@hayakawa_mint
Жыл бұрын
FORTRANなどは、かなり初期から最適化が進んでいた。ループ中の演算をベクター命令にしたりしていた。構造化されたプログラムは、コンパイラにとっても局所最適化の対象を見つけ易く寧ろ歓迎されていた。
機械語のjmpは,CPUに依存するけど大抵かなりプリミティブで,「レジスタの値が0なら,ラベル地点へジャンプ」しか能が無いので,比較して大きければをやりたいとなると,引き算して0以下になるかどうか,みたいな処理をする必要があって更に3ステップぐらい分割される印象がある.
goto文を使うなという事でここまで話せるとは凄い。goto文はアセンブリ言語では使いまくるけど、C以後だと、あえてwhile文にてbreakやcontinueを強引に使う事で実現してたりしますね。
12:23 そうなのよねえ。パラダイムシフトしないと、なんぼ図解しても判り易くならないのよね…(遠い目
何番に飛ぶって昔よく本屋に並んでたゲームブックに似てますね。このアイテムを使うなら581へ、みたいな。
なんとかゆきさんとかなんとか斗司夫さんの切り抜きでよく見かける奴だ なんとかゆき「質問者さんは〇〇なので☓☓するよりも△△したほうがいいと思いますね」 切り抜き「☓☓する人は馬鹿です!!△△しろ」
マイコン管理で番地管理参照をまとめる役職が部活にあった
ノイマン型アーキテクチャも、当時の技術者は大体同じようなことを思っていてノイマンはそれをまとめただけという話も大学の講義で聞いたことあります。(もちろんまとめる功績も偉大ですが
@MedakaNoBoo
Жыл бұрын
わかりやすい表現としてだろうね。ノイマンの功績は数学での証明にあったと思うよ
テッドチャン読書会でもやってテッドチャン喋りたい欲を昇華させた方が良いのかもしれない
「オブジェクト指向」は産業革命と予想。
そういえば、ナーシャ・ジベリは住所マスターでもあったな・・・。
30:11 の階層構造の話しに関する例ですけど、構造化プログラミング言語にも最初に階層が曖昧でした。英語でdangling else problemと呼ばれるALGOL言語に起こった問題です。ALGOL以来のプログラミング言語作りに影響される問題です。今のルールはyou should not have an ambiguous grammarみたいで、「ソースコードの捉え方が一つしかない方がいい」といいう意味です。
「軸足に置くものを変えたという意味でも」という言及が47:27にあるけれど、むしろそれがパラダイム・シフトなのかなと思ったり。
漢文もレ点と一二点で事足りてるもんなあ
ポケモンを使うとプログラミングの説明がしやすそうです オブジェクト指向の説明にも適してそうですね(e.g. ポケモン一般→種族としてのピカチュウ→手持ちのピカチュウ と変数やメソッドが継承される)
MSXでBASICを使って、1行ごとに文頭に適当な行番号(10,20,30,40…)を付けて「120 if A = 0 then goto180 else goto 240」みたいなプログラムを書いていた小学生の僕にダイクストラが「そのやり方めっちゃクソやで」って教えてくれていれば今頃ぼくも立派なプログラマになっていたかも知れません。
当時のBASICとかのgoto文とアセンブリのjmpの意味合いは違う気がするんですよね。機械語においてjmp命令に相当するものは今も当たり前に使われているし、それ自体はメモリの仕組み上現代のコンピュータアーキテクチャとしては自然なわけだけど、それを高級言語にそのまま適応していたことが問題なわけで。
今まさに、エンジニアリングはAIがやる時代へのパラダイムシフトが始まってるのかもです
@MedakaNoBoo
Жыл бұрын
AGIのパラダイムシフトは「たまにウソをつく」ことじゃないかなあ。呪文から相手が喜びそうな答えを見つけ出してくる。つまり、人間のウソ(建前と本音)を学習してゆく子どもが「善悪を判断しウソを使い分ける」ができるようになる過程をみているような気がする。
vbaでやたら大きいプロジェクトをやってた時にコーディング規約でgotoやめろって書いてあったのを思い出しました。いやエラーのときはメッセージ出したいねんなんで禁止なん?って思ってましたけどこれか!パラダイム後だからわからなかったんですね…。
宗教改革は、それまでは聖職者の解釈という媒介物を介してしか教義の本質(聖書の記述)に触れられなかったのが、誰もが聖書に直接アクセスできるようになったという変化なので、プログラミング言語の進歩とは逆の変化じゃないですか? プログラミング言語はコンピュータ内部の処理を意識しなくてもよくなるように進歩しているので、宗教のたとえで言うなら、聖書の抽象的な記述を日常的な言葉に変換してわかりやすく説明してくれる優秀な聖職者が現れたという状況だと思います。
プログラマーが馬鹿にするVBAも同じで、ループ処理の中にIF分を入れて、分岐でSelectCaseを入れつつ、当てはまらない場合は条件を飛ばして次のループに移行するGoToを差し込むは、何かと便利です。
人間が行っていた住所マスターの仕事を人間が意識しないで良いように機械が行うようになった、という感じかな? 番地の存在そのものを人から隠した、とも言えるし、人を番地管理から解放した、とも言える。 プログラムの書き方が変わったのは、人間と機械の役割分担を変えるに伴って、人と機械のやり取りの窓口の決まり(インターフェース)が新しくなった、とも言える気がする。
N88BASICでGOTOしまくっていたあの頃。時代は流れいつのまにかGOTOが無くなり、パニックになった記憶があります。
世界史たとえは大体フランス革命って言っておけば当たる
@MedakaNoBoo
Жыл бұрын
世界史たとえは大抵イギリス産業革命って言っておけば当たる……
明石家さんまさんが「☓ペケ」をおでこに書いた後、「☓1」のハードルが下がり時代が大きく動いた。
機械語のフローチャートは俺が昔RPGツクールで作ってたイベントフローチャートみたいだ
すごろく、って例えカンペキだな
ところで自分は、構造化プログラミングを叩き込まれた後に、別の職場でマシン語を書いた。 この時は、条件分岐やループ構造をマクロで準備して、マシン語で構造化プログラミングしたものです。 でもマシン語で何が面倒って、掛け算や割り算を含む計算が・・・
出来上がったプログラムが混沌しているか秩序なしなのかは、手法ではなく設計者のセンスで来まる。 ルールを決めさえすればセンスがなくても、わかりやすく美しくなるという考えは幻想である。
@RIAFeed
Жыл бұрын
現実はそういったセンスの持ち主は限られていて、実務では色んな人が紛れ込むので、(コーディング)ルールどころかそもそもやりたくても出来ないレベルで(言語仕様を)規制しないとすぐ混沌とするんだよなぁって感じですよね。
@gutsnosada
Жыл бұрын
同程度の可読性を維持するために必要な努力とセンスの量が違う、という話ではないですかね?
@unknown00kuv
Жыл бұрын
そしてそれらの領域に入り込んだ人たちが総じて「ワタシハ〇〇チョットデキル」と言うようになる。
オブジェクト指向というと活版印刷の発明かな? 40〜50代のマイコンマニアはベーシックの洗礼を受けてるからこな最初のパラダイムシフト前の思想から抜け出せないよね、はい私です
「昔のフローチャート カス!」に空目した
go to 使わないと書けない、とおもってたのは当時の幼い自分はBAISCのせいだと思ってました。Cを使うようになって自然とgo to使わなくなったから
実際に最初期の高水準プログラミング言語ALGOLはわかりやすい表現方法としてチョムスキーの文脈自由文法を参考にしてる チョムスキーの生成文法は代数学によって自然言語を説明する試みだからアルゴリズムを人間にわかりやすく表現したいっていうプログラミング言語のニーズにどんぴしゃだしね
オブジェクト指向の起こりを歴史で例えるならフォードの大量生産じゃないかと予想
@falconno6554
Жыл бұрын
もしくは太古の昔のPCから今のPCみたいなたとえになるか (リンゴマークのあの会社の元社長さんが大頭するまで自作PC的なものしかなかったようですし…)
@MedakaNoBoo
Жыл бұрын
受注生産から大量生産の転換期に生まれた技術ってことね、部品化とベルトコンベア生産だね。なるほど
12:31 Knuth subway🚇 これ拡大したんですけど・・・もしかして手書きなのかしら・・・ひぇー・・・ 水野さんが指摘されたインデントによる構造の視覚化と自然言語の文法処理との関連性、なんだかんだ堀元さん含め多くのプログラム経験者になると、自然言語を書く際にも文章を構造化する癖がつくんじゃないかと思います。並列的なパーツは同じインデントにいないとキモいよな~っていう感覚が、直列化した文章を記述する際にもセンサーとして働いたり、箇条書きにまとめるのがうまくなったり・・・