这里似乎是我可以从我刚刚完成的如何设计程序(简化球拍)课程中获得的两件最重要的事情,直接来自课程的讲义:
1)尾部调用优化,以及非功能语言的缺乏:
可悲的是,大多数其他语言不支持TAIL CALL OPTIMIZATION.换句话说,即使是尾调用,它们也会构建堆栈.
尾调用优化是在70年代中期发明的,远在大多数语言的主要元素开发之后.因为它们没有尾调用优化,所以这些语言提供了一组固定的LOOPING CONSTRUCTS,可以遍历任意大小的数据.
a)在没有特色的过程语言中,这种类型的优化有哪些等价物?b)使用那些等价物是否意味着我们避免在类似情况下在没有它的语言中建立堆栈?
2)变异和多核处理器
这种机制几乎是你编程的任何其他语言的基础.我们推迟到目前为止推出它有几个原因:
尽管是基础,但它却非常复杂
过度使用它会导致程序无法并行化(在多个处理器上运行).由于多核计算机现在很常见,因此仅在需要时使用突变的能力变得越来越重要
过度使用变异也会使程序难以理解,难以很好地测试它们
但是可变变量很重要,学习这个机制将为您提供更多准备工作Java,Python和许多其他语言.即使在这些语言中,您也希望使用称为"主要是函数式编程"的样式.
在学习本课程之前,我学习了一些Java,Python和C++,因此认为变异是理所当然的.现在已经被上述声明全部抛到了空中.我的问题是:
a)我在哪里可以找到有关第二篇子弹中建议内容的更多详细信息,以及如何处理这些内容,以及b)"大多数功能性编程"风格会出现什么样的模式,而不是更粗心的风格我可能本来会继续使用其他语言而不是参加这门课程?
scheme functional-programming tail-recursion mutability racket
我想为Resharper创建一个自定义策略,以便在“ new”关键字之后立即在“ =”的右侧指定实际类型时建议“ var”,否则建议不要使用“ var” 。
这可能吗?如果是这样,怎么办?
谢谢。