我会选择一种新的编程语言 –
Java,一直在使用
Python一段时间.但是似乎大多数可以用Java完成的事情可以用Python完成.所以我想知道
> Java可以做什么样的事情而不是Python?
>移动编程(Android).
> POSIX线程编程.
>相反,Python可以做什么事情,但不是Java?
澄清:
我希望从实际的角度来看待答案,但不是一个理论观点,而应该是关于现状,而不是未来.所以在理论上所有的编程语言都可以执行任何任务,实际上每个都有某种限制.
解决方法
我猜使用Jython,你可以用Python做任何你可以在Java中做的事情.
相反,Python具有PyPy编译器,这是非常酷的 – 具有多个备份的虚拟机(Java Runtime,LLVM,.net和Python IIRC),多个垃圾收集器,多个实现(stackless)等.我知道Java具有虚拟机的大选择,但PyPy的增长是惊人的,因为它是用RPython编写的 – 这是一个相当有成效的语言.
此外,Java可以做到这一点,在1个文件中,少于20行,没有库导入?显然,这两种语言都有图书馆可以做到这一点,但我只是在谈论语言的灵活性.
class Logger(object): # boilerplate code def log(self,level,msg,*args,**kwargs): # *args,**kwargs = flexible arguments self._log(level,**kwargs) # call with flexible argments def _log(self,**kwargs): # override me at runtime :) # I think Java people call this Dependency Runtime Injection if level>1: print msg,args,kwargs logger = Logger() # boilerplate code def logged(level): # what pattern do you call this? def logged_decorator(function): # and this? def func(*args,**kwars): name = func.__name__ # look ma,reflective Metaprogramming! logger.log(level,name,**kwargs) return func(*args,**kwargs) return func # boilerplate code return logged_decorator # boilerplate code
使用示例
@logged def my_func(arg1,arg2): # your code here pass
原文地址:https://www.jb51.cc/java/122227.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。