语言开辟漫笔2 [复制链接]
发表于 2026-2-2 16:35:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
自 2023 年重新开辟语言到如今,已经有三年了。
如今项目还在开辟中,离发布另有一段时间。不外好的一点是,许多标题已经想明确了,对这个项目的未来也愈来愈清晰了。
为什么要开辟新语言

差别的人对编程这件事的态度不一样。
对多数人来说,编程只是一份工作。代码嘛,怎么写都行,能跑就好。
但我不这么以为,我以为,良好的产物背后应该有一份优雅的代码,是一种艺术作品,具有美感。
可以大概稳固地高效地优雅地完成业务项目,是我不绝寻求的目的。
如果代码不能按直觉预期精确地实验,我以为是不稳固的。
如果常见的需求,也必要写许多代码、花大量时间来实现,我以为是低效的。
如果原来一行代码就能搞定的功能,却必要写十多行,我以为是不优雅的。
现有的编程语言总有一些地方让我以为很不满。
这种不满不是由于个人风俗或喜好标题,而是它真正影响了项目开辟服从。
为了我寻求的目的,我决定打造本身的“干活工具”——刚好我另有这个精力。
我为什么不喜好 Java

Java 总是给人一种“把简单标题复杂化”的感觉。
同样的需求,用 Java 必要的工作量总是比其他语言要多地多。
以读取文件为例,在多数语言的体系库都提供了现成的函数可以直接读取。
但在 Java 里,你必要先学习“Stream”的概念,然后必要学习“StreamReader”的概念,然后再学习“BufferedReader”,末了,你才可以实现真正的文件读取的功能
固然许多 Javaer 美其名曰“高性能文件读取就是如许的”,但业务中真的必要这么时候在乎性能吗?而且用 Java 写的步伐,好像总体性能都不如用 Go 写的步伐吧?
Java 最新版好像有点改进了,Files.readString(Path.of("test.txt")) 一行也能搞定。但 Path.of 又是什么鬼?总之吧,不逼你先学习下“Path”这个概念,就不是 Java 了。
对我来说,用 Java 开辟就像开拖沓机一样慢(固然,也不是不能开)。
我为什么不喜好 Kotlin

Kotlin 比 Java 确实好太多了,但同样热衷于发明新概念。
我以为这些新概念仅仅是简化了 Java 的语法,但没有本质区别——相当于各人不消学“拖沓机”了,但还是必要学“手动挡”——概念的复杂度并没有低落。
而且 Kotlin 离不开 Java 生态,一个没学过 Java 的人,我以为他也很难用 Kotlin 干活。
比如 companion object,本质就是静态方法、静态类、定名空间的另一种写法而已。
其他语言不必要雷同概念,由于他们要不选择直接利用静态方法,要不选择彻底删除静态方法。
我为什么不喜好 Rust

Rust 号称很先辈。
但我不喜好必要手动管理内存,由于这会增长工作量。
固然手动管理的性能更好,但实际业务中,我也不必要为了寻求极致性能而捐躯开辟服从。
我为什么不喜好 Go

相比其他语言,Go 的简单和性能,使它成为我如今开辟后端的首选语言。
但 Go 的语法着实是太大抵,仿佛回到了 C 期间。
特别是业务中常用的 a ? b : c 和 a?.fn(),使得实际代码量增长不少。
我为什么不喜好 C#

在 Go 之前,我倾向于用 C# 开辟后端。
但相比 Go,C# 就显得过于复杂了。
C# 的束缚太多,一股“大公司味”:如果我的项目有上百人一起开辟,C# 的合规性束缚确实是故意义的。
但我的项目没有这么多人一起开辟,许多时间,我不想为了所谓的“合规”而捐躯工作服从。
比如 C# 的规范要求全部参数都作 null 校验,否则报 ArgumentNullException,而不是更广泛的 NullReferenceException。如果本身的项目不校验,显得代码不正规。如果校验了,又增长了工作量。
我为什么不喜好 JavaScript/TypeScript

从语法上,我以为 TypeScript 是全部语言中最良好的。
既符合传统 C 语言的美感,又为业务开辟提供了需多语法糖。
但焦点的缺点是“慢”。
慢到无法写实际业务的后端,究竟它是单线程的。
固然有许多人反对说,许多公司也用 Nodejs 写后端的。
但用 Nodejs 写的后端肯定不能处理处罚复杂业务的高并发,大概 Nodejs 只是个署理,真正的业务由其他语言开辟完成。
我为什么不喜好 Python

将空格作为语法的一部分,在代码复制时特别贫苦。
特别是业务项目里,复制代码是很常见的。
我必要的是什么

如今,我的首选语言只有 TypeScript 和 Go,分别写前后端。
相比其他语言,它们是最好的选择。
但我渴望为本身打造一门更好的语言,它是 TypeScript 和 Go 的联合体:
拥有和 TypeScript 一样强大的范例体系,一样便利的语法糖,同时又具有 Go 的高性能、编译本领。
它既可以用来写前端,也可以用来写后端。
对语言计划的思索

固然每个语言都有差别的语法、特性,但多数语法本质是相通的,纯粹是写法的区别。
每个语言作者都有本身的偏执和决议,并试图让他人担当和本身雷同的选择。
我非常反感有些语言计划者把多数人都熟知的概念换成一个新概念,但这种新概念又没有引入什么上风,纯粹是风俗上的区别而已。
比如 PHP 内里,用 “.” 作字符串毗连符,导致对象调用必须用 “->”,在全部语言里独树一帜,就是不好的计划。
新计划语言时,应该只管寻求和主流语言雷同,由于主流的背后代表有许多已经风俗他的用户。
如果没有功能性上的改进,只管不要发明新语法。

免责声明:如果侵犯了您的权益,请联系站长及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金.
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表