# 【知识精讲】成为一名 Power User
## Part1
按照惯例,在开始进一步学习之前,首先要介绍如何配置开发环境——然而,这里我们并不会直接手把手地教大家配置好一个开发环境。因为,在成为一名开发者之前,首先你要学会成为一名 Power User。
## Part2
虽然我们都知道,计算机科学的学习内容显然不是如何修电脑,但是想要在计算机科学的世界中生存,你必须拥有作为 Power User 的一系列基本素养:
首先,你要拥有最起码的分析与解决问题的能力——你不能像个文盲一样,连显示屏上明显的文字提示(很多提示原本就是中文的)都视而不见,而只会盲目地问些“我的程序运行不了怎么办”之类的毫无意义的问题——一名 Power User 问出的问题应该是“我的程序运行报错,编译器提示 error XX ”这样有信息量,有价值的问题;
## Part3
其次,你要具备最基本的英语阅读能力——在计算机科学的世界里,很多内容都是英文的,你至少要能够借助翻译工具读懂这些英文材料……事实上,计算机科学中使用的英文并不难,除了少数专有名词之外,其他的内容还是很浅显易懂的,这一点大家无需害怕。
最后,你需要具备起码的信息检索能力——在现代社会,即使是你不打算从事计算机科学相关工作,如果你连使用搜索引擎搜索关键字的能力都没有的话,那么你迟早会被这个社会所淘汰。
## Part4
接下来,我们将大致介绍一下不同平台的开发环境配置方法:
在大多数的 Linux 操作系统上,你只需要安装几个包就可以了。对于基于 Debian(如 Ubuntu )的操作系统上,请找到终端( Terminal )应用并打开,在它的命令行中输入如下命令进行安装:
~~~
sudo apt-get install build-essential
~~~
对于基于 RPM 的系统(如 Fedora ),请同样找到终端(Terminal)应用并打开,在它的命令行中输入如下命令进行安装:
~~~
su -c "yum groupinstall development-tools"
~~~
## Part5
对于 Mac OS X(以下简称 Mac)用户,请从 Mac AppStore 下载 Xcode,然后从 Launchpad 上启动——Xcode 是一款由 Apple 推出的 IDE,它在第一次运行时会自动配置好所有需要的工具链。如果你对于 Xcode 的安装有问题,可以借助搜索引擎的帮助,获得更多信息。
[![d439b6003af33a87c26d18d9c35c10385243b5f4.jpg](https://res.jisuanke.com/img/upload/20160712/4529a9cd3e019fe27d5c7511cc4884e555bbed52.jpg)](https://res.jisuanke.com/img/upload/20160712/4529a9cd3e019fe27d5c7511cc4884e555bbed52.jpg)
需要注意的是,你当然也可以直接使用 Xcode 来编写 C++ 程序,但是我们强烈建议你不要这么做。一方面我们更推荐使用文本编辑器来编写 C++ 程序,另一方面 Xcode 作为 C++ IDE 的表现本身并不尽如人意——它更适用于编写一些 Apple 平台专用的程序,例如 iOS APP 等。
## Part6
此外,如果你不嫌麻烦的话,你也可以选择使用虚拟机或者 SSH 来访问一个真正的 Linux 环境。
[![908024661727219872.jpg](https://res.jisuanke.com/img/upload/20160712/9389edb3c6e3f3f6f46ceb74c548edbd44603d58.jpg)](https://res.jisuanke.com/img/upload/20160712/9389edb3c6e3f3f6f46ceb74c548edbd44603d58.jpg)
如图,我们可以使用 Mac 自带的终端(Terminal)访问一台 Linux 主机。
## Part7
对于 Windows 用户,你有很多种解决方案可以选择:如果你在使用较早版本 的Windows ,那么你可以使用 CygWin 或者 MinGW ,在 Windows 下安装一套完整的跟 Linux 平台相差无几的工具链(在此过程中你可能需要上网搜索如何修改 Windows 的 **环境变量**)。或者你也可以像在 Mac 下一样,使用虚拟机或者 SSH 来访问一个真正的 Linux 环境(Windows 需要额外安装 SSH 的客户端,例如 Xshell )。
[![QQ截图20160712175937.png](https://res.jisuanke.com/img/upload/20160712/9c317419e37dc1f6848c3090343a16436c191eda.png)](https://res.jisuanke.com/img/upload/20160712/9c317419e37dc1f6848c3090343a16436c191eda.png)
图为 MinGW 安装管理器,它可以帮你自动下载好所有需要的 MinGW 工具链。
## Part8
如果你正在使用 Windows 10,那么我们强烈推荐你开启 Windows 自带的 WSL 子系统(需要升级到 Windows 10 版本1607 或者更高的版本),然后你就可以使用与原生的 Ubuntu Linux 完全相同的方法来编译和运行你的 C++ 程序了。
[![QQ截图20160712180549.png](https://res.jisuanke.com/img/upload/20160712/a8cb19792606e4acdf714840166ab02c118aadf6.png)](https://res.jisuanke.com/img/upload/20160712/a8cb19792606e4acdf714840166ab02c118aadf6.png)
图为在 Windows 10 中运行原生的 Linux Bash ,并使用`makefile`执行编译操作
## Part9
如果你是 Microsoft Visual C++ 用户的话,请注意以下几点:
首先,为了保证对新的 C++ 标准的支持,尽可能使用最新版,不要使用 Visual Studio 2010 以前的版本(比如“著名”的 Visual C++ 6.0);其次,g++ 编译器与 MSVC 编译器有一些细微的差别,两者之间的差别可能导致编译结果出现偏差。至于在初学阶段你会遇到哪些差别,需要你借助编译器的相关功能,自行探索——同样,这也是Power User应该具有的能力。
[![QQ截图20160806173909.png](https://res.jisuanke.com/img/upload/20160806/ebe4d274f48606956a3f47a326d7e3cb1e4e9368.png)](https://res.jisuanke.com/img/upload/20160806/ebe4d274f48606956a3f47a326d7e3cb1e4e9368.png)
图为Visual Studio 2015,注意选择新建项目为“Win32 控制台应用程序”。截至课程发布,Visual Studio 的最新版本为 2017。
## Part10
最关键的是,作为一名初学者,你必须要小心,不能过度依赖 Visual Studio 作为 IDE 的功能(尽管在后续课程中,你会发现它的强大超出了你的想象)。这就像是学车一样——虽然在日常生活中你接触到的都是开起来简单方便的自动挡家用轿车,但是在驾校练车的时候,你仍然要从手动挡开始练起,因为只有这样才能培养出扎实的驾驶技巧。
## Part11
另外,跟 g++ 一样,你也可以从[这里](https://www.visualstudio.com/downloads/#build-tools-for-visual-studio-2017)下载最新版本的 Visual C++ 编译器工具链(而不需要安装整个 Visual Studio )。
安装完成之后,在开始菜单中搜索“VS2015 x64 本机工具命令提示符”或者类似的内容,即可直接调用 Visual C++ 编译器提供的 cmd(Windows 自己的命令行工具,跟 Unix Terminal 相似)环境,无需设置环境变量。
## Part12
使用以下命令:
~~~
cl hello.cpp
~~~
即可进行编译——我们可以看到其使用方式跟 g++ 几乎一样。需要注意的是,cmd 下执行应用程序的方式是直接输入文件名回车,不要加`./`——这一点跟 Unix 是不同的。
[![微信截图_20170114170820.png](https://res.jisuanke.com/img/upload/20170114/aa62249a89f6118085c14ea34807951dc1202b75.png)](https://res.jisuanke.com/img/upload/20170114/aa62249a89f6118085c14ea34807951dc1202b75.png)
- 教材介绍
- 《编程初学入门常识》
- 什么是程序语言
- 【知识精讲】编程与编程语言
- 【选择测试】编程语言分类
- 【知识精讲】高级语言分类
- 【选择测试】编译与解释
- 【选择测试】程序员笑话-Java
- 熟悉键盘上用于编程的键位
- 【知识精讲】认识你的键盘
- 【知识精讲】中文和英文字符
- 【匹配测试】识别中英文符号
- 【选择测试】中英文符号的影响
- 【伴随编程】不要使用中文引号
- 【伴随编程】不要使用中文分号
- 【伴随编程】正确地输入符号
- 【选择测试】找出程序中的错误
- 初始工程师思维
- 【知识精讲】二进制思想
- 【选择测试】程序员笑话-凑整
- 【知识精讲】闭合的逻辑
- 【选择测试】程序员笑话-条件
- 程序员职业与生活
- 【知识精讲】程序员的发展方向
- 【知识精讲】程序员的装备
- 【知识精讲】程序员的健康
- 【选择测试】做一名健康的程序员
- 《C++程序设计》
- 前言
- 【知识精讲】编程与计算机科学
- 【知识精讲】编程与软件工程
- 【知识精讲】如何学习编程
- 你好C++
- 【知识精讲】你好,C++
- 【知识精讲】C++程序是如何开发的
- 【知识精讲】成为一名Power User
- 【伴随编程】让我们一起说你好
- 【知识精讲】你的第一个C++语言程序
- 【伴随命令】编译、运行你的程序
- 【伴随编程】将变量流式输出
- 【选择测试】变量的作用域
- 【知识精讲】变量与数据类型
- 【匹配测试】C++语言的入门概念
- 【知识精讲】在程序中学会换行
- 【选择测试】正确地换行
- 简单数学运算
- 【知识精讲】重新认识基本运算
- 【选择测试】运算符的理解
- 【伴随编程】做一下简单的运算
- 【伴随编程】a 的 n 次方
- 【知识精讲】数学函数
- 【伴随编程】让C++语言变成计算器
- 【伴随编程】计算球的体积
- 【匹配测试】数学世界知多少
- 【知识精讲】在程序中添加注释
- 【选择测试】正确地写注释
- 从伴随输入到变量地址
- 【伴随编程】 一个数字复读机器
- 【选择测试】理解标准输入输出
- 【伴随编程】一个加法计算器
- 【程序设计】A+B+C问题
- 【伴随编程】简单的I/O格式控制
- 【知识精讲】地址与取地址符
- 【伴随编程】看看我们的地址
- 习题一:面积与周长
- 【程序设计】矩形面积与周长
- 【程序设计】三角形面积与周长
- 【程序设计】圆形面积与周长
- 程序中的是与非
- 【知识精讲】是非的表示与关系运算
- 【伴随编程】验一验关系运算式
- 【选择测试】关系运算式求值
- 【知识精讲】如果的意义
- 【伴随编程】分段函数求值
- 【知识精讲】如果之后的如果
- 【伴随编程】五则运算器
- 【选择测试】分支的嵌套
- 【伴随编程】问号表达式
- 【知识精讲】是非之间的逻辑组合
- 【伴随编程】判断闰年
- 【程序设计】日期合法性
- 【知识精讲】多路顺序结构
- 【知识精讲】在程序中学会缩进
- 【选择测试】正确的缩进
- C++程序中的苦力
- 【知识精讲】使用循环结构
- 【选择测试】对比两种循环
- 【伴随编程】使用while循环
- 【填空测试】理解循环结构
- 【知识精讲】自减和自增运算符
- 【伴随编程】使用自增运算符
- 【知识精讲】for循环
- 【选择测试】for循环的使用
- 【程序设计】一大波好玩儿的程序
- 《代码能力快速提升》
- 《基础数据结构》
- 《搜索入门》
- 《动态规划基础》
- 《数论和基础数学》
- 《图和数基础》