date
Apr 4, 2026
type
Post
status
Published
slug
c++
summary
tags
category
编程语言学习
icon
coding
password
我的编程学习经历
近期因为工作上的需要,在尝试着写一些C++的代码。发现我对C++已经如此的生疏,上一次接触还是2019年。
这些年来,从编程的掌握顺序来看,差不多是2016年学了C,依稀记得当年硬刷B站郝斌的视频。当时硬着头皮刷完几百集之后,终于有了对C++的一点点心得。接着就是17年为了跨计算机考研而学习的数据结构、操作系统原理、计算机组成。因为是考研作为目的,日常就是纸写(伪代码)代码,手搓排序,脑算大O复杂度。
初试结束之后开始尝试JAVA的学习,在图书馆找了两本复试指定的java课本,花了10天时间硬啃读完。然后找了一些实战的资源(网上疯传的黑马程序员课程)用于练习,这时候补充了basic的HTML、CSS和Javascript以及用于数据交互的MySQL。跟着课程示例仿出来了初代淘宝和聊天室软件,这让我无比兴奋。
后面复试失利,又因为是生物跨计算机,所以也没什么调剂的机会。毕业就滚去一家做辅助生殖的医疗公司做胚胎NGS数据的生信分析(中间在美年大健康个人基因组NGS和这家二选一,最后觉得医疗级别的工作比消费级基因检测更有“钱”途)。此时,2018年,入职后第一次接触到了Python。当时的主管给了一本《鸟哥的linux笔记》和《Python核心编程》。
因为此前有JAVA全栈的学习的经验,花了一周时间,基本上把Python的书翻完了。紧接着就是接手一些常规的生信pipeline的分析和新pipeline的搭建。中间也尝试着初试中学到的一些数据结构的算法去优化,发现好像生信这个领域的分析工程师基本都没有任何数据结构算法的训练,但其实公司也不在意pipeline中对于时间和空间复杂度的优化(公司层面,生信产品出来配合试剂盒打包上市,能在B轮融资中取到投资人的青睐才是最重要的)。这时候同步在学的还有经典的资源调度工具SGE(Sun Grid Engine)。不知道是不是因为首先接触的SGE,以至于后面接触slurm的sbatch让我有点抵触:qsub多么优雅啊。
2018年,边工作边二战考研,降低了目标,针对北京不再敢盲目的跨考冲刺顶尖名校。选择北工大生物信息学,专业课变成了生物化学分子生物学以及工科必备的数学。好消息是生物及分子考了专业第一,领跑专业课第二几十分。坏消息是,这波数学没过国家线,最终调剂B区广西大学生物。
入学,一开始就奔着做Bioinfor的组去找,但当时好像全校好像没有做生物信息的。找了微生物背景的的实验室做菌群。彼时其实颇为感慨,我成功的用一场不成功的考试把自己从京城发配到了边疆,做的事从人类基因组研究变成了细菌和生态的研究。
好在遇到了一个非常好的硕导,对于课题给的自由度相对高一些。在第一年(2019)做了一年的useless的筛菌的工作之后,课题组的博士打算将整理好的数据做成数据集或者数据库网站,正好我有些许经验。但是JAVA开发工作量繁重,此时没有选择JAVA,而是选择了效率第一的PHP语言。得益于图书馆的资源,靠着两本PHP从入门到“放弃”的书,用了半个月把基础语法掌握完。这中间还尝试开发了一个基于PHP的文献下载站,拿到了备案以及域名,两年累计访问量接近三十万。
第二年的时候,其实对于自己的课题有点着急。无意中看到机器学习用于土壤枯萎病的课题,于是打算做Machinelearning做菌群生境分类。这也是第一次接触机器学习,但其实在现在看来做的非常基础,基于R语言的机器学习,包括逻辑回归、随林森林和支持向量机。后面读博基本上就是复杂的LSTM、CNN、Transformer了,这都是后话了有机会另讲。
第三年的时候,因为在宏基因组研究中掌握的各种可视化的经验(热图、海盗图、PCoA等),尝试着为社区贡献一个可用的工具。和两个师弟一起用Shiny包装了R实现了接近二十个可视化工具的开发工作,最后这个工作发表在一个三流期刊上。
至此,在2022年入职华大基因之前,已经掌握了JAVA、Python、HTML、PHP、R等编程语言。在高强度开发的时候一度因为各种编程语言左右脑互相打架。
从第一次在电脑上安装VC++ 6.0,到Eclipse和Pycharm,最后VsCode,有时候也在思考,编程究竟在做什么。有人说,语言的产生源于人们对部落里八卦的需要。编程语言给了人们和冷冰冰的硅基设备(其实一点也不冷,不信你摸一下CPU,会烫出来水泡)实现交流的手段, 给了人们给CPU下达去算一个加减乘除的运算命令的方式。
- Author:李金辉
- URL:https://jinhuili-lab.github.io/blog/article/c++
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!

