序:

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

(完)

转载于:https://www.cnblogs.com/hellomeng/p/4727525.html

【技术随笔】学习C语言之前你要知道的事相关推荐

  1. 那些在学习iOS开发前就应该知道的事

    原文请看:http://www.cocoachina.com/ios/20150608/12052.html 那些在学习iOS开发前就应该知道的事 2015-06-08 09:14 编辑:suilin ...

  2. 学习 Java 语言,你需要知道的 Java 简史

    阅读本文你将收获: 为什么要学习 Java Java 这门语言如今是互联网行业炙手可热的编程语言,像阿里.美团这些大厂,技术体系都是建立在 Java 之上.这些大厂又是很多新兴互联网企业的技术风向标, ...

  3. ktt算法 约化_答:那些深度学习《面试》你可能需要知道的

    本文是问题"那些深度学习<面试>你可能需要知道的"的回答,答案均以英文版Deep Learning页标标记. 1.列举常见的一些范数及其应用场景,如L0,L1,L2,L ...

  4. 入门深度学习?这里有5件你应该知道的事

    作者|PURVA HUILGOL 编译|Flin 来源|analyticsvidhya 开始你的深度学习生涯? 对于新手来说,深度学习是一个复杂而令人生畏的领域.像隐藏层.卷积神经网络.反向传播等概念 ...

  5. linux 重启oracle_学习Linux前需要知道的事

    第一章 Linux简介 Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的.Linux 是一套免费使用和自由传播的类 Unix 操作 ...

  6. C语言零基础——小白应该知道的事

    一.概述: C语言是面向过程的语言,在这里用户创建过程或函数来执行他们的任务.面向过程的语言是很容易学,因为它遵循的算法来执行你的语句.要使用面向过程的语言开发程序,你需要画/编写算法,然后开始转换成 ...

  7. Linux C高阶(14)C语言宏定义你所不知道的事

    文章目录 规避语法错误 什么时候使用宏定义 规避语法错误 众所周知,C语言支持宏定义,并且功能强大.举个例子: #include <stdio.h> #define swap(a,b) { ...

  8. 设计师如何学习html_HTML5视频:设计师需要知道的10件事

    HTML5革命引起了来自世界各地的令人兴奋的Web设计师. 新规范支持用于构建语义网站的许多元素和属性. 这些新功能包括用于音频和视频格式的多媒体标签. 在过去的几年中,基于Flash的媒体播放器已足 ...

  9. 学习笔记94—所有用过SCI-hub的科研工作者都应该知道的事

    SCI-Hub及其创始人Alexandra的基本信息 I decided to make a quick summary of facts about Sci-Hub and myself, beca ...

最新文章

  1. Nature综述:工程微生物组的通用原则和最佳实践
  2. BZOJ3993: [SDOI2015]星际战争
  3. 3维旋转的3种表示方法之间的关系
  4. DataScience:数据可视化的简介(意义+六大优势)、使用工具之详细攻略
  5. linux学习笔记4:linux的任务调度,进程管理,mysql的安装和使用,ssh工具的使用,linux网络编程...
  6. hpux oracle9,oracle 9i,10G,11G,各版本下载资源
  7. 轻松学PHP编程 源代码
  8. hibernate学习---用Session实现CURD
  9. [支付宝]手机网站支付快速接入
  10. 拓端tecdat|R语言网络和网络流的可视化实践:通勤者流动网络
  11. 理解数据库中的undo日志、redo日志、检查点
  12. 视频号户外直播备受用户及主播青睐
  13. 新东方雅思词汇(List 41 ~ List 45)
  14. 沉没成本谬误(一):你是如何被“套牢”的?(二):吃饱撑着也要把东西吃完
  15. 生成自定义文字的二维码
  16. 一款高颜值的词云包让我拍案叫绝
  17. C语言实现 IFFT 运算
  18. 理解pem pfx文件
  19. 无线自组网AODV路由机制matlab仿真
  20. 什么是索引?为什么需要索引?索引的优劣势?

热门文章

  1. [杂谈]杂谈章2 eclipse没有(添加)“Dynamic Web Project”
  2. 数据类型 类型检测
  3. Asp.net 内置对象
  4. 有漏洞无作为才可怕、可耻!
  5. static final public synchronized abstract
  6. 在GridView里做单选按钮,总结了三种方法
  7. C#中的空值的判断(转)
  8. R语言画图功能到底有多厉害,看看就知道了
  9. android双击熄屏代码,Android响应双击屏幕事件
  10. python开课吧官网_开课吧老师详解 学Python真的可以帮助提高办公效率吗