难易,是一种个人感受,冷暖自知,不足为外人道。
最近在学习aardio的知识并尝试使用来实现一些自己的想法。尽管碰到了很多问题,但仍然非常喜欢这个体系。毕竟,我不是科班出身的程序员,虽然大学时候参加过社团,学了几乎所有计算机系的基础课(成绩就不提了),也自己补过许多关于计算机系统的知识(当时一知半解,也记不住),多少对编程的各个方面有所了解。所以,在我看来,简单易于上手是aardio最大的特色,也是吸引人的地方。但凡事有利有弊,轻易的获胜容易让人轻敌,简单的乐器更难掌握精髓。所谓易学难精。难精的原因是功夫往往不在眼界之中。文学玩儿的是文字,但名著都是来自于现实生活的积淀和作者内心的,而这些不是掌握了几千常用字的高年级小学生能够拥有的。软件开发也是如此。计算机是一门实践性的学科,需要动手,也需要思考。不动手,学过的东西记不住,不思考,学过的东西都只是知识点,没法串成体系,也不知道为什么这样,反过来不知道为什么,那些经过思考得出来的成果和经验就变成了枯燥抽象,晦涩难懂的理论知识。孔子谈学-思,王守仁说知-行。这些在软件开发的过程中都是必须的。
aardio环境下,调用winapi是如此的简单方便,以至于让人觉得世界本该如此简单,但是,随便去微软网站看看他们最简单的例子,就会发现,尖括号和引号引用库有什么区别,#后面的define是个啥意思,stdcl是个什么东西,WINAPI为什么要大写之类,新手甚至都不会注意到这些东西。看上去简单的东西从来都不简单,是因为有人帮你把复杂的细节藏了起来。为了快速实现目的,可以在过程中暂时忽略这些细节,但要成长,不可能永远不去关心它们,因为再温暖的摇篮也有装不下你的一天,再方便的工具也不能可能满足你所有的需求。aardio文档、提示、例程还有注释中,循序渐进地给用户灌输着编程的点滴知识,因为学习是个螺旋上升的过程,有些知识不是一上来就能看懂的,可能需要过很久才能明白理解,所以重复是必须的,同样的文字,常看常新。
作为一个野生的“程序员”,我比较喜欢这种学习方式,我从完全抽象的理论学习中掌握知识觉得痛苦,从设计到编码初步完成都不运行一下简直不可忍受(这也是为什么我不喜欢编译语言的原因)。我现在脑子里还记得小时候老师给我们一群懵懂孩子讲“指针”(basic的数据块指针,严格的说,其实是游标)的时候那种大便干燥式的表情。突破知识的理解需要时间和量的积累,而过程就是不停的踩坑。踩坑不要在坑底下喊救命或者骂娘,应该想尽办法往上爬,爬上来就会涨经验值;不要指望下次不踩同样的坑,而是期待能够更快的反应过来,迅速地爬上来。另外,一些经典著作还是要读的,定期整理自己的知识点,补上缺漏,形成体系,对自己是个大大的升级过程。
一篇流水账,满足一下自己好为人师的欲望,没什么干货,只是希望能给郁闷中的小伙伴们打打气吧。
附上我对一个帖子的回复。
基本学习路径有两种,学院派和江湖派。学院派讲的是中规中矩,稳扎稳打,从变量、语句、指针以及各种编程范式学起,一开始非常抽象,学起来挺累的,江湖派是不管三七二十一,遇到问题解决问题,步骤越简单越好,直观方便,快速满足但是很多不明所以。
本质上,不管哪条学习路径,一开始都是很多知其然不知其所以然,要么是因为没见过,要么就是见过但从没听过,知道有但不知道为什么有。学习本身是个螺旋上升的过程,两个条路径也只是侧重于知和行的问题,最终目的也都是讲知行合一。aardio做了些东西,看他的文档补一些缺漏,是不够的,应该定期去系统的学习一下相关的知识体系;学太多理论知识,在实践中从来也没有用过,用守仁先生的话讲”知而不行,是为不知“,也于事无补。
作者说的是有道理的,但我觉得从语言层面的角度去比较是不合适的,因为你要说的事情本来是超越编程语言的,是后面的逻辑、思想、理论之类。大家基本上都是人到中年了,少些争端,多点鼓励吧。(考虑到aardio作者能坚持这么多年,不容易啊。)