只今、PHPの講義を受講しています。
しかし、私は数学の頭でしかなく、「代入演算子」の理解ができません。
”なぜ、イコールに違う数字を使っちゃうの?”と、
脳みそに”?”だらけです。 講師もあまり深く突っ込んでもらわずに
「こういう物」と、覚えちゃってください。などと、言います。
私としては、理屈が成り立っていないのに、覚えられる訳がないのです。と、
少し立腹ぎみなのですが、ここは抑えて自分で解決しようと思ったのですが、
やはり、理解できません。
ちなみに、過去に他のプログラム言語を学んだことはありません。
どうか、この数学あたまに代入演算子を理解させる方法をご伝授ください。
No.1
- 回答日時:
> 「こういう物」と、覚えちゃってください。
まぁ、それは 仕方がないかもしれません。
数学式のイコールとは 全く別物ですからね。(*´Д`)
俺の大昔の知り合いも同じ勘違いをしてましたし。
考え方としては、二つあります。
一つは 全く同じ形をしているけど、イコールだと思わない事。
記号としては「←」とするのが妥当だと思うのですが、プログラム言語が出来た時代に、そんな記号は存在しなかった為、イコールを使用したものと思います。
まぁ、今でも 半角で表示される矢印なんて存在しませんが。(キャラクターコード &H1D は別モンなので)
もう一つは、左辺は解、右辺は式が入るものと思うこと。
最近のものは知りませんが、日本の算数で一般的な問題の出し方は 1+1=?と「左辺が式、右辺が解」という感じだと思います。
これの、右辺と左辺がひっくり返ったものとお考えください。
まぁ、正直 その講師も そういわれて覚えてきたんだと思いますよ。
この回答への補足
「←」すごく分かりやすいです。
「=」を「←」であると頭の中に「代入」すればいいのですね。
しかし、、$a++や++$aと「=」が出てこない表記が出てきました。
コレは?どう理解すればいいでしょうか?
No.2
- 回答日時:
おっしゃるとおり、なかなか 理解しがたいですね。
$hoge = 0;
の 「=」 を 「とは?」 という文字に置き換えてみてはどうでしょう。
$hoge($hogeという変数) =(とは?) 0 (0なのです) ;(以上)
$hogeという変数とは、0 なのです。以上
プログラム言語は数学とは違い、基本左から右に、上から下に コンピューターは 文字として読んでいきます。 プログラム言語は 言葉なのです。
なので 「=」も 言葉なのです。
以降 phpでの 代入演算子に >、<、>=、<= . など いろいろ出てくると思います。
それぞれ、置き換えて 文章化してみてください。
続いた文字列で、コンピュータは意味を理解し、動作していくと思います。
No.3
- 回答日時:
このあたりは、言語によっても様々でして。
PHPを始めとして(「始め」にしていいかどうかはともかく) = で代入という言語は多いです。
数学とは違う、と割り切るしか無いでしょう。
既にあるように←という矢印と考えた方がいいかもしれません。
あるいは、古いBasicだと LET文というのがあって、
LET X=0
が正式な書式で、省略形として
X=0
が使える、というものでした。意味としては「Xを0とする」です。
PHPにはletは無いですが、letがあるものとして考えてもいいかもしれません。
では、数学的な=は、というと、PHPでは==になります。これを混同すると誤動作の原因になります
if ( $a == 0 ) {...}
だと、$aが0に等しいければ{...}が実行されますが、
if ( $a = 0 ) {...}
だと
$aに0が代入させる→ 「$a = 0」という式全体で 「0」と言う値になる→0は偽を表わすので {...}は実行されない
となります。
これも言語によっては両方 = で状況によって自動で使いわけてくれるものもあります(basicとか)
他にも、Pascalにように 代入は := ,比較は = という、おそらく質問者さんにとっては理解しやすいであろう記号を使っている言語もあります。
また、関数型言語と呼ばれる類のものでは、 「変数に代入」という操作自体が無く(あるいは、あるけどあまり使わず)、数学的な「等しい」という意味でのみ使われます。
興味があれば、そういう言語についても少しかじってみてはどうでしょうか?案外PHPだけやるより理解できるかもしれません。
No.4
- 回答日時:
こんにちは、
>私は数学の頭でしかなく、「代入演算子」の理解ができません。
>”なぜ、イコールに違う数字を使っちゃうの?”と、
数学とは関係ない、全く別のものだと考えてみることはできませんでしょうか?
>「こういう物」と、覚えちゃってください。などと、言います。
「プログラミングで言うところの代入を行う際には、イコールを使用する」
と言うことを、覚えることができないのでしょうか?
理解できないとおっしゃらずに、講師が覚えてくださいと言われたら、
それを頭のどこかに置いておき、やって見てくださいと言われた事を素直に
実行して、何かを動かしてみて体験することが今の時期は大事なんじゃないかと
個人的には感じます。
質問者さんは数学が得意な様子ですが、初めて算数を学んだとき、
イコールはどういった物だと学ばれたのでしょうか?
その際にも、単なる棒が2本並んでるだけなのに…と考えられたのでしょうか?
覚えられないことを自身の問題ではないとし、憤りを感じておられるかぎり、
質問者さんが次の段階へ進むことは難しいのではないかと私は思います。
>どうか、この数学あたまに代入演算子を理解させる方法をご伝授ください。
最初に書きましたが、「数学とは全く違う物だ」「プログラミングではこうらしい」と
考えるようにしたら、悩まずにすみませんでしょうか?
受講されている講義が質問者さんのためになることを願っております。
No.5
- 回答日時:
いくつかのプログラム言語を操るプログラマとして率直な感想ですが、
その程度の融通が効かず理解もできないのであれば断念したほうが幸せかと思います。
そりゃ数学の歴史から比べればコンピュータ用の高級言語の歴史は遥かに短いですが、
それでも60年以上続いてきているのですから。
現実に等号記号には複数の意味があるっていう事実を受け入れることはできませんか?
数学で言えば総和記号で使う=は初期値への代入を示すものですが、それも理解できませんか?
No.6
- 回答日時:
本当は
a ← b + 1
としたかったけど、タイプライターに「←」が無かったから。
同じように、タイプライターから引きずって、
×(かける)は「*」だし、
÷は「/」だったりするし。
そういうものだと割り切るしかないと思う。
No.8
- 回答日時:
#1のを書いてから、ふと思いついてたんだけど、誰か書くだろうと思って放置してたら、誰も書かないので 自分で書きます。
数学あたまの人なら簡単ですよね。
------------------------------
x = 5
y = 3
z = 2
v = x + y * z
vを求めよ。(数学の問題はいつも命令形)
vを求めてね。(こんな問題の出し方だったら答えてもいいかなと思う)
vを求めろっつってんだろゴラァ(( ゜д゜)…)
------------------------------
PHPが これを 求めてくれてるもんだと思ってください。
数式が大学生を こ馬鹿にした某記事と同じなのは わざとです。
PHPは 加減乗除の優先順位は知っているようです。
質問者さんはお礼率が異様に低いので、お礼なんざ期待してませんが、ネタを混入したかったので再度回答しました。(`・ω・´)
No.9
- 回答日時:
数学という世界の文法として=は何かと定義されているだけですよね。
それが別の言語分野では別の意味を持ってもおかしくはないと思いますが...
数学の歴史からすれば、=は両辺が等しいという意味でしょうけど、それも最初にそういう決め事をした
だけであって、もし最初の定義が || という表記方法だったら、とは思えないでしょうか?
もしくは、どこかの言語世界に、=という表記が前後に出てくるものが等しくないということであったら
それがわからないとは通じませんよね。
No.10
- 回答日時:
> ++$a,$a++
それこそ、数学から離れないと一生理解できないでしょうね。
でも、コンピュータの中では基本中の基本と言える計算です。複雑に見える全ての計算も、実際には1加える/1減らすを大量に高速に行うことで実現している...というと言い過ぎかもしれませんが、それくらいの基本。
あと、思ったのですが、数学での漸化式に近いかもしれません。
実行開始から行なったすべての計算に順番に番号を付けて
$a=$a+1;
は
a_k = a_(k-1) + 1
(_は下付き、kは計算番号)という感じ。で、プログラムは現在kに対してのa_kしか利用できない。
まあ、あまり「イメージ」と結びつけすぎると、「イメージできないと覚えられない」という状態に陥るので、ほどほどにしたほうがよいでしょう。
それと、数学と違う、ということばかり言ってるようですが、コンピュータの基礎となっている「オートマトン」といった考え方は数学の一分野です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 物理学 大学で物理学を学んでいる人、大学で物理を学んでいた人へ質問です。 私は現在大学1年で、物理を学んでい 2 2022/10/03 20:00
- 国家公務員・地方公務員 公務員試験の数的処理で苦戦しています。 1 2023/01/30 08:56
- その他(職業・資格) 『特別管理産業廃棄物管理責任者』修了試験の傾向と対策 1 2023/01/01 01:00
- 大学受験 大学生に保護者なんかいるの? 4 2023/08/23 16:52
- 大学受験 現在高3私立理系志望(浪人するかもです) 英数物の3科目偏差値40〜45程度共テ6割 所属高校の偏差 2 2023/02/25 09:24
- 大学・短大 大学の教科書って誤植や誤字脱字が多くないですか? 5 2022/10/29 17:29
- 大学受験 3浪しようと思うので、アドバイスお願いします。 自分としては結構メンタルきつくて後期でいいから、東京 3 2023/02/13 21:47
- 大学受験 娘の大学受験勉強 6 2022/06/30 19:58
- 大学受験 推薦入試について教えていただきたいことがあります。 私は、この春高校三年生になります。進路について考 1 2022/04/05 02:04
- 予備校・塾・家庭教師 昔の河合塾の単科(英語)について 1 2022/12/28 02:23
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHPでLinux用のCライブラリを呼...
-
Laravelなど、フレームワークを...
-
html、css、JavaScript、PHP…違...
-
言語の効率的な学び方を、緊急...
-
Linux Cプログラミングを学ぶた...
-
小学1年生の子です。塾に行かせ...
-
IT業界より楽に稼げる業界って...
-
家庭のパソコンで Python の 環...
-
楽しくて最高のプログラミング...
-
rpa化する言語としてら何があり...
-
私はプログラミングは一切分か...
-
LeetCodeていうの初めて、
-
プログラミングの雑談とかでき...
-
Pythonって何を意識した言語な...
-
プログラミングを教えたいです...
-
最新のプログラム言語を学ぶに...
-
Int('1234') で、strをかんたん...
-
GitHubについて
-
質問失礼します。 プログラム言...
-
プログラミング言語の制作方法...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Laravelなど、フレームワークを...
-
どのプログラミング言語で作ら...
-
PHPでLinux用のCライブラリを呼...
-
html、css、JavaScript、PHP…違...
-
PHPがあればCGIは使わない
-
フレームワークは開発環境だけ...
-
「楽天」で開発に使用している...
-
webアンケートを作成するための...
-
サーバーサイド言語とは?
-
言語の効率的な学び方を、緊急...
-
検索できるリンク集システムの...
-
PHPでWindowsアプリを作成する...
-
なぜPerlからPHPに移行したんで...
-
JAVA? FLASH? CGI?
-
PHPを習おうと思っているのです...
-
適切/効率的なプログラミング言...
-
MYSQLとSQLの違い
-
PHPやPostgres、JAVAはどの...
-
C言語、C+、C++、C#の違い
-
小学1年生の子です。塾に行かせ...
おすすめ情報