2023年你应该关注的13大脚本语言

2023年你应该关注的13大脚本语言

脚本语言是一种特殊的计算机语言,你可以用它来向其他软件发出指令,如网络浏览器、服务器或独立的应用程序。今天许多最流行的编码语言都是脚本语言,如JavaScript、PHP、Ruby、Python和其他一些语言。

由于脚本语言使编码更简单、更快速,它们被广泛用于网络开发就不足为奇了。

然而,这并不是它们的唯一应用领域。还有用于操作系统、统计分析软件、办公应用程序、游戏引擎和许多其他种类平台的脚本语言。

  1. 什么是脚本语言?
  2. 脚本语言与编程语言
  3. 关于脚本语言的困惑
  4. 13种最佳脚本语言

什么是脚本语言?

脚本语言可以在一个特定的运行环境中执行不同的动作,如自动执行任务、增强上级软件的功能、执行配置、从数据集中提取数据等。

脚本语言可以通过两种方式产生:

  1. 运行时环境可以引入自己的脚本语言,如GNU操作系统的Bash或微软Office应用程序的VBA。
  2. 运行时环境可以采用现有的脚本语言,例如,MongoDB的 mongo shell是围绕JavaScript建立的。

另一方面,有时是脚本语言首先存在,并诞生了它自己的父平台–无论这听起来多么奇怪。

这就是Node.js的情况,它是一个后端运行环境,它的诞生是为了让网络开发者不仅在前端使用JavaScript,而且在后端也使用,遵循 “JavaScript无处不在 “的范式。

脚本在编程中意味着什么?

脚本的动作本质上是写一系列的命令,由应用程序或脚本引擎逐一解释。尽管脚本指导平台做什么(给它一个脚本来阅读和解释),但执行是由运行时环境而不是由脚本语言本身来完成。

这就是脚本语言与编程语言的不同之处,比如Java,你可以 “只写一次,在任何地方运行”(Java的官方口号,意思是Java程序可以作为独立的应用程序在任何环境中运行;自从被创造出来后,它也成为WORA原则,指的是跨平台能力)。

脚本语言与编程语言

尽管 “脚本语言 “和 “编程语言 “这两个词经常被交替使用,但它们并不是一回事。

特定平台与平台无关

脚本语言是特定平台的,而编程语言是平台无关的(跨平台),因为它们有自我执行的能力。例如,你可以在任何操作系统上运行一个Java程序。

(大部分)解释的与编译的

虽然编程语言是编译的,但脚本语言大多是解释的–尽管有一些脚本语言既是编译的又是解释的,如Python和Groovy。

“编译 ”意味着编程语言有自己的编译器,在运行前将语法翻译成机器代码。相比之下,脚本语言在运行时由它们所运行的平台的解释器逐行进行解释。

在运行时更快与更慢

由于实现上的差异,编程语言比脚本语言运行得更快,因为它们不必实时编译。编译器在执行前还执行集体错误处理,而解释器一行一行地评估代码,因此每次遇到错误时都会暂停(或完全停止)。

这也增加了脚本语言的总执行时间,即使在现代和更快的硬件上,这比以前问题更小。

更多与更少的代码密集型

编程语言的代码密集度更高,因为你必须手动完成许多事情,而在脚本语言的情况下,这些事情是由平台处理的。如果你使用脚本语言,你必须写更少的代码

独立的应用程序与作为堆栈一部分的应用程序

有一些事情你根本无法用脚本语言来做。最重要的是,你不能用脚本语言创建独立的桌面和移动应用程序,因为没有运行时环境来解释它们。

例如,你只能将WordPress和LaravelPHP框架用于网站和网络应用,因为它们使用网络浏览器作为其运行环境。同样,WordPress的移动应用程序在移动运行环境中运行,如Capacitor,它结合了网络视图。

脚本与编程语言 – 差异概述

因此,脚本语言与编程语言的主要区别如下:

脚本语言  编程语言
特定的平台  平台不可控(跨平台)
(主要是)解释式 编译的
运行时较慢 运行时较快
代码密集度较低 代码密集度较高
创建作为堆栈一部分的应用程序 创建独立的应用程序

关于脚本语言的困惑

有一些关于脚本语言的困惑是你经常会遇到的,所以在进入最佳脚本语言之前,我们先来看看这些困惑。

最重要的是,谈论前端与后端脚本语言并没有什么意义,尽管你在网上看到的许多文章都使用这种分组方式。

实际上,目前只有一种前端脚本语言在使用,那就是JavaScript(以前也有其他的,比如ActionScript和JScript,但现在都已经废弃了)。

在脚本语言的背景下,重要的不是前端与后端,而是脚本语言可以运行的运行环境。

请注意,”前端 “只是指网络浏览器可以解释的东西(图像、字体、标记、样式表、脚本、其他类型的静态文件)。例如,尝试直接从web浏览器中打开一个PHP文件:你不能,因为PHP应用服务器必须解释它–所以PHP在web开发的背景下是一种后端脚本语言,而在脚本语言的背景下是服务器栈(如LAMP)的应用层。

除了Web开发(前端和后端脚本),脚本语言还可以用于多种用途,如编程和配置操作系统和特定的应用程序/环境,操作数据集,自动化任务,以及许多其他用途。

一种脚本语言也可以在多种环境中运行。

哪些不是脚本语言

在讨论最好的脚本语言之前,让我们看看那些有时被错误地称为脚本语言的编码语言,但你不能用它们来编写脚本:

  • 标记语言,如HTML和XML。在HTML中,有事件处理的属性,如onclick和onmouseover,但这些仍然是JavaScript的回调。
  • 样式表语言,如CSS、Sass和LESS。
  • 任何一种建立在任何脚本语言之上的库或框架,如jQuery、PostCSS、React、Vue、Angular、Rails、Grails、Django、Laravel、WordPress和其他。
  • 被编译成脚本语言的语言,如TypeScript和CoffeeScript。
  • SQL,因为它是用于管理关系数据库管理系统(RDBMS)中的数据,如MySQL和MariaDB。他们不允许你编写动态功能。然而,许多RDBMS有外壳,让你使用脚本语言(如MySQL Shell中的JavaScript或Python)。
  • 一个或多个脚本语言的运行环境,如NodeJS。

13种最佳脚本语言

有许多伟大的脚本语言值得在本指南中提及,但它们已不再处于活跃的开发状态。然而,以下13种脚本语言是定期更新的,而且也在生产中使用

因此,如果你正在考虑学习一种新的脚本语言作为新的职业道路,它们都值得一试。

  1. JavaScript/ECMAScript
  2. PHP
  3. Python
  4. Ruby
  5. Groovy
  6. Perl
  7. Lua
  8. Bash
  9. PowerShell
  10. R
  11. VBA
  12. Emacs Lisp
  13. GML

1. JavaScript/ECMAScript

javascript

JavaScript

JavaScript是ECMA-262标准的一个实现,该标准定义了ECMAScript(ES)通用脚本语言。换句话说,JavaScript是ECMAScript语言的一种方言,因此它没有独立的规范,但使用与ECMAScript相同的语法

JavaScript有一流的函数(函数被视为变量),并支持基于原型的面向对象的编程(现有的对象被作为原型重复使用)。

代码示例

ECMAScript使用的是大括号式的语法。下面的JavaScript代码例子将1到10的数字相加,并将结果输出到控制台(你可以在你的网络浏览器的JavaScript控制台中通过点击F12来测试):

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
let total = 0, count = 1;
while (count <= 10) {
total += count;
count += 1;
}
console.log(total);
// 55
let total = 0, count = 1; while (count <= 10) { total += count; count += 1; } console.log(total); // 55
let total = 0, count = 1;
while (count <= 10) {
total += count;
count += 1;
}
console.log(total);
// 55

Source: Eloquent JavaScript by Marijn Haverbeke: Introduction

使用案例和环境

JavaScript是现代网络浏览器使用的脚本语言,例如Chrome的V8引擎和Mozilla的SpiderMonkey引擎。除了前端网络开发,它也可以在非浏览器环境中使用。NodeJS运行环境的建立是为了让网络开发者能够在后端使用它。

一些NoSQL数据库管理系统的外壳,如MongoDBApache CouchDB,以及一些关系型数据库管理系统,如前面提到的MySQL外壳,也使用它作为脚本语言。

2. PHP

PHP

PHP

PHP是一种通用的、开源的脚本语言,用于后端网络开发。这个缩写最初代表 “个人主页”,因为PHP最初是为了给静态HTML页面添加动态功能而创建的。

从那时起,PHP已经发展成为一种独立的语言,所以现在这个缩写是在 “超文本预处理器 “的意义上使用。PHP是松散型的(不必声明变量的数据类型),可以嵌入到HTML文档中,并且也有面向对象的特性。

代码示例

PHP有一个类似C语言的语法。下面的PHP代码例子创建了一个有四个元素的数字数组,在它们之间循环,每项乘以2,并在循环结束后取消 $value 变量的设置。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
$value = $value * 2;
}
// $arr is now array(2, 4, 6, 8)
unset($value);
?>
<?php $arr = array(1, 2, 3, 4); foreach ($arr as &$value) { $value = $value * 2; } // $arr is now array(2, 4, 6, 8) unset($value); ?>
<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
$value = $value * 2;
}
// $arr is now array(2, 4, 6, 8)
unset($value);
?>

Source: PHP documentation: Control Structures

使用案例和环境

PHP 可以在不同的 HTTP 服务器上执行,其中 ApacheNginx 是最流行的。

最常见的PHP服务器栈是LAMP(Linux,Apache,MySQL,PHP),LEMP(Linux,Nginx,MySQL,PHP),以及WAMP(Windows,Apache,MySQL,PHP)和MAMP(macOS,Apache,MySQL,PHP)。

许多流行的内容管理系统(CMS),如WordPress、DrupalJoomla,以及Web应用框架,如Laravel、Symfony和CodeIgniter,也都使用了PHP语言,它们都建立在PHP语言之上,并以额外的功能来增强它。

你也可以使用PHP进行本地WordPress开发。请看我们关于Javascript和PHP的主要区别的深入指南。

3. Python

Python

Python

Python目前是GitHub上第二大最流行的编码语言(仅次于JavaScript)。它因其清晰简洁的语法而受到喜爱–用Python编码时,你需要输入的东西比大多数语言少得多。

Python是一个自由和开放的项目,由Python软件基金会管理。它支持结构化、面向对象和函数式编程范式,并有一个广泛的标准库,是常用的Python模块的集合。

代码示例

Python不使用大括号,分号是可选的,所以代码很容易读和写。下面的Python代码例子在0到4之间的整数中循环,并将它们打印出来:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
count = 0
while count < 5:
print(count)
count += 1
count = 0 while count < 5: print(count) count += 1
count = 0
while count < 5:
print(count)
count += 1

Source: Learn Python: Loops

使用案例和环境

最流行的 Python 实现是 CPython,用 C 语言编写。它也是你和Python语言一起下载的参考实现。尽管Python是一种解释型语言,但CPython同时使用了编译和解释步骤。首先,它将源代码编译成字节码(与机器码不同),在运行时进行解释。

除了CPython,Python还有其他的运行时环境,最重要的是PyPy,它省略了编译步骤,只做JIT(即时)解释。Python的实现是跨平台的,意味着它们可以在多个操作系统上运行,包括Linux、Windows和macOS。

Python语言经常被用于机器学习、后端网络开发(Django是最流行的网络框架)、数据分析、自动化、科学计算和网络抓取

要了解学习Python的最佳方法,请查看我们关于Python教程的博文。

4. Ruby

Ruby

Ruby

Ruby是一种开源的、通用的脚本语言,具有紧凑和易于阅读的语法。它遵循面向对象编程的原则,可以让你写出简洁而有逻辑的代码,使其成为最容易学习的编程语言之一。在Ruby中,所有东西都是一个对象–甚至包括在大多数语言中属于基元的类型,如布尔和整数。

面向对象的概念,如继承、混合和元类,也被大量使用。

尽管Ruby有一个纯粹的面向对象的设计,但它也支持程序性编程(在类之外定义的函数和变量属于 Self 对象)和功能性编程(通过匿名函数、闭包和延续)。

代码示例

Ruby有一个类似于Python的简洁的语法。下面的Ruby代码示例将 KaraokeSong 类定义为 Song 类的一个子类:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
class KaraokeSong < Song
def initialize(name, artist, duration, lyrics)
super(name, artist, duration)
@lyrics = lyrics
end
end
class KaraokeSong < Song def initialize(name, artist, duration, lyrics) super(name, artist, duration) @lyrics = lyrics end end
class KaraokeSong < Song
def initialize(name, artist, duration, lyrics)
super(name, artist, duration)
@lyrics = lyrics
end
end

Source: Programming Ruby reference guide: Classes, Objects, and Variables

使用案例和环境

Ruby主要用于后端网络开发,为一些强大的网络应用框架提供动力,如Ruby on Rails。许多流行的网站和应用程序都运行在Ruby on Rails上,如Airbnb、Shopify、GitHub和Hulu。

Ruby也是许多流行的网络开发工具所使用的语言,最明显的是Sass CSS预处理器、Jekyll静态网站生成器和Vagrant虚拟机环境。

Ruby的默认实现是YARV(Yet Another Ruby Virtual Machine)。它改变了Ruby的原始解释器Matz’s Ruby Interpreter(也是Ruby MRI或CRuby),该解释器曾因速度和可扩展性问题而受到批评。

还有几个竞争性的Ruby运行环境,如JRuby(让你在Java虚拟机上运行Ruby),mruby(一个轻量级的实现,你可以嵌入到你的应用程序中),TruffleRuby(Oracle的Ruby解释器建立在GraalVM上),Rubinius(Ruby的云原生虚拟机),以及其他

5. Groovy

Groovy

Groovy

Groovy是一种为Java虚拟机(JVM)编写的令人难以置信的灵活语言,既可以作为脚本语言,也可以作为编程语言。它是一个开放源码项目,由Apache软件基金会维护。Groovy是一种面向对象的语言,扩展了 java.lang.Object 超类。

它同时支持静态和动态类型(类型检查可以在编译时和运行时进行),并对列表、关联数组、正则表达式和标记语言(如HTML和XML)提供本地支持。

你可以将Groovy与现有的Java库一起使用。

代码示例

Groovy有一个与Java兼容的语法,使用大括号。下面的Groovy代码示例定义了李莲英类的纬度和经度属性以及 getAt() 方法:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
@Immutable
class Coordinates {
double latitude
double longitude
double getAt(int idx) {
if (idx == 0) latitude
else if (idx == 1) longitude
else throw new Exception("Wrong coordinate index, use 0 or 1")
}
}
@Immutable class Coordinates { double latitude double longitude double getAt(int idx) { if (idx == 0) latitude else if (idx == 1) longitude else throw new Exception("Wrong coordinate index, use 0 or 1") } }
@Immutable
class Coordinates {
double latitude
double longitude
double getAt(int idx) {
if (idx == 0) latitude
else if (idx == 1) longitude
else throw new Exception("Wrong coordinate index, use 0 or 1")
}
}

Source: Groovy Documentation: Semantics

使用案例和环境

由于Groovy可以编译成Java字节码,你可以把它作为一种类似于Java的通用编程语言。在这种情况下,你可以在运行前使用groovyc编译器(相当于javac)将源代码编译成字节码。

然而,也有许多Groovy的实现,让你把它作为一种脚本语言使用。最受欢迎的是Grails网络应用框架(以前称为Groovy on Grails)和Gradle构建自动化工具,但也有其他一些

6. Perl

Perl

Perl

Perl是一种通用的脚本语言,已经存在了三十多年(从1987年开始)。最初,它是作为一种用于报告处理的UNIX脚本语言创建的。这也是它名字的由来,因为Perl的缩写是 “实用提取和报告语言(Practical Extraction and Reporting Language)”。

Perl语言在20世纪90年代开始流行,当时程序员们开始广泛使用它来编写CGI(Common Gateway Interface)脚本,这是一种较早的网络服务器接口规范(目前,它主要被传统网站使用)。

尽管是比较早的参与者,Perl仍然是TIOBE指数中的第11位,也是GitHub上最受欢迎的语言的第21位(截至2020年10月)。

代码实例

Perl的语法与C语言相似。下面的Perl代码示例首先定义了计算并返回一个数字的平方的 square() 子程序,然后传递数值8作为参数,运行该子程序,并将结果保存到 $sq 变量中:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sub square {
my $num = shift;
my $result = $num * $num;
return $result;
}
$sq = square(8);
sub square { my $num = shift; my $result = $num * $num; return $result; } $sq = square(8);
sub square {
my $num = shift;
my $result = $num * $num;
return $result;
}
$sq = square(8);

Source: Perl docs: Perl Intro

使用案例和环境

尽管这些天来,Perl 并不是网络开发者最经常的选择,但它还是可以成功地用于后端开发。除了CGI运行环境,它还可以在Apache和Nginx网络服务器上执行–LAMP栈实际上是LAMPP,代表Linux、Apache、MySQL、PHP和Perl。

还存在一些Perl网络开发框架,其中CatalystMojoliciousDancer是最流行的框架。

Perl被一些著名的网站和应用程序所使用,如亚马逊、IMDB、Booking.com和BBC iPlayer。它也被用于其他领域,如网络编程和系统管理。你还可以查看Perl综合档案网络(CPAN),那里有25000多个开源Perl项目供你下载。

7. Lua

Lua

Lua

Lua是一种快速和轻量级的脚本语言。lua “一词在葡萄牙语中是 “月亮 “的意思,因为该语言是由巴西里约热内卢的天主教大学开发和维护的。Lua支持程序性、面向对象和函数式编程范式。

由于Lua的解释器是用C语言编写的,它可以很容易地使用其C API嵌入到应用程序中。也就是说,你可以使用Lua来扩展现有的以C语言编写的应用程序,如C、C++、C#、Java、Perl、Ruby和其他语言。

代码示例

Lua有一个简洁易读的语法,类似于Python和Ruby。下面的Lua代码例子显示了如何使用 if-then-else 语句。首先,它对 op 变量进行评估,然后根据其值进行基本的算术运算:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
if op == "+" then
r = a + b
elseif op == "-" then
r = a - b
elseif op == "*" then
r = a * b
elseif op == "/" then
r = a / b
else
error("invalid operation")
end
if op == "+" then r = a + b elseif op == "-" then r = a - b elseif op == "*" then r = a * b elseif op == "/" then r = a / b else error("invalid operation") end
if op == "+" then
r = a + b
elseif op == "-" then
r = a - b
elseif op == "*" then
r = a * b
elseif op == "/" then
r = a / b
else
error("invalid operation")
end

Source: Programming in Lua reference guide: Statements

使用案例和环境

默认的Lua实现并不直接解释源代码,而是首先将其编译成字节码,然后在Lua虚拟机上执行。由于所有这些都是在运行时发生的,所以你不需要执行手动编译步骤(尽管你可以选择在运行时之前编译Lua以提高性能)。

还有其他的Lua实现,如 LuaJITLuaVela和其他许多实现。

Lua经常被用来开发视频游戏,如《愤怒的小鸟》、《魔兽世界》和《严峻的凡丹戈》。由于它很容易嵌入,它也是嵌入式设备的经常性选择,如机顶盒、汽车的仪表盘(如沃尔沃)、IP摄像机(如思科)等。

它也可以用于网络开发,因为Apache和Nginx服务器都有一个Lua模块(这里是Apache的mod_lua,这里是Nginx的ngx_http_lua_module)。维基百科选择Lua作为其模板脚本语言,Adobe Photoshop Lightroom的用户界面也是用Lua编写的。

8. Bash

Bash

Bash

Bash既是GNU操作系统的命令行解释器(shell)的名字,也是属于脚本语言的名字。Linux “实际上是使用Linux内核的GNU操作系统(内核是操作系统的核心部分,它是操作系统加载的第一个程序)。

它是原始UNIX的Bourne shell(sh)的替代品–Bash的首字母缩写代表 “Bourne Again SHell”(”重生的外壳 “的双关语)。

除了作为Bourne shell语法的超集,Bash还包括其他shell脚本语言的功能,如KornShell(ksh)C shell(csh)–例如,命令行编辑和命令历史。你可以在交互式模式下使用Bash(一次执行一条命令并等待机器的回复)和脚本模式(一次运行一组命令–Bash脚本)。

代码示例

像大多数CLI脚本语言一样,Bash有一个简单的、描述性的语法。下面的Bash代码例子从当前文件夹中选择一个文件,并输出一个包含文件名称和索引的信息:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
select fname in *;
do
echo you picked $fname \($REPLY\)
break;
done
select fname in *; do echo you picked $fname \($REPLY\) break; done
select fname in *;
do
echo you picked $fname \($REPLY\)
break;
done

Source: Bash Reference Manual: Conditional Constructs

使用案例和环境

你可以使用Bash对你的操作系统进行修改和执行不同的操作,比如执行命令,执行大多数人都会使用图形用户界面的任务(比如创建、移动或删除文件夹和文件),定制和自动化管理任务,连接到远程服务器,以及其他许多操作。

Bash是许多基于Unix的操作系统的默认外壳,包括大多数Linux发行版和所有macOS版本,直到2019年用Z shell(Zsh)取代Bash的macOS Catalina。你也可以在Windows 10上运行Bash脚本,使用微软开发的Windows Subsystem for Linux(WSL)兼容层。

9. PowerShell

PowerShell

PowerShell

最初,PowerShell是一种仅用于Windows操作系统的命令行外壳和脚本语言。此后,微软将其开源并从只能创建Windows应用程序的.NET Framework转移到.NET Core,可以为Windows、Linux和macOS创建应用程序。这意味着PowerShell现在是跨平台的。

它也从Windows PowerShell改名为PowerShell Core,与底层框架相对应。与大多数命令行shell不同,PowerShell接受并返回.NET对象而不是纯文本,这为任务自动化提供了新的机会。

代码示例

PowerShell有一个紧凑的语法,使得在命令行中工作更快。下面的PowerShell代码例子创建了一个boot.ini文件的备份,并将其保存到boot.bak文件中:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Copy-Item -Path C:\boot.ini -Destination C:\boot.bak
Copy-Item -Path C:\boot.ini -Destination C:\boot.bak
Copy-Item -Path C:\boot.ini -Destination C:\boot.bak

Source: PowerShell Documentation: Working with Files and Folders

使用案例和环境

您可以在Windows、Linux、macOS操作系统和一些ARM设备(如可穿戴设备、多媒体播放器、平板电脑和其他消费类电子设备)上使用PowerShell。

你可以使用PowerShell进行系统管理、任务自动化和配置管理。要找到PowerShell模块和脚本,你也可以查看PowerShell Gallery和微软的官方样本脚本集

10. R

R脚本语言

R

R既是一种软件环境,也是一种脚本语言,你可以用它来进行统计计算、数据分析和图形显示。它是一个免费和开源的GNU项目,也是S统计计算语言的一个实现(现在已经不在积极开发中)。

R允许你使用许多不同的统计技术,如经典的统计测试、聚类、时间序列分析、线性和非线性建模,以及其他。

代码示例

R的语法与大多数脚本语言不同,也有一些不寻常的元素–例如,主要的赋值运算符是 <-,而不是 = 等号,而且它有无循环–在Sharon Machlis的《R初学者指南》中可以看到更多关于R语法的怪癖。

下面的R代码例子为 fruit 向量(R中包含相同类型元素的基本数据结构)定义了一个 names 属性,使用字母数字名称(orangebananaapplepeach)来帮助识别其组成部分。之后, lunch(或另一个)子向量可以使用其别名访问每个组件:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
> fruit <- c(5, 10, 1, 20)
> names(fruit) <- c("orange", "banana", "apple", "peach")
> lunch <- fruit[c("apple","orange")]
> fruit <- c(5, 10, 1, 20) > names(fruit) <- c("orange", "banana", "apple", "peach") > lunch <- fruit[c("apple","orange")]
> fruit <- c(5, 10, 1, 20)
> names(fruit) <- c("orange", "banana", "apple", "peach")
> lunch <- fruit[c("apple","orange")]

Source: An Introduction to R: Index vectors; selecting and modifying subsets of a data set

使用案例和环境

R软件环境是跨平台的;你可以在Windows、Linux和macOS操作系统上运行它。默认的R实现也可以从其他一些脚本语言中获得,如PythonPerl。这意味着,你可以使用这些脚本语言访问R的所有统计功能。

除了默认的R环境,你也可以在其他环境中使用R脚本语言,比如pqR(代表 “相当快的R版本”)和Renjin(在Java虚拟机之上的R实现)。

11. VBA

VBA

VBA

VBA是Visual Basic for Applications的缩写,它是Visual Basic 6编程语言的一个实现(自2008年以来没有在积极开发)。它是为微软Office应用程序创建的,使开发人员能够将重复的任务自动化,增加新的功能,并与文档的最终用户互动。

与Visual Basic类似,VBA遵循事件驱动的编程范式,将用户行为等事件置于驱动程序流程的中心。

由于Microsoft Office应用程序有一个图形用户界面,你可以将VBA脚本附加到菜单按钮、键盘快捷键、宏(可编程模式)和OLE事件(对象链接和嵌入,让你从另一个应用程序控制;这是微软的专有技术)。

代码示例

由于VBA是基于Visual Basic(它是BASIC的增强版),它使用的语法类似于BASIC(初学者多用途符号指令代码)系列的语言–这意味着它对初学者非常友好。

下面的VBA代码示例使用 SignatureInfo 对象的 GetCertificateDetail() 方法来获取数字证书的到期日:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Sub GetCertDetails()
Dim objSignatureInfo As SignatureInfo
Dim varDetail As Variant
strDetail = objSignatureInfo.GetCertificateDetail(certdetExpirationDate)
End Sub
Sub GetCertDetails() Dim objSignatureInfo As SignatureInfo Dim varDetail As Variant strDetail = objSignatureInfo.GetCertificateDetail(certdetExpirationDate) End Sub
Sub GetCertDetails()
Dim objSignatureInfo As SignatureInfo
Dim varDetail As Variant
strDetail = objSignatureInfo.GetCertificateDetail(certdetExpirationDate)
End Sub

Source: Office VBA Reference: SignatureInfo object

使用案例和环境

VBA脚本语言被嵌入到大多数微软Office应用程序中,分别是Access、Excel、Office for Mac、Outlook、PowerPoint、Project、Publisher、Visio和Word–在微软的文档网站上每一个都有单独的参考指南,而一般的VBA概念则在库参考中详细说明。

除了微软的Office应用程序,还有其他应用程序也支持VBA,如AutoCADCorelDRAW

12. Emacs Lisp

Emacs Lisp

Emacs Lisp

Emacs Lisp是一种特定领域的脚本语言,为GNU Emacs文本编辑器设计。它是Lisp编程语言家族的一种方言(名字来自LISt Processor)。

由于Emacs Lisp被设计为在代码编辑器中使用,它带有该环境特有的功能集,如文本扫描和解析、缓冲区(可编辑文本的对象)和显示管理,以及其他。

Emacs Lisp脚本语言与编辑器界面本身紧密结合,所以每个命令也是一个Lisp函数,你可以从你的脚本中调用,定制参数也是Lisp变量。

代码实例

Emacs Lisp的语法是基于全括号的前缀符号,如果你以前没有使用过任何Lisp语言,一开始会有点难读。

下面的Emacs Lisp代码例子定义了两个变量(符号),并给每个变量分配了一个值列表–一个树木列表(pinefiroakmaple)到符号trees ,一个食草动物列表(gazelleantelopezebra)到符号 herbivores

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
(setq trees '(pine fir oak maple)
herbivores '(gazelle antelope zebra))
(setq trees '(pine fir oak maple) herbivores '(gazelle antelope zebra))
(setq trees '(pine fir oak maple)
herbivores '(gazelle antelope zebra))

Source: An Introduction to Programming in Emacs Lisp: Setting the Value of a Variable

使用案例和环境

Emacs文本编辑器是一个跨平台的应用程序,你可以安装在Windows、Linux和MacOS机器上。

使用Emacs Lisp脚本语言,你可以扩展和定制代码编辑器,重复和自动处理,创建图表,将焦点限制在特定区域(为了安全),搜索正则表达式,存储文本,定义模式和键盘映射,向用户提问,以及执行许多其他操作。

还有一些Emacs Lisp的配置框架–Doom EmacsSpacemacs是最著名的。

13. GML

GML

GML

首字母缩写GML代表GameMaker语言。它是游戏开发中使用的特定领域脚本语言的一个好例子。GML是属于GameMaker Studio 2的专有脚本语言,这是一个跨平台的游戏引擎和开发平台,由YoYo Games拥有和维护。

尽管GML主要用于控制游戏对象,但它不是一种面向对象的语言,而是一种程序性语言。它允许你从任何游戏对象中调用自定义脚本。

除了GML脚本语言,GameMaker Studio 2还有一个可视化的脚本工具,叫做拖放DnD)。由于GameMaker Studio 2的灵活性,你也可以将DnD与你的GML脚本混合起来。

代码示例

GML的语法类似于JavaScript和其他类似C的语言。

下面的GML代码示例使一个游戏对象以每步5像素的速度向屏幕上的鼠标指针水平移动。一旦它到达指针的当前位置,脚本就会创建一个爆炸效果层,运行它(屏幕上有一个爆炸效果),然后销毁这个实例(爆炸效果被删除):

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
if mp_linear_step(mouse_x, mouse_y, 5, 0) {
instance_create_layer(x, y, "Effects", obj_Explosion);
instance_destroy();
}
if mp_linear_step(mouse_x, mouse_y, 5, 0) { instance_create_layer(x, y, "Effects", obj_Explosion); instance_destroy(); }
if mp_linear_step(mouse_x, mouse_y, 5, 0) {
instance_create_layer(x, y, "Effects", obj_Explosion);
instance_destroy();
}

Source: GameMaker Studio 2 Docs  Scripting  GML Reference  Movement and Collisions – Motion Planning

使用案例和环境

GML是由GameMaker Studio 2解释的,如果你想用这种脚本语言开发游戏,你需要购买。

价格取决于你想要创建游戏的平台–Mac和Windows游戏是最便宜的;跨平台(Windows、macOS、Ubuntu)桌面游戏、HTML5网页游戏、UWP(Universal Windows Platform)游戏和跨平台(Android、Fire、iOS)移动游戏处于中等水平;而PS4、Xbox One和Nintendo Switch是最昂贵的。

用GML制作的视频游戏的一些例子包括《黑洞》、《10秒忍者X》、《死亡赌注》、《Deltarune》和其他一些游戏。

小结

毫无疑问,脚本语言是迷人的。它们有许多不同的变化、语法和实现方式,可以用来做很多事情。

从建立动态网站,到自动化系统管理,到创建视频游戏,等等。

关于脚本语言,需要记住的最重要的三点是。

它们不能独立运行,而总是需要一个带有该脚本语言解释器的环境(实现,运行时间)。

有时你可以使用通用的脚本语言来访问主要为其他编程或脚本语言创建的环境和平台。想想JRuby (让你在Java虚拟机上运行Ruby),Renjin (同样在JVM上的R实现),Rpy2 (你可以从Python中使用的R接口),就是很好的例子。

最后,在学习一种新的脚本语言之前,使用TIOBE指数GitHut检查一下它目前的流行程度总是一个好主意。

根据它,你还可以找到更多或更少的样本脚本、GitHub仓库、模块库、参考指南、详细的手册和应用展示,这将有助于你开始使用该语言……并获得报酬更高的项目和工作!

评论留言