我正在学习C,并且出现了保护数字和舍入错误的想法.脚本语言的实践者(我在这里想到Python和Perl)需要担心这些东西吗?如果他们正在做科学编程怎么办?
一方面是Java,另一方面是Ruby/Groovy,我知道在第二个阵营中,我可以自由地制作拼写错误,直到运行时才会被抓住.所有动态类型的语言都是如此吗?
编辑:我被要求详细说明拼写错误的类型.在Ruby和Groovy中,您可以使用从未读取的意外名称分配给变量.你可以调用那些不存在的方法(显然你的测试应该记住它,已经说过了).您可以引用不存在的类等.基本上任何有效的语法,即使有印刷错误,在Ruby和Groovy中都是有效的.
我一直在环顾四周,似乎无法找到任何看似"最新"的明确答案或进展.我见过一些有趣的项目,比如Mirah(以前的Duby),我正在调查一下.我见过JRuby用于将ruby编译成.dex失败了.我也一直在寻找Clojure,并意识到他们可能都与同一件事有关.
有没有人有关于如何开始并取得进展的任何提示?我不仅要问哪些框架可以提供帮助,更重要的是,我还要提出一个指导我的努力的理念/方向,以便开始.
在大型Java项目中与Java配对的最佳动态语言是什么?
我们正在考虑使用动态语言进行测试,控制器和服务.一些选项是Groovy,JRuby或Jython.每个人的优点和缺点是什么?理想情况下,我们可以从动态语言调用Java,也可以从Java调用动态语言.
编辑:如果有帮助,我们将Hibernate与PicoContainer和Webwork一起使用.
谢谢,亚历克斯
我目前正在用ANTLR + Java编写一个JavaScript编译器.
我已经在Stack Overflow上阅读了关于如何继续执行的问题 - 而且答案总是很难进行动态语言的静态编译(没有JIT信息) - 但为什么会这样?当然有明显的"类型解析"问题,并且在JavaScript中可能存在eval功能问题- 但还有其他原因吗?(因为它们似乎不太难以静态克服(没有JITS))
我不包括基于JIT的编译,因为我认为这对我来说实施起来太难了.
我在编写带有字节码执行的静态编译器方面有一些经验.
更新:
您的所有答案都非常有助于理解问题.澄清这是否意味着JavaScript比其他动态语言更难实现?
这也意味着我更好地使用基于树的解释器而不是例如字节码(如果我们忘记JS总是在原始源代码中提供的属性 - 因此增加了生成和IR的额外时间,然后执行它) ? - 或者它们应该同样容易/难以做到吗?
(我是新手SOF;不知道这是否是更新问题的首选方式?)
javascript compiler-construction static-analysis dynamic-languages
在Python中,您可以从定义类外部分配任意属性:
class Profile(models.Model):
user = models.OneToOneField(User)
name = models.CharField(max_length=140)
p = Profile()
p.age = 42
Run Code Online (Sandbox Code Playgroud)
这里的基础机制是__dict__维护所有属性的字典的属性.
我们都被告知不要将我们的内部工作暴露给客户端代码,但是附加新数据根本不与封装有关,对吧?这个习惯用法是Python代码常见的吗?
每一个Tweet有标准领域,如id,text,owner.
当为用户返回推文列表时,您希望显示此用户是否"赞成"推文.
显然,为了获得is_favorite你需要为此查询多对多关系user.
可以预先填充Tweet与is_favorite当前用户相对应的对象吗?
当然我可以公开一个方法,is_favorite_for(user)但我遇到Django模板语言限制,不允许从模板内部调用带有参数的方法.另外,我认为模板根本不应该调用方法.
我知道这样可以正常工作,但我想知道在开源项目中做这样的事情是否会让其他开发人员蔑视我.
边注:
我来自C#/ .NET背景,其中最近引入了动态类型,除了一些利基领域(互操作性,IoC框架,REST客户端框架等)之外,它们没有得到广泛的适应.
python oop encapsulation dynamic-languages design-principles
动态语言正在兴起,其中有很多:例如Ruby,Groovy,Jython,Scala(静态,但具有动态语言的外观和感觉)等等.我的背景是Java SE和EE编程,我想要将我的知识扩展到这些动态语言之一,以便为将来做好更充分的准备.
但是我应该关注哪种动态语言学习?为什么?在不久的将来,哪些将成为首选语言?
对于以下Python代码:
first.py
# first.py
from second import Second
class First:
def __init__(self):
print 'Second'
Run Code Online (Sandbox Code Playgroud)
second.py
# second.py
from first import First
class Second:
def __init__(self):
print 'Second'
Run Code Online (Sandbox Code Playgroud)
创建文件并从shell运行以下命令后:
python first.py
Run Code Online (Sandbox Code Playgroud)
我收到错误: ImportError: cannot import name Second
像Ruby这样的其他动态语言会出现这种问题吗?我问的原因是因为我在Django项目中遇到了这个问题,其中2个模型相互依赖.我知道可能的解决方案是重新设计项目或按需导入.我只是想知道其他动态语言中的开发人员是否遇到过这个问题.
可能重复:
动态语言的热爱是什么
我来自ac#/ java背景,即强类型,OOP语言.
我对Python非常感兴趣,但我需要更多地了解动态语言的优点.
它真正给我的力量是什么?(在Web应用程序中).
有人可以勾勒出我可以做的一些优点和酷炫的技巧吗?
与C/Java相比,在许多情况下是否可以设计类似Ruby或Clojure的东西而不会显着降低性能?硬件设计是否起作用?
编辑:有意义的是我的意思是数量级,而不仅仅是十次
编辑:我怀疑delnan是正确的,我的意思是动态语言,所以我改变了标题
performance programming-languages dynamic-languages language-design high-level
python ×3
groovy ×2
java ×2
jruby ×2
jython ×2
oop ×2
ruby ×2
android ×1
clojure ×1
high-level ×1
javascript ×1
performance ×1
scala ×1