Python取代VBA?先问C#答应否
撕逼,勇者胜,扯淡看我VBA
前言
近些年,大数据下的人工智能应用,以其黑科技姿态,不知亮瞎了多少百姓的眼睛。一时间“AI自动编码颠覆世界,不上车将永被放逐”的言论喧嚣尘上,大街小巷里的男女老少,都拍着小手,欢呼着“人生苦短,我写Python”。无良的教培机构贩卖保健品一般,将Python神化的无所不能。诚如网友所说,让每种工具回归其主场,才是最起码的尊重。这与笔者致力于,分享非IT适用的技术框架的初衷,如出一辙。所以,本篇决定来拾掇拾掇Python,权当是给语言论者泼盆冷水。
一、Python的本质是语言的语言
撕开Python语法的优雅,在其高贵华丽的外衣下,除了轮子还是轮子。一个满身轮子的货,当然可以到处滚了。吃得开,这是其他语言没法比的。在C面前有Cython,在R面前有rpy2,在JAVA面前有JPype等,几乎所有语言的资源,Python都有对应的库。Python被称为胶水,这不是盖的。
Python通过各种库来干活,但各种库的实现其实跟Python没多大关系,实际上Python自己干的活很少。如果没有其他语言的资源,Python还能如此优雅?还能号称区区几行就搞定别人成百上千行?所以,Python的本质是如何利用资源,这与VBS的本质其实并无多大差别,只是前者做的更优秀而已。
我们都知道,解释型语言的性能,都是建立在编译的基础上。Python要没有C为其兜住性能,Python就不会有今天的炙手可热。从这点也说明Python其实并不是一种纯粹的高性能开发工具,它更像是武器库的控制台。
所以,代码大佬们会衷心的告诉你,Python其实是为经验丰富的开发人员准备的。因为他们才知道,资源如何组装才更合理。Pyhon作为语言的语言,更多的意义在于资源的组织管理,而非资源的生产。
二、Python的主场落在大数据时代的专业分工
语言的语言,这种胶水特性并非Python独有,几乎所有可扩展的开发工具都含有这一特性。但为何大数据之后,Python的号角才开始嘹亮呢?在《互联的围城,已春暖花开,我却心向罗盘荒野》中,笔者向读者道出了原因,那就是大数据挣脱了01的呆笨逻辑,向世人揭示出了尿不湿与啤酒间,人的逻辑。
在大数据中搜寻这种逻辑,促就了数字世界的淘金热,更催生出了互联网AI这个全新的物种。但数据分析,毕竟大大超出了程序员职业的能力范畴。尽管不乏精通代码算法和数据分析算法的人才,但就这一职业而言,仍然需要将数据分析这一工作拆解出来,让给数据精英们。
Python的跨平台胶水属性,简直就是为大数据的分工,而量身定做的一般。无需学习算法的底层实现,而专注于算法本身,这与数据科学家们一拍即合。让专业的人干专业的事,是Python重回人们视野的根本。在大数据和人工智能的加持下,Python傲骄得今天让你爱理不理,明天叫你高攀不起。
三、Python对于初学者的意义不如VB,也注定不属于普通人
站在前人的肩膀上,不做轮子哥,这是每个开发工具的共同理想。Python并不排斥小白先生,在那么多类库资源的诱惑下,初学者抵挡不住也无可厚非。毕竟当前是一个短视遍野的社会,能速成何必修身。
尽管Python在库的支持下,很有捷径可走,而且这跟跟VB用鼠标画界面并没有什么不同,都是封装带来的。但对于初学者而言, Python却暗藏杀机。在它优雅的语法下,Python似乎可以按着摩擦任何其他语言,这让很多初学者误以为,Python太牛了,纷纷欲以为业,加入Python的大军之中。
但很多初学者看不到的是,Python耀眼光环的背后,往往都是些知名高等学府里那些精通数学的硕士、博士,在他们的周围,还有一圈配套的性能层。也就是说,Python从来都不干单打独斗的事。恰恰这种环境,是初学者难以具备的。所以,很多人学了4个月Python找了3年的工作。
Python的这种简单强大,叫分工,有上下文环境。如果分工里没有你的份,再简单强大,也是屠龙术。而VB的简单,叫包容,许你3%,也容你97%。VB的简单,在于启蒙,而非捷径。VB的更多背景内容,请参阅BtOfficer的相关文章。
Python作为语言的语言,其抽象程度更强,离计算机的真相也就更远。从学习的角度,初学者无法借助Python系统的学习计算机知识,等弄懂了Python花哨的语法,才发现自己小小的目标要落地,都必须去C/C++,JAVA等更专业,难度更高的领域。所以,Python注定不属于普通人。
四、Python通过什么与Office交互?
Python会代替VBA成为Office下一代语言,这种言论在Python圈广为传唱。他们不知道,VB为了一统Office宏语言的江湖,花费了数年之久才有今天的VBA。VB全工具链(VB、VBA、VBS)以Office为战略重心,服务了近26年,你说Python会取代VBA,Python是给了微软多少好处啊!
VBA生而为Office,连当年叱诧风云的VB都为之转身。如果Office没有VBA这条护城河,你以为Office能霸占办公软件头把交椅那么久? 弄懂VBA就是Office的开发语言,这一点很重要。
再来看看其他开发工具是如何与Office交互的?我们说Office是基于COM的,非Office进程的东西,想要进入Office的地界,除非你Hook,否则都得通过它提供的接口,最终的产品都叫COM加载项。Python正是通过COM接口与Office交互。当然OpenXML下的XML读写,只是纯粹的文件读写,算不上Office的开发。
五、Python凭什么取代VBA?
既然是COM加载项,那与Office交互的就是二进制,这与寄生在Office进程内的VBA完全是两码事。很多人觉得,Python处理数据的速度远比VBA快,难道其他COM加载项就不快么?VBA的势力范围除了Excel外,还有Access呢,咋不找Access比快呢?
Python离开那几个蹩脚的EXCEL操作库,还能饭否?
与其说Python会替代VBA,倒不如说Python会替代其他COM加载项的编制工具。VSTO也号称下一代VBA,要说Python会取代VBA,那先问下C#答应否?
六、醒醒吧,精力有限的职业人
Python的高大上,不是我等才疏学浅之辈能驾驭的。VBA都精简成那样了,都学不会,还学什么计算机!诚如每种语言都应回归其主场,我等又何尝不该回到自己的主场,端着业余的笑脸到人家专业的地界上去凑什么热闹。