编程思想之理解符号语言
理解符号语言
使用符号语言编程是一次伟大的艺术创造过程,编程思想的核心理念是使用与具体语言和平台无关的符号来设计程序。编程思想并没有一份非常完善和标准的规范文档,都是人类在不断认知和创新的过程中不断的总结积累的经验的成果。一份关于符号语言描述和表示比较全面和详细的技术是UML。编程思想毕竟是站在一个很高的抽象层次描述问题的解决方法。具体语言的实现则需要在较高的抽象层面上将其实现为一行行的代码。而其每种语言在其公共认可的层面上,又添加了其自己独特的特性(特点、功能),这些新加入的特性进过时间的磨合也许会又逐渐演变成为符号语言的增量规范。这也是语言存在细节差异性的原因和其美的特点。早期的符号语言可读性差,需要较强的逻辑思维来理解如ASM语言;现代符号语言已克服了早期计算机符合语言的逻辑方面的难题(解释器转换符号语言代码),现在符号语言则要求语言不仅要有正确、简单的符号逻辑表示,且还要求像“诗”一样具有优雅的含蓄。所以现代程序员不仅是问题的终结者,也是是一个使用符号语言作诗的大诗人。所以大家都一直在提倡写易读的诗、写简单的诗、写优雅的诗。
符号语言具备的特性
一种比较现代的符号语言通常都具备一张优雅的关键字表,一张简单的运算符表、一张与语言辅助相关的预处理指令表、一份描述具体语言实现规范的文档。
关键字
关键字是对编译器具有特殊意义的预定义保留标示符,一般情况下你不可以直接拿来使用。关键字按其功能不同可分为以下几组,也是构成C#符号语言编译器的基础:
1.类型
bool、byte、sbyte、char、decimal、double、float、int、uint、long、ulong、object、short、ushort、string。
除object类型特殊外,其他类型都是C#语言的基础简单类型。
2.修饰符
修饰符是C#语言除类型外日常最重点部分,设计模式思想正是围绕此展开,包含的关键字有:
public、private、internal、protected、abstract、async、const、event、extern、new、override、partial、readonly、sealed、static、unsafe、virtual、volatile、in、out、
3.语句关键字
if、else、switch、case、do、for、foreach、in、while、break、continue、default、goto、return、yield、throw、try-catch、try-finally、try-catch-finally、checked、unchecked、fixed、lock
4.方法参数
params、ref、out
5.命名空间
namespace、using、.、::、
6.运算符
as、await、is、new、sizeof、typeof、true、false、stackalloc
7.转换
explicit、implicit、operator
8.访问
base、this
9.文字
null、true、false、default
10.上下文
add、async、await、dynamic、get、global、particl、remove、set、value、var、where、yield
11.查询
from、where、select、group、into、orderby、join、lef、in、on、equals、by、ascending、descending
运算符
C#包含的运算符号有:
[]、()、.、::、+、-、*、/、%、&、|、^、!、~、=、<、>、?:、++、—、&&、||、<<、>>、==、!=、<=、>=、+=、-=、*=、/=、%=、&=、|=、^=、<<=、>>=、->、??、=>。
预处理指令
C#包含的预处理指令有:
#if
#else
#elif
#endif
#define
#undef
#warning
#error
#line
#region
#endregion
#pragma
#pragma warning
#prafma checksum
语言规范
C#语言规范:http://go.microsoft.com/fwlink/?LinkId=199552
结束语
一个有趣的问题是:写一段程序要求用上C#语言全部内容(关键字、运算符、数据类型、预处理指令),这样的代码有木有?