办公编程语言的选择

2023-03-24 18:59:59


在此之前,不少朋友不止一次的问自己"编程语言到底是什么?","我应该学习哪种编程语言? ","语言A和语言B有什么区别"等等。回答这些问题的答案可能非常具有挑战性,因为市场上编程语言本就纷争多彩。同时,这也是一个仁者见仁智者见智的问题。
其实,计算机编程世界或多或少就像蓝球运动,每种编程语言都有自己的粉丝,都在大声疾呼他们正在使用的某种语言的优点。比如有人说Python肯定优于VBA。那么是这样吗?我将结合自身的体会来谈一下自己的体会。
1  计算机程序和编程语言及编程语言的历史  
计算机程序是解决计算机问题的详细计划或程序。更具体地说,是为了实现解决某个问题所必须明确的有序指令序列。计算机程序和设备之间的区别是将前者称为软件,后者称为硬件来区分。编程语言是一组用于创建软件的命令、说明或其他语法。市场上有许多编程语言,它们因语法和目的不同而异。
最早的编程语言是面向机器的,机器语言是由二进制组成的,“0”和“1”代表CPU的开关。计算机编程只留给少数了解CPU结构的专家。1947年,汇编语言出现了,人类更容易理解和阅读。现在几乎没有人用机器语言编写程序,但汇编语言仍在使用。
FORTRAN、BASIC、PASCAL、COBOL、SIMULA、Smalltalk和C等编程语言都是从汇编语言派生出来的。这些语言比汇编语言有了很大的改进,但是它们仍然要求你从计算机的结构来思考。例如,著名的C语言主要是为UNIX操作系统设计的。许多编程语言,如C++、Java、C语言、Visual Basic、PHP、Perl、Python、Ruby等,都受到C或任何先前提到的第一批“命令式”语言的影响。
更重要的是,编程语言的发展是为了解决现实世界的问题的。它的发展和新语言的诞生很大程度上是由工业、商业或学术需求驱动的。但引发的后果是,多种编程语言间引发了激烈的“战争”,甚至是一种语言对另一种语言发展到“仇恨”。究其原因,是因为在编程语言发展的背后,是拥有各种既得利益和高度竞争的强大公司。这种竞争往往蔓延到在这些公司工作的人和整个行业。
2  编程语言的类型  
正如上面叙述的历史,有两种类型的编程语言:高级语言和低级语言。高级语言与人类语言很接近,设计的目的是便于人类阅读和理解。它们被大多数程序员用来以一种自然的方式编写源代码,使用逻辑字和符号。在高级语言中,保留了像If Else Do While <> = 这样的符号,让我们更容易理解。而且,许多高级语言非常相似,使得程序员可以轻松地从一种语言切换到另一种语言。高级语言的例子包括C++、java、perl和php。
高级语言又可分为“编译语言”和“解释语言”(compiled languages and interpreted languages)两大类。这两类语言的区别在于,编译语言源代码必须编译(转换为机器语言)才能运行,而解释语言可以通过解释器运行,而无需编译。编译语言的一些例子包括C++和java,而Perl和PHP是解释语言。通常,编译语言用于创建软件应用程序,而解释语言用于运行脚本,例如用于为动态或交互式网站生成内容的脚本。
低级语言比高级语言更难阅读。它的设计不是为人类可读的,而是为机器读的。它们包括汇编语言和机器语言。汇编语言包含一系列基本指令。汇编程序可以用来把汇编代码翻译成机器代码。机器代码,或称机器语言,包含一系列二进制代码,这些代码可以被计算机的CPU直接理解。
3  Visual Basic for Applications (VBA) 与 Python  
VBA和Python之间哪种编程语言更好?在网上看到这样的问题比较多,包括我的各个自媒体平台,也有类似的留言。其实这个问题更应该这样问:哪种语言更适合我想要达到的目的3,而不是知道哪种语言“更好”。计算机编程语言就像工具箱中的工具。不同的工具被设计用来解决不同的问题。例如,假设你想把钉子穿过一块木头。最理想的工具是锤子。如果你想把螺母拧紧到螺栓上,同样的锤子是没有用的,那将是扳手的工作。所以即使你是锤子的粉丝也不能否定扳手在拧螺母时的高效性。换句话说,对编程语言的选择是有前提需求的。回到我们感兴趣的话题,我将对VBA和Python进行以下比较:
1)Phyton和VBA都是高级语言。
2)Phyton和VBA都是解释语言。
3)Python是一种通用语言(GPL),而VBA是一种专门针对Windows环境的领域特定语言(DSL)。
4)VBA与Visual Basic密切相关,使用Visual Basic运行库。但是,VBA代码通常只能在主机应用程序中运行,而不能作为独立程序运行。
5)VBA可以使用OLE自动化从一个应用程序控制另一个应用程序。例如,VBA可以从Excel中自动收集数据自动创建Microsoft Word报表。VBA还可以少部分地在Microsoft以外的公司发布的应用程序中实现,包括ArcGIS、AutoCAD、CorelDraw、LibreOffice、Reflection、SolidWorks、WordPerfect和UNICOM System Architect(支持VBA 7.1)。
6) Visual Basic for Applications支持构建用户定义函数、自动化进程以及通过动态链接库(dll)访问Windows Api和其他低级功能。
7) VBA仅限于在microsoft office产品中实现自动化,而Python可以在各种操作系统下运行,用于各种各样的目的。例如,Dropbox是用Python编写的,比如Google的大部分软件也是用Python编写的。
8) Python是一种开源语言:与VBA不同,Python允许用户以创造性的方式修改代码。这意味着许多库的开发可以完成VBA不可能或有限完成的复杂性任务。任何人都可以创建和开发一个库来支持Python,这意味着可能性是无限的。
9)在自动化方面,Python和VBA可以处理类似的函数,但是Python能够处理比VBA大得多的数据量。与Excel的VBA相比,Python的计算速度更快,可以处理更复杂的公式。
10)Python的力量来自于它的库。许多基本的标准库或扩展允许它只需几行代码就可以执行高度复杂的任务,而Excel vba可能需要更多的时间和代码行来执行相同的工作。一些像plotly和D3这样的库可以将这些数据可视化为交互式图表和图形,这些图表和图形比Excel更具创造性和视觉吸引力。甚至还有一些集成了人工智能和机器学习的库,允许Python用户创建VBA-Excel无法创建的预测和预测模型。
从上面的观察可以明显看出,Python远比VBA强大,但正如我前面所说的,重要的是你打算实现什么。当一个简单的喷雾剂就可以做到的时候,没有必要用原子弹杀死蚊子。
有时我发现VBA比Python更适合某项任务,而且效率更高。如果你想构建独立的应用程序,那么就学习Python。另一方面,如果你只是想自动化Office应用程序中繁重而重复的任务,那么可以使用VBA。实际上,如果你时间有限,那么你一定要学习VBA。这不是因为Python很难,而是因为学习VBA构造自己的编程基础非常关键。
总之,在选择一种编程语言时,爱一种语言或者恨一种语言都是不明智的。你不仅降低了自己作为一个程序员的效率,而且最小化了你的潜能。最后我再重复一次我的观点,对于职场人员而言:如果你只是想自动化Office应用程序中繁重而重复的任务,那么可以使用VBA;如果你时间有限,那么你一定要学习VBA。