【C语言冷知识】01_语法和语义,脱离天际的思考


我们先来哲学三问:语法和语义是什么、为什么要知道语法和语义、怎么做才能摸清语法和语义。
在这里插入图片描述

01-语法和语义是什么

  任何编程语言都离不开语法和语义,或许与哲学相关,可以联想到《易经》的阴和阳,或者计算机二进制中的0和1,理解为从属领域内事物的基准,万物起于始,也终于始,也就是语法和语义是一门语言的基准,语言从此开始,也结束于此,这里是一个闭环的定义,稍微有点抽象。下面引用《计算的本质:深入剖析程序和计算机》内的解释,比较通俗易懂,这也是面向计算机的一种解释,所以直接引用了:

为了完整地定义编程语言,我们需要:语法,描述程序看起来是什么样的;语义,描述程序的含义。

——《计算的本质:深入剖析程序和计算机》

在这里插入图片描述

  按照这个解释,语法和语义解决了两个问题:
  第一是编程语言长什么样子(外部结构),例如用于区分a = b + 1是编程语言,而a=%&$#b+不是
  第二是它代表着什么(内部结构),例如a = 1 * 2 + 3 * 4,代表a的值是(1 * 2) + (3 * 4),而不是((1 * 2) + 3 ) * 4,更不是其它值

  任何一个语言都可以套上语法和语义,但是侧重点会各不同,比如中国人学中文会更侧重语义,更多时候不关心语法,只需要知道语义,语法就是各种主谓宾、定状补、固定句式等等,这代表中文就长这样子,而语义就是中文所代表的情绪、数据、信号等等,它可以让人与人产生各种交流。

  细想,学语言的时候其实就是在学这两个东西,比如英文,各种从句长什么样子,它代表着什么,是不是突然感觉很有意思。总结一下,编程语言的语法和语义就是:

语法,外表长什么样——外部结构

语义,所表达的含义——内部结构

在这里插入图片描述

02-为什么要知道语法和语义

  为什么编程语言要讨论语法和语义?答案是为了深入语言本质,如果只停留在语言的语法表面,那么至多只是会使用这门语言,它内部任何资源的使用和机制你都是模糊的,就像即使你知道了N多个英语从句句式,但是你却不知道为什么会有这么多,区别在哪,什么时候会限制等等,所以英语依然不会用。

  如果深入到本质,你就可以看透这门语言,知道他的优势劣势,在哪个平台能够发挥真正的作用,在什么场合用什么内容,甚至可以改造这门语言。如果把语言比作一棵树,那么从根部到叶子的整个结构全面了解,才能深入了解这棵树的本质,包括它的品种、生活状况、生长情况等等。因此,如果你深爱并需要这门语言,那就去研究它的语法和语义。

在这里插入图片描述

03-怎么做才能摸清语法和语义

  要去摸清一门编程语言的语法和语义,小白建议需要做几件持续的事情:
  1、持续阅读这门编程语言的相关书籍、文章、资讯等。目的是为了持续强化和更新大脑记忆,语法众多总不会常记,语义更多是根据上下文进行,如果你长期使用此语言的某个方面或者特长等,慢慢地其它知识就会被你遗忘,因此建议,书籍不论新旧和热门冷门,文章一般要选取成熟的大平台以防抄袭和低质量,资讯选取权威平台以防造谣作假。

在这里插入图片描述

  2、经常比较各个书籍中提到相同知识点的差异。每本书对同一个知识点的描述和介绍会有个别差异,比如《C语言深度解剖》中表明数组和指针没有关系,而《C程序设计-谭浩强》则表明数组和指针有藕断丝连的关系并且没有说明清楚,或许用语法和语义的思维去思考就能得到答案,此时需要自己去比较这种差异,找出这种差异的存在并且尝试解释哪个说法是正确的,久而久之就会有自己的想法,对编程语言会更深一层。

在这里插入图片描述

  3、保持对权威的挑战和知识点的好奇心。尽信书不如无书,书籍也是人编写的,总有错漏,当自己对某个知识点无法理解时,要尝试大胆假设这个知识点就是错误的,小心去寻找反例求证,当尝试使用各种方法都无法证明时,往往就知道了这个知识点的本质所在,学会挑战权威,自学学习会更加独立。
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值