脚本语言

时间:2009-01-27 21:06:38

标签: scripting

脚本语言是什么让它们变得如此容易进行快速原型设计?是不是他们没有静态输入?

我是一名C#程序员,对javascript或python以及其他任何脚本语言都没有多少经验。

我越了解他们,我越觉得它们可能是我遇到的一些问题的答案,当我需要快速原型准备好“概念证明”时

11 个答案:

答案 0 :(得分:7)

两个字:即时满足。

Joel在Joel Test的工作条件中谈到这一点:

  

这是麻烦。我们都知道   获得知识工作者最好的工作   进入“流动”,也被称为“流动”   区域“,它们是完全的   专注于他们的工作和充分   调出他们的环境......   麻烦的是,进入“区域”是   不容易。当你尝试测量它时,   看起来它需要平均值   最多15分钟开始工作   生产力...另一个麻烦是   这很容易被淘汰出局   区域。噪音,打来的电话   外出吃午饭,不得不开车5   分钟到星巴克咖啡,和   同事打扰 -   特别是工友的打扰    - 所有人都把你赶出了区域。

作为一名长期的Java程序员,我喜欢PHP的一个方面就是看看有没有什么工作就像单击“保存”然后在我的浏览器上重新加载一样简单。我立即看到它是否有效。

现在如果我必须进行构建(可能需要1-15分钟),部署(从10秒到1分钟或2分钟)并重新启动我的appserver(另外30秒或更长时间取决于复杂性)然后我'我失去了思路(“退出了区域”)。

另一张海报提到了杰夫关于这一点的专栏,它也是如此。

脚本语言很好,因为当您获得即时反馈时,您会更有效率。

答案 1 :(得分:3)

对我来说,最有利于快速开发的单一功能(大多数脚本语言都有,大多数编译语言都没有)是能够在应用程序运行时破坏它,更改代码,然后继续运行而不会丢失所有应用程序的对象和变量的现有状态。

答案 2 :(得分:2)

杰夫阿特伍德几天前在Coding Horror上有post这个问题。请注意,我认为动态打字和做什么意思是编程世界中最邪恶的事情(任何事情都推迟检测错误,直到运行时间不好,恕我直言),所以我不同意他的大部分帖子,但它仍然提供了丰富的信息。

答案 3 :(得分:1)

一般来说,有几件事情会浮现在脑海中:

  • read-eval-print-loop(REPL)允许您快速迭代小块代码。使用像Emacs这样的东西,您通常可以快速修复函数,使用键击将更新后的版本发送到解释器,然后跳转到解释器并测试它。而且这不会失去当前的计划状态。

  • 更高级别的编码。对哈希表,列表(和列表推导)等的语言级支持使得使用它们的障碍非常低。代码往往比使用它们的库版本更简洁。

  • 模糊数据和代码。如果你有一个常量表来初始化,你通常可以直接写出来。您是否愿意写下这样的内容:

    constants = {"Pi": 3.141, "e": 2.718}
    或类似
    HashTable constants = new HashTable();
    constants.insert("Pi", new Float(3.141));
    constants.insert("e", new Float(2.718));
    之类的差异只会因更复杂的结构而变得更加明显。

  • 动态输入。无需键入注释或拼出结构中每个数据的类型。这也导致像鸭子打字这样的东西,在那里不需要编写接口样板。您只需调用一个方法,它就可以工作,调用后备或触发异常。

答案 4 :(得分:0)

我认为这是你没有编写的所有代码,以及你可以对你的问题及其解决方案进行激光聚焦。

您的代码中包含的元素主要用于两个目的。首先是您的域名问题的解决方案。其次是让您的编译器/解释器满意。

当我使用javascript和actionscript同时编写​​代码时,这一点变得清晰,因为actionscript基本上是javascript,具有所有声明性开销。两者之间的区别正是您所描述的。这有点像信噪比的一种形式。你的工作需要花多少钱才能解决你的问题?你工作的工作量是多少?

答案 5 :(得分:0)

当动态输入变量时,ORM非常简单。脚本(一般更高级别)语言的语法可以更简单和宽容。在一天结束的时候,虽然我认为你能用你熟悉的语言最有效率。

答案 6 :(得分:0)

我也听到了很多。

我从来没有理解脚本的原型论证。不要误会我的意思,我喜欢脚本语言,但是当你用一种你不会最终使用的语言编写它时,我只是看不出你是如何证明某些东西是可能的。你也可以写一下伪代码。

例如,如果我在javascript中写一些东西,那么我就无法访问.net库。如果我打算用C#编写程序,这是一个大问题。我发现你使用的库会对你的代码产生很大的影响;因此在您的原型上。

  

脚本语言是什么让它们很容易进行快速原型设计?

我认为脚本语言没有任何意义可以让他们轻松地进行有用的原型设计。就个人而言,我尽可能地接近真实的原型。我发现这是确定是否有可能的最好方法。

答案 7 :(得分:0)

脚本或更准确地说,动态语言有几个方面可以使快速原型制作无痛。首先,如果你想使用int作为字符串,反之亦然,它们是弱类型的,因此可以宽容。由于几乎删除了编译阶段,因此它们具有更快速的代码,编译和测试周期。他们也倾向于使编码更像你的思考过程。我正在考虑grep,map,inject(在ruby中),lambda函数,匿名函数等。

答案 8 :(得分:0)

好事。

  

你没有花时间编译。

坏事

  

您没有从编译器那里获得天真错误的帮助。

脚本语言对于快速的事情来说非常棒。甚至对于较大的那些也足够好。但是当谈到团队开发时,并不是每个人都有探索或理解像“空指针异常”这样简单的东西的经验,编译器会有所作为。

答案 9 :(得分:0)

  1. 内存管理在PHP / Ruby中很神奇

  2. 指针被包装并几乎完全用原子参考管理处理

  3. 无编译时间

  4. 更高的执行级别为更容易进行调试的钩子输入留出了空间

    我已经使用脚本语言十多年了,我发现使用它们的成功组合是更强大的动态链接/集成机器代码(如c / c ++)的粘合剂。微软正在使用其activex dll等方式,但没有涉及微软的方向。

答案 10 :(得分:0)

您只需使用脚本语言编写的代码少于c#中的代码。当你拿出所有变量declerations,所需的类declerations等时,它会让你感到惊讶。我发现脚本语言对我来说更有效率,因为我是一个文本编辑器而不是IDE用户。无需返回命令提示符并输入重新编译的命令,每次运行程序只能节省两秒钟,但这会增加。