从C 语言和李白的共性谈起

最近对C语言有了更深刻的认识。发现之前学校学的都是C++.虽说是C的一个超集,但范围之广,往往用不到纯C的功能。那么C语言跟诗仙如何扯上关系呢?众所周知,李老师善用夸张手法,例如,飞流直下三千尺,天台四万八千丈,金樽清酒斗十千.玉盘珍羞直万钱,与尔共消万古愁,迩来四万八千岁,十步杀一人,千里不留行,等等。可以看出,绝大多数夸张句中运用了大数虚词,颇得山海经中对距离,时间,和高度的描写手法的真传。而C作为底层语言,也经常需要程序员预先分配资源,比如
int * array = malloc(1000 * sizeof(int));
char array[1000000];
等等。 分配的大小往往不是精确的,而是初步估计,或者甚至是懒于计算而得到的一个绝对安全的上限。由于现代计算设备内存日益庞大,甚至有recruiter说出请不要用超过4TB内存这种有钱任性的话,在C这种overhead很小的语言环境里分配貌似浪费的内存资源量可以说是节省开发时间,其效率不亚于抠门地去用高级语言。就好比在买菜时如果不斤斤计较葱蒜的价钱,可以把有效脑力用在炒股和写代码上,也是明智的。而以李白为代表的一批浪漫主义先贤对虚数词的运用自如,更可看出人类在富裕宽松的心理环境下可以更好的激发创造力。
另外在数学中的分析领域,很多牛逼定理的证明靠的都是大分析师如Jean Bourgain之流在恰当的时刻信手拈来几个大得离谱的常数作为脑海里的航标,才使其证得酣畅淋漓,游刃有余,同时也把那些只会逐字逐句校验而无法心神意会的初学者给拒之门外,用恫吓式证明(proof by intimidation)的方式告诉他们,你们还太嫩。当然把C和数学分析做类比略显牵强。分析几乎是纯二+阶逻辑的产物,而代数组合学其命题本身多基于一阶。所以从这个层面上说分析更像python,lua. 很有意思的是,计算机语言的高级阶段力求让用户能跟高效的表达数学或算法中的精华逻辑,这在数学中似乎已经是明日黄花了。当今前沿数学,不仅仅是分析,追求的是计算机所无法系统概括出来的对象和逻辑。所谓的经典代数,正是那些无论证明还是命题都比较接地气的,也就是一阶逻辑就可以搞定的内容。当然并不是所有数学家都能踏着二阶甚至高阶逻辑的风火轮通行无阻的,不然这帮人就活得太潇洒了。很多人其实是把别人打通的经脉嫁接到自己身上,然后需要的时候拿出来重走一遍。不能说是简单的抄袭,对普及某些精妙的构架或思想也有很多积极意义。一种简单但非绝对的鉴别真实二阶思考的方法就是看证明中是否有不负责任的大数,甚至可以用类似zipf定律的方式来更进一步验证其真伪。当然这也很容易用来误导,或者滥用。
另外有一点是数学和C语言所共通的,就是当一个证明或一段代码成为经典之后,其中的懒散大数会被好事之徒精简到和经典代数组合学一样的标准。当然精简的并不局限于几个常数,还有可能是逻辑本身。这在代码中的重要性不言而喻,而且一般会在初稿形成后不久就发生。当然这在早期计算机发展阶段比较平凡,当今重写代码似乎更流行。但数学证明一经发表永载史册,不论糟粕精华。其他学科也是如此,而且糟粕更多。这种空前绝后的不朽性深深刺激了码行中的一些人,故而产生github,bitbucket等的平台。如果光是代码永久保存还好,可惜有滥用者开始上传数据文件。最终当然资源是会被用爆的。

Advertisements

About aquazorcarson

math PhD at Stanford, studying probability
This entry was posted in Uncategorized. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s