【プログラミング言語】「京大生でもx=x+1が分からない」、喜多教授が明かすPython教育の実態 [すらいむ★]
■ このスレッドは過去ログ倉庫に格納されています
「京大生でもx=x+1が分からない」、喜多教授が明かすPython教育の実態
大森 敏行
プログラミング言語「Python」の大規模イベント「PyCon APAC 2023」が2023年10月27日と28日の2日間にわたって開催された。
1日目に行われた京都大学国際高等教育院の喜多一教授による基調講演を中心に、イベントの内容をリポートする。
PyCon APAC 2023は、1日目の基調講演「Why University Teachers Wrote a Python Textbook?」で幕を開けた。
京都大学でPythonを使ったプログラミング教育を担当している喜多教授が、その実態について英語で講演した。
(以下略、続きはソースでご確認ください)
日経クロステック 2023.11.07
https://xtech.nikkei.com/atcl/nxt/column/18/02629/110200002/ プログラミング言語は、もうちょっと
数学的な記号の使い方や一般的な数学的概念に寄せる努力をした方が良いんじゃ無いかな?
と思う時はある for文も、reptitionとかrepeatとか略してrepとかに…と思わなくもない
x86アセンブラの繰り返しはrepだし
そこら辺を変えようってならないのは
過去からの慣れと言うか惰性な気がしなくも…
英語苦手にしてみりゃ、どっちでも良いわ…ってなる… 言語の違いで演算子自体の動きが違ったりすんの地味にめんどくさいよな
演算子は一番基本的な部分なんだから、言語によっての違いはなくしてほしい C言語のポインターの習得には時間を取った。
しかし、考えてみると、ポインターの使い方を
憶えることがプログラミングの理解を深めるには
最適だと思うようになった。
単なる変数はユーザーには便利でも本質からは遠い。
ポインターは覚えにくいが機械の本質に近い。 特定のプログラミング言語に於いては等号ではなくて代入記号なんだ、と教育しても理解できない学生がいるってことか?
もうそれだったら知能の問題じゃないのかな・・・ >>9
そりゃあ元々はCPU命令をC言語で実現するための実装だからな
大昔はアセンブラの次にC言語を覚えるパターンも多かったから
そういう人はポインタを理解するのにほとんど苦労しなかった アセンブラがわかると高級言語のわかりにくい概念でも結構自明なものは多いぞ。
問題は最初に教える言語がアセンブラというわけにはいかないところだが。 (問題:間違いを見つけなさい。)
2の2乗を、2^2とする。
即ち2^2=2×2=4
3^2なら、3×3=9
4^2なら、4×4=16となる。
これを足し算で表すと、
2^2=2+2=4
3^2=3+3+3=9
4^2=4+4+4+4=16となる。
つまり2^2なら2を2個足し、3^2なら3を3個足し、4^2なら4を4個足す。
ならば一般化し、n^2とはn×nであり、nをn個足すということになる。
(ここで、n≠0とする。・・・条件@ )
即ちn^2=n+n+n+…+n(←nがn個足されてる。)
ではここで上式の、n^2=n+n+n+…+nを、A式と置き。
A式の左辺をnで微分すると、2nとなる。
同じくA式の右辺をnで微分すると、
1+1+1+…+1(←1がn個足されてる。)=nとなる。
まとめると、A式の両辺をnで微分した時の左辺=2n、右辺=n。
つまり2n=n
条件@よりn≠0だったので、上式の両辺をnで割ると
2=1
数学もプログラミング言語もそれぞれのルールがあって
=の役割が違うだけ
関数だって数学的な関数とは違う >>13
プログラミングと電子回路の繋がりを学ぶという点で
アセンブラは基礎知識として知った方がいいね x++にしろx=x+1にしろ何の説明なしに解れと言う方が無理
出題者の心の中を読む超能力テストかよと >>14
>即ちn^2=n+n+n+…+n
ここが間違い。n=1の場合には上式は成立しない。 >>19 の補足。
同じくA式の右辺をnで微分すると、
1+1+1+…+1(←1がn個足されてる。)=nとなる。
ここが、n=1 の場合には、1が1個足されるのだから
n^2=n 両辺をn(=1)で割ると n=1 >>16
さらにデジタル回路論もやっておいた方が良い。学生時代は若くて頭が柔らかいから半年もやれば回路図がスラスラ読めるようになる。 >>6
そんなあなたにc++
演算子を自由に再定義出来ます プログラミング未経験者がプログラム中のx=x+1を数式だと思ってしまうのは仕方ないでしょ 根拠はないがアセンブラ、アセンブリ、アセンブルの違いもわからん奴が
雰囲気だけでアセンブルと言ってそう 普通に論理的思考が出来るならchatgptにコメント付きでコード書いて貰えば演算子の意味なんかいちいち覚えんでもなんとかなりそう 「x=x+1」はそらプログラミング知らんヤツが
いきなり見ても理解できなくて当然だと思うが
数学的にはありえないもん >>14
nは自然数なのにどうやってnで微分すんだよw >>18
言語のマニュアル読まずに使っている時点でアホ
まぁ言語のマニュアル読むんだったら講義受ける必要ないんだけどねw 初学者がいきなりPythonから学ぶのはやめたほうが…… 今は亡きハイパートークだとadd 1 to x又はput x+1 into x 数学者でもε-δ論法を最初は理解できなかったというのは珍しくない
それと同じようなもんだろ 数学的にはy=x+1と書くべきなんでしょうが
コンピューターの記憶容量は有限で
変数を使い回して節約する手法なのでしょう
特にレジスタは数える程、キャッシュも
メインメモリに比べたら少ない 笑わない数学面白いよなあ~
1+1=2の回を何べんも見返してるがいまだによくわからん 5 x=0
10 for y=1 to 100
20 x=x+1
30 next y
40 print “x=“;x
run
x=5050 >>36
違う
数学じゃない
数学ならxとか文字は特定の数字自体を表すんだろーが
プログラミングはxという入れ物を指してるだけで
中身がどうなろうとも入れ物自体は変わらない
これはレジスタというハード的な入れ物を指してたのがソフト的にメモリを差しても同じ発想だからだ
だから入れ物(お皿でも受け皿でもいいが)そのxという入れ物の中身に1加えるだけだ
x+=1
でもいいんだよ そういう書き方もある
入れ物xの中身に1たしてもxはxだからな いいか
プログラミングは数学とイコールじゃない
数学的な問題を解決するときは数学を使う時もあるくらいってなもんだ
奥底では数学的に動いてるといえるところもおおい
がー
そんなことは忘れろ
1番大切なのは
コンピュータで扱えるように定義をすることだ
定義がうまいやつらはコンピュータをうまく使えてる
人がいちいち動いて時と場合によって対応が違うような日本では定義があってなきもの
だからパッケージもうまく使えなけりゃ
プロトコルも合意できない
んで世界の標準化団体が作った決まりにひれ伏してしまう
ノーベル賞をありがたがってばかりで
日本国内の優秀な奴らは貶してばかりってのが日本
何も決められずそして諸外国に対してこれでやりましょうなんて説得なんて全くできない だからーー
x=x+1
ってのは決まりごとなの
それに他の概念持ち込んでケチつけてるよーな>>1がバカなの
そんなのに話合わせてるのはもっとバカなの 生成AIでも「文脈」を設定するのが最初にやること
どこに行っても敬語使って
生成AIにまで敬語とか丁寧語使うのがバカなの
敬語ってのは使う場所がわかってこそな
それと同じで
x=x+1
の表現の使われている場面を考えろよ
どこでも数学のあたまなのか?
そんなわけないだろ
>>1の話こそ作り話だ そもそもxなんて文字を使うのが古典的すぎる
いまは
goulei
とか
saifu_no_nakami
とか
中身がわかるように具体的な名前を使うように最初からおしえろよ
昔はメモリ小さいから少ないバイト数だったが今はわかりやすさ優先だ
saifu_no_naka = saifu_no_naka + kyo_no_okozukai
だ
財布の x <= x+1
みたいな言語をつくればいいんじゃねえの
変に数学っぽい書式なのが問題なんでしょ 数学じゃねーからそんなの必要ないつーことでこれなんだなあ
そこだけ取り出して文句つけてるのが
この辺でよくいう切り取りな
前後左右プログラミングお作法なんだからそこだけ変えても意味ねーんだよ >>47
大昔から、そこら辺を気にしてる言語設計者は多いけどね
FORTRAN由来のキーワードを、無批判無条件に使っちゃう言語も多くて… そもそも言語違えば違うし
言語だけじゃプログラミングできないし
いろんな決まりごとをそのときそのときで使いこなすわけで
今覚えたやつも明日変わるかもしれない世の中だぜ
LangChainなんて繋ぎだからもーあっちこっち
そういう対応能力こそ必須だ
こんな話世界からバカにされるぜ AWSのクラウドとAzureとGCPとdockerとクバネティスかあれかこれかそれか全部か
react?GrapgQL?
いやLLMならRAGでパインコーンかChromeDBでとりあえずか
GPUはCUDAはPyTorchでふむふむ やっぱりマイクロサービスはエンタープライズじゃないとね
イベントドリブンやラムダやら
プログラミングというより取説扱いだもん
プログラミングレベルはライプラリを賢い奴が作ってくれてる
車輪の再発明ではなく、自動車の取説をよめよ >>47
> x <= x+1
> みたいな言語をつくればいいんじゃねえの
> 変に数学っぽい書式なのが問題なんでしょ
使う記号の問題だけじゃなくて
「代入ってどういう処理?」ってことも説明しないと伝わらないものよ
「右辺のxの値に1を足して左辺のxの値にするのか?」
「でもそうすると右辺のxもそのときには1増えてるよな?」
「だとすると左辺のxはさらに1増えるのか?
」
「でもそうすると右辺のxもさらに1増えるよな?」
「だとすると左辺のxはさらに…」
「…いったいどうなるんだ?」
みたいに考え込んでしまう初心者もいる やっぱり最初にアセンブラをやるべきなんかなあ。やっていたら自明だと思うんだけど。 >>36
少し違う
+と=はあくまで演算子で、xは単体ではアドレスを指す
+→add(i,j)関数、=→move(k,l)関数とすれば、move(x,add(x,1))という記述になる
無理矢理数学的に書くなら
f(x)=x_i+1 , x_i=x_(i-1)+1
x=、で始まるから数学的に勘違いしてしまうけど、"=は左辺を右辺に代入する関数"だと考えたら分かりやすい >>54
実際問題、実用面で代入文で躓くことは無いからどうでも良いと思うけどね
アルゴリズム書いたりゴリゴリに最適化しないならライブラリ呼び出してデータ渡すだけでしょ >>56
なんていうか計算機という道具の癖がわかるから。
「ここが面倒くさいから抽象化したのか」とか「高級言語でこう書くと簡単だけど実際はこんなコードになるのか」とか
「こう書いたら性能が出ないけど、こう書き替えたら性能が出る」とかがわかるようになるんだよ。 PythonとVBAってどっちを勉強したらいいの? おっさんホイホイのBASICスレかと思ったら違った >>55
if x = 1 then ~
みたいに等号としても
使うんじゃないですか? x ← x + 1 とかもう少し分かりやすい記号にしておけば良かったねって話だったのに、
「=」なんていう数学で一般的に使ってる記号を用いて設計したことが以後数十年にも渡る混乱の原因だったって話だし。
それを予見できなかった設計者は迂闊だったって話だし。
「教育の実態」はそれをちゃんと説明できない力不足って話だ。
京大生の頭が悪いとかそういう話じゃない >>57
演算子の説明を、アセンブリのaddやmoveで説明するのは良いけど、x=x+1を理解できない人間ならアセンブリから初めても難しいかと
最初から仕様として覚えてもらった方が効率は良い
高級言語の仕様を理解するにはコンパイラの知識も必要になるから、アセンブラだけ教えても大して変わらないと思う
>>61
C言語系なら等号の演算子は==
Basic系なら= x ← x + 1 とかもう少し分かりやすい記号にしておけば良かったねって話だったのに、
「=」なんていう数学で一般的に使ってる記号を用いて設計したことが以後数十年にも渡る混乱の原因だったって話だし。
それを予見できなかった設計者は迂闊だったって話だし。
「教育の実態」はそれをちゃんと説明できない力不足って話だ。
京大生の頭が悪いとかそういう話じゃない 混乱なんかしてねーし
素人が戸惑うってだけの話をよくもまーそー盛れるもんだ
マーケティングでもして日々盛った話をねつ造でもしてんだろな
←なんて使えると思ってるよーな奴はプログラミング経験ゼロだし >>63
いや
アセンブリなんて簡単
いったように箱が並んでるだけだからな
アセンブリの話を難しく説明する奴が頭悪いだけ
そーゆー奴はたいていにしんほーがどーこー言い出すアホ >>61
だから文脈だっての
文脈読めない奴は日本語も話せないだろ 2進法とかじゃなくてスイッチが並んでるだけだ
それを小難しく数学わかんねーのみたいに言うからみんなアホになる >>63
車を運転するのに車の作り方は知らなくて良い
プログラミングするのに仕様の理解は当座必要ない
だからコンパイラの知識はとりあえず必要はない 代入演算子と比較演算子がどちらも「=」なクソ言語があるそうな 目に見えないけどレジスタって箱があって、
レジスタ ← x + 1
x ← レジスタ
ってやってるのだ、それをいちいちレジスタを書かないで
済むようにしてるんだ、と教えると小学生でもわかってくれる。
そもそもこれがアセンブラがやってることだよ。 初めてなんだから分からないの当たり前じゃないの?
理解し始めたらすぐにそこらの日曜プログラマーよりできるようになるだろ x = x + 1とか最初は混乱するかもしれんけど
まあそういうもんと理解してもらったらそれまでだろ
ソースにも
>学生が学習を進めることで、こうした問題はいずれ解決する。
ってあるくらいだから騒ぐほどのことでもない それを改善したPascal記法も
もう誰も使わなくなったほど
周回遅れすぎる話題。
京大はタイムマシンでも開発したのか [男] 好きな人=元カノ+今カノ
[女] 好きな人=今カレ
これが女の数学者が少ない理由 ■ このスレッドは過去ログ倉庫に格納されています