从静态语言转变为动态语言

时间:2009-02-24 20:44:03

标签: dynamic static

互联网和SO上有很多讨论,即herehere,关于静态和动态语言。

我不打算再问一个与另一个。相反,我的问题是那些从静态类型语言移动(或至少试图移动)到动态的人。

我不是在谈论在您的网页或其他嵌入静态类型软件或小型个人脚本的脚本语言中适度使用JS。我的意思是将动态语言作为您在团队中开发生产质量软件的主要通用语言。

那很容易吗?最大的优势和最大的挑战是什么?它有趣吗? :)

UPD:你觉得IDE支持足够好了吗?您是否发现需要较少的IDE支持?

5 个答案:

答案 0 :(得分:10)

那么容易吗?

中度。一些Java主义是很难打破的习惯。我的前六个月,我用Python编写了Python。恶心。但是,一旦我结束了,我就没有回头了。

最大的优势是什么?

从“write - > compile - > build - > run - > break - > debug - > write”cycle to a“write - > run - > break - > write “周期。需要时间来熟悉Python命令行解释器的即时满足感。在尝试编写(更少编译)任何代码之前,我已经习惯于无休止的设计和规划。

起初我认为python命令行是一种“仅限教育”的界面。然后阅读在>>>处输入应用程序的docstrings,doctests和用户指南提示,我开始意识到,真正优秀的Python软件将复杂性和细微差别归结为可以交互式输入的内容。

[我希望我可以设计干净利落的东西。]

最大的挑战是什么?

多重继承。我很少使用它。

这很有趣吗?

到目前为止。

它的效率也非常高。更多时间用户需求和实际数据。使用适当的接口规划继承层次结构以减少意义正确编译的时间更少,可以扩展到至少持续到下一个版本。

答案 1 :(得分:5)

如果我是你,我会尝试Scala !!!。

Scala有一些非常有趣的方面让你感觉自己做动态,同时做静态。

  • Scala是一种静态类型语言 有动态的气味,因为 编译器使你重复性降低 推断你的作业。

  • 一个温暖的编译语言 精彩的脚本味道。因为你可以使用scala控制台,甚至可以像ruby或python一样编写脚本。所以你可以选择“写 - >编译 - >构建 - >运行 - > break - >调试 - >写”或“写 - >运行 - > break - >写”作为S洛特说。

  • Scala是一个完整的功能 完全支持面向对象的语言。因此,您不会丢失许多重要的OO方面,如继承,封装,多态等。

为什么回答你提出Scala的问题?因为我之前尝试过脚本语言,主要是Ruby。就像S.Lott说的那样。但对我和我的团队来说并不那么容易。大多数时间静态是安全的,不易出错,如果你有合适的语言,甚至会更快。

回答你将Scala放入我们的三个问题:

那么容易吗?

是。有时候你需要集中精力把旧的概念放在一边,然后深入了解。

最大的优势是什么?

您感到宾至如归,因为您不需要更改环境或重写现有应用程序以迁移到Scala(谈论Java)。如果你来自Java,你可以在阅读一些文章后开始使用Scala。没太多的努力。另一个重要的优点是使用功能语言和嵌入式功能。

这很有趣吗?

当然!改变主意,改变解决问题的方法,确实很有趣。

这是我的愿景。你并不需要留下静态以获得动态的优势。

答案 2 :(得分:2)

好问题。

我现在正在使用Ruby,PHP和ActionScript(三者中最不活跃的)而不是我喜欢的语言,比如Java和C#。但是乞丐,我的意思是,这个经济体的工人,不能选择。或者说,你必须选择你的战斗和你的主人。

很难比较Ruby和Java,因为它们有不止一个区别,你只询问动态/静态的东西(甚至不是关于强类型和弱类型的东西!)。但在这方面,影响我最多的是总是 IDE。当其他Java程序员使用Notepad或Textpad编写代码时,我总是感到震惊,而现在有一个好IDE的优点太多了。 不适用于Ruby!我使用Netbeans并且它确实很好,但主要区别之一是我必须实际输入代码。自动完成,对我来说,是/是一种生活方式(例如,我用预测词典用完整的英语/西班牙语写短信,而且从不使用缩写),编写Ruby代码确实需要更多的工作。

所以起初它很痛苦,我一直在看,例如,我写过的类的函数名(或者是Ruby的一部分),只是为了让拼写正确!所以我觉得这很糟糕,而且我一直认为,直到...

前几天我又回到了ActionScript,为了让我的IDE自动完成(FlashDevelop或FlexBuilder),我用类型声明了所有变量(如果你愿意,可以选择强类型)......然后突然想到真是太麻烦了!

然后今天我不得不在Ruby项目中添加一些功能,感觉自由而且很酷。代码很干净,为什么我会告诉IDE我正在尝试什么无论如何写?

所以我想说的是:1)最大的挑战是学习语言和你正在使用的框架,比如总是2)这是非常有趣和深刻的开放。新语言总是随身携带新东西,但动态语言只是感觉不同。这就是让你早上7点起床并在星期天早上做一些编码然后再次入睡的事情。

我喜欢编程,就像你们大多数人一样,我花了一些时间来处理存储过程,XSL,静态,动态,无论什么......这都很有趣,而且他们都感觉完全不同。 最后,我认为你正在工作的框架将会说服你保持与否(如果你有选择的话),但语言是学习,研究和经验,而不是比较。< / strong>

答案 3 :(得分:1)

我无法完全掌控自己,但在花了很多年写Java之后,我确实花了一些时间写一些有趣的Python迷你游戏。所以,我可能会混合从编译到解释的一点点。

我发现自己使用符号来模仿静态类型。 :)

然而,我确实发现自己在一个稍好的剪辑中启动代码。就学习新语言/编写新代码而言,拥有翻译是天赐之物。完成一行代码和看到它工作之间的时间越短,你写的速度就越快,我认为这可能是最具动态性和解释性的语言。

我的代码看起来并没有太大的不同,所有事情都考虑在内。虽然,Python有很多有趣的数据结构。 :)

答案 4 :(得分:1)

我也对这个话题感兴趣。 尝试不久前深入研究Ruby和Rails,它确实帮助我掌握了ASP.Net MVC的内容,我认为这对于普通的.net开发人员来说有点过于挑剔。

如果您对这个方向感兴趣,或者对某些开发人员如何从静态语言转为动态语言作为他们的全职工作感到好奇,我强烈推荐this Alt.Net podcast