现在还有学c语言的必要吗 知乎

Python012

现在还有学c语言的必要吗 知乎,第1张

1. 与其它高级语言比起来,C 语言对硬件亲和性差不多算最高,对硬件的利用率也最高(在会用的前提下)。 C 语言可以很方便地任意操作目前计算机内任何可以用地址来表示的东西——也就是说软件能直接操作到的东西中,只有 CPU 里边的寄存器不能直接操作(嵌到 C 里边的汇编或者编译器特殊处理的不算)。2. 比 C 更能全方位操作硬件的只有汇编,但是汇编对复杂程序设计实在是太不方便了。所以目前操作系统也只有很少的部分用汇编写。3. C 语言本身对于应用程序的开发在时间上并不会造成太大的障碍。很多其它语言的高级特性其实只是库的支持而已,如果有那些 library,C 语言在开发效率上并不会有太大的问题。并且发展了这么多年,其实常用的 library 基本上也都能找到。4. 由于计算机性能的增强,越来越多的功能可以仅通过脚本在宿主环境中完成。这是 C 语言做不到的。5. C 语言也是高级语言中最能体现目前计算机硬件工作方式的语言。综合前三点,如果计算机架构不改,C 语言必定还有很大的生存空间。诚然硬件资源和人力资源(编程时间)上的权衡,随着计算机硬件的发展,越来越偏向人力资源,所以C 语言的分额会萎缩。但是人的欲望膨胀得也不慢(对计算机硬件性能的需求膨胀),在这个条件下 C 语言的需求萎缩并不会太快。上面第四点可能是 C 语言需求萎缩的最大原因,不过第四点在一定程度上也拓展了编程人员的需求量。由于最后一点,如果真的要对其它编程语言有很深入的理解,那必须理解计算机的架构(计算机到底是怎么干活的),那么 C 语言是道迈不过的坎。只要涉及到操作系统就离不开 C 语言了(当然可以说有的操作系统用的 C++,但是如果 C 语言都没搞清楚,C++是不可能搞清楚的)。对于比较上层的开发者来说就算不常用C语言,至少要知道 它是怎么回事,就像写驱动的人可能并不常用汇编,但是一定要知道它是怎么回事,不然怎么解那些莫名其妙的 bug?学了C 语言,最不济的情况下,也是会让你有机会成为使用其它任何语言的高手。

说的非常好,转一下

作者:熊心源

链接:http://www.zhihu.com/question/21992679/answer/19991091

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

我就是c入门,一开始很难理解,啃书啃的特别痛苦。不过克服了这个,后面学python,c++都是一帆风顺,因为c算是挺底层的高级语言,很多细节,掌握了这些其他的就不再话下了。所以用c入门可以认为是从较难的开始,打牢这个基础后面就容易了。

大多数人觉得c不适合入门也是这个原因,一开始入门太难太慢成效低,很容易打击学习积极性,尤其是自学的话更困难。所以建议自学还是从易到难深入,python就是公认的很简单的入门语言。有了c做基础一周内就能掌握。没有基础的话几个月也差不多

对于题主的问题,我觉得有点大了,这个问题就好像我问一个学习金融的人这样一个问题:对于非金融专业的学生,怎么入门金融学?

OK,我先说说我对计算机的理解吧,因为我觉得这对学习计算机比较有好处。

我所认为计算机是什么呢? 他是一种辅助设备,能够拓展人类的能力。能够轻易完成人类很难做到和很费时间和精力才能做到的事情。

Okey,理解说完了,开始干货:

计算机分为硬件和软件,硬件就是你看得见摸得着的,软件是你看得见摸不着的。介于题主是想说入门,我就不推荐计算机有关硬件的东西了,我主要推荐的是软件的方向。

通常对于计算机专业的人来说,了解计算机的硬件组成是非常有必要的。因为这不单单只是告诉你现象,还告诉你的本质。

学习计算机的软件(还有硬件):首先,你要看一本叫《计算机科学技术导论》的书(事实上不管你专攻硬件还是软件,这本书看看绝对没错),这本书包含了很多的基础内容,

比如2进制(“计算机世界”的语言,计算机非常笨,哦,也就是cpu非常笨,只能明白01010101,其他的统统不知道),

计算机硬件的组成(运算器,控制器,存储器,输入输出设备),

汇编语言(因为010101对于人类来说过于麻烦和难以理解,所以就把一段010101用几个字母定义,例如“mov”),

然后就是c语言,一些很懒的使用汇编语言的程序员觉得汇编语言还是不够方便,所以就发明了高级语言---c语言。(可以看出来计算机的发展史真的是一群很懒的人的奋斗史:),我希望有幸成为他们其中的一员。)

当然,里面还说了很多其他的东西。

看完了《计算机科学技术导论》以后,好吧,这是开胃菜,正菜开始上桌了。

C++ 。推荐书目:《C++ primer》 ,C++是一门计算机高级语言,计算机语言是拿来干什么的呢?就是和计算机交流的,你看,你和英国人说话要说英语,要和广东人说粤语,要和荷兰人说荷兰语。一样的道理。随着“hello world”在那个黑黑的界面中显示出来的时候,你甚至会怀疑:这TM就是编程?!

哦,这只不过是万里长征中的第一步。后面还有好多有趣的东西呢。

你要开始了解什么是变量,什么是常量,什么是循环,什么是类,什么是判断语句,什么是继承,等等等等。

如果你学习完了语法部分(就是上述说的),那么,恭喜你,基本上已经可以和别人说:我学过编程了。

好嘞,开始下一步:

因为题主的研究生是金融的,而且boss是做risk management的,那么算法就是必不可少的了。

《算法艺术及信息学竞赛》 这本书还不错,介绍了一些基本的算法(当然里面不会告诉你怎么进行风险管理,那是金融专业的事)。我只是粗略的过了一遍,所以就不献丑了。不过研究算法感觉就像在原始丛林里面爬山,一般人进去就跪了,有了大量的经验以后才能生还。

《数据结构》 ,在计算机科学或信息科学中,数据结构(英语:data structure)是计算机中存储、组织数据的方式。通常情况下,精心选择的数据结构可以带来最优效率的算法。(来自维基百科),这是修炼的内功心法之一。

《操作系统》,了解了操作系统的原理以后,才能更好的操作我们正在使用的系统。属于中级的课程吧。

《编译原理》, 如果说计算机语言是魔法咒语的话,编译原理就是告诉你,这些魔法咒语是怎么生效的

《计算机组成原理》 哦,这个非常有趣,和操作系统有很大关系,但是这个是从硬件的层次上面(大部分来说)来解释计算机的组成

《软件工程》 估计题主暂时看不到这里的了,什么是软件工程呢?我的理解就是,把写软件规范化。形成一种规范以后好处就不言而喻了。

实话说,在学习的过程中会出现很多问题:

比如说语言选择的问题,你会听说JAVA无所不能,C#简单方便,python优雅至极,php开发速度快到带你飞。

我个人觉得,语言不是重点,语言只是个工具而已,重要的是人,就好像我们都会写中文,为啥俺和莫言的差距咋就这么大呢!

个人建议是:发挥各个语言的优势,在不同的情况使用不同的语言。

比如说:

1.想要开发个简单的网站,PHP是不二的选择(你可以想象用C++写网站的“快感”么?)

2.windows下的程序,C#绝对是王道,还有比微软自家的东西更懂自己的么?

3.android开发,平台的限制,最好还是用JAVA。

4.考虑到性能问题,如果你是个大神(那是不可能的,如果这样你就不会问怎么入门了)那绝对会使用到C++,对于一般的凡人,JAVA的回收机制以及够用了。

如果你想要买书,个人觉得最好不要买国人写的,因为国内大部分都是你抄我我抄你的节奏,最好买国外的书。图灵系列的我觉得不错。

我个人觉得,学习计算机并不神秘和复杂,甚至有些可怕的简单,有付出,就一定有回报。因为计算机的严谨性,他永远不会出错,你给出了正确的方法,就会得到正确的结果。

这里推荐题主一个小网站,名字叫做提问的智慧:

http://www.beiww.com/doc/oss/smart-questions.html