アカウント名:
パスワード:
業務内容によってはその方面の数学の知識は当然必要になるでしょうが、純粋に「プログラミング」という点に絞るとそう単純な問題でもないような。
「プログラマとして食っていくなら、これはないと話にならんだろ」というのはどのあたりでしょう?
代入の概念。繰り返しの概念、条件分岐の概念。
moveならまだいいじゃない定数ロードやレジスタ間の値の移動だけでなぜか見た目上は演算が必要なoriだのaddiでないならw(書くときは疑似命令liやlaやmvが使えるが、デバッグのときにはoriやaddiになってしまっている。)
そうなっている理屈はわかるが読みやすいとは言えないw > Mips
何か問題があるの?#compareで代入するなら大問題だがw
8086ならMOV AX,CSじゃないの?
こういう誤解が起こらないよう英単語が判るようになる前にプログラミング言語を教えるべきですね
初めてプログラミング言語を教わったとき、「代入したら、既存の値は捨てられる」ことがなかなか理解できなかったです。
そこらへん、Cのように「変数がメモリ上にあって、そこに値を書き込んでいるから」という、本質的かつ直感的なモデルは分かりやすいですよね。変更可能だとか名前の束縛だとかよりもずっと。
だから「代入って名前がついてるけど、これは左辺に入ってたのを捨てて、新しく右辺値を入れるって意味だよ」と説明するんですよ。結局、代入したら値が捨てられることは覚えないといけないのには変わらないけど、その疑問に対する答えが「なるものはなる」や、わけわからん言葉ばっかで結局覚えるしかない答えのときと比べて、今後の伸び方が違いますよ。
最初に習った言語がHaskellだったとか。
数学科を出て某大学院の情報系研究科に入学した知人の話。その人は大学院で初めてプログラミングを勉強したのですが、最初に出会ったプログラミング言語がHaskellとPrologで、研究内容は項書き換えシステムだったせいか、後でCやJavaの破壊的代入やループの概念の習得にちょっと苦労したとか。たまにはそういう人もいるわけです。
そうでなくても代入演算子が数学の等号と同じなのは初学者には混乱の元だと思う。何で := や - とかにしなかったのやら。
某大学ではマルチリンガル推奨ということで学部生向きに初歩のJavaと初歩のLisp(Scheme)を同時進行でやってましたが、私がTAバイトしたときに代入概念へのとっつきの違いで割とはっきりJava得意派とLisp得意派に分かれたのが印象的でした。
代入で躓くと手続き型のコードが書きにくいには自然ですが、面白かったのはLispの時で代入概念が身についていると代入できないことを不自由と感じLispっぽい書き方で躓くのに対し、代入概念がなければないでLisp的コードへの抵抗がないようでした。
ちゃんと数えたわけでなく印象ですが、前者には趣味等でのプログラミング経験者が多く、後者は数学好きが多かったような印象があります。
そうでなくても代入演算子が数学の等号と同じなのは初学者には混乱の元だと思う。何で := や <- とかにしなかったのやら。
# 「本物のプログラマ」は、SmalltalkはともかくPascalは使わんからなあ…。:-)
真偽のほどは分かりませんが、代入のほうが比較より圧倒的に多いから、タイプが少なくて済むように'='1文字を割り当てた、という話はよく聞きますね。
初学者のバグ原因になりうることとのメリットデメリットのバランスについての評価はどうなのでしょうね。
> 初学者のバグ原因初学者がC/C++使うな。本物のプログラマも初学者も使わなかったらいったい誰がPascal使うんだ。
私の経験だと、大学の学部一年生がはじめてプログラミングを習う時に、代入(C的な意味で) で躓く人が割と多かったですね。n = n + 1 が分からないと言われたときは耳を疑いましたが、変数が副作用(代入も副作用ですね)によって刻々と変化していくこと自体、高校の数学ではなかったことですから。彼らにはCやJavaじゃなくて、(純粋)関数型言語を教えたほうがいいのかもしれません。
大学の先生の教え方で良くないな。と思ったのは
「右から処理していく」ことを教えないこと。
今まで左からしか式見てないんだもん。なんじゃこりゃってなりますよ。
後の方でそういう話は出てくるのですが…。
>代入が理解できない後輩に出会った時は死にたくなった
純粋関数型言語の使用者を敵に回したなwhttp://ja.wikipedia.org/wiki/%E9%96%A2%E6%95%B0%E5%9E%8B%E8%A8%80%E8%AA%9E [wikipedia.org]
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
吾輩はリファレンスである。名前はまだ無い -- perlの中の人
オ・ド・ロ・キ (スコア:0)
最近のアプリケーション・ソフト屋さんってどうなってるんだと感じることの多い理由が理解できた
Re: (スコア:2)
業務内容によってはその方面の数学の知識は当然必要になるでしょうが、純粋に「プログラミング」という点に絞るとそう単純な問題でもないような。
「プログラマとして食っていくなら、これはないと話にならんだろ」というのはどのあたりでしょう?
Re:オ・ド・ロ・キ (スコア:0)
代入の概念。繰り返しの概念、条件分岐の概念。
Re:オ・ド・ロ・キ (スコア:2, 興味深い)
Re:オ・ド・ロ・キ (スコア:3, 興味深い)
Re:オ・ド・ロ・キ (スコア:2)
そういえば8086アセンブリのニーモニックでも
MOV AH,CS
みたいに代入のくせにMOVeだもんな。
Re:オ・ド・ロ・キ (スコア:1)
moveならまだいいじゃない
定数ロードやレジスタ間の値の移動だけでなぜか見た目上は演算が必要なoriだのaddiでないならw
(書くときは疑似命令liやlaやmvが使えるが、デバッグのときにはoriやaddiになってしまっている。)
そうなっている理屈はわかるが読みやすいとは言えないw > Mips
Re: (スコア:0)
何か問題があるの?
#compareで代入するなら大問題だがw
Re: (スコア:0)
8086なら
MOV AX,CS
じゃないの?
Re: (スコア:0)
こういう誤解が起こらないよう
英単語が判るようになる前にプログラミング言語を教えるべきですね
Re: (スコア:0)
異なるんじゃないか?という話でしょ。
直感的でないなぁ、Copyならしっくりくるなぁ、っていう話かと。
Re:オ・ド・ロ・キ (スコア:1)
Re:オ・ド・ロ・キ (スコア:2)
#いや、最初はMOV AH,4Chって書いてたのよ。それだと分かりにくいから替えたら・・・
Re: (スコア:0)
初めてプログラミング言語を教わったとき、「代入したら、既存の値は捨てられる」ことがなかなか理解できなかったです。
Re:オ・ド・ロ・キ (スコア:1)
そこらへん、Cのように「変数がメモリ上にあって、そこに値を書き込んでいるから」という、本質的かつ直感的なモデルは分かりやすいですよね。
変更可能だとか名前の束縛だとかよりもずっと。
1を聞いて0を知れ!
Re: (スコア:0)
Re:オ・ド・ロ・キ (スコア:1)
Re:オ・ド・ロ・キ (スコア:1)
だから「代入って名前がついてるけど、これは左辺に入ってたのを捨てて、新しく右辺値を入れるって意味だよ」と説明するんですよ。
結局、代入したら値が捨てられることは覚えないといけないのには変わらないけど、その疑問に対する答えが「なるものはなる」や、わけわからん言葉ばっかで結局覚えるしかない答えのときと比べて、今後の伸び方が違いますよ。
1を聞いて0を知れ!
Re: (スコア:0)
最初に習った言語がHaskellだったとか。
数学科を出て某大学院の情報系研究科に入学した知人の話。その人は大学院で初めてプログラミングを勉強したのですが、
最初に出会ったプログラミング言語がHaskellとPrologで、研究内容は項書き換えシステムだったせいか、後でCやJavaの
破壊的代入やループの概念の習得にちょっと苦労したとか。たまにはそういう人もいるわけです。
そうでなくても代入演算子が数学の等号と同じなのは初学者には混乱の元だと思う。何で := や - とかにしなかったのやら。
Re:オ・ド・ロ・キ (スコア:3, 興味深い)
某大学ではマルチリンガル推奨ということで学部生向きに初歩のJavaと初歩のLisp(Scheme)を同時進行でやってましたが、
私がTAバイトしたときに代入概念へのとっつきの違いで割とはっきりJava得意派とLisp得意派に分かれたのが印象的でした。
代入で躓くと手続き型のコードが書きにくいには自然ですが、面白かったのはLispの時で
代入概念が身についていると代入できないことを不自由と感じLispっぽい書き方で躓くのに対し、
代入概念がなければないでLisp的コードへの抵抗がないようでした。
ちゃんと数えたわけでなく印象ですが、前者には趣味等でのプログラミング経験者が多く、
後者は数学好きが多かったような印象があります。
Re:オ・ド・ロ・キ (スコア:2)
# 「本物のプログラマ」は、SmalltalkはともかくPascalは使わんからなあ…。:-)
真偽のほどは分かりませんが、代入のほうが比較より圧倒的に多いから、タイプが少なくて済むように'='1文字を割り当てた、という話はよく聞きますね。
初学者のバグ原因になりうることとのメリットデメリットのバランスについての評価はどうなのでしょうね。
Re: (スコア:0)
> 初学者のバグ原因
初学者がC/C++使うな。本物のプログラマも初学者も使わなかったらいったい誰がPascal使うんだ。
Re: (スコア:0)
私の経験だと、大学の学部一年生がはじめてプログラミングを習う時に、代入(C的な意味で) で躓く人が割と多かったですね。n = n + 1 が分からないと言われたときは耳を疑いましたが、変数が副作用(代入も副作用ですね)によって刻々と変化していくこと自体、高校の数学ではなかったことですから。彼らにはCやJavaじゃなくて、(純粋)関数型言語を教えたほうがいいのかもしれません。
Re:オ・ド・ロ・キ (スコア:2)
大学の先生の教え方で良くないな。と思ったのは
「右から処理していく」ことを教えないこと。
今まで左からしか式見てないんだもん。
なんじゃこりゃってなりますよ。
後の方でそういう話は出てくるのですが…。
Re: (スコア:0)
>代入が理解できない後輩に出会った時は死にたくなった
純粋関数型言語の使用者を敵に回したなw
http://ja.wikipedia.org/wiki/%E9%96%A2%E6%95%B0%E5%9E%8B%E8%A8%80%E8%AA%9E [wikipedia.org]
Re:オ・ド・ロ・キ (スコア:1)