语言

党国英 | 思想朦胧与语言混乱

思想表达靠语言,语言由概念串联组成。在普通生活中,人们用不精确的语言交流,尚不至于犯大毛病。例如,说中国足球队大败(或大胜)曼彻斯特足球队,中国人都知道是一个意思。但稍微离开普通生活,进到稍微抽象的层次,不精确的语言就容易让人们犯糊涂。有时在政策用语中,也有似是而非的情形。例如近期关于“农民工”用语的争论,便反映了我们遇到的语言混乱的困扰。“文化大革命”时期有正式的“农民工”用语,和现在的意义完全不同。 因工作关系,笔者每年会参加各种论坛,每每体会到深层次交流的困难,除非是很小范围的专业讨论。有朋友说,论坛不过是一种宣传平台,大家聚在一起现场交流看法,深入讨论可能是会后一对一的事情。我理解,这也是出于无奈的看法。如有官员参加论坛,提出一些概念清晰、判断准确的意见,对公共决策就有积极意义。如果官员们和学者坐在一起,云里雾里地讨论问题,还不如不讨论的好。 举例来说,大家来讨论城乡关系,可是往往对城市和乡村没有清晰的界定,对农民没有清晰的界定,怎么能说清楚城市化和乡村发展问题?某发达地方的农业GDP占总量的比重还不到2%,并且也取消了农业户口与城市居民户口的区别,但却常说农民的比重是40%左右,原来他们界定农民的办法是看居民是不是从“集体经济”中得到红利,而“集体经济”和农业基本没有关系!不用说,这种情形会给决策带来多大的麻烦。当人们谈乡村稳定问题时,所涉及的对象常常不是真正的农民,而是已经脱离农业的城市拓展区的居民。围绕这些居民所发生的利益纠葛,与农业关系不大。 再比如,“壮大集体经济”是多年来的一个政策用语,但我们对集体经济的含义往往并不清楚。人民公社时代的集体经济是一种“共同共有”产权,其成员的身份特点是不能退出产权系统,大家一起享有难以分割的共同财产。在技术上讲,只有那些的确难以分割的财产并符合“公共品”特点的物品,才适合成为“共同共有”产权结构的对象物,例如区域的道路、桥梁、教堂(庙产)以及其他难以分割的财产,都不能因社区成员的进出而分割变现。显然,对于一个小型社区,壮大这种资产不会是无限的。对于经营性资产,可以分割、兼并,为了资产责任心,就不必组成“共同共有”产权组织,只需建立合作社就可解决问题。所以,准确地说,政策上应该讲“壮大农民专业合作社”。 在民主政治领域,我们也有大量的语言混乱。有人把村务公开透明、推进基层廉政建设也称作民主政治建设,这其实也是张冠李戴的说法。财务记录清朗,社区领袖两袖清风,自古以来在基层社会就容易做到。大体上只要产权清晰,这个局面就可以形成。古代社会基层社区的公共事务简单,社区领袖多是兼职承担公务,做到廉政并不难。很多历史资料可以证明这一点。民主政治是公共领域依靠竞争关系建立起来的少数服从多数的公共选择制度,这种制度除了欧洲历史上的某些城邦社会外,古代社会一般是不存在的。 虽然思想的清晰度由专业人员到大众有一个递减过程,但专业人士也不敢说自己对问题的讨论一定能抓住要害。以宪政改革讨论为例,论者常常忽视更基础的东西,而喜欢集中讨论公共领域的分权问题。宪政改革的前提是建立一整套尊重个人财产权的制度,为此要守住公共领域和私人领域的合理边界。划分这个边界固然很复杂,但并不是无章可循。在私人权利保护方面,不能把少数服从多数原则用于私人财产权的处分。例如农民的土地承包权和宅基地使用权,决不能通过投票让多数人支配少数人的权利。在有的地方,少数人不同意征地,多数人用暴力强迫少数人就范,就是滥用少数服从多数原则的一个恶果。民主原则用错了地方,就会变成一个坏东西。在一些地方发生冲突,大抵与此有关。 国家事务讨论中的用语混乱所引起的一个消极后果,便是妨碍我们对社会的准确观察。曾经做过苏联克格勃领导和苏共总书记的安德罗波夫在1983年说“我们并不太了解自己生活的社会”(阿里克谢·费内科,社会科学报,精英阶层分化是苏联解体的本质,2011.12.15)。一个国家的领袖不了解自己的社会,自然是可怕的,后果也是灾难性的。引起这种现象的原因自然很复杂,而在笔者看来,领袖们缺乏一套正确的概念系统,无疑是最重要的原因之一。 公共用语的混乱可能与社会控制方式有关。革命集团取得政权以后,对社会实行控制的最方便的手段是军事命令原则。这一原则对公共用语的要求,则是尽量简化;用语的逻辑要服从指挥命令系统的效率。曾经盛行的“阶级斗争为纲”语言系统,便是一个不讲道理的系统。适应这种用语系统的官方文本,也多由“祈使句”构成,很少包含解释性语言。占主导地位的语言习惯,自然会诱导全社会不求甚解的语言风尚。近几十年的改革开放使社会实体发生极大变化,但公共用语的变化却相当滞后。这种状况需要改变。改变固然不会一蹴而就,但我们仍需加紧努力。 此文发表于 阳光杂志,119期

阅读更多

一五一十 | 论语言的传统

作者: 李淼鑫  |  评论(0)  | 标签: 所见所闻 这是一次计划之外的写作,只为了回答《回不去的名字叫家乡》里朋友们提出的疑问。想知道此事之来龙去脉,请先阅读《回不去的名字叫家乡》(link:http://www.my1510.cn/article.php?id=72227)及其评论列表(在文后)。 开始,且看一个《圣经•旧约》上的故事。 人类的祖先最初讲的是同一种语言。他们在底格里斯河和幼发拉底河之间,发现了一块非常肥沃的土地,于是就在那里定居下来,修起了城池。后来,他们的日子越过越好,决定修建一座可以通到天上去的高塔,这就是巴别塔。他们用砖和河泥作为建筑的材料。直到有一天,高高的塔顶已冲入云霄。上帝耶和华得知此事,立即从天国下凡视察。上帝一看,又惊又怒,认为这是人类虚荣心的象征。上帝心想,人们讲同样的语言,就能建起这样的巨塔,日后还有什么办不成的事情呢?于是,上帝决定让人世间的语言发生混乱,使人们互相言语不通。后来人们就把巴比伦叫做“冒犯上帝的城市”。浩浩荡荡的巴别塔也因人类无法通过自由交谈通力合作而戛然而止。 我以为,语言和绘画摄影一样,都是一种对现实世界的一种描述的手段。和不同精度的摄影器材所拍摄的画面有精致和粗糙的区别一样,不同的语言对现实世界的描绘也有优劣之分。我们的祖先花费了大量的心血用自己擅长的语言给自然界的所有现象分门别类。比如除了仅有几位满语语言学家和垂垂老矣的老人才会说的满语,单单对于水纹就用了五十多种名词来命名,比如小鱼水中游甩动尾巴扰动引起的水纹叫什么,小石头丢进水池子里冲击引起的水纹叫什么……从波纹到惊涛骇浪,刻画的细致入微。以此为例,读者用普通话想起有关于波纹的词语能有多少?用又能有多少?其他以此类推,语言之间的表现力孰优孰劣,应该能心神领会。因此,摆在我们面前有两条路,一个是选择掌握表现力好的语言使得拥有丰富细致的会话语言能力,或者丰富其余语言的词汇库使得表现力变好。语言的表现力将决定会话者的表达和理解能力,就像不同精度的长度测量工具,所测量的结果的精确度将有所不同。你用小学生的学习用尺去测量你的圆珠笔的直径和用千分尺所测量的结果不可同日而语。以我的经验看来,语言皆有其心有余而力不足的地方,比如对人头像的语言描写,不管你有多大的能力驾驭语言,你顶多也只能做到让人觉得栩栩如生,而做不到像画家对其写真一样,达到见字如见人的清晰逼真的效果。 我并不是很清楚其他科学领域是怎么样的,但就我所学的软件工程和软件研发而言。由于计算机,和软件主导的信息革命发源于美国并得到日新月异的蓬勃发展,他们使用英语著书立说,关于这个领域的思想和理论汗牛充栋,以致于如今,英语,相对于其他语言,毫无疑问地成为计算机,软件行业的王者语言,其他语言只有望其项背的份儿。所以,在大学的时候,我就意识到,英语将会是我技术增长最大的瓶颈。英语不够好,就不能很好地学习最顶尖的领域知识。如果印度学生更加擅长英语是真实情况的话,则更好的解释了印度的软件为何优越于我们国家。由于东方的科学近乎全都引进自西方,相信其他领域也大概如此。 语言和思想有所不同,百家争鸣的思想,可以互相交流达到取长补短,从而使得原有的思想大放异彩。但语言如果也自立山头,各自为阵,其结果将导致掌握不同语言的人之间流畅的交流成为不可能或者极其困难。这种情况可以有两样的极端,一个是全人类只使用一种语言。由于社会分工,使得社会生产能力得到显著的提高,而进一步的社会大生产则需要更加细致的分工合作。而分工合作则需要通过共同掌握的语言来交流。另一个是每个人都自立门户说自己才懂得语言,那么人与人之间就无法交流,更无从合作。巴别塔的失败就是一个显著的例子,虽然只是一个不知道真假的故事。但生活中并不难找到这样因为语言不通而失败的合作。比如你只会讲汉语,却有天又要你和只会讲英语的人协作完成工作,这个时候,要使得合作顺利进行,就还得需要额外的条件。 上面提到的例子,只会说汉语的人和只会讲英语的人如果要顺利合作,就得要有人在会讲汉语的同时学习英语,或者是在会讲英语的同时学习汉语,或者是会讲汉语和英语的第三者。在掌握了一门语言之后,重新学习一门语言的学习工作,如果他们统一使用一种语言,那么就不会有这样额外的劳动。这是语言的学习成本。我们本可以节省这部分本可以避免的付出用以有实物产出的劳动。 思想和文明总是以诸如语言,文字的方式传播,并为以该语言学习的人所掌握。相对语言,文字是更为主要的传播手段,因为相对听觉而言人类获取信息的途径近乎都是视觉。就我们国家大陆来说,思想和文明几乎是普通话,汉字的天下。有谁见过用数量可观的传播思想和文明的声音或者文字书籍?更何况有些方言并没有其对应的文字。世界文明的进程从来就没有停止过,农村的文明更是落后于城市。所以,理所当然的,农村的文明急需农民个体学习世界文明得以提高。但方言不足以也无法满足农民知识文化的吸收。 至于和家乡人说家乡话,让人倍感亲切的论断。我觉得不敢苟同。因为这样的比较基于不平等的条件之上,因为你和家乡人谈话多是本来就多年交往彼此熟悉之人,感情本来就有了亲切的成分存在,你出门在外,交往的大多都是相识不久的同学,同事,朋友,你们的友谊尚且在萌芽的阶段。当你们彼此互相熟悉,时间久了,你们交谈的时候,同样也有亲切之感。多年以后,当你和大学时候的挚友再次重逢,回忆起往昔的岁月,俯瞰今朝,用普通话促膝长谈时,相信也会有同样的亲切之感。因此,我以为,谈话时的亲切之感和谈话所用的语言并没有多大的关系。人与人之间之所以能够倍感亲切除了血缘关系之外,主要来源于价值认同的志同道合之人在长久的对话中日久生情,是由于彼此产生共鸣的语言交流这一行为产生,而非交流所用语言本身,由于这两者如影随形,很多人不能看清区别开来。 我相信熟能生巧,同样的,如果不熟悉,则会渐渐的丧失某种技能,语言的会话能力同样如此。如果一个接受过文化教育的中学生,长期不接触汉语,十年,二十年之后,他用汉语思考和表达将会遇到很大的障碍。所以,为了很好的掌握汉语,就需要在日常生活中经常获得实践。我不知道各位看官是否有过这样类似的经历:我不是很擅长英语,所以当我阅读英文总是遇到陌生的词语而不能完全清晰地明白文章意思的时候,总是很容易气馁甚至是看到中途就放弃阅读。以此类推,当有人并不是很擅长汉语的时候,让他们心平气和地阅读文学和思想书籍大概是天方夜谭。由于这样知难而退的抵触心理,使得他们并不能很好的阅读与学习,也因此阻碍了乡村文明的及早到来。 如果有人断定,方言是一个地方的文化。虽然我因此特地百科过文化的定义,也还是不能很明白这个极其抽象的概念,我也自作聪明的以为那些说出这些定论的人未必对文化能有深刻的理解(这里只是说明我发现的一种对自己说的话并没能彻底的理解且不自知的现象,没有冒犯之意)。Update【因为文化是一个高度抽象的概念,也因此像万金油一般,贴哪儿都管用,但未必都能治标又治本。生活中的不少问题,不少人都有用文化来解释的思维定势,我也觉得他们这样给出的解释并非有错,只是不够精确和具体。事实上也可能是因为这样的通用,但不具体的解答,总是没有错,人们更倾向于这样的思考角度。因为,人总是追求安全,干么冒险让自己犯错的机会增大呢?拿最近发生的内地游客在香港地铁吃食品的案例,很多人将此归咎于文化差异,但事实上,我们可以找到更具体的解释,即:规则差异。白纸黑字的规则即文化的一种。在内地公共场合,并没有不允许在公共场合吃食品,但在香港却有这样的规定,只是游客初来乍到,并不熟悉这里的规则,才会出现这出两地人看似是文化差异导致的冲突。如果说这是一场文化差异导致的冲突,你能给出合理的解决方案么?如果将此解释为规则差异引起的,解决方法很简单,就是告知其这里的规则(谁都可能是一个异乡客,对于当地的规则一头雾水。我还记得第一次到纽约,那是九十年代末的时候,在一家餐厅吃饭,结果手机响起,被餐厅服务员请到了门外讲电话;06年到波士顿住下了,才知道原来美国是不可以在街头大摇大摆的拿着酒瓶,那是违法的;到了日本,只要上了火车,就会乖乖的把电话调到静音。之所以如此守规矩,其实因为一次自己的尴尬经历,习惯了24小时开着电话,觉得不接听工作上的电话会出天大的事情,结果在火车上,被一名日本老人,在停站的空隙,把自己请了下车。By闾丘露薇)】但我也不会矢口否认这不是一个地方的文化,行吧,你这么坚决,我也找不出反对的理由,暂且就赞同吧。但我以为,是一种文化并不足以成为人们放弃学习使用方言以追求文明的理由。他们认为,传统文化不能遗弃,而方言是文化的一部分自然也遗弃不得。我以为,文化有好有坏之分,不合时宜的文化可以让他自生自灭,坚守一份落伍的文化反而是一种思想和劳动负担。他们也以为,传承了好几代人的文化,在人们思想和理念中根深蒂固,没人能撼动的开。但大家是否忘记这样的事实:我们有多少年的女子缠足的传统,我们有多少年的皇帝中央集权传统,我们有多少年的男子妻妾成群的传统,我们有多少年包办婚姻毁灭年轻男女爱情的传统……我还可以说出很多,但我想,说到这里大家应该已经能明白我的话,再怎么顽固的传统,只要阻碍了文明的进步,都可以大刀阔斧地破除。 我们民族有五六千年的文明,我们有着优秀的传统,我们也有着执着地传承传统的传统。传统并非神圣不可改变,可是一旦有人要改变传统,就无异于是异己之见,成为众矢之的。对此,我希望大家能够宽容彼此。对于宽容这个话题,我希望大家能够去阅读《宽容》by房龙,和胡适的相关学术文章(如《宽容与自由》,给陈独秀,鲁迅,周作人,陈源的劝架书信集)。他们已经对此阐述的足够深刻和全面,在此不再赘述。 我并不要求农民现在就开始学着说汉语,虽然我深信随着文明提高自然的需要他们这样做,虽然我认为他们早点这样百益而无一害。我也认为人生而自由,没有人可以举着正义的大旗对别人发号施令。所以我只是希望,而不是要求。同样的,我也希望我那些受过良好教育的同学朋友们,有空的时候,多读读书,读那些闪耀着思想和智慧的书籍,而不是学校里面的教科书,教育部国家推荐的极其有政治和意识偏见的书籍。人类社会太复杂,远非柯西不等式,甲烷的分子结构,力矩的计算那么简单。如果不储备足够的人文知识,必然无法认识和理解周围复杂的世界,并作出合理而又明智的行动。为了让你信服这句话,我提问: 1. 罪犯在未被判刑前剃带有身份识别的头发,穿着囚服,在法庭上被审判是多么不可接受的行为,而美国的罪犯审判时,可以西装革履,可以花钱为雇佣律师为自己辩护是多么合理的行为,你知道为什么么? 2. 中国封建社会,有多年的女子缠足的历史,毫无疑问它给中国女子带来严重的身心伤害,我们所接受教育的历史教科书告诉我们这是男权社会对女子的严酷迫害,但历史的真相果真如此么? 3. 我们的政治历史教科书,字里行间地给我们灌输,教育我们革命即正确的思想意识,甚至为了革命,牺牲某些人的利益和生命都是正义,可以被理解和支持的,个人利益无条件服从集体利益,国家利益的。但这些都是合理和正义的么? …… 对此,你能给出有理有据的答案么? Ps:评论列表 同学之间用普通话交流会好很多,和家里的人用家乡话会显得更亲切的。很多事情是要我们年轻的一代来操劳的,CCAV的河蟹,如果还有一丝亮点的话,或许是可以令老一辈的少点担忧吧。 我亲切与否,因人而异,这点上无可厚非,没什么好讨论的。但如果带因为信息带有欺骗性便得出让老一辈的少点担忧的结论,我觉得就有点看问题不够深入了。我认为短期内可以少点担忧,但长远来看则会让他们更加忧心忡忡。 2月5日 17:50 lifengbin看了下面的评论,这俨然是个各抒己见的平台, 2月5日 22:30 lifengbin这个国家未来会怎么样现在也不好说,但个人感觉确实是看到了他慢慢的变化,虽然是如此的微妙和漫长。倘若最后这个社会的结果是CCAV里面河蟹场面的构成,那我想这之前的种种都会变的有价值。当然这并不说要去赞成欺骗性的信息,只是说如果它有个可以算是亮点的话。或许你这里会是思想碰撞、共鸣的舞台 2月5日 22:42 我也说一句 怜 心 2楼 评论时间: 2012-02-04 23:03:08 回复| 感情这东西有谁说得清楚,闽南语不仅仅是我们的家乡话,它也是一种文化,自然而然的传承着这么一种文化难道不是一件很惬意的事情吗?其实看了你的日志很想批评你的,不过在基于尊重个人情感,我只发表了比较中庸的看法。 ———————————– 该评论来自手机Qzone 我文化有好有坏,一味传承并非明智之举,这得取决于好与坏的判别标准。我倒是很好奇你打算怎么批评我的,有时间把你的理由说出来吧,只要不骂娘,我就不会不高兴。 2月5日 17:56 lililing对事不对人,不会骂你爹骂你娘的。首先你接到你老爸的电话还习惯性的讲普通话,说明你很少打电话回家问候父母,我觉得和父母聊天讲母语是一种本能。我想空巢老人留守儿童的新闻你看得比我还多吧!其次,“入乡随俗”虽然是你哥哥提出来的但是后面你也用到了,个人觉得非常的不妥,这个词是用来说到一个地方就顺从这个地方的习俗,请问你是外乡人吗?你是回家乡呀!你本身已经学会了这里的习俗了。再次,你说要你与家长人用闽南语交流你无能为力,没有亲切感,好吧!那我们来做个类比:你在厦门与同学、同事用普通话交流是什么感觉?用闽南语和家乡人交流就是那种感觉,并且有过之而无不及。最后再说说你后面举的那个超市的例子吧!没错,我们这个地方在很多方面当然比不了城市,也比较落后,但是你没看到我们的家乡也在进步吗?现在不也大部分人上超市买东西自带购物带。一年还有四季,一天还分上、中、下午的,如果所有的地方都一样,那还有什么特色,地方文化之类的呢?那为什么我们还要千方百计的离乡求学呢?还不是因为那里有“大师”,能教我们知识和能力,那里有我们还没了解的文化吗?不要再用“抨击”、“嗤之以鼻”这样的字养来说故乡了,更不要拿闽南语来说事。 2月5日 20:52 lililing刚刚地方太小,接上文:我想闽南语作为闽南文化的一部分,它的地位是没人动摇得了的。在补充一点:薪水思源,你是在会了闽南语的基础上学了普通话,再在普通话的基础上学了英语,你不能学了英语就把之前学的都否定了。请问有哪一种语言是放之四海皆准的?爱家人爱家乡才能爱别人。好了,说好多,不说了。这里边很多都是个人情感,但是口说我心,请多多指教! 2月5日 21:09 我也说一句 真 3楼 评论时间: 2012-02-04 23:11:53 回复| 回到家乡讲家乡话不觉得很亲切么?普通话要普及,但是家乡话代表一方特色也不能丢,像闽南语歌曲有些就很励志很好听,而且家乡话中的某种说法或某些词的形象生动远是普通话比不上的。在外说普通话,回家了就讲家乡话吧,亲切… ———————————– 该评论来自手机Qzone JULY。 4楼 评论时间: 2012-02-04 23:16:34 回复| 语言只是思想交流的工具,只要能说的明白,听的明白,就无所谓说的是什么语言。周围人每一次的疑问和抵触,其实或多或少的是一种不宽容的体现,因为这让我不得不经历一次对自己的拷问和权衡是否改用家乡话的抉择。——-这段有点不通。其他感觉都很不错。 JULY。 5楼 评论时间: 2012-02-04 23:27:27 回复| 要说普通话普及早期我也是受你影响,但是我在家也不是见谁都说普通话,我只跟听得懂听得惯的人讲普通话,比如我哥,我弟,我叔叔。其实闽南话同样可以表达出我们想说的,只要用心去说。 索倪 6楼 评论时间: 2012-02-05 05:00:37 回复| 有点以偏概全,如此推之粵语歌曲和闽南语歌曲都得改成普通话,公交车报站用英语为什么就不觉得别扭呢?新的东西固然有存在的理由,旧的东西只要无害,为何要遭遇强拆呢?代表着几代人甚至几十代人的一种文化传承为何要摒弃。CCTV固然有和谐的地方,随着我们思想在被西化的进程中,这种感觉犹为突出。没有至善至美的制度,只要有问题就有修补的空间,要把握那个度。 ———————————– 该评论来自手机Qzone 草凝绿 7楼 评论时间: 2012-02-05 11:24:20 回复| 离开中国,或许回来之后你会选择用英语交流吧!因为那是世界通用的,普通话自然也有地域限制!你或许忘了,语言不仅仅是用来交流的,它还是一种文化!家乡也有垃圾桶,不是城市才有!你照样可以选择你丢的地方!周围的环境,周围的人,换一种宽容的眼光吧!有一种叫感情的东西,看不见也摸不着!

阅读更多

编程随想 | 为啥俺推荐Python[4]:作为函数式编程语言的Python

春节前有 网友留言 ,提醒Python系列好久没更新了(不知不觉又过了一年多)。俺回复留言说:春节假期补上后一篇。昨天听到鞭炮声才发觉元宵已经到了,赶忙写出本文。    前一个帖子 介绍了Python作为”面向对象编程”(以下简称OOP)语言的特点,今天来聊一聊Python作为”函数式编程”(以下简称FP)语言的特点。考虑到本系列面向的是Python的门外汉或刚入门的新手,故本文仅介绍若干浅显的FP特性。 ★什么是函数式编程   说实话,”函数式编程语言”是一个很大的话题。由于篇幅有限,本文不可能对这个话题做全面介绍。俺干脆偷一下懒,只简单说说。   从字面上看,所谓的函数式编程,就是以”函数”为中心的”编程范式”。估计有同学又会问了,啥是”编程范式”捏?哎呦,这又是一个很大的话题。通俗来讲,”编程范式”就是指编程的套路。比方说大家很熟悉的OOP,就是一种”编程范式”。FP跟OOP一样,都是一种编程的套路。做个简单类比:OOP以”对象/类”作为程序设计的核心,而FP以”函数”作为程序设计的核心。 ★FP的特点   既然说到FP,自然要稍微说一下FP的特色。 ◇函数很牛X   刚才说了,FP是以函数为中心。既然如此,在支持FP的语言中,函数的功能自然十分牛X。通俗地说,OOP语言中,类/对象能干的事情,FP语言中的函数也能干。下面做一些对比,以加深大伙儿的印象。 OOP中,对象可以互相赋值;FP中,函数可以互相赋值。 OOP中,对象可以作为函数的参数/返回值,FP中,函数可以作为函数的参数/返回值。 某些OOP中,类可以嵌套定义;FP中,函数可以嵌套定义。 某些OOP中,可以有匿名类;FP中,可以有匿名函数。 ◇避免副作用   在FP中,特别强调函数不要有”副作用”(洋文叫” side effect” )。没有副作用的函数,又称之为纯函数(pure function)。其输出完全依赖于输入。换句话说,只要输入一样,输出就一样。   要成为纯函数,函数内部不能读写函数外部变量、不能有设备I/O(比如读写文件)……   无副作用是FP的重要特性。FP的很多优点来自于此特性。 ◇避免控制流   在FP中,尽量避免用控制流语句(循环语句、判断语句)。对于控制流语句,FP有另外的替代方式。比如:常用递归或高阶函数来替代循环。如此一来,FP的代码会显得更简洁,更可读。 ◇多态   大部分支持FP的语言,也都支持多态。函数参数支持多态化,便可实现非常灵活的功能。   说了这么多,不知道大伙儿明白了没?还是没整明白的同学,请看 维基百科的英文词条 (中文词条太简单,看不明白滴)。   洋文实在看不下去吗?那不妨看看IT大牛Joel写的《 你的编程语言能这样做吗? 》(中文版在” 这里 “)。此文以JavaScript来阐述FP的妙处。 ★FP的优点   再稍微说一下FP的好处,以强化大伙儿学习的动力。 ◇模块化   在FP的思想中,函数最好是”纯”的,而且最好只完成”单一”的任务。在这种指导思想下,函数的模块化程度自然就高。 ◇可复用性   模块化程度高,直接的好处就是可复用性好。 ◇可读性   刚才说了,FP的思想强调函数又纯又小。这样的函数,代码的可读性自然好,修改起来也方便。 ◇易于调试   前面提到了纯函数。如果你的程序中大部分函数都是纯函数,则调试Bug会容易很多。像OOP中,类的多个成员函数都可以修改类的成员变量,有时候会导致调试极其困难。而纯函数没有此问题。   另外,多线程是调试的一大噩梦。当年俺还专门写过帖子,介绍C++多线程的注意事项(在” 这里 “)。而纯函数由于没有副作用,不必担心各种”互斥”、”死锁”等问题。 ◇易于测试   除了易于调试,纯函数的输出仅仅依赖于输入,这一特点注定了它很容易进行单元测试。 ◇适合并行   在FP中,由于纯函数无副作用,很适合编写并行处理的代码。最典型并且在工业界获得巨大成功的例子就是Erlang。 ◇其它   当然啦,FP的好处远不止上述这些(比如还有:利于形式化证明)。限于篇幅,俺就不展开了。 ★Python的函数语法   Python中,常见的函数定义和函数调用,想必各位都晓得了。下面说几种不太常见的,且跟FP有关的语法。 ◇函数赋值   Python可以把函数直接赋值给一个变量。举例如下: def square(n) :  # 这是一个计算平方的小函数,后面会反复用它举例   return n ** 2 f = square  # 此处赋值给变量f f(10)  # 此处返回100。注意:对该变量使用小括号,等同于调用函数 ◇匿名定义   Python可以用lambda关键字定义 单行 的匿名函数。套用刚才的例子 square = lambda x : x**2  # 定义一个单参数的匿名函数,并把该函数赋值给变量 square(10)  # 此处返回 100 ◇嵌套定义   Python支持函数的嵌套定义(请看如下例子)。这种语法,在”闭包”中经常出现(后面会具体介绍闭包)。 def outer() :  # 外层函数   s = “hello”   def inner() :  # 内层函数     print(s)  # 此处引用的是外层作用域的变量   inner()  # 输出 hello   n = “world”   inner()  # 输出 world ★和FP相关的内置函数   在接下去聊之前,有必要先介绍几个FP相关的内置函数。 ◇map(func, iter) 为了省事,俺只介绍2参数的map(正宗的map支持N参数)。 参数func是个函数,参数iter是个迭代器(也可以理解为集合) map()会把iter的每个元素传给func,并把每次调用的结果保存到一个list中,然后返回此list。 举例: 挨个计算整数list的平方 map(square, [1, 2, 3])  # 返回 [1, 4, 9] ◇filter(func, iter) 参数含义同map filter()会把iter的每个元素传给func,如果func返回结果为True,就把元素保存在一个list中,最后返回此list。 举例: 要过滤出所有奇数 def odd(n) :   return (n%2) == 1 filter(odd, [1, 2, 3])  # 返回[1, 3] 此处可以用上lambda,把代码简化为一行 filter(lambda n: (n%2)==1, lst) ★消除控制流   为了让大伙儿更深刻体会FP风格同传统风格的差别,俺把刚才两个例子组合一下——要求返回整数list中所有奇数的平方。 传统的写法(有控制流) def func1(lst) :   new_lst = []   for n in lst :     if odd(n) :       new_lst.append(square(n))   return new_lst FP的写法(无控制流) def func2(lst) :   return map(square, filter(odd, lst)) 怎么样?是不是更简洁?连 for / if 两个关键字都不需要。 ★List Comprehension   这个洋文比较难翻译。有人叫做”列表推导”,也有人称为”列表展开”或”列表解析”。(俺比较喜欢头一个翻译——不禁让人联想到”推倒”:)   在Python中,这是一个很好吃的语法糖——可以让你写出很简洁、很优雅的代码。 举例1: 还拿刚才过滤奇数的例子。 filter(lambda n: (n%2)==1, lst) 上述写法可以等价替换为列表推导 [n for n in lst if (n%2)==1] 举例2: 再来一个稍微复杂的例子。假设有两个整数list,分别存储矩形的宽度和高度。现在想把所有的宽度和高度进行两两组合,把大于10的面积打印出来。 传统的写法(2层循环,4行代码) for w in width :   for h in height :     if w*h > 10 :       print(w*h) FP的写法(无循环,1行代码,多精致啊) print( [w*h for w in width for h in height if w*h > 10] )   除了列表推导,Python中还有字典推导、集合推导等等。为了省点口水,暂且打住。 ★闭包   闭包,洋文叫”closure”,解释在” 这里 “。它是FP的常见手法。那闭包到底有啥用捏?俺举一个微积分中,函数求导的例子。(不懂微积分或者对高数有心理阴影的同学,别担心,请把注意力集中在代码上) def d(f) :   def calc(x) :     dx = 0.000001  # 表示无穷小的Δx     return (f(x+dx) – f(x)) / dx  # 计算斜率。注意,此处引用了外层作用域的变量 f   return calc  # 此处用函数作为返回值(也就是函数 f 的导数) 现在,假设要计算二次函数 f(x) = x 2 + x + 1 的导数,只需 f = lambda x : x**2 + x + 1  # 先把二次函数用代码表达出来 f1 = d(f)  # 这个f1 就是 f 的一阶导数啦。注意,导数依然是个函数 有了一阶导数,就可以很容易地计算该函数在某点的斜率 比如要计算 x=3 的斜率,只需 f1(3) 如果要想得到二阶导数(导数的导数),只需依样画葫芦(瞧这代码写得多优雅) f2 = d(f1)   看到这里,大伙儿不妨设想一下:如果不用FP,改用OOP,上述需求该如何实现?俺觉得吧,用OOP来求导,这代码写起来多半是又丑又臭。 ★结尾   今天聊了不少FP的语法特性,可惜还是没聊完。由于俺比较懒,而且怕写得太长没人看,所以一些高级话题(比如:迭代器、生成器、等),今天就不介绍了。假如列位看官对那些玩意儿感兴趣,再抽空单独写一帖。 回到本系列的目录 版权声明 本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者” 编程随想 “和本文原始地址。 学习翻墙 发信给 help_gfw@yahoo.com 可获取翻墙教程 (用国外邮箱以免被墙) 如有其它问题, 用 program.think@gmail.com 联系俺

阅读更多

Global Voices | 东帝汶:多种语言合为一国

1975年11月28日,历经葡萄牙 殖民 近400年后,东帝汶片面宣布独立,当时宣言是以葡萄牙语朗读,事隔数日,印尼入侵东帝汶,之后 占领 24年(1975年至1999年)间,禁止使用葡萄牙文。 东帝汶于2002年 独立建国 时,明定葡萄牙文与德顿文(Tetum)均为官方语言,但如今 国语 数量高达16种,国民每天还使用数十种方言。 身分认同的语言 Hau nia lian, hau nia rain(我的语言,我的祖国),照片来自Sapo Noticias Timor Leste(公共授权) 实际上, 德顿语 是东帝汶全国最普遍的语言,葡萄牙记者Paulo Moura于2007年撰写一则 报导 ,后转载于Ciberdúvidas da Língua Portuguesa博客,其中在野党领袖 Mari Alkatiri 提到,“葡萄牙文不是团结人民的语言,而是身分认同的语言”。 这位记者亦指出,为何独立建国后,“大多数民众”不愿使用葡萄牙文: 他们在学校学习印尼语及英语为第二语言,在家则说德顿语,以及其他东帝汶语言,如法塔鲁库语(Fataluku)、拜奇诺语 (Baikeno),他们是所谓的“帝帝世代”(源于印尼过往对东帝汶省的旧称)。许多人后来前往印尼或澳洲求学,今日很难向他们说明葡萄牙语的重要性, 况且这个世代认为政治特权菁英才说葡萄牙语,自己却因为不会说现在的官方语言,无缘获得公职,让这些年轻人对葡萄牙及葡萄牙语产生敌意。 世界银行2011的报告中,回顾东帝汶过去十年的进展, 其中指出 ,“葡萄牙语人口占全国5%”,另 提到 ,“至2009年,全国逾七成学生念完小学一年级后,仍看不懂葡萄牙语短文的任何单字,经过十年努力,这项结果令人遗憾,[…]诸多民众形同文盲”。 網絡语言记录 联合国教科文组织“ 世界濒危语言地图 ”显示,东帝汶共有六种语言可能消失。 东帝汶语言分布图,图片来自Fataluku Language Project网站 Adabe 、Habu、Kairiu-Midiki、Naueti等语言列为“不稳定”等级,虽然“当地多数孩童都会说这些语言,但可能仅限于某些领域”,如住家、传统生活等。 Waima'a 语则列为“非常危急”,“孩童在家中已不把这种语言当做母语”; Maku'a 语分布于国内东北角,在1981年联合国地图上,使用人口便已仅剩50人,目前仍列在“非常危急”等级,但也可能已经消失,至今全球只有 一本书 以这种语言发行. 东帝汶部分语言 因为陆续出现在新媒体与網絡上,较可能有存续机会。 例如 法塔鲁库语 为一巴布亚岛语言,使用人口约3.5万,分布于国内东部,在 Fataluku Language Project 及 Fataluku Community 等网站上均有完整记录,Lospalos地区一群年轻艺术家即使用这种语言,创作音乐及表演。 这里是影片 夏威夷大学一项语言记录研究计划,经由交换学生协助,推广数种东帝汶语言,例如“东帝汶东部主要语言” Makasae 语的分支( Osoroa 、 法塔鲁库语 ),以及 Waima'a 、 Fataluku 、 Mambae 、 Tokodede ,葡萄牙语言学家兼译者João Paulo Esperança在 Hanoin Oin-oin 博客上,也不时会使用其中几种语言。 东帝文女孩(依顺时针方向)使用Bunak、德顿语、法塔鲁库语、葡萄牙语,译文:“在(这些语言)中,我们会说:我在首都迪力,我有些钱,我没有钱”。照片来自Joao Paulo Esperança(公用授权) Abe Barreto Soares也常使用少数族群语言撰写博客,曾于2009年接受全球之声 访问 ,除了以 英文 、 德顿文 、 印尼文 书写,他也使用 Limusan 地区的 Galole语 创作诗歌。 南部的Idaté语则出现在 Ildefonso Pereira的博客 中,有些Facebook群组亦使用东帝汶的语言沟通往来,例如 这个群组 使用Naueti语。 去年曾有人 提案 ,要在全国教育制度内,优先教授母语,以下题为“母语”的短片指出,强调“母语能帮助孩童学习书写、尊重父母及族群的文化,亦及早善用东帝汶的官方语言”: 校对: Soup 作者 Sara Moreira · 译者 Leonard · 阅读原文 [en] · 则留言 (0) 分享: HEMiDEMi · MyShare · Shouker · facebook · twitter · reddit · StumbleUpon · delicious · Instapaper

阅读更多

Global Voices | 东帝汶:多种语言合为一国

1975年11月28日,历经葡萄牙 殖民 近400年后,东帝汶片面宣布独立,当时宣言是以葡萄牙语朗读,事隔数日,印尼入侵东帝汶,之后 占领 24年(1975年至1999年)间,禁止使用葡萄牙文。 东帝汶于2002年 独立建国 时,明定葡萄牙文与德顿文(Tetum)均为官方语言,但如今 国语 数量高达16种,国民每天还使用数十种方言。 身分认同的语言 Hau nia lian, hau nia rain(我的语言,我的祖国),照片来自Sapo Noticias Timor Leste(公共授权) 实际上, 德顿语 是东帝汶全国最普遍的语言,葡萄牙记者Paulo Moura于2007年撰写一则 报导 ,后转载于Ciberdúvidas da Língua Portuguesa博客,其中在野党领袖 Mari Alkatiri 提到,“葡萄牙文不是团结人民的语言,而是身分认同的语言”。 这位记者亦指出,为何独立建国后,“大多数民众”不愿使用葡萄牙文: 他们在学校学习印尼语及英语为第二语言,在家则说德顿语,以及其他东帝汶语言,如法塔鲁库语(Fataluku)、拜奇诺语 (Baikeno),他们是所谓的“帝帝世代”(源于印尼过往对东帝汶省的旧称)。许多人后来前往印尼或澳洲求学,今日很难向他们说明葡萄牙语的重要性, 况且这个世代认为政治特权菁英才说葡萄牙语,自己却因为不会说现在的官方语言,无缘获得公职,让这些年轻人对葡萄牙及葡萄牙语产生敌意。 世界银行2011的报告中,回顾东帝汶过去十年的进展, 其中指出 ,“葡萄牙语人口占全国5%”,另 提到 ,“至2009年,全国逾七成学生念完小学一年级后,仍看不懂葡萄牙语短文的任何单字,经过十年努力,这项结果令人遗憾,[…]诸多民众形同文盲”。 網絡语言记录 联合国教科文组织“ 世界濒危语言地图 ”显示,东帝汶共有六种语言可能消失。 东帝汶语言分布图,图片来自Fataluku Language Project网站 Adabe 、Habu、Kairiu-Midiki、Naueti等语言列为“不稳定”等级,虽然“当地多数孩童都会说这些语言,但可能仅限于某些领域”,如住家、传统生活等。 Waima'a 语则列为“非常危急”,“孩童在家中已不把这种语言当做母语”; Maku'a 语分布于国内东北角,在1981年联合国地图上,使用人口便已仅剩50人,目前仍列在“非常危急”等级,但也可能已经消失,至今全球只有 一本书 以这种语言发行. 东帝汶部分语言 因为陆续出现在新媒体与網絡上,较可能有存续机会。 例如 法塔鲁库语 为一巴布亚岛语言,使用人口约3.5万,分布于国内东部,在 Fataluku Language Project 及 Fataluku Community 等网站上均有完整记录,Lospalos地区一群年轻艺术家即使用这种语言,创作音乐及表演。 这里是影片 夏威夷大学一项语言记录研究计划,经由交换学生协助,推广数种东帝汶语言,例如“东帝汶东部主要语言” Makasae 语的分支( Osoroa 、 法塔鲁库语 ),以及 Waima'a 、 Fataluku 、 Mambae 、 Tokodede ,葡萄牙语言学家兼译者João Paulo Esperança在 Hanoin Oin-oin 博客上,也不时会使用其中几种语言。 东帝文女孩(依顺时针方向)使用Bunak、德顿语、法塔鲁库语、葡萄牙语,译文:“在(这些语言)中,我们会说:我在首都迪力,我有些钱,我没有钱”。照片来自Joao Paulo Esperança(公用授权) Abe Barreto Soares也常使用少数族群语言撰写博客,曾于2009年接受全球之声 访问 ,除了以 英文 、 德顿文 、 印尼文 书写,他也使用 Limusan 地区的 Galole语 创作诗歌。 南部的Idaté语则出现在 Ildefonso Pereira的博客 中,有些Facebook群组亦使用东帝汶的语言沟通往来,例如 这个群组 使用Naueti语。 去年曾有人 提案 ,要在全国教育制度内,优先教授母语,以下题为“母语”的短片指出,强调“母语能帮助孩童学习书写、尊重父母及族群的文化,亦及早善用东帝汶的官方语言”: 校对: Soup 作者 Sara Moreira · 译者 Leonard · 阅读原文 [en] · 则留言 (0) 分享: HEMiDEMi · MyShare · Shouker · facebook · twitter · reddit · StumbleUpon · delicious · Instapaper

阅读更多

CDT/CDS今日重点

【CDT月度视频】十一月之声(2024)——“一路都被撞没了,估计一圈都没了”

【年终专题】“13条生命换不来1条热搜”……2024年度“每日一语”

【年终专题】“中文互联网上的内容每年都以断崖式的速度在锐减”……2024年度404文章

更多文章总汇……

CDT专题

支持中国数字时代

蓝灯·无界计划

现在,你可以用一种新的方式对抗互联网审查:在浏览中国数字时代网站时,按下下面这个开关按钮,为全世界想要自由获取信息的人提供一个安全的“桥梁”。这个开源项目由蓝灯(lantern)提供,了解详情

CDT 新闻简报

读者投稿

漫游数字空间