关于工具和编程语言的思考

Kaffa 发布于

分类: 编程

MagicGet

magicget

这是一段趣味回忆。

最近有人总问我会写爬虫吗?我去搜了搜 magicget,互联网依然还记得 20 年的软件。

最初一版,只是为了给晋江文学的一位写手写一抓文软件。

当时我刚毕业,只会 Pascal 与 C,而这两者写网络软件时有些力不从心。

接下去,我在闲暇间,自学了 C#,突然发现 WinForm 其实挺好写,这也是为啥 magicget 最初几个版本只有几十K大小的原因。

因为它依赖 .Net 运行时。

使用 WinForm,界面方面的问题解决了,为解决网络请求时主UI冻结的问题,我还学会了多线程。

但我依然只擅长写简短程序,且不知搜索开源库,以前并没有 Github,我常去 SourceForge、CodeProject 和 Google Code。

但我依然还不太会写大型软件。再然后,我个人对 .Net 的性能不满意了,而安装 .Net 1.1 运行时对用户来说,也是天然的使用门槛。

当时恰好出现了 Turbo Delphi 这种免费的东西,于是我想,何不我再用另外的新方法来实现呢。

于是,后来的版本,我主要使用 xml 技术来解析 xhtml 网页,最终,我学会了正则表达式,于是后续版本都改为了 Delphi 原生实现。

如果还有人问,我会不会写爬虫,我会把这张图发给他。

FeedTools

然后就是 20 年后,Vivaldi 浏览器我一直在用,有一天我把某站博客 100 多 Feed 一个个加进去,发现它居然不支持分组,也不支持导出。

后来我差不多花了一晚寻找这些 Feeds 到底在哪,一时心血来潮,又花了两晚,实现了一个导出 Vivaldi Feeds 的工具。

FeedTools

最初,我是准备使用 Lazarus,想着还可以兼容 macOS,但 Lazarus 的 json 就把我给唬住了,我很烦躁,并不想花太多时间去填坑,于是立即换上了 Delphi Community 版本来实现。

如果问我为啥不选其它,因为当时我存了一点私心,准备埋入一个 token 来支持导出 opml 时的支付。

后来我又改变了想法,决定还是免费提供 这个程序 ,或者在订阅中提供。

在多年后,我再次使用 Delphi 的过程中,发现它的发展非常缓慢,也依然没有完全修复稳定性的问题。

除了有些比如 Unicode 和跨平台数据组件的改进外,周边也都是停滞的。

其它不少地方,就像刚毕业的人的设计,可谓很难用,它的老本可真是厚啊。

同样类似的功能,还是 Python 好,差不多十几行就实现了一切。

编程语言的断舍离

虽然用过许多编程语言,但在未来新增的项目上,我将主要使用 Python、JavaScript、Rust 这三种,另 PHP 用于旧项目维护,其余编程语言的有关资料和书籍,我将全部断舍离。

工具的断舍离

如果你需要做一个工具的挑选,只能保留一种,你会怎么选:

一边是一套精美有美感且耐用的手动螺丝刀,另一边是一把普通的电动螺丝刀带有一套螺丝刀头?

两者间你会选什么?选易用有效率的工具,还是选有使用乐趣的工具?

这个问题对于不同性格的人来说,答案可能不一样。

而对于我来说,似乎就产生的选择困难症,很可能我非常难抉择,想要都保留。

到此,看似此问题只有三个选择,但还有一点考虑是,为啥你需要螺丝刀?(推翻问题本身)

这种思维模式我叫它 出家思维

然后,我发现其实大部分人都不需要螺丝刀,然后就会发现,选择一件让人心情愉快的工具陪在生命里,是一件很惬意的事。

如为了解决效率的问题,可以花钱解决。

依赖的容易固化,所以需要变革。

不要让拥有的东西(知识、身份、头衔)反成了诅咒。