我一直在研究编程语言是如何工作的,其中一些语言有所谓的虚拟机。我知道这是在另一种编程语言中对编程语言的某种形式的模拟,并且它的工作方式类似于使用堆栈执行编译语言的方式。我说对了吗?
有了我所说的条件,令我困惑的是,许多非编译语言允许变量具有“自由”类型系统。例如,在Python中,我可以这样写:
x = "Hello world!"
x = 2**1000
字符串和大整数是完全不相关的,并且占用不同数量的内存空间,那么如何在基于堆栈的环境中表示这些代码呢?这里到底发生了什么?X是否指向堆栈上的新位置,而旧的字符串数据未被引用?这些语言不使用堆栈吗?如果不是,它们如何在内部表示变
首先,我几乎被“整个函数式语言的东西”所折服。我突然想到,多年来,我主要是用Java进行函数式编程。但我对如何启动一个大型的功能应用程序有点迷惑。我想看看一个大型项目(OSS或其他)的源代码和构建结构,这样我就可以看到模块化在这样的环境中是如何处理得最好的。
我的问题的背景是,我想启动一个大型JVM项目,并且我目前正在考虑选择Java/Groovy混合或Scala/Groovy混合。我不想使用Scala/Groovy混合,除非我走的是函数式方向,因为我不喜欢Scala for OO编程(这是一个完全不同的主题)。这意味着要避免DI框架、AspectJ等东西(我知道我可以用函数式编程来模拟/完成