如今,终身学习已经成为很多IT从业者的信仰,马上到年底了,为新的一年做一些小计划小目标。
个人虽然喜欢Python,但我认为,Python这一波火起来主要还是因为大数据机器学习的这一次浪潮,促成很多不同专业背景的人跟风入行,这种背景下,拥有丰富第三方库(尤其是数据行业生态圈的库),而且学习曲线较缓的Python就成了明星语言。但随着热潮过去,从事数据行业的相关人员沉淀到稳定状态,Python的缺点也就成了问题,将来Python一定会被其他更好的语言取代,只是不知道打擂台的是谁。
今天这篇文章,列举几个我个人觉得值得学习的编程语言(比较小众、不适合用来找工作的那种),可以作为业余爱好去发掘。
Rust
Rust是在一次听Hugging Face的科学家讲座时知道的,据他们说,一些原来用python写的代码由于性能原因换成了Rust,让我对这门语言产生了好奇。
安全和性能坐标轴Rust连续四年成为Stack Overflow上最受欢迎的语言,可见它的名气。 它到底是何方神圣呢?简单概括,Rust解决了许多其他语言中存在的痛点,将很多语言中的优点进行了整合。
一些静态类型的语言给程序员带来了沉重负担,要求程序员每次都重复变量的类型,妨碍了代码可读性和重构。 另一些静态类型语言允许整个程序范围内做类型推断,这样一来,虽然在初始开发中很方便,但也没法发挥编译器提供错误信息的潜力。Rust做了个折中,要求如函数参数和常量)必须具有显式类型,同时允许在函数体内部进行类型推断。
Rust还能使程序员选择将数据存储在栈或堆上,并在编译时确定何时可对其进行清理。 这样可以有效利用内存,并实现更高性能的内存访问。这就使现有项目中,可以用更快的Rust代码替换对性能至关重要的原始代码,还不会产生内存安全风险。某些项目甚至已使用这种技术进行了增量重写(之前提到的Hugging face应该就是这种情况)。
任何事情都有两面性,Rust强大的类型系统和对内存安全的重视(所有这些工作都是在编译时强制执行的),也意味着在编译代码时出现错误非常普遍。 对于不习惯的人来说,这很让人沮丧。 不过,Rust开发人员已经花费了大量时间和精力来改进错误消息,以确保它们清晰且可操作。
此外想用Rust快速构建原型(Prototyping)也会由于它的静态类型而更难,因为Rust需要你覆盖100%的条件,而不仅仅是99%。边界用例必须有适用的代码,即使程序员尚不知道正确的执行路径应该怎么做。在前期开发中,这些边界极端情况通常可以通过使程序崩溃来发现,随后可以再添加严格的异常处理。这就使得Rust的工作流(workflow)与Ruby、Python等语言不同,使用后者时,很多人会在REPL中边写边试代码,最后将其整合到一起形成可执行文件,这样的写法通常很少考虑异常情况。
另外,Rust的编译器基于LLVM构建,这意味着目标平台的数量将小于C或C ++。
简单总结一下,学习任何技术之前都要考虑自己的需求,是为了找工作还是其他,Rust目前还不是主流语言,未来能否成为主流也不确定,但有时多接触一门语言会帮我们打开思路,更好地理解自己最擅长的语言,就像武侠小说中,有时了解其他门派的功夫,对练习本门功夫也有好处。
Julia
见下一篇文章
网友评论