非专业人员该学什么程序语言

编程,一度被认为和驾驶一样是一项现代社会的基本技能,非专业人员也该有所掌握,中小学也在教。但实际上,它的普及程度远比驾驶差,掌握这个技能的人很少,在学校学过的知识,因为工作中用不上也都忘掉了。
为什么会这样?
要搞清这个问题,先要回答:为什么要学编程?学来想干什么?
除了个别人就是兴趣大之外(这些人很可能成为专业人员),大部分非专业人员学习编程的目的应该是辅助日常工作。确实有很多事务如果用编程来解决是非常轻松的,而手工去做就非常麻烦。比如把 500 个 Excel 表格合并起来、用花名册生成员工卡片等等。街上有很多培训班鼓吹学完 XXX 后工作效率一日千里,也会令很多职场人士心动。

这种目的,需要学习两层内容:
第一层是程序的基本逻辑
比如变量、分支、循环等等。不理解这些,几乎啥程序都写不出来。不过这部分内容并不复杂也不算很多,有 Excel 公式使用基础的同学,稍加努力就可以学会了。而且,几乎所有程序语言在这方面的能力都很接近,甚至使用的关键字和语法规则都很像,学会一种再去看其它也容易,可以举一反三。
但是,学了这一层内容,也只会做一些中小学的算术题,比如解个鸡兔问题、分解个质因数什么的,练练脑筋没问题,对协助日常工作几乎毫无用处。
不幸的是,面对非专业人员,很多教程书籍甚至培训教到这里就结束了,或者说只能教到这里,后面会解释。

要想学以致用,还必须学习第二层内容,就是结构化数据及其运算
希望编程来解决的日常工作,其实也就是处理手头的数据,这些绝大多数都是 Excel 表格或者能填入 Excel 表格里的数据,比如这种:
clipboardpng
这种数据有个学名叫结构化数据。学会了结构化数据的概念以及常见运算,比如表、记录、字段、分组、连接等,才可能真正应对日常工作。结构化数据通常都是批量出现的(表格里通常会有很多行数据),所以还要熟悉集合相关的概念,不过高中数学知识足够了。
再说一遍不幸,和第一层基本逻辑会有无数的课程在讲述的情况不同,面向非专业人员的教程很少涉及结构化数据的知识。大概只有数据库课程才会系统地讲述这些东西,但这玩意儿却是日常工作的基础,而且也没那么难,非专业人员也能掌握。比如你是不是经常用 Excel 做筛选、汇总甚至也会做连接(连接这词可能不懂,其实就是 VLOOKUP 干的活)。但没有系统学习的话,碰到复杂些的情况就会糊涂了。
这两层知识都掌握之后,非专业人员就真地可以得心应手地对付日常工作了,工作效率嗖嗖的。

那么,学哪种程序语言?
对于第一层知识,理论上选择余地很大,甚至是选什么都可以,因为这是所有程序语言共有的内容。那么只要找一种擅长处理结构化数据的程序语言就行了,方便学习第二层知识,也可以学以致用。
道理上是这样,但面对零基础同学时,还不能搞出太复杂的环境配置,那同学们会晕掉的。零基础同学需要即装即用,甚至就不用安装更好。
早期(30 几年前)机器上都自己有 BASIC 语言,确实是不用安装直接可用的,我们当年都学过谭老师那本著名的书。但是搞不清为什么现在都没有了,也说不清这是进步呢还是退步呢。
现在不需要安装的语言主要有两种,一个是浏览器自带的 JavaScript,另一种是有 Excel 自带的 VBA。这两种东西虽然免安装,但真要用起来,得理解浏览器和 Excel 内部的许多概念(专业术语叫做对象),比程序逻辑本身还难,根本不适合初学者。
有时候很怀念当年的 BASIC。

满大街都是培训班的 Python 怎么样?看上去很美。
如果只用来学习第一层知识,Python 可以说没问题,只安装基础功能包并不困难,在开发环境中写代码运行也问题不大。
但如果来学习结构化数据的话,对于大多数非专业人员来讲,可以踏踏实实地说:你就学不会!更谈不上学以致用。原因可以参考这个 其实你就学不会 Python
Java、C/C++ 这些就更不用提了。面向对象本来是个高级玩意儿,不适合初学者去理解;结构化数据处理能力却几乎为 0,学了也没用;开发环境还很复杂,毕竟这些东西是让专业人员来搞大型软件的,复杂有复杂的道理。
中小学把 Java 作为作为计算机启蒙课在教,真是匪夷所思。
SQL 呢?它的结构化数据处理能力对于初学者来讲是足够了,而且也真地学得会。它还是一个奇葩,可以不用学第一层而直接跳第二层(所以我们前面都说“几乎”,没说死),不用理解变量循环这些概念也能做出还挺复杂的查询。
然而,还是有然而。SQL 要运行在数据库中,但非专业人员通常搞不定数据库的安装,也没本事把 Excel 倒腾进数据库(不然也没办法用 SQL 处理)。结果,学了也没有用武之地。

说来说去,那岂不是没有了?
是的,如果看这几个主流的程序语言,真地没有。要么你就学不会,要么学了也没啥用。
也正因为如此,虽然编程概念炒得火热,但非专业人员始终用不起来,不停地有人问该学啥。这事,开再多培训班也没有用,培训班又没有能力去改进或发明程序语言。这本质上是没有米的问题、不是会不会煮的事。

大概只有 esProc SPL 是适合零基础非专业人员的程序设计语言了。
作为程序语言,SPL 有完整的程序基本逻辑(第一层知识);SPL 全名是 Structured Process Language,发明它就是为了对付结构化数据的,其结构化数据处理能力超强,可以说当前程序语言这方面能力最完整的,远超过 Python 和 SQL,细节就不说了。中英文双语版本,一键安装,特色网格很容易编写和调试,精心设计的语法和丰富的函数库也更易于掌握;它可以直接读写计算 Excel 文件,甚至还能对着文件执行 SQL(所以还可以用来学 SQL)。
不过,SPL 并不是为了初学者特意发明的,而是为了解决 SQL 难写和太慢的问题。但真用起来会发现,它的体系简单易用,很适合初学者来学编程,关键是真能学以致用。
有兴趣到 SPL 论坛上去找资料吧,这里有 SPL 程序设计图书 【程序设计】 前言及目录 ,面向职场人员这里还有很多实践 帮你早下班 - esProc 桌面版与 Excel 数据处理