三月马上到了尾声,开学已经一个月了。一个月的时间,对于年末打算申请的我,不算短。这个月,我的代码综合能力有了显著的变化,却是无心插柳柳成荫的结果。一直以来我从未想过要未来从事写程序的工作,所以每次代码写的总是得过且过,而且学校EE的代码作业多是科学计算用matlab,所以总是写的稀里糊涂,但这个月因为一些小的境遇让我对于代码的规范变得重视,且自己对于一些软件工程的知识也十分渴求。因此本文大致系统地说说(我是写程序菜鸟勿喷)。
写程序的瑞士军刀
VScode
我这个月把 Vscode 和 终端 非常系统地学习了下,学完后觉得自己大不一样。 以前用IDE,在windows上用过vs,mac上用过xcode,写python都是用jupyter notebook这种交互式的,总之有几个我一直没有解决的问题。像vs还有xcode看起来就好复杂,感觉我需要的功能也不知道去哪里找,而jupyter notebook这种基本锻炼不了写项目的能力。 但是因为机缘巧合,我重新研究了下以前扔下没用的 vscode(code-insider),突然觉得插件还有各种设计都真好用。
vscode的学习我花了一个晚上学了极客时间的玩转vscode那门课,非常推荐。学下来,现在对我最有用的就是vscode的命令面板输入command+shift+P,此外command+j打开终端,option+shift+F的代码格式化,其他快捷命令和终端命令还有一些常用命令比较像,熟练掌握了快捷键实在是太爽了。 另外vscode装了许多好用的插件。一些必用的,如docker,我用的科学语言julia,我还没折腾明白的aws,各种语言的snippet,与版本控制相关的几个,编辑器可视化优化的indent填色括号提示代码提示等等。 当然还没搞明白的也还有好几个问题,比如我现在还不太会用vscode做调试,此外如何写测试我也没有系统研究过。
Terminal
因为我现在手里的 mac m1 是去年12月买的,寒假我在家里养生,也没怎么用电脑做复杂的事情,所以终端一直是原生状态。所以这个月我抽空把终端重新配置了下,也装了好多东西。
终端的配置过程,大致就按照网上大部分配置来做的,iterm2+oh my zsh,然后把UI弄的好看一点,再装代码提示还有高亮,此外我还装了写我自己想用的,比如问问题的howdoi可以问一些小的代码怎么写,比如tree让我树型打印路径所有子文件,还有终端命令输入过程中正确提示。总之配置完是用起来很好的。
终端的使用过程中,我这个月把mit的《missing CS semester》看了一遍,吸收得七七八八。这课两年前开始获得时候,我曾好几次从入门到放弃,就是还没有觉得它里面讲的东西对我有什么用,但是这次再看就觉得条条都非常有用了。此外我把《快乐的linux命令行》大致翻了一遍,很多命令都有了印象,就是平时想不起来用,可能还是没有彻底使用linux环境的问题。
这部分的问题,或者说我之后想再研究下的,就是linux的命令想再熟悉下,另外也蛮想好好学习下linux的,但是还没找到契机去学习linux性能优化之类的东西。
记笔记的obsedian
我最近彻底把随手记笔记的习惯和obsedian结合了,obsedian可以说是笔记届的vscode了,所有笔记在本地非常安全快速,而且所有功能都可以自定义,还有许多第三方插件,我非常喜欢。
心照不宣的必备技能们
这部分想说一说我这个月重新系统学习的大家都默认你会了其实自己半斤八两的技能。
这里发现网络搜索“cheatsheet”可以最快找到每个小技能的核心命令。
Git
很久前在学校上课用github,但是git的语法还有原理其实都不太清楚,最近把极客时间上的玩转git三剑客那门课学习了下,讲的非常清楚,顺道把《Pro Git》那本也好好学习了下,感觉清楚多了。
docker & conda
当我被mac M1的某些包装包气的要死的时候,我系统学习了下docker,平时在github项目多有见到,但是一直没有怎么系统学。此外由于mac M1某些装包无比坑爹,我把conda的官方文档反复看了好多遍,感觉已经融会贯通了。
AWS
之前和今年暑研负责我项目的学长说话,他让我去学习下aws的云服务使用,我就把aws官网的各种机器学习相关示例看了一遍,突然感觉云架构的这些设施如此的方便以后有机会可以好好运用下。
语言的学习
本月由于我做图理论计算组里用julia语言,我就速成了下julia。此外学习计算机体系结构因此把C++又熟悉了下,另外又学习了python的高级功能。
julia
完全没有融会贯通。学完之后已经放弃转入matlab。
python高级编程
大二上数据结构,老师就建议去看流畅的python那本,这个月把流畅的python看完后觉得的确大不一样,感觉以前学的都是些皮毛,流畅的python看完才有了对python语言更细致入微的感受。
九层之塔起于垒土
数学学习
最近学习数学的热情高涨,看到数学问题也非常有兴趣。一方面自己做理论算法每天看数学论文,感觉对数学的抵触越来越小。另一方面,随着我科研能力越来越成熟,我对于灌水工作越来越不能忍受,且相对于做应用,对理论的重视越来越加强,以前从来没有想过要做理论工作,但是现在发现是如此的有意思。
总结
这个月我的进步肉眼可见,多少和我身边人有关系。每次看到我的同学ty上课在写给开源项目写代码,每次看到带我做理论算法的学长看复杂的文章实践新的想法,每次看我认识的厉害学长们在做非常理论复杂的问题,我就会觉得非常羞愧,因而觉得又好多东西要学,硬件知识要学,代码能力要提高,数学能力要扎实,所以每天都有所收获。
此外,虽然我一直以来不想成为普通的程序员因而不愿意系统学习软件开发的知识,但是接触下来却发现系统的软件开发的流程方法是可以提高我平时科研工作的效率的,所以这是一定要提高的。
另外,我最近对于做理论的热情,这个变化让我觉得非常惊奇,我从未想过自己会有这方面的学术兴趣,所以抱着开放的心态接纳我自然而然的学术兴趣迁移吧