国产操作系统调研报告

Keywords: #comment #operating system

本文源自笔者的一次调研报告作业,稍加修改后公布于此博客。

操作系统(Operating System)在计算机体系架构中处于承上启下的关键地位,是沟通底层硬件与上层应用软件之间的桥梁。中国自上个世纪末起就开始了对计算机操作系统国产化的尝试,期间亦历经诸多曲折与起落。本文将尝试从时间维度来梳理国产操作系统产业发展的历程,并在最后提出对未来的一些建议。

让你的 Vim 更加易用

Keywords: #tutorial #vim

本文简单记录了我的 Vim 配置。如果你想让你的 Vim 在处理一些简单的文本编辑任务时更好用一些,那么欢迎你参考本文进行配置;但如果你想让你的 Vim 成为真正功能完备的现代化 IDE,那么你可能不是本文的目标受众。在写作本文时,笔者使用的是 NeoVim v0.4.4,配置文件存储在 ~/.config/nvim/init.vim;不过文中所介绍的配置都与 Vim 8 完全兼容,只需要将配置文件移动到 ~/.vimrc 即可。

一封信:给 CS 新人的大学生存指南

Keywords: #comment

软件工程师常被戏称作「高级谷歌工程师」,这或许是因为在软件开发过程中,工程师往往要耗费大量的时间在搜索引擎上寻找资料,其时长甚至要超过编写软件代码这项任务本身。依我愚见,这一现象的根本原因在于计算机领域的知识大多是高度开放且频繁迭代的。 高度开放体现在计算机领域的专业知识并非为少数人所垄断的,一个中学生(例如我)通过在互联网上搜索就能学会搭建网站、编写软件,甚至为大型开源项目做贡献。这种开放程度在法律或医学等传统领域是不可想象的,你很难通过自学就学会打官司或做手术。迭代频繁则体现在工业界所使用的技术每两三年就会发生翻天覆地的变化,编程语言、应用框架乃至操作系统都在不断更新;工程师若想不落后于时代,就必须做到终身学习。这种更迭速度在法律或医学等「学习一次,适用终身」的行业内同样是难以想象的。这种高度开放和频繁迭代导致了一个工程师,无论如何聪明,都可以、也必须不停地从外界汲取新的知识 —— 这个「外界」通常就是指互联网,或者狭义上的「谷歌」。

作为一个 CS 专业的大学生,你未来很可能会成为一名软件工程师。当然,你也有可能走上学术的道路,或者干脆离开这个行业 —— 这两条道路我也还知之甚少,不敢多说。但是关于如何用好大学时间成长为一名更优秀的工程师这点,我想根据我的所见所闻为你提供一点参考建议。

Naive Bayes Classifier 简洁教程

Keywords: #machine learning

本文将简单的介绍朴素贝叶斯分类器(Naive Bayes Classifier)的数学原理,包括贝叶斯定理、朴素贝叶斯分类器、参数估计、Laplace 校准等。用 numpy 实现 Naive Bayes Classifier 并不困难,各类机器学习框架中大多也已有高可用的实现,因此本文不会再代码细节上多做赘述。

Naive Bayes Classifier 其实相当“朴素”,抛开对“机器学习”这一名词的无端恐惧,你就会发现其本只不过是一些列的概率计算 —— 下面就开始正文。

C++20 <=> Space-Ship 操作符介绍

Keywords: #c++

C++20 计划引入 <=> 操作符,学名是 Three-Way Comparison Operator,俗称 Space Ship Operator —— 这个运算符的引入从根本上重新定义了 C++ 如何进行比较,并且为比较系统带来了极大的灵活性,可能会大量缩减重复代码。这篇博客就简单介绍一下 <=> 操作符的用法。