【プログラミング言語】「京大生でもx=x+1が分からない」、喜多教授が明かすPython教育の実態 [すらいむ★]

■ このスレッドは過去ログ倉庫に格納されています
1すらいむ ★
垢版 |
2023/11/08(水) 21:52:07.00ID:52l6jXYO
「京大生でも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/
2023/11/08(水) 21:55:32.78ID:+UcoFPAS
pascalやdelphyなら:=
Rなら<-
2023/11/09(木) 09:10:49.00ID:aTiiFw9I
プログラミング言語は、もうちょっと
数学的な記号の使い方や一般的な数学的概念に寄せる努力をした方が良いんじゃ無いかな?
と思う時はある
2023/11/09(木) 10:29:07.68ID:aTiiFw9I
for文も、reptitionとかrepeatとか略してrepとかに…と思わなくもない
x86アセンブラの繰り返しはrepだし

そこら辺を変えようってならないのは
過去からの慣れと言うか惰性な気がしなくも…
英語苦手にしてみりゃ、どっちでも良いわ…ってなる…
5名無しのひみつ
垢版 |
2023/11/09(木) 12:42:44.20ID:zw37vaFX
>>3
Mathematicaを使うんだ
2023/11/09(木) 12:55:48.26ID:iRKujXN2
言語の違いで演算子自体の動きが違ったりすんの地味にめんどくさいよな
演算子は一番基本的な部分なんだから、言語によっての違いはなくしてほしい
7名無しのひみつ
垢版 |
2023/11/09(木) 13:08:33.19ID:poUPLu16
>>2
Go!
8名無しのひみつ
垢版 |
2023/11/09(木) 13:17:49.35ID:U48jVYjT
 
代入が「=」なのはFORTRANのせいか?
9名無しのひみつ
垢版 |
2023/11/09(木) 13:39:18.61ID:2DaiNKCZ
C言語のポインターの習得には時間を取った。
しかし、考えてみると、ポインターの使い方を
憶えることがプログラミングの理解を深めるには
最適だと思うようになった。
単なる変数はユーザーには便利でも本質からは遠い。
ポインターは覚えにくいが機械の本質に近い。
2023/11/09(木) 13:40:32.77ID:xgZLAW7a
特定のプログラミング言語に於いては等号ではなくて代入記号なんだ、と教育しても理解できない学生がいるってことか?
もうそれだったら知能の問題じゃないのかな・・・
2023/11/09(木) 13:47:58.54ID:xgZLAW7a
>>9
そりゃあ元々はCPU命令をC言語で実現するための実装だからな
大昔はアセンブラの次にC言語を覚えるパターンも多かったから
そういう人はポインタを理解するのにほとんど苦労しなかった
12名無しのひみつ
垢版 |
2023/11/09(木) 14:10:29.54ID:8+rLeA9z
教え方が下手なだけだろう
13名無しのひみつ
垢版 |
2023/11/09(木) 14:14:10.82ID:4qYWEpZC
アセンブラがわかると高級言語のわかりにくい概念でも結構自明なものは多いぞ。
問題は最初に教える言語がアセンブラというわけにはいかないところだが。
14名無しのひみつ
垢版 |
2023/11/09(木) 14:54:02.12ID:NP1dsE0f
(問題:間違いを見つけなさい。)

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
 
15名無しのひみつ
垢版 |
2023/11/09(木) 15:08:47.44ID:lDZsfeCk
数学もプログラミング言語もそれぞれのルールがあって
=の役割が違うだけ
関数だって数学的な関数とは違う
16名無しのひみつ
垢版 |
2023/11/09(木) 15:12:16.46ID:lDZsfeCk
>>13
プログラミングと電子回路の繋がりを学ぶという点で
アセンブラは基礎知識として知った方がいいね
2023/11/09(木) 15:27:30.73ID:9+frA986
x++ ならわかるんじゃね
大学生さんなんだし
2023/11/09(木) 15:34:57.30ID:xSwzDD+H
x++にしろx=x+1にしろ何の説明なしに解れと言う方が無理
出題者の心の中を読む超能力テストかよと
19名無しのひみつ
垢版 |
2023/11/09(木) 15:54:21.49ID:2DaiNKCZ
>>14
>即ちn^2=n+n+n+…+n

ここが間違い。n=1の場合には上式は成立しない。
20名無しのひみつ
垢版 |
2023/11/09(木) 16:14:45.28ID:2DaiNKCZ
>>19 の補足。

同じくA式の右辺をnで微分すると、
1+1+1+…+1(←1がn個足されてる。)=nとなる。
ここが、n=1 の場合には、1が1個足されるのだから
n^2=n 両辺をn(=1)で割ると n=1
21名無しのひみつ
垢版 |
2023/11/09(木) 16:16:04.97ID:4qYWEpZC
>>16
さらにデジタル回路論もやっておいた方が良い。学生時代は若くて頭が柔らかいから半年もやれば回路図がスラスラ読めるようになる。
2023/11/09(木) 17:34:22.93ID:l8w/Jzfm
>>6
そんなあなたにc++
演算子を自由に再定義出来ます
23名無しのひみつ
垢版 |
2023/11/09(木) 18:32:35.22ID:1Mg1JPQi
プログラミング未経験者がプログラム中のx=x+1を数式だと思ってしまうのは仕方ないでしょ
2023/11/09(木) 18:37:23.86ID:jxX546vZ
根拠はないがアセンブラ、アセンブリ、アセンブルの違いもわからん奴が
雰囲気だけでアセンブルと言ってそう
25名無しのひみつ
垢版 |
2023/11/09(木) 19:05:31.96ID:zmpPPtzB
普通に論理的思考が出来るならchatgptにコメント付きでコード書いて貰えば演算子の意味なんかいちいち覚えんでもなんとかなりそう
26名無しのひみつ
垢版 |
2023/11/09(木) 19:08:13.94ID:UQ8BTH1R
chatgptが作ったバグの改修はむずかしいよ
27名無しのひみつ
垢版 |
2023/11/09(木) 19:11:36.20ID:Ip2BuB03
「x=x+1」はそらプログラミング知らんヤツが
いきなり見ても理解できなくて当然だと思うが
数学的にはありえないもん
2023/11/09(木) 19:35:35.47ID:e08DAjTY
>>14
nは自然数なのにどうやってnで微分すんだよw
29名無しのひみつ
垢版 |
2023/11/09(木) 20:18:53.18ID:zw37vaFX
>>21
verilog覚えるのも良いぞ
30名無しのひみつ
垢版 |
2023/11/09(木) 20:32:50.34ID:U48jVYjT
>>18
言語のマニュアル読まずに使っている時点でアホ
まぁ言語のマニュアル読むんだったら講義受ける必要ないんだけどねw
2023/11/10(金) 07:27:42.20ID:SyoawrmA
初学者がいきなりPythonから学ぶのはやめたほうが……
2023/11/10(金) 08:07:27.64ID:BstjwAsR
今は亡きハイパートークだとadd 1 to x又はput x+1 into x
33名無しのひみつ
垢版 |
2023/11/10(金) 08:25:32.54ID:utTgl5k3
数学者でもε-δ論法を最初は理解できなかったというのは珍しくない
それと同じようなもんだろ
34名無しのひみつ
垢版 |
2023/11/10(金) 08:29:16.49ID:dMAV9hNc
代入を教えるのがそんなに難しいことなのか?
35名無しのひみつ
垢版 |
2023/11/10(金) 08:47:12.99ID:xXtcH8pg
プログラミングの=は代入だからな
等価は==
2023/11/10(金) 08:52:36.67ID:4slATY6A
数学的にはy=x+1と書くべきなんでしょうが
コンピューターの記憶容量は有限で
変数を使い回して節約する手法なのでしょう
特にレジスタは数える程、キャッシュも
メインメモリに比べたら少ない
37名無しのひみつ
垢版 |
2023/11/10(金) 09:02:59.83ID:Zexq3dVt
笑わない数学面白いよなあ~
1+1=2の回を何べんも見返してるがいまだによくわからん
38名無しのひみつ
垢版 |
2023/11/10(金) 09:20:11.62ID:axqfmrxp
5 x=0
10 for y=1 to 100
20 x=x+1
30 next y
40 print “x=“;x

run

x=5050
39名無しのひみつ
垢版 |
2023/11/10(金) 09:30:54.10ID:zeQqVsCh
>>36
違う
数学じゃない
数学ならxとか文字は特定の数字自体を表すんだろーが
プログラミングはxという入れ物を指してるだけで
中身がどうなろうとも入れ物自体は変わらない
これはレジスタというハード的な入れ物を指してたのがソフト的にメモリを差しても同じ発想だからだ

だから入れ物(お皿でも受け皿でもいいが)そのxという入れ物の中身に1加えるだけだ
x+=1
でもいいんだよ そういう書き方もある

入れ物xの中身に1たしてもxはxだからな
40名無しのひみつ
垢版 |
2023/11/10(金) 09:37:39.22ID:zeQqVsCh
いいか
プログラミングは数学とイコールじゃない
数学的な問題を解決するときは数学を使う時もあるくらいってなもんだ


奥底では数学的に動いてるといえるところもおおい
がー
そんなことは忘れろ

1番大切なのは
コンピュータで扱えるように定義をすることだ
定義がうまいやつらはコンピュータをうまく使えてる

人がいちいち動いて時と場合によって対応が違うような日本では定義があってなきもの

だからパッケージもうまく使えなけりゃ
プロトコルも合意できない

んで世界の標準化団体が作った決まりにひれ伏してしまう

ノーベル賞をありがたがってばかりで
日本国内の優秀な奴らは貶してばかりってのが日本

何も決められずそして諸外国に対してこれでやりましょうなんて説得なんて全くできない
41名無しのひみつ
垢版 |
2023/11/10(金) 09:39:32.39ID:zeQqVsCh
だからーー
x=x+1
ってのは決まりごとなの

それに他の概念持ち込んでケチつけてるよーな>>1がバカなの
そんなのに話合わせてるのはもっとバカなの
42名無しのひみつ
垢版 |
2023/11/10(金) 09:43:06.74ID:zeQqVsCh
生成AIでも「文脈」を設定するのが最初にやること

どこに行っても敬語使って
生成AIにまで敬語とか丁寧語使うのがバカなの
敬語ってのは使う場所がわかってこそな

それと同じで
x=x+1
の表現の使われている場面を考えろよ

どこでも数学のあたまなのか?
そんなわけないだろ

>>1の話こそ作り話だ
43名無しのひみつ
垢版 |
2023/11/10(金) 09:54:11.59ID:zeQqVsCh
そもそもxなんて文字を使うのが古典的すぎる
いまは
goulei
とか
saifu_no_nakami
とか
中身がわかるように具体的な名前を使うように最初からおしえろよ
昔はメモリ小さいから少ないバイト数だったが今はわかりやすさ優先だ

saifu_no_naka = saifu_no_naka + kyo_no_okozukai


財布の
44名無しのひみつ
垢版 |
2023/11/10(金) 09:58:37.02ID:axqfmrxp
ハニリイト
ok
45名無しのひみつ
垢版 |
2023/11/10(金) 10:01:23.05ID:zeQqVsCh
>>5
https://youtu.be/fLMZAHyrpyo
46名無しのひみつ
垢版 |
2023/11/10(金) 10:02:39.34ID:zeQqVsCh
>>25
なりませんぜ
47名無しのひみつ
垢版 |
2023/11/10(金) 10:07:55.87ID:gU6s0kLd
x <= x+1
みたいな言語をつくればいいんじゃねえの
変に数学っぽい書式なのが問題なんでしょ
48名無しのひみつ
垢版 |
2023/11/10(金) 10:12:44.87ID:zeQqVsCh
数学じゃねーからそんなの必要ないつーことでこれなんだなあ
そこだけ取り出して文句つけてるのが
この辺でよくいう切り取りな
前後左右プログラミングお作法なんだからそこだけ変えても意味ねーんだよ
2023/11/10(金) 10:13:30.46ID:o/PpbYDh
>>47
大昔から、そこら辺を気にしてる言語設計者は多いけどね
FORTRAN由来のキーワードを、無批判無条件に使っちゃう言語も多くて…
50名無しのひみつ
垢版 |
2023/11/10(金) 10:17:00.80ID:zeQqVsCh
そもそも言語違えば違うし
言語だけじゃプログラミングできないし
いろんな決まりごとをそのときそのときで使いこなすわけで
今覚えたやつも明日変わるかもしれない世の中だぜ
LangChainなんて繋ぎだからもーあっちこっち
そういう対応能力こそ必須だ

こんな話世界からバカにされるぜ
■ このスレッドは過去ログ倉庫に格納されています
16歳の水野カイトが封印の刀を見つけ、時間が裂けて黒い風と亡霊の侍が現れ、霊の時雨と契約して呪われた刀の継承者となる場面

ニューススポーツなんでも実況