Chinaunix

标题: 对变量的基本作用的疑问 [打印本页]

作者: gammareal    时间: 2011-02-08 17:04
标题: 对变量的基本作用的疑问
编程语言 ,如c语言,都会有变量,
编程语言中的变量与代数中的变元又有不同之处,代数中的变元相当于c语言中的被用const修饰的参数,一旦被初始化之后(被实参替代之后),便不能够再变化了,但代数中的变元对于"普遍性"的表达是足够的了,数学中采用的方式往往是最精炼的了,
说道编程语言中的变量的作用,往往也是指起到普遍性的作用,变量所允许的初始化之后的多次的改变是否会带入"普遍性"之外的什么别的作用呢?我觉得(猜测)应该有,但又看不清,想久了,头痛,希望哪位高人指点一二,
作者: asha_hi    时间: 2011-02-08 17:25
最头疼这类问题,编程是门实证的科学。就一般意义上,变量是用来存放结果的,包括最终结果和中间结果。有的是逻辑上必须的,有的可以显著地降低逻辑或算法的复杂度。
作者: flw    时间: 2011-02-08 23:34
命令式语言的变量和数学的变量不是一个概念。
FP 里的变量倒是和数学里的变量比较像。

楼主可以接触一下 Haskell 或者 Erlang。
作者: cjaizss    时间: 2011-02-09 00:01
编程语言 ,如c语言,都会有变量,
编程语言中的变量与代数中的变元又有不同之处,代数中的变元相当于c语言中的 ...
gammareal 发表于 2011-02-08 17:04



    代数中的变元?你是说方程中的变元吧。方程中的变元是为了表示关系。这里的变量,是为了给定存储空间,不一样的。
作者: erlangs    时间: 2011-02-09 09:15
得,把数学扯上了 {:3_190:}
作者: cjaizss    时间: 2011-02-09 10:07
得,把数学扯上了
erlangs 发表于 2011-02-09 09:15



    编程本就从数学中来啊,有啥奇怪的?
作者: tempname2    时间: 2011-02-09 12:23
FP语言就是在模仿数学函数,里面的变量像为了构造模版而使用的元素,更接近数学上的函数。基本规律是,给一个函数相同的输入总可以得到相同的输出。没有时间线,没有状态,没有副作用。。。。。。
作者: cjaizss    时间: 2011-02-09 14:35
编程本就从数学中来啊,有啥奇怪的?
cjaizss 发表于 2011-02-09 10:07



    我想,可能数学学的程度不同的人,对于什么是数学,这个理解是不一样的吧。数学,可谓包罗万象。
作者: drangon    时间: 2011-02-09 15:02
对这个有兴趣的话,还是去看看“冯.诺依曼计算机模型”,这是最基本的原理,
作者: A.com    时间: 2011-02-09 16:58
方程中的变元是函数里的参数吧。变量不过是寄存器罢了,用来传递参数用的
作者: gammareal    时间: 2011-02-10 16:54
本帖最后由 gammareal 于 2011-02-10 16:59 编辑

多谢大家的帮助,这两天头痛的利害,导致回复晚了些,望见谅.
(近来好像是得了偏头痛,以前没有这样过.{:3_204:}{:3_204:})
现在觉得变量对于写程序的最主要的帮助或是作用应该是 变量(变量的赋值操作)和外部数据的结合,这里外部数据是和内部数据相对而言的,指的是一次函数执行的生存期结束后,数据依然存在,而且每次函数执行时带来的对外部数据的改变应该是写在函数内部的,不应该以在函数体外部的对数据采用直接赋值符"="的方式来表达,
也可以说就是对"状态"的描述的支持了,若不是这个用法的话,"变量"的作用不是很大,
而函数中的变员呢,(严格来讲,数学上的纯的函数,)它的生存期无法超出函数一次执行时的生存期,只能是把在输出位置那里数据保留的时间长一些,对描述 状态 无能为力.
我现在能看出的就是这么多了,
---------------------------------------
感觉也是两种方式在体现 "普遍性" 上的不同之处.
作者: pmerofc    时间: 2011-02-11 10:30
提示: 作者被禁止或删除 内容自动屏蔽
作者: cjaizss    时间: 2011-02-11 11:11
究竟什么是变量?
谁给个定义
这个问题应该首先弄清楚吧
pmerofc 发表于 2011-02-11 10:30



    就当算法中的存储空间吧
作者: pmerofc    时间: 2011-02-11 18:06
提示: 作者被禁止或删除 内容自动屏蔽
作者: gammareal    时间: 2011-02-11 18:28
若是要明确一下的话,就是数据,在此数据的生存期内,它的值可以变化,与之对应的是常量,在生存期内,初始化后,值就不能够改变了,这样说可以把.
作者: cjaizss    时间: 2011-02-12 08:34
我觉得说成是有名字的存储空间可能更准确
   malloc()出的存储空间恐怕不能算变量
pmerofc 发表于 2011-02-11 18:06



    无所谓,就抽象的看这个问题就行了.
作者: 心肝宝贝儿    时间: 2011-02-12 14:19
强帖留名
作者: yaoaiguo    时间: 2011-02-12 17:14
为什么总把编程和数学扯在一起?

硬要拉关系,物理也可以说是数学,化学也是数学,连经济也是数学。

但是实际上这样就没啥意义了。

如果把编程当成一种学问来研究,怎么也学不会,数学是抽象的,编程是一门实践的学问。
作者: erlangs    时间: 2011-02-12 17:17
所以每个人都是从语文数字开始的




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2