脚本语言

问题描述:

什么是脚本语言,使他们很容易做快速原型?只是它们不是静态类型的?脚本语言

我是C#程序员,并没有太多的经验与JavaScript或Python ..或任何其他的脚本语言。

我越了解他们就越觉得她们可能是答案的一些我运行中面临的问题,当我需要得到一个快速的原型准备好“概念证明”

我想这是所有你没有写的代码,以及如何关注激光,你可以解决你的问题和解决方案。

您的代码主要有两个用途。首先是解决您的域问题。其次是让你的编译器/解释器高兴。

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

当你的变量是动态类型的时候,ORM可以非常简单。脚本语言(普通高级语言)的语法可以更简单和宽容。尽管如此,尽管我认为在你熟悉的语言方面你的工作效率最高。

对于我来说,单一的功能,最有利于快速发展,其中大部分脚本语言已经和大多数编译语言不这样做,是打破了应用程序在运行时的能力,更改代码,然后继续不运行失去了所有应用程序的对象和变量的现有状态。

几天前,Jeff Atwood在Coding Horror上有一个post。请注意,我认为动态打字和做我的意思是编程世界中最邪恶的东西(任何能够在运行时间不好的情况下检测到错误的东西,恕我直言),所以我不同意他的大部分帖子,但它仍然是信息。

+0

这就是那个导致这个问题的编码恐怖片。我一直想问这个问题很长一段时间......杰夫的帖子最终促使我问...... – Developer 2009-01-27 21:20:35

我也听到了很多。

我从来没有理解脚本的原型参数。不要误解我的意思,我喜欢使用脚本语言,但是当你用最终不会使用的语言编写代码时,我不明白你是如何证明的。你可能只需要编写伪代码。

例如,如果我用javascript写东西,那么我无法访问.net库。如果我打算用C#编写程序,这是一件大事。我发现你使用的库对你的代码有很大的影响。并因此在你的原型上。

什么是脚本语言,使他们很容易做快速原型?

我不会去想脚本语言什么使得他们很容易做到有用原型。就我个人而言,我尽可能接近真实的原型。我觉得这是确定是否有可能的最好方法。

+0

C#不是.NET库唯一的语言参与者。您可以轻松使用IronPython(一种脚本语言)来调用您的原型所需的任何.NET库。 – 2009-01-28 20:44:33

脚本或更精确的动态语言对他们来说有几个方面,可以使快速原型无痛化。首先,如果你想使用int作为一个字符串,反之亦然,它们的输入很弱。由于编译阶段几乎被删除,它们有更快的代码,编译和测试周期。他们也倾向于使编码更像你的思维过程。我正在考虑grep,地图,注入(红宝石),lambda函数,匿名函数等。

好东西。

你不花时间编译。

坏事

你不会从编译器错误幼稚得到帮助。

脚本语言对于快速的事情是了不起的。甚至足够大的。但是当谈到团队开发时,并非每个人都有经验来检测或理解像“空指针异常”这样简单的事情,编译器就有所作为。

  1. 内存管理是在PHP/Ruby的魔法

  2. 指针被包裹,并几乎完全原子参考文献管理处理

  3. 没有编译时

  4. 更高的执行水平余地为更容易调试钩子入口

    我一直在使用脚本局域网现在已经有十多年的历史了,我发现使用它们的胜利组合就像胶水一样可以用于更强大的动态链接/集成机器代码,比如c/C++。微软公司正在/正在采用它的ActiveX技术,但没有涉及微软。

两个字:即时满足。

乔尔有关此方面的工作条件Joel Test会谈:

这里的麻烦。我们都知道, 知识工作者通过获取 成“流”最好的工作,也被称为“在 区”之中,在那里他们完全 集中于自己的工作,充分 调出他们的环境...的 麻烦的是,进入“区域”是不容易的。当您尝试测量它时,它看起来需要平均为 15分钟才能开始工作,最大生产率为 ......另一个问题是 ,它很容易被淘汰区域的 。噪音,打来的电话, 吃午饭,不得不开车5 分钟到星巴克喝咖啡, 中断同事 - 特别是同事打断 - 所有敲你离开区域。

作为一名长期的Java程序员,我喜欢关于PHP的一件事,就是看看事情是否有效就像点击'Save'然后在我的浏览器上重新加载一样简单。我立即看到它是否有效。现在,如果我必须做一个构建(可能需要1-15分钟),部署(任何从10秒到一两分钟),并重新启动我的应用服务器(另一个30秒或更多取决于复杂性),然后我失去了我的思路(“退出了这个区域”)。

另一张海报提到了Jeff的专栏文章,它的内容与此相同。

脚本语言是很好的,因为当您得到即时反馈时,您的工作效率更高。

您只需在脚本语言中编写较少的代码,然后您就可以在c#中编写代码。当你拿出所有的变量删除,所需的类别删除等等时,它会惊奇地发现更小的东西。我还发现脚本语言对我来说更加高效,因为我是一个文本编辑器而不是IDE用户。无需返回到命令提示符并输入重新编译命令,每次运行程序只会节省两秒钟,但这会加起来。

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

  • 读-EVAL-打印循环(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));
    这种差异只会在更复杂的结构中变得更加明显。

  • 动态打字。不需要类型注释或者说明结构中每个数据类型的类型。这也导致了诸如鸭子打字之类的事情,在那里不需要编写界面样板。你只需调用一个方法,它可以工作,调用回退或触发异常。