高级语言小记
最近学习回顾了几门高级语言和周边工具。这里做个小总结,学习暂时告一段落,以后会在需要的时候再捡起来。
Swift:
Swift 这门语言,真的是大杂烩。集合了不知道多少语言的混杂体。
Swift 语法都觉得似成相识,比如 范型、异步、多线程、函数编程、闭包、下标、嵌套、元组、虚函数。不过这些能力都是一门高级语言本该支持的,也无可厚非。
后起的语言,的确是有后天优势的。很多语言都有历史遗留问题,比如 python 为了解决作用域问题,弄出来 global、local、nolocal 这样反人类的设计。
值类型和引用类型 (struct /class) 借鉴的 C++,详见之前的文章:Swift struct (值类型) 与 class (引用类型) 区别及三种传参机制深刻关系和使用
元组,借鉴的 C++ 的 tuple。这是真好用,尤其在写算法的时候,可以省去不少逻辑复杂度。
属性包装器 propertyWrapper 借鉴 Java 的注解。
函数调用中的虚函数,借鉴 C++ 的虚函数设计。不过在函数调用这个问题上,也没有那么多选择,要么静态编译直接派发,要么虚函数存储方法列表派发,要么像 OC 一样动态派发,要么就得和 Java 这类一样靠虚拟机动态解析 (JIT 是直接派发)。本质就是找函数指针的过程。