哈! LOGO ,我小学也学过,一直都没搞懂可以用来干什么,但总见过别人(也是小学生)用 LOGO 获了不少奖。现在回忆起来,LOGO 用来画线条画比起通用编程语言简单很多。当然,后来也是因为小学毕业就再也没碰过 Logo 了。
(第一个弃坑:Logo )
后面那一堆,也就只有 BASIC 和 VB 见过但没学过,还有汇编语言是正正经经地学过(几年后没怎么用就忘了)。其它都没怎么接触。
(第二个弃坑:汇编,也许总有一天要重新拾起)
虽然我一直在做 Windows 开发,但并不使用 Pascal 。长期用着 C# 做 Windows 开发,然后又回到了 C++。C# 和 Delphi 重合的那一小段时间,我已经上手了 C#。
没错,对于 C 和 C++,我弃坑了很长一段时间。C89 和 C++98 实在是恶心了我好几年,以至于我对这两货很长时间都没好印象。
早期 C 语言变量位置很死板,又有奇奇怪怪的 for 循环作用域泄露问题(就是 Linus 最后不得不升级到 C11 的原因),这两个低级“bug”直接让我敬而远之。
至于早期 C++,既啰嗦又麻烦,看起来方便,实际上还是很简陋。早期的 C++程序及教程,动不动就来个 Class ,动不动就搞个继承链。也许写的人觉得很方便,但我阅读代码时并不这么认为。为了查清楚某个功能到底是在哪里实现的,需要翻查一堆继承链,越看越累。还有早期模板,为了特定的匹配需要写一堆十分复杂的前置模板,看着就觉得累。
还有,这两货的早期标准连 RVO 都没有,如何高效地返回大对象竟然属于“奇技淫巧”,实在难以想象。
当时我对 C 语言的唯一好感,就是写函数和 struct 都极为自由,struct 内物可以细致到每个 bit 位。而当时对 C++的唯一好感,就是既可以用自由函数,也可以用 OOP 那套。不过这两个好感不足以使我继续用 C 和 C++。
于是我同时弃坑 C 和 C++,转而用 C# 了。
(第三、四个弃坑:C/C++)
那不就等于放弃 Linux 的应用开发?没关系,反正我工作场景就是 Windows 开发,正好对接。
至于 Linux ,哈,其实长期以来都无感,对 BSD 反倒还行。只不过我很长时间都没有开发 BSD 应用的需求,主要是工作场合不用 BSD 。而我因为对 Linux 无感所以从来没打算去 Linux 相关的部门,长期“滞留”在 Windows 环境。
题外话 1:一开始我对 Linux 有好感,还用了好几年:
/t/902076 。后来 Linux 的“饭圈”爱好者实在过于离谱,我在 Windows 玩游戏玩得开开心心的,它们非要用“Windows 能做而 Linux 做不到 = 没必要做”推导出“Linux 没法玩的游戏=没必要玩的游戏”,攻击性太强(这是 Vulkan 出现前的时期);还有( SSD 普及前)吹嘘 EXT2 多么多么优秀,无须整理磁盘碎片,吹完了就踩一下 Windows 用户(没多久就有了个项目叫做 defragfs ,以及 Ext4 内置碎片整理机制,打脸打得啪啪响)。我很厌恶这种无缘无故就被攻击的“饭圈”环境。
从桌面到网站,C# 满足了我(以及工作场合)一直以来的需求。反正有工资拿不用失业就已经足够了,我的目标并不是成为什么大牛,也不是进什么大厂,更不想跟别人一起卷。
而我的 C# 也写得不怎么好就是了,不但被 dispose 和 ~析构() 坑过,还有我“不喜欢继承链”的习惯一直延续到 C# 代码,偏偏我某些同事特别喜欢写继承链,搞得我很头大。最头痛的当属我那喜欢自由函数的习惯,直到后来 C# 允许隐式 Main (该特性叫做“顶级语句”),终于舒服了。
啊对了,Java 也是我放弃的。
毕业前夕学校开了 Java 课,我学了后没怎么用过。
(第五个弃坑:Java )
题外话 2:后来在工作中以及在家里用 Windows 时,会用到 bat 和 powershell 的脚本,在家里用 BSD 和 Linux 会用到 shell 写 .sh ,虽然不少人把它们归类为编程语言,但我觉得实在没必要,也就简单写一写自动任务就算了,更灵活的事情写个程序去解决有时会更简洁。
没想到的是,某一天我发现 C 语言和 C++竟然发布了新版本,这回把我重新吸引回去了。吸引力最大的是 C++11 (还有后续的 14 & 17 ),终于可以摆脱啰嗦的 C++98 了;尽管到了 C++17 仍旧还是有一些啰嗦的地方(我在写多维数组模板库的时候就有体会),但仍旧比 C++98 好得多。
尤其是反应迅速的 RAII ,我很喜欢这个特性,无须 using(var xxx = doSth()){} 就能在作用域退出时自动释放,重回 C++期间我觉得这样真的很方便。
而且我感到惊喜的是,新标准写出来的第三方库,“继承链”的级数远不如早期 C++那么夸张,可读性好多了。
(重新入坑 C++)
最后是一直不入坑的:Objective-C & Swift (家里没苹果设备,工作的岗位也用不着苹果设备)、Kotlin (没打算做手机程序)、Python (不参与机器学习和人工智能)、Rust (传教士很烦)