首先来了解一下:什么是脚本语言?脚本语言是指相对常规的编程语言(例如,C++,Java等)而言,编写程序时比较自由而灵活的编程语言。例如,我们用脚本语言Python去写代码时,比较随意而自由,不会严格地去限定语法、编译方式等。一般来说脚本语言与常规的编程语言其实没有严格的区别。常规的编程语言往往会考虑软件工程及软件设计方法等,脚本语言则不会重点考虑这些方面,而是将重点放在语言的灵活性和使用方便性上。
脚本语言的优势在于使用方便而灵活,可以用较少的代码高效地实现复杂的算法,可供调用的库或包非常丰富。对于AI而言,常见的脚本语言包括MATLAB、Python、Julia、R等。
MATLAB是一款具有数值计算、程序仿真、数据可视化等功能的软件,使用者包含了各个研究领域的人员,例如数学、物理学、控制科学、计算机、信号处理等。MATLAB名字的含义为矩阵实验室,由MATrix和 LABoratory 两个英文单词的前三个字母组合而成。MATLAB软件对应的编程语言即为MATLAB语言。MATLAB语言是一种功能强大的编程语言。它是一种高级编程语言,也是一种脚本语言。MATLAB语言的特点包括:矩阵和数组运算功能强大、编程效率高、使用方便、扩展能力强、绘图方便等。鉴于MATLAB如此强大的功能,其受到了各个领域使用者的广泛欢迎。可以毫不夸张地说,哪里需要数据处理和计算,哪里就有MATLAB的用武之地。AI作为严重依赖数据的研究领域,自然也是MATLAB大放异彩之地。具体来说,在AI的主要研究领域之一:计算机视觉中,一幅图像可以视为一个大的矩阵,对图像的处理也就是对矩阵进行计算;在AI的核心研究领域:机器学习中,训练数据集可以视为训练样本矩阵,所以进行机器学习也就是对矩阵进行计算。MATLAB是一种在矩阵计算方面具有突出优势的脚本语言,因此MATLAB是进行AI研究特别重要的编程语言之一。
Python由荷兰人Guido van Rossum于90年代初设计,他被誉为“Python之父”。最开始设计Python的时候,其目标是希望将Python作为一门叫做ABC语言的替代品。Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python具有简单而明确的语法、动态类型、可解释型语言的本质,这些优秀本质使它成为多数平台上写脚本和快速开发应用的编程语言。随着Python使用人员的不断壮大,Python的功能不断被改进和扩展。由于Python在数据分析和可视化方面的工具包非常丰富,受到了AI和大数据领域人员的广泛喜爱,成为了这些领域人员必学的编程语言之一。
Julia是一种非常新的编程语言,其发展历程目前还较短。MIT的研究人员Jeff Bezanson、Stefan Karpinski、Viral B. Shah和Alan Edelman于2009年开始研究Julia。Julia被设想为一种开源的计算语言,既快速又可以在较高水平上使用。2012年,Julia语言首次向公众亮相,此后逐渐成为世界上最受欢迎的编程语言之一,以至于许多程序员现在都将其视为强大的Python的潜在竞争对手。
R语言是进行统计学、数据挖掘、数据分析与可视化、机器学习等研究的重要编程语言之一。人们越来越注意到R语言功能的强大,R语言的用户正在快速增长,越来越多的研究人员开始使用R语言。R语言的前身可以追溯到1976年美国贝尔实验室开发的S语言。20世纪90年代,R语言正式发布,之所以称作R是因为两名主要研发者Ross Ihaka和Robert Gentleman的姓名首字母均为R。R语言由开发核心团队共同维护。R语言是基于S语言的一个GNU项目,所以也可以当做S语言的一种实现,通常用S语言编写的代码都可以不做修改的在R环境下运行。
使用脚本语言也可以编写出美观的软件界面,这里对MATLAB、Python的界面编程工具做一下介绍。Julia、R的编程工具的详细介绍,读者可以查阅图书《人工智能怎么学》。
关于MATLAB的界面编程,可以使用拖拽控件的方式,也可以使用编写代码行的方式。MATLAB界面编程所使用的工具包,早期为GUIDE,只需在MATLAB的命令窗口,输入“guide”命令即可调出编写界面的窗口。后来MathWorks公司在R2016a中正式推出了GUIDE的替代产品:App Designer,这是在MATLAB图形系统转向使用面向对象系统之后(从MATLAB R2014b开始),一个重要的后续产品,其主要目的是为了顺应Web的潮流,帮助用户利用新的图形系统方便地设计出更加美观的GUI。App Designer与GUIDE相比,界面编程的方式更加简单,具有更多最新的界面编程控件(例如仪表盘等),而且界面可视化效果更加美观。如果要使用App Designer,需要安装MATLAB R2016a或以上版本。通过在MATLAB的命令窗口输入“appdesigner”命令,即可调出编写界面的窗口。
Python界面编程推荐使用PyQt。在之前的文章《桌面端编程之与C++配套的界面编程工具》中介绍C++的界面编程时已经指出:Qt是一款功能强大的、支持跨平台的界面开发软件。PyQt是Qt与Python相适应的版本,在Python中安装PyQt插件后就能够在Python中利用Qt的界面编写工具Qt Designer来编写界面。利用PyQt编写带有界面的Python程序具体流程为:首先利用PyQt为程序设计界面,然后将Qt Designer构建的程序界面文件(ui文件)利用Python的IDE工具Eric转化为py文件,接下来在Eric中实现前端界面文件与后台Python源代码文件的融合,从而编写出带有界面的Python程序。详细的实现步骤,读者可以找一本PyQt教材进行学习。
如果读者想高效学习人工智能中的脚本语言编程,请阅读图书《人工智能怎么学》的相关内容,书中有关于MATLAB、Python、Julia、R的知识架构、常用教材、学习路线、在线课程等内容的详细介绍。
关于人工智能中编程能力和技能训练的更多介绍,可以购买《人工智能怎么学》进一步阅读。
图书购买方式
京东:https://item.jd.com/13395339.html
当当:http://product.dangdang.com/29469230.html
天猫:https://detail.tmall.com/item_o.htm?id=687374654836
为了让图书惠及更多的读者,为更多想学习人工智能的人提供帮助,经过向出版社申请,对图书《人工智能怎么学》的部分内容进行改编和连载。图书《人工智能怎么学》的全部内容包含了初级入门、中阶提高以及高级进阶三个级别的内容。连载的内容主要是初级入门级别,适合想对人工智能进行快速和高效入门的读者,对于已有一定的人工智能学习基础,希望进一步进阶或提高的读者,则需要购买图书《人工智能怎么学》,学习中阶提高以及高级进阶的内容。此外,对于学习人工智能感兴趣的读者,也可以加入知识星球《人工智能怎么学》,知识星球是一个构建学习社群的平台,通过加入《人工智能怎么学》的社群,你将获得更多的学习资料和课程信息。
与作者互动和了解更多信息
想跟作者一起学习人工智能和互动,你可以加入如下社群:
知识星球:https://t.zsxq.com/0aLkVg0os
QQ群:600587177
想了解更多关于人工智能学习及实践的内容,请关注如下媒体:
官方网站:https://bigdatamininglab.github.io
官方微信公众号:人工智能怎么学(可扫描下方二维码或者微信搜索“人工智能怎么学”添加关注)
CSDN:https://blog.csdn.net/audyxiao001
参考文献
- Robert C. Martin. 代码整洁之道(第2版)[M]. 韩磊, 译. 北京: 中国工信出版集团, 人民邮电出版社, 2020.
- Herb Sutter, Andrei Alexandrescu. C++编程规范:101条规则、准则与最佳实践[M]. 刘基诚, 译. 北京: 人民邮电出版社, 2016.
- 杨冠宝. 阿里巴巴Java开发手册[M]. 北京: 电子工业出版社, 2020.
- James Gosling et al. The Java Language Specification:Java SE 8 Edition [M]. Upper Saddle River: Addison-Wesley, 2014.
- 老九君. C++的发展简史[EB/OL]. https://www.cnblogs.com/ljxt/p/11636342.html, 2019-10-08.
- 翁惠玉. C++程序设计:思想与方法(第2版)[M]. 北京: 人民邮电出版社, 2012.
- 谭浩强. C++程序设计(第3版)[M]. 北京: 清华大学出版社, 2015.
- Siddhartha Rao. Sams Teach Yourself C++ in One Hour a Day (Eighth Edition) [M]. Boston: Pearson, 2017.
- Bjarne Stroustrup. Programming:Principles and Practice Using C++ (Second Edition) [M]. Crawfordsville: Pearson, 2014.
- Bjarne Stroustrup. C++语言设计和演化[M]. 裘宗燕, 译. 北京: 人民邮电出版社, 2020.
- Stephen Prata. C++ Primer Plus(中文第6版)[M]. 张海龙 等, 译. 北京: 人民邮电出版社, 2020.
- Stanley B. Lippman, Josée Lajoie, Barbara E. Moo. C++ Primer(中文第5版)[M]. 王刚 等, 译. 北京: 电子工业出版社, 2013.
- Stanley B. Lippman. Essential C++(中文版)[M]. 侯捷, 译. 北京: 电子工业出版社, 2013.
- 侯捷. STL源码解析 [M]. 武汉: 华中科技大学出版社, 2015.
- Ivor Horton. C++标准模板库编程实战 [M]. 郭小虎 等, 译. 北京: 清华大学出版社, 2017.
- Brian W. Kernighan, Rob Pike. 程序设计实践 [M]. 裘宗燕, 译. 北京: 机械工业出版社, 2003.
- Bruce Eckel. C++编程思想(两卷合订本)[M]. 刘宗田 等, 译. 北京: 机械工业出版社, 2011.
- Scott Meyers. Effective C++:改善程序与设计的55个具体做法(第3版)[M]. 侯捷, 译. 北京: 电子工业出版社, 2011.
- Scott Meyers. More Effective C++:35个改善编程与设计的有效方法 [M]. 侯捷, 译. 北京: 电子工业出版社, 2020.
- Scott Meyers. Effective STL:50条有效使用STL的经验 [M]. 潘爱民 等, 译. 北京: 电子工业出版社, 2013.
- 陆文周. Qt 5开发及实例(第4版)[M]. 北京: 电子工业出版社, 2019.
- 王维波. Qt 5.9 C++开发指南 [M]. 北京: 人民邮电出版社, 2018.
- 冯振, 郭延宁, 吕跃勇. OpenCV 4快速入门 [M]. 北京: 电子工业出版社, 2020.
- ghscarecrow. Java的发展历程[EB/OL]. https://blog.csdn.net/ghscarecrow/article/details/82318636, 2018-09-02.
- JMCui. Java的发展历程[EB/OL]. https://www.cnblogs.com/jmcui/p/11796303.html, 2019-11-07.
- 明日科技. Java从入门到精通(第5版)[M]. 北京: 清华大学出版社, 2019.
- Kathy Sierra, Bert Bates. Head First Java (Second Edition) [M]. Sebastopol: O’Reilly, 2005.
- Bruce Eckel. Java编程思想(第4版)[M]. 陈昊鹏, 译. 北京: 机械工业出版社, 2007.
- Cay S. Horstmann. Java核心技术 卷I:基础知识(第11版)[M]. 林琪 等, 译. 北京: 机械工业出版社, 2019.
- Cay S. Horstmann. Java核心技术卷Ⅱ:高级特性(第11版)[M]. 陈昊鹏, 译. 北京: 机械工业出版社, 2020.
- Joshua Bloch. Effective Java(中文第3版)[M]. 俞黎敏, 译. 北京: 机械工业出版社, 2019.
- 周志明. 深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)[M]. 北京: 机械工业出版社, 2019.
- Brian Goetz. Java并发编程实战 [M]. 童云兰 译. 北京: 机械工业出版社, 2012.
- Kamalmeet Singh. Java设计模式及实践 [M]. 张小坤 等, 译. 北京: 机械工业出版社, 2013.
- 明日科技. Java Web从入门到精通(第3版)[M]. 北京: 清华大学出版社, 2019.
- 未来科技. HTML5+CSS3+JavaScript从入门到精通[M]. 北京: 中国水利水电出版社, 2017.
- Elisabeth Robson, Eric Freeman. Head First HTML与CSS(第2版)[M]. 徐阳 等, 译. 北京: 中国电力出版社, 2013.
- Adam Freeman. HTML5权威指南 [M]. 谢廷晟 等, 译. 北京: 人民邮电出版社, 2014.
- Eric A. Meyer, Estelle Weyl . CSS权威指南(第4版)[M]. 安道, 译. 北京: 中国电力出版社, 2019.
- David Flanagan. JavaScript权威指南(第7版)[M]. 李松峰, 译. 北京: 机械工业出版社, 2021.
- 许令波. 深入分析Java Web技术内幕(修订版)[M]. 北京: 电子工业出版社, 2014.
- Nicholas S. Williams. Java Web高级编程 [M]. 王肖峰, 译. 北京: 清华大学出版社, 2015.
- 孙卫琴. Tomcat与Java Web开发技术详解(第3版)[M]. 北京: 电子工业出版社, 2019.
- 郭霖. 第一行代码Android(第3版)[M]. 北京: 人民邮电出版社, 2020.
- 欧阳燊. Android Studio开发实战:从零基础到App上线(第2版)[M]. 北京: 清华大学出版社, 2018.
- Dmitry Jemerov, Svetlana Isakova. Kotlin实战 [M]. 覃宇 等, 译. 北京: 电子工业出版社, 2017.
- Kristin Marsicano, Brian Gardner, Bill Phillips, Chris Stewart. Android编程权威指南(第4版)[M]. 王明发, 译. 北京: 中国工信出版集团, 人民邮电出版社, 2021.
- 刘望舒. Android进阶之光(第2版)[M]. 北京: 电子工业出版社, 2021.
- 邓凡平. 深入理解Android: Java虚拟机ART [M]. 北京: 机械工业出版社, 2019.
- 任玉刚. Android开发艺术探索[M]. 北京: 电子工业出版社, 2015.
- 林学森. 深入理解Android内核设计思想(上、下册)(第2版)[M]. 北京: 人民邮电出版社, 2017.
- 何红辉, 关爱民. Android 源码设计模式解析与实战(第2版)[M]. 北京: 人民邮电出版社, 2017.
- Christian Keur, Aaron Hillegass. iOS编程(第6版)[M]. 王风全, 译. 武汉: 华中科技大学出版社, 2019.
- 张益珲. Swift 4从零到精通iOS开发[M]. 北京: 清华大学出版社, 2019.
- Aaron Hillegass, Mikey Ward. Objective-C编程(第2版)[M]. 王蕾 等, 译. 武汉: 华中科技大学出版社, 2015.
- Matthew Mathias, John Gallagher. Swift编程权威指南(第2版)[M]. 陈晓亮, 译. 北京: 人民邮电出版社, 2017.
- Kazuki Sakamoto, Tomohiko Furumoto. Objective-C高级编程:iOS与OS X多线程和内存管理[M]. 黎华, 译. 北京: 人民邮电出版社, 2013.
- Erica Sadun. iOS Auto Layout开发秘籍(第2版)[M]. 孟立标, 译. 北京: 清华大学出版社, 2015.
- 珲少. iOS性能优化实战[M]. 北京: 电子工业出版社, 2019.
- 罗巍. iOS应用逆向与安全之道[M]. 北京: 机械工业出版社, 2020.
- Gaurav Vaish. 高性能iOS应用开发[M]. 梁士兴 等, 译. 北京: 人民邮电出版社, 2017.
- 刘浩. MATLAB R2020a完全自学一本通 [M]. 北京: 电子工业出版社, 2020.
- 天工在线. MATLAB 2020从入门到精通 [M]. 北京: 中国水利水电出版社, 2020.
- 苗志宏, 马金强. MATLAB面向对象程序设计[M]. 北京: 电子工业出版社, 2014.
- 徐潇, 李远 . MATLAB面向对象编程——从入门到设计模式(第2版)[M]. 北京: 北京航空航天大学出版社, 2017.
- 王文峰 等. MATLAB计算机视觉与机器认知[M]. 北京: 北京航空航天大学, 2017.
- 杨淑莹, 郑清春. 模式识别与智能计算——MATLAB技术实现(第4版)[M]. 北京: 电子工业版社, 2019.
- Eric Matthes. Python编程:从入门到实践(第2版)[M]. 袁国忠, 译. 北京: 人民邮电出版社, 2020.
- Magnus Lie Hetland. Python基础教程(第3版)[M]. 袁国忠, 译. 北京: 人民邮电出版社, 2018.
- Luciano Ramalho. 流畅的Python [M]. 安道 等, 译. 北京: 人民邮电出版社, 2017.
- Brett Slatkin. Effective Python:编写高质量Python代码的90个有效方法(第2版)[M]. 爱飞翔, 译. 北京: 机械工业出版社, 2021.
- Jan Erik Solem. Python计算机视觉编程[M]. 朱文涛 等, 译. 北京: 人民邮电出版社, 2014.
- Andreas C. Müller. Python机器学习基础教程[M]. 张亮, 译. 北京: 人民邮电出版社, 2018.
- 魏坤. Julia语言程序设计[M]. 北京: 机械工业出版社, 2018.
- 郝林. Julia编程基础(第2版)[M]. 北京: 人民邮电出版社, 2020.
- Ben Lauwens, Allen B. Downey. Think Julia [M]. Sebastopol: O’Reilly, 2019.
- Jalem Raj Rohit. Julia Cookbook [M]. Birmingham: Packt Publishing, 2018.
- Zacharias Voulgaris. Julia数据科学应用 [M]. 陈光欣, 译. 北京: 人民邮电出版社, 2018.
- 朱红庆. Julia机器学习核心编程:人人可用的高性能科学计算[M]. 北京: 电子工业出版社, 2019.
- Norman Matloff. R语言编程艺术[M]. 陈堰平, 译. 北京: 机械工业出版社, 2013.
- Andy Nicholls, Richard Pugh, Aimee Gott. R语言入门经典[M]. 姜佑 等, 译. 北京: 人民邮电出版社, 2018.
- Robert I. Kabacoff. R语言实战(第2版)[M]. 王小宁 等, 译. 北京: 人民邮电出版社, 2016.
- Hadley Wickham. 高级R语言编程指南[M]. 潘文捷 等, 译. 北京: 机械工业出版社, 2020.
- Brett Lantz. 机器学习与R语言(第2版)[M]. 李洪成 等, 译. 北京: 机械工业出版社, 2017.
- 程乾, 刘永, 高博. R语言数据分析与可视化从入门到精通[M]. 北京: 北京大学出版社, 2020.
- 周伟明.程序员的十层楼(一、二、三)[J]. 程序员, 2009(6):134-136; 2009(7):118-120; 2009(8):134-136.
注:本文版权归作者个人所有,如需转载请联系作者,未经授权不得转载。