编程与人生

前些天群内开始了编程与各法关系的主题活动,群主   @大道归一 建议我写一下有关面向对象与佛法 ,我说我不懂佛法,还是写编程与人生吧,当时因为事多,所以没有马上写 。昨天看到群内 @大道归一 写的 《金刚经和面向对象编程漫谈 ,之后又看到群友  @Alhep  写的《中医思维是面向对象的思维 ,两篇文章立意都很好 ,而且切入角度都很妙,很有启发, 只觉得他们 写的少了,应该还可以写更多;另外 就是专业内容比例过大,不利于让没有编程经验的人理解这些精彩内容,群友反馈也少;如果他们再加上一些个人经历和故事,那么就更精彩了。

最近几天早睡早起,有点庙里的生活节奏,发现时间就多了——庙里的生活节奏还是很科学的,就开始从凌晨开始写编程与人生 。之所以题目是编程与人生,有两主因:其一是在编程中和面向对象概念同层次的还有面向方面、面向过程、面向目的、函数式等概念,诸如此类都是编程专业知识,有碍非相关领域之人的理解,但如果能站在编程这个更大的层面去写的话,理解的人应该会多点——知道编程概念的人要比知道面向对象概念的人多得多;其二是各法,我不懂佛法,稍懂道家源哲学,但知各法无非都指向人,指向人生,而非指向各种奇奇怪怪、不知有无的事情,所以不如就写各法之其所指——人或人生。

所以最后题目是编程与人生:编程是切入点,是本文起点;人生是深入的目的,是本文终点。我主要写三点:编程是相通的,做事情是相通的,万事万法皆为人生。这三点循序渐进,从编程过渡到人生。

编程是相通的
=========
先说下个人的编程经历(其实我也有团队管理和系统设计经历,补充这点只是不想让大家误解我只会写代码)。
  • 在学校的时候,学习了Pascal、汇编、C/C++等编程,但真的应用于实际项目开发的却是VB和ASP——做了管理系统赚取生活费。
  • 毕业后第一年(2002年,有机会对C/C++做了比较深入和全面的学习,包括OO、MFC、COM/ActiveX/ATL等。
  • 2003年开始对这些知识进行了比较全面实践,从2003年中到2004年底,算过自己写了约有超过15万行C/C++代码,涉及底层的进程通信、线程池、socket连接池、数据库缓冲、内存池、自己封装树的map表结构、DLL的多线程并发访问控制、服务器端ActiveX等,在领域方面熟悉了操作系统、数据库、网络、界面、包交换等,这期间还写了一个J2SE的几个小项目。
  • 2005年,在不中断C/C++编程实践的同时,更加关注OO/Design Pattern/Framework,自己业余时间写了活化软件——后来的SCS(Simulate Cell System),有了自己初步的编程理念和思想,并且学习其他编程思想和方法也特别快。SCS在2008年和2010年有更新。
  • 2006年~2009年,在保持C/C++写后台Linux服务架构的同时,还学习和使用了Asterisk/AGI、PHP和相关框架、DirectShow、J2EE(Spring、EJB、WebService)、存储过程、Shell等编程,在领域上扩展到Windows Mobile、Symbian、多媒体音频/视频/图片解压缩,Linux系统等。这期间我也把SCS从Windows上移到Linux上了。
  • 2010年开始到现在,注意力主要集中在移动互联网,我在Android(Java和iPhone(Objective C上都开发过若干个App,后台也开发了大并发的推送服务,另外基于PHP构建了自己的REST架构体系,也频繁使用HTML5及其相关体系(CSS3/Node.js/jQueryMobile等)。
从2010年开始小规模的尝试培训,到2012年正式的兼职培训师生涯开发,我不断对我的编程生涯做总结,然后和我的培训客户分享,下面说说部分的这些分享。

纵观我的12年多的编程经历,2003~2004年是最重要的一个阶段,期间我写了很多C/C++代码,十分深入的通过实践掌握了编程,给自己打下了比较好的编程基础。在这个阶段之前,J2EE已经开始流行,但其很多概念我都百思不得其解;在这个阶段之后,J2EE的那些概念我都一看就通,为何?因为这些概念的背后,很多我自己都用C/C++在底层实现过,J2EE的这些概念,无非是将其模块化,然后取名,然后让大家复用而不必重写,从而提高开发效率。这是我对编程是相通的第一初感。

后面我再学习其他编程思想和方法时,基本都是1~7天学习期后就直接应用在项目上,其原因除了我有编程基础、勤于动手和主动外,最主要就是理解了编程是相通的这个思想,这一点在我做兼职培训师初期,给企业学员分享的方法中其中有一页说明如下:

上图中主要有三个部分:
  1. 编程语言的使用计划过程,从基本的语法,到架构,到实际应用,这是很多程序员必经之路。
  2. 光了解编程语言其实什么也做不了,必须要结合领域知识,这部分列出了部分基础领域知识,也是程序员必须了解的。
  3. 这些编程语言和基础领域的推进者主要是各大公司和组织,这些公司和组织之间也有进化和竞争关系。
但其实这三点只对编程是相同的做了表面的解释,特别是第三点,难道真的是这些公司和组织进行的技术推进吗?

最近一年多的时间,对于上图的这一页PPT,我已经做了小修改和重新阐述。其中前面图的元素都变成了背景(也许有些屏幕看不清楚),而前景是一群“人”。我除了给学员说前面的道理,最后还会让学员考虑这个道理的背后是什么?为何大家自觉把代码封装成模块给其他人直接使用?为什么从C/S发展到B/S?为什么编程越来越容易入门?为什么几十年前只有少数精英才能编程,而现在高中生就可以?……

最后的答案就是人:人之间有协调性,所以我们可以分享各自写的模块;人有惰性,并且经济发展让大家对软件开发需求更大,所以直接写TCP二进制包越来越少,用HTTP字符越来越多,所以在计算机普及的基础上,编程变得越来越容易入门,让更多的人可以编程,成本越来越低……

总而言之就是:编程是为了实现项目;项目是为了满足人的需求;人的需求就是人本身或者人生。 所以,现在从人着手来想清楚编程的相通性,就是编程是因为人的需求而存在,搞清楚人的需求,就能搞清楚编程的方方面面。比如:人需要存储,所以有了数据库;人需要开发简单,所以数据库提供了越来越简单的开发即可偶;人需要效率和更大存储,所以数据库越来越高效和分布式存储(文档试NoSQL)……最近几年我学习和应用新技术时,我都是从人着手,比如考虑当前人的状态(互联网的普及、手机的应用、社交网络的发展等等),然后考虑到人需要什么(更快的网速、更大的屏幕、更好的社交体验等),再联想到具体开发平台会提供如何的编程接口来方便实现这些需求,最后具体看这些开发平台接口文档时,就顺利成章,基本能把提供的接口猜个八九不离十。当然从人着手学习技术,有一个必要前提就是要有编程基础。

做事情是相通的
=========
在最近几年领悟到编程的相通,然后回归到人这一步后,也尝试考虑除了编程外,其他行业是不是也是如此?所以也观察了其他行业,比如运动员(对身体的精深)、销售(对人之间沟通了解的精深)等,发现当有了一个踏实的基础之后,逐步就会了解这些行业的很多知识,并且在实践上也越来越深入、细致、扩展化,然后最后都会回归到对人的理解,也就是对人本身的了解。比如运动员不断精深后,最后就对自己的极限、自己的身体规律有很深的了解,然后根据自己的身体,不断进行强化,配合环境,达到最佳竞技水平;销售不断精深后,最后对人与人之间的沟通技巧、对人的需求,就有很深的了解,知道如何取悦顾客,知道如何让顾客买他的东西。

我觉得最近几年对这种人做事情的相通性解释的比较好的就是一万小时理论,简而言之就是没有天才,任何正常人在精深某个领域后,就能成为这个领域的世界水平专家,就能成为所谓的“天才”。

所以做各行各业的事情,最后都会回归到人,人是做各行各业事情的相通点。

万事万法皆为人生
=========
既然各种不同编程方式因为人而相通,做各行各业的事情也因为人而相通,那么我们看《道德经》、《金刚经》等了解各法是否也是因为人而存在?我认为当然是!各法的存在,不是为了那些奇奇怪怪、不知有无的事物和现象,而是可以让我们了解人,了解自己,从而指导我们的人生。

所以当我们在编程时,在做各行各业的事情时,在研习各法时,都能让我们了解人,了解自己,都是让我们完善人生。

所以万事万法皆为人生!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值