学习C语言之前你要知道的事

序:

为了不浪费大家的时间,大牛就别继续往下看了,因为此文通篇都是废话。但是如果你真的是一个纯正的菜鸟,如果你真的是一个刚摸电脑的新手,如果你真的刚学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开发)

(完)

时间: 2024-11-09 19:17:16

学习C语言之前你要知道的事的相关文章

Ajax系列之一些你应该知道的事

mnesia在频繁操作数据的过程可能会报错:** WARNING ** Mnesia is overloaded: {dump_log, write_threshold},可以看出,mnesia应该是过载了.这个警告在mnesia dump操作会发生这个问题,表类型为disc_only_copies .disc_copies都可能会发生. 如何重现这个问题,例子的场景是多个进程同时在不断地mnesia:dirty_write/2 mnesia过载分析 1.抛出警告是在mnesia 增加dump

StackExchange:Web开发中你需要知道的事

在StackExchange上有人问了这样一个问题:What should every programmer know about web development?(关于Web开发,什么是所有程序员需要知道的?)里面给出的答案非常不错,所以,我翻译转载过来. 顺便说一下,StackExchange真是非常好,大家可以对同一个答案做贡献和修订,看看这个问题的修订过程你就知道了——专业的问答网站应该怎么去做.这就是我在这篇文章中也说过真正的用户体验是什么样的. 好了,下面是正文(我对原文做了一些批注

学习IOS需要知道的事

什么是iOS iOS是一款由苹果公司开发的操作系统(OS是Operating System的简称),就像平时在电脑上用的Windows XP.Windows 7,都是操作系统 那什么是操作系统呢?操作系统其实是一种软件,是直接运行在硬件(电脑.手机等)上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行. 按照运行系统的设备进行分类,可分为:电脑操作系统.手机操作系统. iOS与Win7等操作系统的差异 XP.Win7是PC操作系统,也就是运行在电脑上的操作系统 iOS是手持设备操

Weex学习与实践(一):Weex,你需要知道的事

Weex学习与实践(一):Weex,你需要知道的事 http://coderyi.com/posts/weex1/ 1.命令行工具:weex-toolkit  https://github.com/weexteam/weex-toolkit 2.调试工具: weex-devtool  https://github.com/weexteam/weex-devtool

学javascript必须要知道的事

第一:变量声明 在使用javascript时使用变量时首先做的是声明变量,变量声明的关键字是var. 例子: var i; var sum; 也可以多个变量声明: var i,sum; 还可以在声明时赋值. var i=0; 如果没有给var声明的变量指定初始值,那么在给其初始值之前这变量一直是undefined. javascript是动态语言在运行期间才会去做数据类型检查,所以不需要给变量指定数据类型,它会在第一次赋值时把数据类型记录下来. 而c和java不一样,它们是静态语言,需要先定义好

wwwwjs777net13094391112关于区块链,你该知道的事

一.前言互联网改变了信息传递的方式,人工智能释放了计算能力,从重复.低效和繁重的工作中把人解放出来.区块链基于其分布式.防篡改.可追溯等特点构建的新型信任机制,将加速生产价值的"数字化"流通,改变价值的传递方式.区块链的开源性.可编程.去中心等特性,将进一步打破信息孤岛,扩展"网络化"运行的边界.机器流程引擎驱动多中心跨主体高效协作,社会资源将实现共商共识共享共治的"智能化"配置,带给区块链应用前景的无限憧憬和想象.互联网经济以数据为关键生产要素

文件名、、扩展名的截取你必须知道的事

js中substr,substring,indexOf,lastIndexOf等的用法 1.substrsubstr(start,length)表示从start位置开始,截取length长度的字符串. var src="images/off_1.png";alert(src.substr(7,3)); 弹出值为:off 2.substringsubstring(start,end)表示从start到end之间的字符串,包括start位置的字符但是不包括end位置的字符. var src

Android Notification自定义通知样式你要知道的事

本文将根据个人经验对Notification做个总结,以供参考! 什么是通知(Notification) 通知是一个可以在应用程序正常的用户界面之外显示给用户的消息. 通知发出时,它首先出现在状态栏的通知区域中,用户打开通知抽屉可查看通知详情.通知区域和通知抽屉都是用户可以随时查看的系统控制区域. 作为安卓用户界面的重要组成部分,通知有自己的设计指南.在Android 5.0(API level 21)中引入的 Material Design 的变化是特别重要的,更多信息请阅读 通知设计指南.

(转)Arrays.sort()你应该知道的事

Arrays.sort(T[], Comparator < ? super T > c) 是用来对用户自定义的对象数组排序功能的.Java 官方文档简单描述了它的作用,但不足以让我们深刻理解.为了更深入地理解它,这篇文章将梳理相关的关键点. 1.简单实例:如何使用Arrays.sort() 通过阅读下面代码,你能快速正确了解这个方法的用途.Comparator(比较器)用于根据Dogs的size比较其大小,并作为sort方法的参数. 1 2 3 4 5 6 7 8 9 10 11 12 13