kak*_*eys 11 python java programming-languages
我想选择一种新的编程语言--Java,已经使用Python一段时间了.但似乎大多数可以用Java完成的事情都可以用Python完成.所以我想知道
澄清: 我希望从实际的角度得到答案,但不是理论观点,而应该是关于当前的状态,而不是未来.因此理论上所有编程语言都可以执行任何任务,实际上每个都受到某种限制.
Mar*_*ers 12
两种语言都是图灵完备的,都有大量的库,并且都支持用C语言编写的扩展,以便您可以根据需要访问低级代码.主要区别在于它们目前受支持的位置.Java通常比Python有更广泛的支持.
您的Android示例是Java是标准选择的地方,尽管Python也以Android Scripting Environment的形式提供了一些支持.Java已经安装在大多数家用计算机上.您可以编写Java小程序,并希望它们可以在大多数浏览器中运行.
在Java中你不能轻易做的一件事是快速编写执行有用任务的短脚本.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,msg,*args,**kwargs) # call with flexible argments
def _log(self,level,msg,*args,**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,*args,**kwargs)
return func(*args,**kwargs)
return func # boilerplate code
return logged_decorator # boilerplate code
Run Code Online (Sandbox Code Playgroud)
使用示例:
@logged
def my_func(arg1,arg2):
# your code here
pass
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9759 次 |
| 最近记录: |