cmd跑绿色代码_印度程序员的代码令我震惊

先声明一下,本文不是讽刺印度程序员的代码质量差。

我在reddit emacs论坛上看了一篇奇怪的帖子 (https://www.reddit.com/r/emacs/comments/fmxwd6/gnu_emacs_as_a_lightweight_sql_ide/),

03d38938e4effbeee3dc60af9aceed0c.png

一般看到这种帖子我就认为是初学者的文章,直接跳过了。因为semnantic现在不是很流行。而且这个Emacs配置太简单了。

但是这篇文章有些不同寻常的地方,

  • 我不记得company-mode有支持sql,而截图自动完成的效果不错
  • 配置过于简单了,初学者反而不可能给出这么简单的配置
  • gitlab现在用得人不多,一般都是比较硬核的自由软件支持者用gitlab
  • youtube视频很简洁

我又去看了他的代码,非常吃惊。这个印度程序员很硬核,直接在Emacs源代码上做修改。让Emacs支持sql的自动完成。而且他选择基于Emacs自带的semantic库的API开发,这个技术难度蛮大的,也很少有人基于此路线开发。

我认为某种程度上他比较闭塞,对于Emacs的最新讯息接受很少,一些地方走了弯路。例如基于semantic开发js/html/java的自动完成确实没必要,semantic效率比较低,现在流行的基于LSP(Language Server Protocol)的方案相对来说功能更强大,而且性能一般好于semantic。LSP是用于支持比如自动补全,定义跳转,查找引用等语言特性的语言服务器之间的一种协议,用于VSCode也可以用于其他编辑器或IDE。

但是他的天才也没有完全浪费,基于semantic和company-mode开发的sql自动完成却是一条创新的路。

这条路线也有实用价值。因为现在大厂开发的开源的能和Emacs完美整合的SQL语法解析器还没有。而且很多web项目SQL脚本不会很多,对性能不会太苛求。

这篇文章也反映了Emacs的一个特点,一些古老的少用的API(这里是semantic的API),可以在合适的场景中得到新的应用。你很少在其他软件中看到这样的例子。

这里我实际上介绍了一个高精尖的技巧,即使很多Emacs专家也未必掌握。但我相信大多数读者还是“中士闻道,若存若亡”。让我再举一个例子。

当我开发插件evil-matchit时,我需要API能准确定位html的匹配的一对tag。Emacs有个插件sgml-mode是用来处理一种比HTML更古老的格式(https://en.wikipedia.org/wiki/Standard_Generalized_Markup_Language),其API也可以用来定位HTML的tag, https://github.com/redguardtoo/evil-matchit/blob/11d98debf8b051b10068137668eb54c2fede0e30/evil-matchit-html.el#L31

SGML是一种我永远不会需要打交道的古老格式,但其对应的插件却可以提供API供我重用于新场景。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值