及时行乐|算法工程师福利:超实用技术路线图( 二 )
Java 目前是企业级开发中最常用的软件 , 包括在大数据领域 , 也是应用最广泛的语言 , 例如当年的 Hadoop 生态基本都是基于 Java 开发的 。 Scala 由于其函数式编程的特性 , 在做数据处理方面提供了非常方便的 API , 也因为 Spark 等项目的火热 , 形成了一定的流行度 。 在进行企业级的软件开发 , 高性能 , 大规模数据处理等方面 , JVM 上的这两门语言有很大的实用价值 , 值得学习 。
顺带一提 , Scala 本身是一门非常有意思的语言 , 其中函数式编程的思想与设计模式又是非常大的一块内容 , 对于拓宽视野 , 陶冶情操都是挺不错的选择 。
考虑到算法工程师的工作内容属性 , 这边给出一个 Scala 的学习路线:
- 学习掌握 Scala 的基本语法 , 开发环境配置 , 项目编译运行等基础知识 。 这里推荐 Coursera 上 Martin Odersky 的课程 , 《快学 Scala》或《Programming in Scala》两本书也可以搭配着浏览参考 。
- 自我考核:能使用 Scala 来实现一些简单算法问题 , 例如 DFS/BFS 。 或者使用 Scala 来处理一些日常数据工作 , 例如读取日志文件 , 提取一些关键信息等 。
- 学习使用 Scala 来开发 Spark 应用 , 推荐 edX 上的《Big Data Analytics Using Spark》或者 Coursera 上的《Big Data Analytics with Scala and Spark》 , 另外有些相关书籍也可以参考 , 比如《Spark 快速大数据分析》等 。
- 自我考核:能够使用 Spark 的 Scala API 来进行大规模的数据分析及处理 , 完成 lag feature 之类的特征工程处理 。
- JVM 的原理学习 , Scala/Java 都是 JVM 上运行的优秀语言 , 其背后是一个非常大的生态 , 包括在 Web , Android , 数据基础架构等方面有广泛的应用 。 JVM 相比 Python 虚拟机 , 发展更加成熟 , 有一套非常完善的 JDK 工具链及衍生的各类项目 , 便于开发者 debug , 调优应用 。 这方面推荐学习周志明的《深入理解 Java 虚拟机》 。
- 自我考核:理解 JVM GC 原理 , 能通过 JDK 中相关工具或者优秀的第三方工具如 arthas 等 , 排查分析 Spark 数据应用的资源使用情况 , GC profiling , hot method profiling 等 , 进而进行参数优化 。
- 计算机语言理论 。 Programming Language 作为计算机科学的一个重要分支 , 包含了很多值得深入研究的主题 , 例如类型论 , 程序分析 , 泛型 , 元编程 , DSL , 编译原理等 。 这方面的很多话题 , 在机器学习方面也有很多实际应用 , 比如 TVM 这类工作 , 涉及到大量编译原理的应用 , 知乎大佬 “蓝色” 也作为这个领域的专家在从事深度学习框架相关的工作 。llvm, clang 作者 Chris Lattner 也加入 Google 主导了 Swift for Tensorflow 等工作 。 Scala 作为一门学术范非常强的语言 , 拥有极佳的 FP , 元编程等能力支持 , 强大的类型系统包括自动推理 , 泛型等等高级语言特性 , 相对来说是一门非常 “值得” 学习的新语言 , 也是一个进入 PL 领域深入学习的 "gateway drug" :) 对这个方面有兴趣的同学 , 可以考虑阅读《Scala 函数式编程》 , 《冒号课堂》 , 以及 Coursera 上《Programming Languages》也是一门非常好的课程 。 另外只想做科普级了解的同学 , 也可以读一读著名的《黑客与画家》感受一下 。
当前流行的算法框架 , 例如 TensorFlow, PyTorch, LightGBM 等 , 底层都是基于 C++ 为主要语言进行实现的 。 但是 C++ 本身过于复杂 , 使用场景也比较有限制 , 建议只需要达到能够读懂一些基础的 C++ 代码逻辑即可 。 在系统级开发领域 , 目前有一门新语言逐渐崛起 , 连续几年被 StackOverflow 投票评选为程序员最喜爱的语言:Rust 。 从设计理念和一些业界应用(例如 TiKV)来看还是非常不错的 , 但是我也没有深入学习了解过 , 就不做具体推荐了 。 这方面建议的学习内容包括经典的《The C Programming Language》以及 Rust 官方的:
推荐阅读
- 元核云发布存储产品新特性,结合AI算法助力慢盘智能化检测
- 及时行乐|苹果明天搞大事!新iPad、iPhone 12都来了
- ZAKER娱乐|皇室战争:想玩好“战船对决”模式?这些游戏算法你得知道
- 及时行乐|腾讯霸权:玩我的游戏产生的连续画面都是我的,网友:向垄断前进
- 及时行乐|中国到底有多强大?美智库曾称:中国早已成为科技超级大国
- 传奇|皇室战争:想玩好“战船对决”模式?这些游戏算法你得知道
- 中国新闻网|港籍工程师黄伟蓁:港青应放眼大湾区及内地市场
- 及时行乐|不喜欢 merge 分叉,那就用 rebase 吧
- 及时行乐|美国要切断和中国有关的。所有的业务供应链。
- 及时行乐|第三代B&O E8耳机好用么?个人使用真实分享(上)—缺点篇