宋子桓
简介
我是宋子桓,热衷底层:从编译器、系统工具到操作系统内核设计。也熟悉后端、Linux 运维和云基础设施。
我非常重视代码的可预测性、可理解性、可维护性和可欣赏性。技术对我而言,不是堆砌功能,而是寻找简洁、一致、可生长的表达。
技术信念
优雅胜于优化
我从不反对性能优化,但认为过早地优化是万恶之源。 代码应该是逻辑的精确表达,透过源代码可预测程序的表现。 无论遇到性能问题、还是安全漏洞,清晰的结构能让我知道如何调整和修复它们,避免为了解决一个问题而带来更多意想不到的问题。
我始终认为源代码本身是软件程序作品的最重要组成部分,编制优雅的代码不仅能让我获得愉悦,更是对未来维护的负责。 当我们发现为了解决某个问题,而需要引入各种不自然、不优雅的坏味道代码时,往往意味着哪里犯了错,例如选错了框架、选错了平台。
开源共享
我不反对商业开发和技术专利,尊重与版权人或委托者之间的约定是我职业道德的底线。
我热衷于开放源代码,这意味着将软件中最重要组成部分分享出去。 坚持开源共享的理念,目的是让知识能如水一般流动,代码能自由的被学习与改进。 实际上,并非最好的代码才值得开源,将学习与实践道路上的知识积累和经验,化为其他人进步道路上的路砖才是开源的核心价值所在。
技术栈和领域
我适合开发一个 MVP 或清晰可维护的后端系统。但高并发、高性能等场景不是我的主场。
深入方向
- 系统底层:操作系统内核、程序编译器、运行时工具包。
- 后端开发:Python / Golang、RESTful / RPC API、数据库设计。
- 云基础设施:云服务部署和对接。
可胜任方向
- 前端开发:Vue / Nuxt、原生网页开发(HTML+CSS+JS)。
精选作品
CoTan - 智能科学计算笔记系统
CoTan 是基于 Python 3x 的一款用于数据科学等多方面的数理化系统,可以用于数据处理、数学运算、物理分析等场景。
- 类型:应用工具
- 项目:https://github.com/SongZihuan/CoTan
发布时间:
SSH监控
这是一个监控SSH请求的服务器工具(支持由 HAPROXY 转发的请求),并设置放行规则(可根据 IP 定位、 IP 地址、 IP 地址段设置多个规则)。
支持 SMTP 和 Webhook (企业微信)推送警告。
发布时间:
创信易 - 用户认证中心
这是一个用户认证中心系统,用户在该系统登录后授权登录其他平台。包括:通过手机号、邮箱、身份证、企业营业执照等方式认证登录。
同时还支持:付款、退款、工单,接入了微信和支付宝支付。
例如:A平台接入用户认证中心。在用户使用A平台时,会跳转到用户认证中心进行登录或注册,创信易会为其分配一个 OpenID 等信息,通过回调的方式返回给A平台。
- 类型:网站系统
- 项目:https://github.com/SongZihuan/ChuagXinYi
发布时间:
CMakeFindExternalProject
这是一个用于 CMake 构建系统的依赖管理工具。其实现借助 CMake 内置的 ExternalProject 模块,允许 CMake 在配置期(而非构建期)安装第三方依赖库。
同时,它还提供了第三方依赖安装,Windows 运行时库安装等工具。
- 类型:底层工具
- 项目:https://github.com/SongZihuan/CFEP
发布时间:
BrainFuck Pro
GWARF - 编程语言
了解更多作品,可访问:主要作品
个人经历
入行
在我12岁以前,我感到自己对设计和逻辑有种特殊的感觉,直到我认识了我目前最重要的三位老师之一,他告诉我什么是 Arduino 和 C,我找到了我真正喜欢的东西。尽管我比赛的成绩并不是很好,但老师却未放弃启发我。
我那会不明白传值和引用是什么,不理解编译器到底是如何工作的,也不理解为什么要函数封装。
记得一次家里出去吃饭,我在一边读着一本 《Arduino 入门》,蓝绿色的封面印着著名的 ∞,或许现在开起来不厚,但当时拿在手上确实很有厚重感。书里面的一个章节讲到数学函数中的 sin 和 cos,当时的我不理解这是什么,就去问了我舅舅。我们说了半天,也没让我明白这是什么。
我那时候有许多这样的疑惑,尽管现在看来那些事情似乎并非那么难以理解,但在以前却总给我有种没搞懂的焦虑感。
初中
来到初中后,我慢慢地离开了 Arduino 领域,走上通用计算机程序开发之旅。我先接触的是 Python。与众多人一样,学着用 Flask 开发网站、Pygame 写游戏、Tkinter 写界面。
我那时不懂什么是协作、鲁棒性、安全实践,反正都是自己用的程序,自己能用就行。
我写过最复杂的程序是一个垃圾分类程序,是为了去参加比赛而设计的。我用 Python Tkinter 写界面,阿里云的图像接口负责识别,MySQ L数据库负责记录用户信息,用 Flask 写了一个网页小程序。它可以让用户查询手中的是什么垃圾,记录投递情况获取积分,并有一个排行榜。 我还做了一个管理员后台,它可以操作用户、查看信息等等,不再需要手改数据库。如果你看过这个后台,就会发现他的 GUI 和用户终端完全不同。这是因为后台的界面实在太多,我终于理解了代码封装和复用究竟是为了什么,我重新设计了后台其中一个页面,并作为函数让全部页面都能套用。
高中
走进高中,Pygame 成了我一个很好的伙伴。在学习时,许多书上的图片模型让我感到不是很直观。随着模型各种叠加,我越来越想看看他们动起来的样子,我尝试用 Pygame 帮我画出来。
但是当模型复杂起来的时候,我的代码简直乱七八糟。因为我始终用全局状态去组织代码,大量的全局函数和变量让我很头疼。直到后来,我了解了面向对象,阅读 《Python3 面向对象编程》 才解决了我遇到的问题。没错,我入门 Python 所阅读的书其实并非这本,而是是另一本黑色的封面的书,叫 《Python 基础教程》。
有意思的是,我程序用的方法是把时间切成一段一段的,去计算每个对象的位置,可是这招在有些时候就失灵了,产生很大的误差。可惜那会儿大语言模型还未流行,我不知道向谁去请教这是什么原因导致的。
了解云原生之后,我可以很低成本地使用一台服务器,开始了我Linux的运维学习之旅。我一开始接触的是 Ubuntu,我至今非常喜欢这个发行版。直到我买了 《鸟哥的Linux私房菜》,他用的是 CentOS,我也因此开始尝试它。
到后来我尝试使用桌面版的 Ubuntu、Fedora、CentOS 和 Deepin 等这些发行版。我还加入了一些QQ交流群,里面的大佬提到了 Arch 和 Manjaro,于是我就去试了一下。一开始用的是 Manjaro,感觉还是挺新奇的,特别是他那个小狗吉祥物被我投在屏幕上,用一张A4纸描了下来当成了艺术课作业。后面尝试 Arch,从安装的时候我就知道这事不简单。可能作为学生还是不太能离开 Windows 的生态,尽管我最终主力机还是用 Windows 系统,但 Arch 的 Wiki 成为我进一步理解 Linux 的资料。
我一直都很喜欢开发编程语言,我写的第一个语言叫 GWARF,这名字是随便起的。一开始,我用 Lex 和 Yacc,但是他们的全局变量问题一直困扰着我,所以我另起炉灶。最终,这个语言因为内存泄漏的问题,被我搁置。我重新开发了一个 VirtualMath 语言,不过其实和数学没啥关系。因为我特别喜欢重构,直到一次重构后我依然觉得不尽人意,所以我停止了它的维护。
现状与成长
目前,我主要从事独立的代码开发工作、写博客、研究编译器和云原生。偶尔接一些理念相投的项目。我的完整作品和联系方式在首页。
我主要用 Golang 开发,前端则喜欢 Nuxt,数据库则最常用 MySQL 和 Redis。我喜欢用云平台的服务来满足运维需求,例如无状态计算、队列通知、云数据库等等。
我不再狂热的追求某种技术栈,而是学习更多、按需取用。我的关注点也更多指向我开发的是不是我想要的、如何让我的代码变得更好更优雅、整个作品的鲁棒性和安全性如何、它是否更符合技术规范和语义化等等。优雅地创作与共享是我践行代码人生的开源信条。
我想继续为自己写代码。
社交账号
自媒体平台
- 微信订阅号:写代码的小桓Huan
- 抖音:写代码的小桓Huan
- B站:写代码的小桓Huan
技术社区
- Github:宋子桓
- 知乎:写代码的小桓Huan
- 稀土掘金:写代码的小桓Huan
联系方式
- 邮件联系:work@song-zh.com
- 更多联系方式:点击查看

