2023年是奔波的一年,跨越了半个中国,将base搞到了浙江。来这边的第一感受就是,太…热了,太…潮了,太…冷了。没错,一个北方人在南方的冬天觉得冷。。。你敢信?不过遇到的人是真的很nice,比如房东。
今天是2023年12月31日,去年的今天,正在趁着空闲时间偷学Rust。Rust真的让我又爱又恨,这几年时间学一学,放一放,又学一学,入门了好多次次,每次都有新体验。
2023年的主要技术栈,是以Go为主,慢慢的渗透进了Go的runtime、汇编等,未来也打算深入底层,产出高质量文章哦。
之前写的技术博客因为时间仓促,来不及细化,好多只贴了代码,2024年,力争写的每篇博客都足够透彻。
有同学可能发现,我的大部分博文都以底层原理为导向。那么为什么这么搞呢?原因大概有以下几点:
深挖技术的护城河
,减缓可取代性
,这一点深有体会)现在国内互联网内卷
的程度已经…无法描述了。时间若回退10年。即使你非计算机专业;跨专业,跨行业,找个培训班培训几个月,完全可以胜任编码的工作。但是现在跨行业搞计算机…几乎无法得到满意的薪水。。。
“卷”带动了计算机专业同学的学习动力,同时为计算机行业筑起高高的门槛。(跨行业来搞IT的同学,是要苦行一段路的)。
若单纯从业务实现的角度考虑,所有语言的初衷,都是为了解决某个领域的疑难杂症,所以编程语言是为实现业务而服务的,所有编程语言目的都一样
。
时长听到悦耳或刺耳的一种声音:编程语言只是工具
。这句话要么出自高手
的口中,要么出自菜鸡
的口中,对号入座。
编程语言真正存在的意义就是为了解决某些特定领域的问题。一门语言不可能完全适用于所有的业务领域。而每一种编程语言都有自己的使命与其内在的箴言
。
三天上手一门语言,五天就写业务,出了问题开始拆东墙补西墙…这是只学语法,然后美其名曰精通很多种语言的人经常遇到的问题。这类人可以说是编程语言的使用者,简称会干活的人
。
会干活的人
和会干好活
的人的区别在于,一个能完成工作,一个能很好的完成工作。换做你是用人单位,你想招聘哪一类人呢?举个最简单的例子,对有序数组进行搜索的时候,他使用了线性遍历,你使用了二分查找,你俩代码执行效率是N和logN的时间代价。谁更胜一筹呢?所以会干活和会干好活,是两种截然不同的概念,这也是程序员之间的差距。
个人观点,初学者首选的是静态编译型语言
,这类语言有很多,如:(C/C++、Go、Rust)等。至于是否需要是纯面向对象的语言,这个我认为都无所谓,面向对象语言大量使用继承,搞得类都要爆炸了…多继承把类的关系图搞的乱七八糟,一个"儿子"可以有多个"父亲",这难道不是杂交
吗。现在新兴的编程语言多数以组合的方式来代替继承,将对象间的关系扁平化处理,使得复杂的关系网得以清晰。
对于有经验者,我的建议是徒劳的…
容器技术盛行的大背景下,静态语言的优势要高于动态语言。静态语言写的程序被编译好之后,直接打包进镜像,在容器中运行即可,高效调用系统API,无过多中间层。
而动态语言大多数带有一个虚拟机如:栈机或寄存器机,通过把源代码动态翻译成虚拟机所需指令,再将该指令转换为机器码执行(或将代码直接翻译成机器码),该效率十分低下;即使事先将代码编译成伪机器码,再动态生成机器指令,效率也不见得好到哪去。虚拟机可以为代码带来良好的跨平台特性。
就云原生的时代而言,服务至上,应用程序多数部署在amd或arm等架构的服务器上,这时候大概率需要一种能编译成二进制的语言。某些动态语言,背着重重的壳(虚拟机),最生动的例子就是java语言,我们期望使用它编写的软件能直接以二进制的形式执行,而非解释执行,这一点graalvm(官网:https://www.graalvm.org/)貌似做到了,但仍然存在一定bug。这就很拧巴,未来java编写的服务端程序可能既要以二进制方式执行,又要以JVM解释执行,囧++。
业余时间补充完善:具象的Go
和抽象的Go
两个专栏,2024主体输出内容仍然以Go为中心、可能还有Rust、数据结构与算法以及各类中间件的使用。深入浅出、拳拳到肉、敬请期待!
提前祝各位同学元旦快乐!一切顺遂~
明年见~ Bye~