序:
为了不浪费大家的时间,大牛就别继续往下看了,因为此文通篇都是废话。但是如果你真的是一个纯正的菜鸟,如果你真的是一个刚摸电脑的新手,如果你真的刚学C语言甚至还不知道C语言是什么,那么就请抽5分钟时间看看吧,也许真的会有帮助的。
我非常清晰的记得我大学时的第一堂C语言课。那是我所有的大学课程中最爽一堂课,为什么爽?因为我热爱C语言?呵呵,那个时候我连C语言是个毛线都不知道,哪里来的热爱。我之所以爽,是因为终于有一门课,可以让我这个学渣可以和学霸平起平坐了,大家都不会,要挂科一起挂啊。从始至终,我们全班都是在听天书一般,觉的这个东西就不是人类可以学的,而那个老师,也因为说了一句『C语言是最简单好用的语言』,而从此在我们心中万劫不复。
为什么会是这个样子,如果你们学校也在大一的时候开了C语言这门课,你就会完全理解(天才请绕道)。话说我高中的时候连网吧都没怎么去过,台式机的那两个按键分别是干嘛的我都没弄明白呢,你TMD给我讲C语言?一门English就够让人头疼的了,这又加了一个语种,尼玛不会也要过四级吧。
所以,为了方便所有人都能看懂,在聊C语言之前,我想和大家分享一下计算机那些事。最起码我们要知道C语言到底是个什么东西,然后再去学习它怎么使用。所以这一部分,你完全可以不看,但是如果你是一个地地道道的初学者,那就和我一起,去计算机的世界溜达溜达吧。
计算机的那些事:
计算机是什么?其实用最一句最直白的话概括,它就是一堆通了电的废铁(还有绝缘体?那不是铁是钛合金?大家不要在意这些细节)。手机是计算机么?是!计算器?是!微波炉?是!洗衣机?是!这些统统都是计算机。那么,这些计算机怎么工作的呢,下面我和大家简单交代一下三个事情:
第一:二进制和高低电压
我们知道,中国古代使用算盘做算数运算,我们还知道『太极生两仪,两仪生四象,四象生八卦,八卦定凶吉』。具体是什么原理我也不知道,它们却都展现着一个清晰的道理:『多个简单的个体,相互组合,可以生成千千万万种不同的现象』。
电路有两种状态,有电和没电,那么可不可以用千千万万个电路组成一个机器呢?于是,计算机就产生了。二进制就产生了。
据说刚开始的时候,计算机的体积非常大。想要使用它需要一整只训练有素的团队,这个团队大部分人都在干嘛呢?排队站在电源旁边,听指令,1号断电、2号通电、3号通电。4号!4号!4号呢?什么?4号拉肚子了!Fuck,项目暂停。
所以,请看着你眼前这台电脑,无论你做什么复杂的操作,其实在它内部,都是在反反复复重复着通电和断电这两件事情。仅此而已。
第二:显示器
大家都见过广场上的大屏幕吧,天天播放着各式各样的广告,如果有机会走近它仔细观察,你会发现那些组成各式各样图案的,其实是一个个电灯泡!额,我也不知道更专业的叫法是什么。而正是这千千万万个电灯泡,反复做着开灯关灯、开灯关灯。最终形成了一幅幅骗人的广告。好吧,你知道我要说什么了,是的,你面前的这个屏幕,虽然使用了更先进的技术,但其本质,也是这个道理。
第三:硬盘
我们知道了很多电灯泡反复开灯关灯就可以形成一幅幅画面。那么,如果记住他们开灯关灯的顺序,是不是就能记住画面呢?这个是必须的。于是,科学家们发明了硬盘这种东西,其原理大概就是一个表面涂满了磁性介质的圆盘,而磁性介质可以帮助记录电路的状态,于是就记住了各个灯泡的开灯顺序。具体细节大家自行百度吧,不过大致原理是这样的。所以,郭德纲老师的那句话还是很有道理的,哪句?『阅尽天下A片而心中无码』。
和计算机对话:
和一个美国人说话我们需要使用English,那么和计算机对话,我们当然也需要使用一门语言。但是,计算机这个学渣,它只会机器语言(二进制0和1,通电断电),和它商量商量一起学个English方便沟通,它也不同意,丫的就认准机器语言了。那么没办法,我们只好退一步了。
所以开始的时候,工程师编程是要使用机器语言的,他们把通电断电的状态记录到一卷纸带上面,(通电的地方打个孔),然后让计算机读取纸带上面记录的信息,完成与计算机的沟通。(这么看来,程序猿和卷纸之间是有故事的啊)。但是好景不长,况且天天用卷纸对身体也不好啊。于是,他们想,要不请个翻译吧。
那个时候他们决定把一些有代表性的机器语言用字符标识,假设01010111代表加法,那么他们就用+代替。但如何让计算机知道+就是01010111呢?而这,真是翻译的作用,工程师不再使用卷纸写机器语言了,而是直接用英文字符代替,翻译负责把这些英文字符翻译成机器语言,后来,由于表现突出,工程师们亲切的称它为『编译器』。
OK,事情似乎越来越明显了,人类总是不满足现状的不是吗。既然都可以用特殊符号代替机器语言了,那么可不可以用自然语言代替特殊符号呢?然后请个更高级的翻译,来翻译这种更高级的语言。于是,C语言诞生了。
操作系统:
朱元璋大家都认识吧,明朝开国皇帝,农民出身的他什么事情都喜欢亲力亲为,比如刚住到宫里的时候。种棵树,喂个鱼,召见个大臣等都自己亲自去做。皇宫那么大,时间长了,朱元璋累的不耐烦了,就学前朝,也组建了一个自己的管理团队,包括守卫、太监、宫女、厨师等等。自从组建了团队之后,朱元璋再也不用那么辛苦了,衣来伸手饭来张口,而这个团队就像是操作系统,你就是朱元璋,发布着各种各样的指令,让你的团队(操作系统)替你去完成对皇宫(计算机)的操作。
其实计算机操作系统,就是一个管理计算机硬件的东西,它对计算机内部资源进行统一的管理,然后给你提供一定数量的接口,你通过接口发布指令,完成对计算机的操作。
你一定想问,后宫三千佳丽是哪一部分啊?呵呵,这个还用问我么,你E盘里恐怕不只三千吧。
总结:
以上讲述的,有些虚构,有些简陋,但归根结底就是让所有初学者明白一个道理,就是C语言到底是干嘛的。现在大家知道了,它是一门方便人类和机器进行沟通的语言。是的,本质上来说,学习C语言和学习英语,学习韩语,学习日语是一样一样一样的。那么,让我们再来梳理一下。从你通过电脑编写C语言代码到屏幕上输出结果是一个怎样的过程。
(1)你打开电脑,计算机从硬盘加载操作系统的数据,数据加载到内存,操作系统启动,开始管理计算机。
(2)你打开记事本(或者其他编辑代码的软件),操作系统从硬盘中把记事本的程序加载到内存中,记事本开始运行
(3)你在记事本中编写C语言代码(假设叫test.c),编写完之后点击保存,这个test.c保存到了硬盘中
(4)你请出翻译(编译器,通常你可能是点击运行按钮,但内部原理都是一样的),翻译把test.c翻译成了test.o 然后又把test.o和操作系统的库文件进行关联。最后生成了可执行文件(linux 上这个可执行文件通常是a.out)
(5)你运行a.out文件,计算机一看,这里的东西它都认识,于是就开始运行你写的代码了。
学习建议:
其实学习编程这件事,并没有固定的方法,只要你觉的适合自己就可以。但无论天才还是蠢才,殊途同归的一点就是一定要多敲代码,哪怕是抄,也多抄几遍。
还有学习顺序,我这里是说我个人的学习顺序,不一定适合大家,况且方向也不一致,仅供参考吧(计算机组成原理,计算机操作系统,计算机网络,编译原理,汇编语言,C语言,数据结构,linux(我只是简单学习了一下怎么使用和基本命令),OC语言,ios开发)
(完)