编程指导
开发环境
如果你对计算机的基本知识不了解,推荐先看看入门-真实的 Computer Science & Technology。日后还会有一个更加简洁明了的版本。
编程的基本流程依赖于三个东西:编辑器、编译器、调试器。
编辑器用于写代码,显然专业用来写代码的效率更高,所以我们一般不会用 Microsoft Word 写代码。
编译器(狭义)将源代码变成二进制代码,实现编程的目的。
调试器帮助我们找到错误,或者理解真正的运行机制。比较简单的代码可能用不到。
如果把三者或者更多功能结合起来,就形成了所谓的IDE (集成开发环境),诸如Visual Studio之类。IDE显然不是必须的,但是对新手相对友好,但是同时也遮盖了编程的一些实质(新手往往把IDE和编译器这些混为一谈)。
下面会根据个人经验推荐一批编程相关软件,读者可以根据自己喜好选择。
字体
对于编程,最好使用所谓“等宽字体”,也就是符号、字母宽度相同,这样程序易于对齐,便于检查。另外你的字体要能够区分“0oO”以及“iIl1L”
Windows下, 大多数编辑器默认字体用的是“新宋体”,非常难看。建议改成Consola。如果你自己会下载安装其他等宽字体更好。
Linux下可以自行Google字体方案,如果你对字体不满意。Mac OSX基本没有字体问题。
代码风格
- 使用空格而不是tab,tab虽然间隔较大,但是在“等宽”等方面往往造成非常困扰的问题。
- 很多IDE和用于编程的编辑器默认将Tab转换成4个空格,即使不默认也会有相应的调整选项。
- 两种参考风格:
/* 特点:括号整齐,缩进明显 */
#include <stdio.h>
#define BOUND 100
int main()
{
int i;
for (i = 0; i < BOUND; i++)
{
if ((i * i - 1) % 24 == 0)
{
printf("%d may be prime.\n", i);
}
}
return 0;
}/* 特点:分块明显,代码紧凑 */
#include <stdio.h>
#define BOUND 100
int main() {
int i;
for (i = 0; i < BOUND; i++) {
if ((i * i - 1) % 24 == 0) {
printf("%d may be prime.\n", i);
}
}
return 0;
}命名
- 建议使用约定俗成的英文缩写,这些单词的意义和数学公式的符号一样,是全世界通用的。
常见用于开发的软件
Code::Blocks
- 轻型IDE,跨平台,能满足大多数要求。表现一般般。
- (Windows下)默认使用 MinGW 仿真 Linux 编译调试后台
- 日常不使用,但是对于这门课足够了
下载地址,注意最好下载含mingw(较大)的版本,除非你知道如何为IDE配置编译器和调试器。
Visual Studio 2015 (with update3)
- Windows下最好的IDE,功能丰富强大
- 某些函数定义和使用方式和标准C有些出入
- 社区版不收费(官网下载,最好网速快的地方。安装极慢),学生也可以免费申请专业版
下载链接(专业版,可能需要迅雷等下载工具。激活自己想办法,否则建议退学):
ed2k://|file|cn_visual_studio_professional_2015_with_update_3_x86_x64_dvd_8923256.iso|7745202176|DD35D3D169D553224BE5FB44E074ED5E|/
SHA1 99E6C061FFB3194D28682D75D5F2F0F12A8D614FXcode
- Mac OSX下面著名的IDE,有不少黑科技,包括自带的性能分析器等等。
CLion
- JetBrains 系列IDE
- 要求你对cmake有所了解
VC6.0
- 在18年前是非常优秀的IDE
- 但是如今使用有大量兼容性问题(拒绝解决此类问题,目前只知道可以在Window2000之前的系统稳定运行)
- 实际工程现已基本无人使用(除了教学和考研)
ViM & Emacs
- Linux/*nix 下著名的编辑器,古典高效,远程编辑常用。入门往往很不习惯,但是如果熟悉使用方法往往有奇效。
- 可以在字符界面运行,功能非常强大(可以煮咖啡),可高度定制。
Sublime
- 典型的现代编辑器,功能丰富的插件和第三方包,跨平台
- 性能较好
- 可以无限试用
Atom
- 典型的现代编辑器,功能丰富的插件和第三方包,跨平台
- 免费开源,对Git深度集成。可高度定制
Notepad++
- Windows下有个性的开源编辑器
- 有一些奇妙的小功能,比如自带的插件可以复制带颜色和格式的代码(而不是纯文本)
nano
- Linux下轻量级编辑器,最精简的功能
notepad
- 不建议使用。自带BOM及ANSI等各种问题
- 出问题一切自负
GCC/Clang
- Linux 下常用的编译器,windows下有MinGW, Cygwin, MSYS等环境仿真了GCC
- 使用编辑器的你最好会使用编译器,否则就要每次打开笨重的IDE进行编译了
GDB
- Linux 下面的调试器,功能强大(可以高度定制)但是不太好用。
- 有助于理解系统机制
网页中可以运行的Linux环境
可以在浏览器中跑的Linux环境(包括C编译器等) 注意:加载需要4-7MB流量,建议在 Wi-Fi 环境下在笔记本上使用。
版本控制
对于多人协作和稍大的软件工程非常关键。
推荐Git。平台网站推荐Github(当然这篇文章就是在Github上)