x=x+1が分からない京大生 185
ストーリー by nagazou
経験 部門より
経験 部門より
プログラミング言語「Python」の大規模イベント「PyCon APAC 2023」で、京都大学国際高等教育院の喜多一教授が基調講演を行い、Pythonを使ったプログラミング教育の実態を明らかにした。喜多教授の授業は反転授業形式で、学生が宿題をもってきて一緒に検討するスタイル(日経クロステック)。
喜多教授は、受講生の多くはプログラミング初心者であり、「x=x+1」などの基本的なコードに戸惑うこともあると話す。「x=x+1」は、プログラミングを知っていれば変数の実装だということが分かるが、初めてプログラミングに触れる学生はこれを方程式だと考え、解けないと悩む。一方、数学を知っているため、xを変数として使うことには慣れている。このため授業では、まず「これは方程式ではない」というところから解説していくという。
コースではエラーに対処する能力にも力を入れている。エラーに遭遇した学生の反応は「エラーメッセージを読まない」「学習をやめてしまう」に二分される傾向にあり、こうした事態を避けるために、典型的なエラーをわざと起こして学生に経験させているという。
nemui4 曰く、
喜多教授は、受講生の多くはプログラミング初心者であり、「x=x+1」などの基本的なコードに戸惑うこともあると話す。「x=x+1」は、プログラミングを知っていれば変数の実装だということが分かるが、初めてプログラミングに触れる学生はこれを方程式だと考え、解けないと悩む。一方、数学を知っているため、xを変数として使うことには慣れている。このため授業では、まず「これは方程式ではない」というところから解説していくという。
コースではエラーに対処する能力にも力を入れている。エラーに遭遇した学生の反応は「エラーメッセージを読まない」「学習をやめてしまう」に二分される傾向にあり、こうした事態を避けるために、典型的なエラーをわざと起こして学生に経験させているという。
nemui4 曰く、
大学一年向けのPythonを使ったプログラミング学習コースでの苦労話
そらプログラム知らなきゃわからんやろ (スコア:5, すばらしい洞察)
無茶言うたらあかん
しかも「戸惑う」と言ってるだけやん
Re:そらプログラム知らなきゃわからんやろ (スコア:2)
ツイッターに,数学でも
\right. \frac{dx}{dy} \left|_{x = x + 1}
があるという方がいました。これはありでしょうか。
Re:そらプログラム知らなきゃわからんやろ (スコア:2)
dxとdyも逆だったorz
\left. \frac{dy}{dx} \right|_{x = x + 1}
たとえば,y = x^2 ならば
\left. \frac{dy}{dx} \right|_{x = x + 1} = 2 (x + 1)
Re:そらプログラム知らなきゃわからんやろ (スコア:2)
leftとrightが逆だった。すみません。
\left. \frac{dx}{dy} \right|_{x = x + 1}
Re:そらプログラム知らなきゃわからんやろ (スコア:1)
Re:そらプログラム知らなきゃわからんやろ (スコア:1)
んだミスリード狙った設問ミス
「解け」って言ったら方程式と認識するのが正しい
「読め」か「活用して構築」となったらソースと認識してほしいくらいが妥当
Re: (スコア:0)
情報の授業でやらんの?という疑問が。
Re:そらプログラム知らなきゃわからんやろ (スコア:1)
情報以外の何の講義で代入なんて使う?
Re: (スコア:0)
なぞなぞ遊びとか、スマホの料金シミュレーションとか、
「答えが〇〇と仮定すると、”夜は3本”に反するのでこの仮定は誤り」
「お客様の場合、このプランでは3,980円であのプランでは4,980円」とかあるけど
代入と呼ばれない代入行為とは言える?言えない?
Re:そらプログラム知らなきゃわからんやろ (スコア:1)
Re: (スコア:0)
「束縛」では変数の中身が途中で変わることはないから余計に混乱するだろうね
Re:そらプログラム知らなきゃわからんやろ (スコア:1)
// バーックトラックでプロロロローグ! (マテ
Re:そらプログラム知らなきゃわからんやろ (スコア:2)
y=2x+1
y=3x+2
って書くと、連立方程式を解いて、交点の座標のx=-1、y=-1を変数のxとyに代入してくれる。プログラミング言語(なのか?)でこの手のことをやってくれるのって珍しいよね。
Re: (スコア:0)
いや、教授は「解けないと悩む」のところに引っかかっているのでは。
京大生であれば、「x=x+1」から「1=2」を導き出し、考察 [uncyclopedia.info]するぐらいのことはしてほしいと思っているのではなかろうか。
小説や漫画のネタとしては使えそう…… (スコア:2)
科学技術の進歩が現実とは何かビミョ〜に違う平行世界の地球からやってきた科学者は「現実の地球の科学技術における『あたりまえ』のどこに違和感を覚えるか」とか……。
俺も分からない (スコア:2)
俺は Python 歴が今年で 18 年の初心者ですが、
x = x + 1
は汎用言語ではよくある記述だけど、Python なら
x += 1
と記述したほうが教えやすい。
Python を使用した教育なのに、なぜ = を使用したのか理解に苦しむ。
なぜ = や *、i を使うことになっているのか、
エラーの原因を見つけるのが難しいのか、
この先生はコンピュータの歴史や人間の行動学を勉強したほうがいいんじゃないかな。
Re:俺も分からない (スコア:2)
AC の分際なのに、その物言いはどうかと思うぞ?
あと、使えるのは四則演算だけじゃないぞ。
どこの学生か知らないが、君は Python と日本語と数学をもう少し学んだほうがいい。
関数型言語 (スコア:1)
代入なんかするから混乱するんだ。
みんなが関数型言語を使用すれば幸せになれる。
Re: (スコア:0)
超算数を理解しておけば
「イコールする数」と「イコールされる数」の区別ができるのでこの記法も得心できるよ。きっと
Re: (スコア:0)
こうですか?
(incf x)
# それは関数型言語じゃない!
本物のプログラマは (スコア:1)
x := x + 1
って書くに決まっておろーが!
実際の所、= と := 以外の代入文って何かあったっけかな。メソッド式じゃなくて代入文のヤツで。
多分マイナーな言語で色々あるんだろなーとは思うんだが…。
※どうでもいいつぶやき。
※カーク x スポック、って書くじゃん? 俺っち、カークがかけられる方でスポックがかける方だと思ってたんよ。
※実は逆らしいのね。驚いた。多分コレってプログラマー的な順序意識が若干ながらあるんじゃないか、となんとなく思ってる。
※カーク / スポック、って書いた場合は俺っちの想定通りになるようだけども。
Re:本物のプログラマは (スコア:2)
オペランドを1つ取る命令の記法なんですよ。左という操作が右に適用される。それって発想が暴力的すぎませんかという気もしますが…
Re:本物のプログラマは (スコア:2)
let x = x + 1
はどうですか
Re: (スコア:0)
Rの代入演算子"-"はわかりやすいかな。
X - X + 1
Re:本物のプログラマは (スコア:1)
正しくは以下。
---
Rの代入演算子"<-"はわかりやすいかな。
X <- X + 1
---
Re: (スコア:0)
x += 1
Re: (スコア:0)
OCamlやF#のmutable値の代入は-
Re: (スコア:0)
<-
無意味にSGML対応するのやめてほしい。。。
Re: (スコア:0)
大メジャー言語であるLispでは
(setq x (+ x 1))
ですよ。
(incf x)
でもいいけど。
Re:本物のプログラマは (スコア:1)
Re:本物のプログラマは (スコア:1)
---- 6809
たぶん (スコア:1)
「x(i+1)=x(i)+1 をプログラミング上では x=x+1 って書くんだよ」とか教えれば、勝手に i=0 の場合とか、ステートマシンとかに思いを馳せてくれて学習が捗るような気がする。
京大生相手なら
「エラーメッセージを読まない」「学習をやめてしまう」に二分 (スコア:1)
二分ということはこれ以外の反応はない(エラーメッセージを読んで対処しようとは誰一人しない)のか。
'='の使い方 (スコア:1)
数学:
左辺は右辺と「同じである」と形容詞的
プログラム言語:
左辺を右辺と「同じにする」と動詞的
と見てる。
----------科学は思考の柔軟剤
初めてのプログラミングで「x=x+1は代入文だ」と『誰にも教えられずに理解できた』者だけが石をなげよ (スコア:0)
私は中学校で方程式を習う前にBASICの文法を習ったので「プログラムでは代入したいときにそういう書き方をするんだ」ってサンプルコードを打ち込みながら無条件に納得したが、
数学の方程式の記述法とプログラムの文法を知る順番が逆だったら後者を新たに理解するまでに時間がかかるのもしゃーないと思う
むしろ誰にも教えられないで(主観的)未知の言語の文法を理解できることはできないのでは
Re: (スコア:0)
デジタルネイティブじゃないんや!
Re: (スコア:0)
テキスト無しの独学でやってきたゆえに、「代入」だと思ったことは無かった。
そう「定義」するもんだと理解してたので。
Re:初めてのプログラミングで「x=x+1は代入文だ」と『誰にも教えられずに理解できた』者だけが石を (スコア:1)
>ていうかプログラミング学習の最初の最初に x=x+1 とかやる?
情報学とかじゃなくってBASICの入門書とかだと
プログラミングのヘンなトコっていう感じで、
真っ先に書いてあった気がします。
キャッチーなネタですよね。
プログラミングは (スコア:0)
アセンブラから、が正解
Re:プログラミングは (スコア:1)
Re:プログラミングは (スコア:1)
LDがメモリ→レジスタの転送
STがレジスタ→メモリの転送
と使い分けていたのだが
どっちもMOVでええやん派が覇権を取ってしまってこうなった
あげくMOVにどんどこ機能を追加してMOVだけでチューリング完全になり [blogspot.com]他のニモニックいらんやんとなったいうお話
そして、x++ とか x+=1とか続けて (スコア:0)
煙に巻こう。
という冗談はさておき、
意味するところをを知らなきゃ分からないのは当たり前じゃないか。
それまで = の意味を等式としてしか認知していなかったのだから。
プログラム言語一般では = にアクティブな代入乃至移動の機能があるとされている
と説明しないで やーい、分からないでやんの
と揶揄しちゃつて、偏狭な奴だと思われるのがオチ。
とここまでいろんな人が書いていると思うが
そう説明されてもまだ代入と考えられないで理解できなかったのでしょうか。
それなら
Re: (スコア:0)
> 何をいまさら思いついたように「戸惑った」とか言っているのか?そんなこと言ってる暇があったら勉強しろ。
こういう奴の下につかされた人に同情するわ
Re: (スコア:0)
おなじ日本語でも
「五分五分」と言われて「残りの九割はなんなんだ」とか
「以上でも以下でもない」に「数学的にあり得ない」とか
Re:違う言語 (スコア:1)
> 「以上でも以下でもない」に「数学的にあり得ない」とか
全然ありえなくない。
空集合になるか、そもそも元の集合が全順序じゃなければいい。
Re: (スコア:0)
わぁ すてきな頑固親父
Re:京都大学… (スコア:1)
世界的には名門大学は田舎にあることのほうが多い気がする。
# 京都大学が名門大学とは言っていない。
Re:京都大学… (スコア:1)
Re:京都大学… (スコア:1)
京大は洛外にある。
従って京都人的には「みやこの外」の大学である。
Re:京都大学… (スコア:1)
ましてや「洛中のボン」みたいな学生はほとんどいない
とはいえ、まれにそういう学生もいるらしいが、かれらの目的は家を継がないためとか
「京大やったらしゃーない」という免罪符になるらしい
周りの洛中人からは「あそこのボン、京大にとられはったらしい、後継ぎどないしはるんやろ?」と同情されるとか
京都人にとっては、大学と言えば同志社、そこそこ賢いし、大店のボンもぎょうさんいはる、後々京都で商売していくにはちょうどいいらしい
なんて話を、井上章一の「京都ぎらい」で読みました