本文旨在从高软课程的学习的过程中,积累一些知识点,并给予记录
1. 编辑器/IDE的选择
第一课课程学习过程中,主要学习了各种不同的编辑器,IDE。
首先提到的VIM。Vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。VIM是自由软件。Vim普遍被推崇为类Vi编辑器中最好的一个,事实上真正的劲敌来自Emacs的不同变体。1999 年Emacs被选为Linuxworld文本编辑分类的优胜者,Vim屈居第二。但在2000年2月Vim赢得了Slashdot Beanie的最佳开放源代码文本编辑器大奖,又将Emacs推至二线, 总的来看, Vim和Emacs在文本编辑方面都是非常优秀的。
但是Vim仍然有缺点,比如不够直观,没有图形操作界面。想要精通vim编辑器需要长时间的专精和反复使用,入门门槛过高等。因此,基于Win操作系统的VSCode成为了目前流行的编辑器。
Visual Studio Code(以下简称vscode)是一个轻量且强大的跨平台开源代码编辑器(IDE),支持Windows,OS X和Linux。内置JavaScript、TypeScript和Node.js支持,而且拥有丰富的插件生态系统,可通过安装插件来支持 C++、C#、Python、PHP等其他语言。
本人的VSCode打开界面。
当然,在个人的使用过程中,还有为各种语言所创造的各种各样的IDE。比如我正在使用的python语言的IDE pycharm
这种专门的IDE集成了编辑器与编译/解释器的功能,让写出的代码可以即刻开始编译运行。在大型生产开发过程中是必不可少的利器。
对于C/C++来说,也有相对应的IDE,例如比较老一点的DevC++,codeblock等等。此外还有集大成于一身的Visual Studio,针对不同的语言
有不同的扩展选项。
2. 正则表达式的使用
接下来的课程中降到了正则表达式的使用。正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。
正则表达式的语法规则有很多,从PPT中精简如下:
- 通过/*****/的形式进行匹配
- 想要匹配多个选项时,用或符号“|”进行分割
- 通配符:"."代表适配一个字符,"+"代表适配1个或多个字符,"*"代表适配0个或多个字符,"?"代表前一个字符可能存在
- 在某一位字符有多重可能性时,用[。。。]表示,从而节省 | 表示。
- 匹配字母表与数字:[0-9] [a-z] [A-Z]
- 不想匹配到的字符:[^...]来表示
- 贪婪/懒惰匹配:/t[a-z]*i/在不同的匹配方法中分别匹配到" ti "与“titani”
- 在开头/结尾处匹配:^与$符号
等等规则。
如果能够熟练合理运用正则表达式,将对搜索/查找/替换等工作带了很大的便利。
3. 关于工程化编程的过程概述
接下来的课程关于编程过程中的各个方面。
1. C/C++编译环境配置
首先我们需要关于C语言的编译器,gcc与g++。后者可以编译运行C++。
在linux系统上,一般系统自带gcc编译器。没有的话也可以方便地用如下命令安装:
sudo apt install build-essential gdb
而windows系统一般选择 MinGW,将MinGW安装好后在环境变量中添加对应的路径即可。
2. 代码风格的规范化
代码⻛格的原则:简明、易读、⽆⼆义性
课件中关于风格的规范整理的很好,引用如下:
模块化
模块化(Modularity)是在软件系统设计时保持系统内各部分相对独⽴,以 便每⼀个部分可以被独⽴地进⾏设计和开发。这个做法背后的基本原理是关 注点的分离 (SoC, Separation of Concerns),是由软件⼯程领域的奠基性⼈ 物Edsger Wybe Dijkstra(1930~2002)在1974年提出,没错就是Dijkstra 最短路径算法的作者。
我们用耦合度与内聚度来评价模块化
在耦合度方面我们追求松散耦合。各个模块之间互相协作才能达成软件的目标,因此不可能是无耦合的情况。在有耦合的情况下,耦合度应该越低越好。每次改动bug时我们仅仅需要修改很少的几个模块即可。