最近越来越多的其它领域的大佬陆陆续续来找我 “垂询” 编程起步的方法了,攥写本文一是考虑到逐个回复所费时间甚多,二者是鄙人的脑子实在不是很好用总是会出现记漏东西或者表述不清的情况。
希望这篇教程能够帮到各位初学者。
1. 准备开发环境
A和B路线是各自独立的如果装了IDE一般就不用再装编译器了
A. 简单路线:使用IDE
当然我们还是需要一个IDE的.... 这才正常
我们使用Dev-c++:点击此处下载DevC++
Dev c++的优点在于它真的很方便... 安装的时候会顺带安装GCC这样你就不用发愁安装编译器的问题啦!
注意!关于如何设置他的语言!安装的时候选择语言English,然后第一次运行的时候再选择简体中文
界面是这样子的...
首先新建文件(Ctrl+N),然后键入代码(如上),然后保存,然后编译(F9),然后运行(F10),或者编译+运行(F11)
于是就会有传说中的小黑窗出现了
注意:这里编译的时候Dev-C++会帮你自动保存文件,很贴心,如果你在其他IDE出现了编译运行之后和代码不一致的情况,请记得保存 :)
Hello world是所有程序员的第一声啼哭,至此你的开发环境已准备完成。
B. 轻量安装困难路线: 编辑器+编译器
首先要确定你的电脑上已经安装了编译器(一般是没有的)
我们选择MinGW,点击右侧链接跳转:MinGW安装和使用
有大佬评论说该链接过于老旧以至于找不到minGW下载链接,现在补充相关图片:
最后下载到的就是这个MinGW下载器 / 包管理器,你可以通过它下载完整的MinGW内容。
MinGW安装完之后你就可以用CMD+记事本编程啦!
顺便提一下安装Java的时候会有JDK和JRE两种概念,前者是JDK开发环境,相当于这里的编译器,后者是JAVA虚拟机,用来运行Java程序
或者你不想用记事本,你想用看起来更正常一点的东西比如Notepad++ / Vim / Emacs(事实上后两者在业界是神犇的标志,一般是Linux系统下的首选)
那么首先下载一个Notepad++,下载地址:Click Me
然后你需要配置C++开发环境:Notepad++配置c++编译环境
由于这一条路线过于困难,能做到的人肯定自学能力都很强,所以我推荐大佬们自己百度或者来问我 :)
C. Visual Studio —— 相当好用的IDE
笔者用的并不是VS所以一直没推荐.... 但是现在发现VS做的非常棒的样子(用户体验极好)
根据笔者的了解现在有三个版本:社区版Community 专业版Professional 企业版Enterprise,一般推荐专业版
由于专业版似乎并不是免费的所以我就不推资源了... VS官网链接
什么是用户体验好呢?如果你选择正版的话会少很多麻烦... 安装上的麻烦,具体想法已加入到前面概念解析
个人为啥不是很经常用VS呢... 因为自动补全很烦... 笔者是用devcpp入门的而且很习惯纯手敲代码,vs很多东西都考虑得非常周全,所以我还得花时间适应...
很多函数本来手敲都跟肌肉记忆一样了但是vs的话一不定神我就会敲成奇怪的东西(误
VS真的好(全语言开发平台),笔者也在考虑转VS了= =
2.相关概念解析
A. 编辑器 / 编译器 / IDE / 开发环境
编辑器指的是你用来打字的工具(就像记事本或者小米便签),编译器是用来将你的代码从单纯的文本转化为程序的工具。
首先你需要用编辑器录入一段代码,然后保存为 后缀名与语言相对应 的文件,然后用编译器将它编译为机器看得懂的机器码(也就是exe程序),最后运行这个exe程序
编辑 -> 编译 -> 运行
比较出名的编辑器有Notepad++,Vim和Emacs,Windows自带的记事本是可以用的,真的,不过小米便签就,,,,,
编译器一般我们是使用G++和GCC(后者现在在某种意义上是被前者所包含的),你只需要知道有这么个东西即可,后面是遇不到的。
IDE(Integrated Development Environment ) 即为集成开发环境(但我们还是习惯叫IDE),我们现在可以理解为他把编辑器和编译器以及其它一些有用的东西集成在一起方便开发。
开发环境是一个比较随意的概念,由于笔者认为这个概念很随意所以我开始怀疑自己是不是真的知道这是什么.... 我也许很不负责任地说 “大概就是那个样子吧”
B. C++ / C
两者的差别真没那么大... C++脱胎于C并和C各有专长,但这些对初学者来说真没什么区别。C++和C的语法规范是几乎完全一样的,但是你看看隔壁Python....连花括号都没有了
所以请不要过度纠结C和C++之间的问题,最多也就是口音不大一样而已...
C. Win键 / CMD
Win键(下左)
CMD(上右),命令提示符,命令行是同个东西,来自以前的DOS,所以如果你要专门研究这个的话可以百度DOS的指令或者在CMD里输入个Help
其实后面编程我们讲到的小黑窗跟CMD关系很深...
如果你打算自己用编辑器和编译器手动造一个IDE的话你就会知道其实他们也是同一个东西...
D. 面向过程 / 面向对象
面向过程的C,面向对象的C++和Java,这些其实是语言特性,对初学者来说真的不重要(对我来说也暂时还感觉不到什么区别其实)。如果有人非要吹这个逼无视就好了。
E. 底层 / 前端 / 全栈 / 汇编
C其实是非常接近汇编的语言,语言分三级:高级语言 / 汇编语言 / 机器语言
高级语言是指C/C++/Java这些给人看的语言,机器语言又称机器码,是二进制语言0001110101011100101010这些,给机器看的、机器可以直接运行的语言。
这个倒过来就是计算机编程语言的发展历程(所以汇编语言... 有兴趣者百度或者B站找SHENZHEN I/O,那是一款很不错的汇编相关的游戏)。
身处底层的C语言相比其他语言更接近计算机的本质(误)。一个项目其实是可以由很多种模块构成的,他们之间通过接口互相连接传输信息,然后各个模块由最适合的语言编写,比如涉及到核心的处理数据的部分可以用C语言写,比较快速,涉及到用户看得到的界面(GUI)可以用Java写(C语言的标配小黑窗是真的难看,Java图形编程还行不错),看上去会比较慢
所以前端... 大概也能理解是啥意思了吧!对应还有一个后端。前后端是网页编程的概念,前端可以近似理解为用户看得到的部分,后端就是....看不到的部分
全栈类似于这个人啥都会干,能单独完成一个项目(像独立游戏开发者就是全栈工程师,连音乐都自己写)
F. 正版 / 盗版 / 社区版本 / 官网 / 开源 / 破解 / 注册机 / 在线离线安装包 / 买断 / 内付费 / 订阅
只要价格可以接受我都推荐使用正版(比如有针对中国专门定价,这已经是诚意满满了)
开发者一定会经由某种途径通过他的开发产品收益,通常情况下有至少一种。
为啥要强调这么一个点呢... 因为就笔者的感觉看来,现在很多人对虚拟产品付费产生的坏印象来自:以往很多产品通过不正当的途径乱收费 / 收益,比如随便点两下就突然付费了,就订阅了什么奇怪的东西,然后话费就炸了... 广告也是,点两下就直接进入了奇怪的网页,然后电脑就中毒了!这些恶劣现象严重打击了普通民众自行接触探索新事物的脚步... 最大头的虚拟消费其实是各种充值,因为至少收费收的光明正大.... 怎么防止被奇怪的应用坑害呢?
一般来说一个产品如果有广告有充值有买断或者有其他获利方式就不会随便坑害用户... (除了大型无良商家)从安全 / 质量的角度上来说,有明显获益途径的虚拟产品要优于免费的虚拟产品(这里是一般情况下,像vim emacs以及GNU等很多的开源精神的贯彻者是真的不收费,vim:请帮帮乌干达的可怜儿童)
正版的优点在于产品以及围绕产品的售后服务和用户体验等... 你花钱绝对不只是买一个产品这么简单,正版的东西用起来是真的爽... 本来就是花钱买方便
盗版的优点在于资源多而且不用收费... 缺点在于你只有文件,什么都要自己搞(被盗版游戏支配的恐惧)
所以如果正版用起来不爽,我觉得还不如用盗版... 不要有心理压力。
社区版本是指由社区大佬(类似贴吧大佬)或者爱好者自己写出来的一个版本挂出来分享,一般这种东西是不会收钱的(因为热爱)
PS: VS这个社区版本长得很不社区反而很官方... 我不知道是为啥...
官网,也是 “大坑害” 时期的产物,为了避免下载到病毒人们都会下意识上官网,于是现在 “官网” 一词反而成为非官网常常打出来的口号了 = =
百度下载什么东西千万别搜索 “Visual Stuido 官网”,太蠢了。那怎么辨别是不是官网呢?
注意看下面绿色的那行网址,如果网址里面含有你要下载的东西的英文名字,就是官网
这种情况下要下载哪一个呢....? 总之时刻关注网址,官网 > 下载站
开源。
破解 / 注册机。破解的知识很多很多,这里解释一下一般的破解流程:首先要有一套完整的产品,然后打一个补丁断开它和官方的验证服务之间的连接,然后用注册机生成一个序列号让它以为自己是正版
在线离线安装包。在线安装包都很小,因为安装包其实还没下载下来,这是一个下载器或者包管理器或者安装器... 完整的安装包需要在安装过程中下载。离线安装包就是下载下来之后就可以直接安装的... 今天网络这种发达程度其实无所谓在线离线了...
买断 / 内付费 / 订阅。买断制就类似以前那种光盘游戏,第一次付完款东西就全是你的了... 又直爽又便捷是不是?内付费是游戏内付款,比如试用多少天然后付款这种其实也算内付费... 订阅... 一个月交多少多少钱,然后还没完没了了... 拿游戏举例的话,我个人比较喜欢买断制因为Steam大促销的时候全场游戏价格可以疯狂下掉,但是游戏内付款就不大受这种平台促销的影响,,, 该多贵还是多贵,而且Steam付费流程其实很简洁... 而且还很安全,不存在买一半出意外就吞钱不给产品这种事情...
3. 继续学习建议
编程,不是坐而论道的地方,是实战的地方
A. 做项目。如果你想做一个特别的礼物给你的小姐姐(别笑)或者想做一个随便什么东西,你只需要:坚定的决心+随时百度+开发环境
事实上编程就是一个自学的过程,很多业界成功案例都是 有一个想法+边学边干 搞出来的,大家起点真的都没那么高,为了小姐姐加油吧!
B. 刷题。此处为朴素无华的刷题网站:http://noi.openjudge.cn/
当然你可以尝试网页设计的更好的网站比如 洛谷 (其实是面对竞赛选手)或者如果你英语不错的话我建议 Hackerrank (面向程序员,印度人开发的,但是确实很棒!)
对你们要开始补以前欠下的债了(笑)
坚持刷题,当你结束 1.1 ~ 1.13 之后,你的C语言水平就能够吊打大部分人了(甚至包括我因为我并没有做完)
C. 坚持自学。
如果对题目有任何疑惑随时百度... 然后... 程序员的日常就是在自己写的BUG里面找代码
请经常输出中间值检测自己的代码到哪一步出现了问题... 或者来问我
4. 基础知识点梳理
5. C/C++之外
语言的话,有的人会选择Python,有的人选择Java,有的因为之前做公众号所以接触过一点Html5。其实这些语言真正值得注意的区别不在于语言的写法,而在于语言特性,可能会有什么教程说什么什么语言适合起步,我是觉得其实这些东西区别都不大,毕竟都是英语(误),我还是建议C/C++语言起步,因为我比较懂。因为这毕竟是真正接近底层的东西,学习C语言你可以接触很多计算机内部的东西。但其实你学哪一种都一样,毕竟我们虽然有学单词(相对比编程语言)的必要,但我们言论背后的逻辑(相对比编程中的算法逻辑)才是最重要也最复杂的东西。
如果要学习某些语言的话,一般你都要安装对应的编译器,同时注意Python的2.0和3.0有较大区别不大互相兼容,注意区分
这里再推荐一些比较好玩的东西:
A. C/C++语言的话有个库叫Qt库,可以让你用C/C++编写较为酷炫的图形界面
B. 安卓开发的话有个东西叫Android Studio
C. Python开发爬虫是个非常不错的选择~ 爬虫编程了解一下?(爬虫,自动运行用来爬取网上的数据,具体定义百度)
D. 各种开发引擎,比如Unity,虚幻4,不过那些东西体量太大了,我个人在研究Godot,一个开发2D和3D游戏的轻量级游戏引擎
E. Screeps!自己编写AI发展文明!使用Javascript作为编程语言,Steam售价¥65不过有免费的网页版可以玩教程
F. 如果你接触编程比较多的话应该考虑研究一下GitHub!无数程序员都在上面存代码和项目,内容资源均较为优质
G. 当年写过Minecraft的mod..... 有兴趣的同学了解一下
6. 其他
浏览器请使用Chrome谷歌浏览器,或者Microsoft Edge也行,不要使用老古董IE.... 不是说IE怎么不好,Chrome可以解决很多你本来没必要遇到的麻烦
如果你的QQ有任何的问题(比如打不开下载的文件),请上腾讯官网下载最新版本的腾讯QQ,你可能是Win10的UWP版QQ的受害者。
7. 后记
当年还没退役的时候就想写了... 被教练批评不务正业好为人师(笑
持续更新,如果你觉得这篇文章有任何不好/需要改进的地方,”面刺寡人者得上赏“,请告诉我!
2019.8.6 更新能用的Dev-cpp下载链接
2019.8.8 更新正版相关 + MinGW下载相关
2019.8.16 更新..... 划水教程