谈写脚本、写代码和编程三者的区别

此为译文,原文地址:http://www.naelshawwa.com/scripting-coding-programming/


@Laurenonizzle 发了一条链接到一个论坛的推特,讨论写脚本,写代码,编程三者之间的区别。我把我的一些关于此问题的看法写在这里,不当之处欢迎批评指正。

就像一些人在论坛指出的那样,三者之间的区别有时比较模糊,因为这三种说法有时候可以互相转换。我可以同时在做写脚本,写代码和编程这三件事。如何定义你是在写脚本,还是写代码或者是写程序,常常取决于你在开发什么。


写脚本

传统意义上的写脚本常常令人联想到那些“不完整的”或者“受限制的”计算机语言,这些语言通常用来把一些不同的应用“粘合”到一起,或者只是写起来快速并且随意、能让某些实际中的任务自动化运行的简单的计算机语言。典型的例子有JavaScript,ActionScript, 和Shell脚本。

是的,也许10年前JavaScript就已经被看成是一种“受限制的”语言,那时候它通常被用于快速的格式校验或者给浏览器的文档内容加一些滚动效果,然而今天这些都已经是过去式了。但如今还有一些人认为JavaScript是一种“受限制的”语言,对于JavaScript的这种误解常见于那些并不理解它或者只用过它来使显示内容滚动起来的开发人员,还有一个原因是“JavaScrip”t中的后一个单词是“Script(脚本)”。关掉你浏览器里的JavaScript,然后试试使用Gmail,Facebook或者Google+。你会发现JavaScript已经不再是一种“不完整的”或者“受限制的”语言,实际上如果没有JavaScript,你的那些网页应用反而会看起来是“不完整的”,不完整的就像1995年时候的网页。如今,开发一款基于JavaScript的应用要求你像用C或者Java开发应用时那样思考和设计,你需要使用那些应用于后台的设计模式。说到后台,现在你甚至可以让JavaScript运行在服务器端,所以可以只用JavaScript就写出一个山寨的Gmail。

ActionScript也是这样。开始时ActionScript作为一种用来写Flash动画、游戏以及应用的脚本语言而出现。大约10到12年前,我还把Flash和ActionScript混为一谈。那时它运行不同的帧,并按照一帧一帧的原理来写游戏或者动画。今天,ActionScript 3.0实际上已经不再是脚本语言了,它和那些所谓完整的计算机语言是一样的。它能被编译并且运行在ActionScript虚拟机上,完全就像Java代码在Java虚拟机上编译及运行一样。在我看来,作为一种计算机语言,ActionScript和Java相比并没有欠缺什么。如果你还是认为ActionScript是一种“不完整的”或者“受限制的“语言,那么请浏览Flex.orgShowcase,然后清理掉你那些陈旧的观点,以便你能继续阅读这篇文章。

另一种关于写脚本的错误定义是,写脚本就是写一些让其他程序解析的指令,不过所谓代码其实都是这样的,代码都是些让其他东西运行的指令。那么用于数据库查询的SQL脚本呢?它也是一种用来写一些告知诸如MySql或者Oracle等程序如何获取数据的指令的脚本语言。但是我们有Oracle脚本员的说法吗?我们只会说SQL程序员。并且没有SQL程序员会说自己正在写一个找X和Y的交点然后把它和B相连的脚本。

那么,到底什么是写脚本?我认为写脚本就是写一个或多个工具使得一个或者一系列任务自动化,而这和使用什么语言来写无关。我有时候很懒,如果可以的话我想要写一个自动做早餐的脚本。不必只局限于命令行。用你觉得最合适的方法来尝试实现你想要的自动化。有时候我用shell脚本,有时可能是一个Excel脚本,可能是PHP,可以是Java,甚至可能是C,无论什么都可以。


写代码

来谈谈写代码吧。我本人并不喜欢写代码。但有时候我也是一个码农,这是工作的一部分。当我作为一名码农时,我就像这个家伙一样:



所以,所谓码农就是把一种语言编码成另一种语言的人。可以是把英语译成摩斯电码,也可以是把英语译成Java代码。当你写代码时,你就是在把需求翻译成你的应用所要运行的那个环境(服务器,PC,iPhone,浏览器等等)能够完全看懂的语言,这也就是所谓“代码猴子”的出处和我不喜欢写代码的原因。有时候你要做的只是搞清楚你要做的是什么并把它变成代码。


编程

给任何机器或者应用编程就是给它一套可以它可以运行的指令集。比如你最爱的咖啡机已经被编好程序使它可以在早晨7点15分准备好咖啡。比如你把自己喜欢的频道都编入到你车里的收音机里。或者比如你告诉你的浏览器怎样在网页上显示一个弹跳球的动态图。


那么,这篇文章的结论是什么呢?结论就是写脚本、写代码、编程都是一样的,抱歉本文对此给不出什么巧妙的解释。归根结底,无论你是在写脚本,写代码或者是编程,你所做的都是给某个环境,像是个人电脑、机器人、或者浏览器,提供一套指令集让它完成它需要完成的任务。这和高级语言还是低级语言无关,和语言是以”Script”结尾还是以“++”结尾无关,和运行在浏览器还是主机上无关,和被卖个无数人或者只有你一个人用无关。

我建议你不要用写脚本、写代码或是编程来定义自己在做什么。你是一个做软件的工匠,用最适合于你所面临问题的技术去设计并找到解决方案从而解决你需要解决的问题,这样就可以了。

 


展开阅读全文

没有更多推荐了,返回首页