変数単語

34件
ヘンスウ
2.0千文字の記事
  • 5
  • 0pt
掲示板へ

変数とは、不定の数値である。

プログラミングにおける変数

変数は、メモリ間上の特定データ領域をプログラミング言語上で抽化したものである。メモリ間にアクセスする為の渡しをする。変数には、任意の値を代入することが可であり、読み出すことができる。

逆に値が変わらないもの定数と呼ぶ。

によっては、それぞれの変数にが定められている。が定められた変数には、そのを持った値しか代入できない。変数をによって拘束することで、より堅性の高いプログラム製作することができる、といわれている。

変数という概念を持たないプログラミング言語もあるにはあるが(スタックだけで動く言とか)実用的なものはあまりない。副作用を持たない純関数型言語のようなものであっても、関数定義の束縛変数や関数呼び出しの結果を受ける一時的な変数は存在するし、自分からは変更不能というだけで中の値は呼び出し毎に変わるのが普通である。

一方定数プログラムの作成時に決まっており、いつどのように参照しても変化しない(といいつつ何事にも例外はあるのだがexit・・・)

「左辺 = 右辺」は右辺の結果を左辺に代入するという役割がある。

例えば

「5+3=8」という式では、数字は全て定数である。「5+3=x」の場合でも、xは8以外の値を取りようがないので定数である。
では、「5+x=x」という式ではどうなるだろうか?

数学的に考えると「=」の両辺は等価(同じ)でなければならないので「5+xとxが等価になるわけがない」つまり矛盾ということになる。
だがプログラム世界では先頭から式を評価するため「"5"に"x"を足し、それは新たな"x"と等価である」という考え方になってしまう。ここで前者のxに自在な数値を入できれば、プログラムは最初のxに5を足した値を新たなxとしてみなすわけである。

この場合でのxはいわば「」であり、5+x=xは「に5を入れてまた戻す」と例えられる。この場合xにユーザー数字を入すると式5+xの出値も自在に変化するわけで、この場合のxを変数という。

箱vsタグ

ちなみにプログラミング言語における変数には、実は大まかに二種類の考え方がある。

まず昔から入門書などに載っている伝統的な考え方は「変数とは値を入れておけるのようなものだ」という理解である。実際C言語などのクラシックな言では、値が実メモリのどこかに置かれている様子をで上手く説明することができ、感覚的にも分かりやすい。

もう一つの考え方は「変数とは値にタグを付けるようなものである」という理解である。この場合とにかくどこかに値があって、これにfooとかbarとか書かれたタグが付けられており、その名前で値にアクセスができるということになる。

一見すると両者に大した違いはなさそうだが、例えば次のJavaコードを見てほしい。

import java.util.ArrayList;

class alias {
    public static void main(String args[]) {
        ArrayList<String> list = new ArrayList<>();
        ArrayList<String> other = list; // 別の変数に代入

        other.add(“item”); // 要素を追加

for(String s: list) { System.out.println(s); }
} }

実行結果:

% java alias
item

もし変数がだとすると、otherとlistは別々のなのだからそれぞれに入っているデータは別のものになるはずである。しかし実際にはotherに要素を追加してlistの中身を表示すると、listの方も中身は増えている。

つまりデータが同時に2つのに入っているということになってしまうのである。

もちろん「Javaの変数は(基本的に)参照なので、には参照を入れることができるのだ」という説明もできないことはないのだが、であれば実体は結局に入っていないわけだからモデルにこだわるのは意味がなく、最初からタグ付けされていると説明したほうが自然である。

細な違いではあるのだが、変数とは何なのかという喩が意外と微妙な問題をはらんでいることをお分かりいただけただろうか

数学における変数

単純に、未知もしくは不定である数や事、または単なる代入されていない値をそれらに代わって表す記号である。
いわば「未確認飛行物体」という飛行機スーパーマンかわからないような存在をUFOというようなものである。

変数には、ローマ字アルファベットや、ギリシャ文字に用いられる。方程式の x, y, z や、指数関数α,βなどが典例。
日本語文字を変数の記号として用いようとする運動もある。

関連項目

【スポンサーリンク】

  • 5
  • 0pt
記事編集 編集履歴を閲覧

ニコニ広告で宣伝された記事

エターナルアルカディア (単) 記事と一緒に動画もおすすめ!
提供: 銀色の悪夢
もっと見る

この記事の掲示板に最近描かれたお絵カキコ

お絵カキコがありません

この記事の掲示板に最近投稿されたピコカキコ

ピコカキコがありません

変数

14 ななしのよっしん
2012/01/17(火) 17:49:32 ID: 7jrS6mDh22
数学の=は同等や等価
プログラミングの=は代入を意味してるいる。

厳密には違うかもしれんけどはこれで覚えた。
👍
高評価
0
👎
低評価
0
15 ななしのよっしん
2012/01/22(日) 00:45:04 ID: UbOdKslaYO
>>14
Visual Basicでは=は判別・代入両方に用いられる
VBAからプログラミングをはじめたは特にそんなこと気にせずに使ってたもんだから
Pythonでは=は代入、==が判別に用いられる
ことを忘れてしばしばエラーを頻発させてるぜ。
👍
高評価
0
👎
低評価
0
16 ななしのよっしん
2013/01/26(土) 10:55:53 ID: KoX/FbXNHC
>>15
そこでエラーが出るほうがありがたいんだよ
Javaも==かequals()で等値判定しないとエラーになる

C言語だと=と==を間違えてもコンパイラエラーにしてくれないから見落としたとき怖い
👍
高評価
0
👎
低評価
0
17 ななしのよっしん
2013/10/11(金) 06:12:28 ID: 2IBkOqbYXs
それ見落として2時間詰んでたことあるの話してます?
👍
高評価
0
👎
低評価
0
18 ななしのよっしん
2014/04/24(木) 09:06:19 ID: h5/xn/eiGL
飛行機スーパーマンかの下りで予備校なのに噴いたw
👍
高評価
0
👎
低評価
0
19 ななしのよっしん
2019/11/06(水) 01:54:13 ID: T2gKgd2wPW
英語ではそのままズバリ「変動し得るもの(variable)」だから
数学における「variable」と被ってしまうのは仕方ないが、
それを日本語で訳す時に『変数』って数学を借用しちゃったのがアレ
最悪カタカナで『ヴァリアブルの方がマシだったかもしれない
どう考えても変数ではないし
👍
高評価
0
👎
低評価
0
20 ななしのよっしん
2020/04/01(水) 02:34:24 ID: QWIRIMnxO/
👍
高評価
0
👎
低評価
0
21 ななしのよっしん
2020/10/31(土) 10:09:36 ID: /60LD61SWd
言い出しっぺの法則できない人間他力本願な提案だけど、数学を先に持ってきた方がいいような気もする
変数関数明らか数学から持ってきたものだし
👍
高評価
0
👎
低評価
0
22 ななしのよっしん
2020/11/12(木) 22:37:39 ID: /MyIGqZmmN
f:A→B の定義域の集合Aを定義域Aの要素aで代表させたものが変数a
👍
高評価
0
👎
低評価
0
23 ななしのよっしん
2021/04/03(土) 13:23:40 ID: dv5RrSFew+
ラベルかの話だけど
これを説明するには参照渡しと値渡しの違いも説明しないと
いかんね
👍
高評価
0
👎
低評価
0