免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: wwwsq
打印 上一主题 下一主题

531,继续抽某昏昏 [复制链接]

论坛徽章:
11
摩羯座
日期:2013-09-16 11:10:272015亚冠之阿尔萨德
日期:2015-06-12 22:53:29午马
日期:2014-04-15 11:08:53亥猪
日期:2014-03-02 23:46:35申猴
日期:2013-12-06 22:07:00亥猪
日期:2013-11-28 12:03:13双鱼座
日期:2013-11-21 14:43:56亥猪
日期:2013-10-23 10:55:49处女座
日期:2013-10-17 18:15:43午马
日期:2013-09-27 17:40:4215-16赛季CBA联赛之青岛
日期:2016-06-22 00:45:55
91 [报告]
发表于 2012-09-24 03:35 |只看该作者
本帖最后由 Ager 于 2012-09-24 03:38 编辑

@wwwsq
@幻の上帝
@pmerofc
@starwing83

我来扯扯吧 …… 大虾们不要嫌烦哦 ……

当我晕头转向在海拔5200多米的高山上的时候,就预感到,这个帖子不一般,不过当时是怀疑自己是由于缺氧造成的过分敏感和糊涂。

现在,回到低原,尽量仔细地把整幅Thread读了几通,自觉之前的预感没错。

楼主大虾提出的问题,各位大虾不要小觑。这个问题,不仅令楼主大虾抓住了一个挑战pm大虾的机会,更是触及到语言学或一切有语言现象的领域(包括计算机程序设计语言)中最容易发生纠缠的部分之一。

所以可以这麽说,楼主大虾的这种挑战,是一种具有广泛性、颠越性的诘问,不应该是针对pm大虾的,那么,也就应当与pm大虾在澄清BASI-C谬误事业上的卓越贡献无涉。楼主大虾的那个标题“表达式和变量都分不清的人,也可以出书的呀?”的确有失偏颇。

下面扯回“正题” ……

大约在19世纪的最后几年里,操法语的瑞士语言学家 F. de Saussure,将传统的语言学重新建构于符号与语义的范畴,即开创了新的语言学 —— 符号学。

符号学的内容非常丰富,下面只试着纲举一些跟计算机程序设计语言有关的原理:

(一)语言符号具有两面性:能指(Signifiant)与所指(Signifié)—— 括号里的分别是两个术语的法语原词,为了贴合关于计算机程序设计语言的讨论,我们且用他们的英语译词:Signifier 与 Signified。前者是符号的外观,如声响、形貌;后者是符号在思维中的概念。

(二)上面说到,Signifier是“外观”,其实这种说法不够准确,容易引起误会,令人将Signifier理解为一种物质的声音或物理现象 —— 一些没有认真阅读Saussure的人或蓄意将Saussure往唯物主义上改造的人就是这样或这麽做的 —— 这其实大大折损了Saussure的创造性贡献。Saussure的界定:Signifier不是一种物质的声音或物理现象,而是它们在人的意识中刻下的印迹,是感觉或心理的范畴。这样一来,Saussure就把传统的关于语言(符号)的“名称”vs“事物”之旷日持久的争论(如唯名论vs唯实论),一下子给逾越了。

(三)Signifier与Signified之间具有恣意关联性。也就是说:作为Signifier的“中国”(发音为[zhongguo])二字(之笔顺形貌或发音序列),与作为Signified的“最近在其多个城市中发生了反日打砸抢烧的那个国家”之概念,二者之间的关联,是完全恣意的,即它们之间没有任何必然的、自然的联系。

(四)Signifier具有内秉的一维属性。也就是说:笔画在单一维度上展开呈现(笔顺、字序)、发音在单一维度上展开呈现(音素序列)。这个属性既然是一维性的,就必定完全可以等同于时间性(完全栖居于时间),即Signifier的展开呈现藉由时间进行。这也完全符合我们的日常生活经验。

再扯回计算机程序设计语言 ……

通过理解计算机程序在计算设备中的存在形态,并结合Saussure,我们不难设想:程序赖之以存在的每一个字符、字节甚至Bit,都是Saussure视角中的“符号”。那么,它们都具有Signifier vs Signified的两面性。两下所作用的或所投射到的感觉-思维主体,可以是程序编译机构如编译器,可以是计算设备如CPU,当然,也可以是阅读程序代码的程序员的大脑。

在这种类比之下,楼主大虾发起的这个问题中的Identifier就是符号的Signifier,而Variable则是符号的Signified。(这下,可以体会到,我为什么用英语译词了吧。)

Identifier具有Signifier属性,即具有时序属性,一个Identifier的呈现方式(其中各个字符的摆列顺序),“唤醒”了感觉-思维主体如编译器对其的感知(从读取到Syntactic分析)与思索(Semantic分析),而后,符号的Signified属性,被彰显出来 —— 关于Variable的判断,在这个境遇中,方得以体现。

回到上述的原理(三),如果我们承认,Signifier与Signified之间的关联是完全恣意的,那么,我们便不难得出结论:Identifier与Variable之间的关联也是完全恣意的,两者之间没有任何必然的、自然的联系。

再说到 Expression,在Saussure的视角中,并结合我们讨论的这个问题,它应该对应着Signifier而不是Signified。所以,Identifier必定与Expression有恰当而正确的集合论上的关系,但Variable与它们都没有。

最后,有必要申明一下,上述所有原理,仅限于C语言的讨论 —— C语言的设计,充分契合了Saussure的Signifier vs Signified原理 —— 其他的计算机程序设计语言,未必一定如此。

也就是说,Saussure的符号两面性原理,并不总是能如此恰如其分地适用(类比)于其他的计算机程序设计语言的各种设计,因为,在语言领域,还有一种与“符号”范畴不同的东东,叫做“象征”。

在“象征”范畴中,两下的关联并不总是恣意的。关于这个议题,以及它跟计算机程序设计语言的关系,就不再扯了。

以上,仅供参考,呵呵 —— :)

论坛徽章:
0
92 [报告]
发表于 2012-09-24 07:44 |只看该作者
Ager 发表于 2012-09-24 03:35
@wwwsq
@幻の上帝
@pmerofc



你提到符号学是对的。因为identifier是符号,而variable是实体。identifier就像是门牌号,而variable就是门牌号那里的大楼。

你可以说门牌号是数字,但你绝对不能说那栋大楼是数字。
你可以说identifier是expression,但你绝对不能说variable是expression。

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
93 [报告]
发表于 2012-09-24 08:05 |只看该作者
回复 92# wwwsq


    我发现问题了。首先,在标准中,C语言是个**描述性语言**。即,C语言是用于表述某种执行顺序的抽象性的东西,换言之,C语言其实整体都是identifier。比如说编译以后会损失大量信息,其实就源于此。

因此,C标准中,根本就没有variable的存在,即使有,也是非正式的,因为作为标准的C根本就没有任何的具象性,它整体根本就是抽象的。

也就是说,不仅仅identifier是expression,expression本身也是某种执行流程的identifier。变量这个概念,根本就不存在于C语言中。

那么变量存在于哪儿呢?存在于对C语言的计算机解释——即Ager所说的象征。一个identifier指代了计算机的一块内存,这块内存也许就是variable(的一部分),仅此而已。如果将抽象符号的C语言+C语言的抽象解释(即作为流程描述的C语言,也就是标准化中的C)与具体的现实世界结合(即让“大楼”和“树在地上的建筑”这个概念本身结合),那么C语言中就出现了“变量”,但这种出现,是完全独立于标准化之外的。同样也是应该独立于教学之外的——这应该是教学内容的一种应用,而并不仅仅是C语言。

即,这种应用,应该是独立于《C程序设计》这种科目之外的,而应该和《数据结构》、《编译原理》站在同个高度。这应该就是《计算机语言学》。

换言之,说“variable是(或者不是)expression”,这完全就是关公战秦琼了。就跟说“‘大树’两个字站在森林中”一样无稽。

而鉴于pm是引用老谭的文字,可以想见老谭的技术混淆到什么程度了。

最后总结一下,说“int a”声明了一个变量,和说“Stack s”声明了一个栈这种说法是类似的,已经不属于C的范畴了。就如同文学已经不属于文字的范畴一样。也是一种教学,但一定不能混淆。

论坛徽章:
0
94 [报告]
发表于 2012-09-24 08:27 |只看该作者
starwing83 发表于 2012-09-24 08:05
回复 92# wwwsq



你再回过头,用你现在的观点去看下老谭原本的文字,你会发现只是描述不够确切,但的确是没错的。反而pm的描述是错误的。

这是我为什么说老谭中正平和,而pm基础概念不清。

对于科普级别的文字,并不要求论文级别的清晰准确,但基础概念不能混乱。老谭的基础概念是清晰的,他明确的知道identifier和variable之间的区别。

论坛徽章:
0
95 [报告]
发表于 2012-09-24 08:30 |只看该作者
说实话吧,我觉得把老谭和pm相提并论,是抬高了pm。

就像我去批爱因斯坦,如果有人当真,那么难免让人觉得我也到了那个级别。

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
96 [报告]
发表于 2012-09-24 08:39 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
97 [报告]
发表于 2012-09-24 08:42 |只看该作者
pmerofc 发表于 2012-09-24 08:39
回复 93# starwing83



某昏昏,你进这个帖子是想捍卫你的“变量本身就是表达式”吗?

嘿嘿

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
98 [报告]
发表于 2012-09-24 10:06 |只看该作者
回复 96# pmerofc


    定义嘛…………(来自维基百科)

In computer programming, a variable is a storage location and an associated symbolic name which contains some known or unknown quantity or information, a value. The variable name is the usual way to reference the stored value; this separation of name and content allows the name to be used independently of the exact information it represents.[dubious – discuss] A variable name in computer source code is an identifier that can be bound to a value during run time, and the value may change during the course of program execution.


从这个定义看出来,identifier是variable的组成部分之一。而identifier是expression,即variable的组成部分之一可以作为expression。即variable可以作为expression使用。

论坛徽章:
0
99 [报告]
发表于 2012-09-24 10:08 |只看该作者
Variable_(computer_science)

In computer programming, a variable is a storage location and an associated symbolic name which contains some known or unknown quantity or information, a value. The variable name is the usual way to reference the stored value; this separation of name and content allows the name to be used independently of the exact information it represents.[dubious – discuss] A variable name in computer source code is an identifier that can be bound to a value during run time, and the value may change during the course of program execution.

我想我明白了。变量的内涵是存储位置加上与之关联的符号名,而这个符号名就是C99标准中的Identifier。

老谭把变量、常量和表达式并列,这种说法也是有问题的。
自增运算符(++)和自减运算符(--)只能用于变量,而不能用于常量或表达式


论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
100 [报告]
发表于 2012-09-24 10:15 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP