Learning C++之0.4 有关开发的简介

在我们开发和执行第一条程序之前,我们需要知道C++开发的一些细节。下面是一个图标,简单地概述了一下方法。


1.定义你要解决的问题

这一步是“what”,你必须知道你该解决什么问题。提出你编程要解决问题最原始的想法,往往是最容易的,同事也是最难的一部分。但是从概念上来说,这是最简单的。你需要的只是一个定义好的概念,然后就可以进行下一步了。

下面是几个简单的例子:

“我想要编程计算输入数字的平均数”

“我想编程序实现一个2d的迷宫,让用户可以成功穿过”

“我想编一个程序去读取股票的价格,同时可以预测股票价格的走向”

2.确认怎么解决你定义的问题

这一步是“how”,确认怎么来具体解决你第一步中提出的问题。这个常常是在软件开发中容易忽视的一步。关键是解决问题的方案有很多种,有的是简单的,有的是复杂的。通常来说,程序员会立即想到一个方案,并且开始编程工作。但是这样往往会导致坏的结果。

典型来说,好的解决方案有以下几个特征:

  • 他们是明确地
  • 他们是好证明的
  • 他们是模块化的,这样就可以复用代码,并且在修改部分的时候,不会影响到整体
  • 他们是健壮的,当出现异常的时候,可以很好地处理

当你立即坐下来开始写代码的时候,你往往只想的是“我要做这件事情”,所以你会实施最快的解决方案。这样会导致程序更加脆弱,不易维护,而且很多bug。

研究表明,一般正常编写代码的时间占到总项目的20%,而后期维护和优化的时间占到了80%。因此,在你开始写代码之前很有必要仔细考虑一下怎么来具体解决问题,以及将来的计划。这样可以极大地节省你的时间。

后续的课程我们还会详细讲解怎么有效的设计解决方案。

3.写代码

为了开始写程序,我们需要准备两件事情:首先我们需要学习一门编程语言,其次我们需要一个编译器。当然写程序的编辑器有很多,最简单的Windows的notepad,linux的vi都可以。但是还是强烈建议用一款专业用来写程序的编辑器。没有也不用着急,后面将会介绍。

一个专业的程序编辑器有以下几个特点:

  • 行数标识。这个很重要,因为在调试的时候,经常会有以下提示:error,line 64.如果没有行数标识,那么找64行非常困难。
  • 语法高亮并且颜色标识。有语法高亮和颜色标识的代码更容易掌握代码的总体结构。
  • 清晰的字体。一个非编程字体可能很难区分O和0,I和i,1和L,所以选择清晰地字体可以区分这些易混淆的字符比较重要。

你的文件命名格式需要是name.cpp,name就是你自己程序的名字。.cpp标识了这个是C++的代码,虽然很多人用.cc,但是还是建议用 .cpp的方式。

有很多复杂的C++程序会有很多的.cpp文件。尽管你写一个简单的程序只需要一个.cpp文件,多个.cpp文件来实现一个简单的程序也是有可能的。

4.编译

为了编译程序,我们需要有一个编译器。编译器的作用有两个:

1.检查你的程序语法是否符合C++规范,如果不是,那么会想你报告错误。

2.把源码文件转换为目标文件,通常是以.o为后缀的文件。如果你的源码有5个.cpp文件,那么编译器会给你转化成5个.o结尾的文件。


为了作为例子讨论,Linux和MacOS机器都包含了编译器:g++,她的编译语法是:

g++   -c   file1.cpp file2.cpp ......

这样就会相应地生成file1.o,file2.o .....等目标文件,-c的参数标识只是编译生成.o文件。

其他的编译器对于linux和windows同样有效,后面我们会介绍一个编译器,所以现在先不进行讨论。

对于一些复杂项目的编译,一般会用到makefile,可以用来告诉编译器编译哪些文件。makefile是一项高级的技术,同样有正本的书来学习,但是本文并不过多讲解。

5.链接

链接就是将编译生成的目标文件生成可执行程序的过程,这个过程通过链接器来做,如下图:


除了编译生成的对象文件,链接器依然包含C++标准库函数。C++语言本身非常小和简单。但是C++可能有很多可扩展的组件,这些组件也在C++标准库里。比如你想把东西输出到屏幕上,你的程序中就要包含一些C++中特殊的I/O指令。这些I/O指令也包含在C++库中。

当链接器链接完所有的目标文件之后吗,就生成了可执行程序。

同样的,我们想链接文件在Linux'或者MacOS上,也使用相同的命令:g++

g++ -o prog  file1.o file2.o file3.o

-o就是链接的参数,prog是最终生成的可执行程序。

编译和链接过程可以结合起来,如下命令可以直接生成prog程序

g++ -o prog  file1.cpp  file2.cpp file3.cpp

6.测试和debug

这一部分是比较有趣的部分(希望如此)。你可以跑一下可执行程序,看一下是否输出你想要的结果。如果没有,就需要debug定位解决,后面会尽快讨论。

需要注意的是3,4,5和6步中都包含软件,你当然可以分别来调试,但是现在的IDE一般都包括这些所有的功能。对于一个IDE来说可以高亮显示,显示行号,同时也包含编译器和链接器以及debug模块。你可以直接用IDE来编写代码,然后编译生成可执行程序,并且可以立即调试。此外,IDE还有一些附加功能,比如完整提示,分层浏览,甚至于版本控制。

下一篇内容我们会更多地介绍IDE的安装和使用。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值