不把C作为第一门语言是个好主意么?

摘要:不少人认为,第一门语言最好不要学C,而V众投发起人李智勇却不这么看。他认为如果真想做好开发,想更好地实现人生价值(包括现金价值),那么打基础很必要,而从C语言,这种厚积薄发的语言开始学习学起,则很必要。


近来连续看到这样两个信息,一个是知乎上有个问题叫:如何学习C语言?,这个问题的答案中得票数第二高的是不要最先学习C语言;一个是看到了2012年金旭亮老师写的第一门编程语言选谁?这文章,金老师也是支持不用C做第一门语言的,从投票来看大部分人也比较支持这个观点。

这是比较让我意外的事情,因为我正好持相反的观点。

语言学习的两种道路

我们有两条路来学习编程,一条是厚积薄发,一条则是速成的道路。厚积薄发要一点点打根基,比如学习C语言、学习计算机系统的构造,去看《计算机程序的构造与解释》这类书,去学习算法等,这么走有点吃力不讨好,吭哧半天也还不一定能看到什么结果;速成的就可以先学习IDE,先学习脚本,先学习CSS,JavaScript,这样没多久就可以独立干不少活了,比如创建个漂亮网站什么的。

这种不同道路的选择最终决定了C是不是更适合做第一门语言。走前一条路的显然就适合用C做第一门语言,因为不掌握这种系统级的语言就不太好理解什么是指针,什么Stack,什么是Stack Overflow,什么是写超界,对打基础形成不良影响,也理解不了《深入理解计算机系统》这样的书。走后一条道路的就没关系了,哪个实用学哪个。

想知道适合走哪条道路,请先拷问自己!

初学者到底适合选择哪个方向?首先我们必须承认没有哪种方法是适合所有人的,举个例子来形象地说明这一点:松鼠桂鱼是苏州这边的名菜,但对于不喜欢甜食的人来说,这道菜很糟糕。

因此我不想在技术上展开太多,这更主要是个人成长的现实问题,从怎么做更有利于实现自己的价值(包括现金价值)来探讨可能更有现实意义一点。所以要想回答要不要从C开始,最好先回答下面这样的问题:

  1. 你是不是想专职做程序员,把它作为自己未来的职业?
  2. 你是不是想成为比较杰出的程序员获得更好的成长和收入?

上面这类问题的关键在于,如果你一直做程序员而不是做做就干别的去(比如管理、销售等等),那么就要有专业,专业才能更好的创造价值,而专业需要一种高度,高度则需要基础和积累。我们很难讲不学C语言就成不了很专业的高手,但你可以看看身边,很多高手就是打了基础一点点磨练出来。

这么说也许有点抽象,我们来看看具体的故事:

2012年的时候Facebook花10亿美元买下了照片共享应用公司Instagram。这事在当时引起了非常大的轰动。这事之所以引起极大关注,其关键点在于后者只有十几个员工。十几个员工支撑起10亿美元的价值,这绝对是让人震惊的事情。

做个简单的比较就可以知道这个差距有多大。

假设一个公司是做外包的,非常厉害,人月单价有4万RMB。同时这个公司包括支持人员在内有500人,公司里每个人都可以换成收入,那么这个公司一年的收入大概是4000万美元,而Instagram用十几个人达成10亿美元价值只用了差不多2年。两家公司中,单人一年创造价值的比率是差不多500万倍。

这是怎么样的一种杠杆率差异!大家可以想象都是写程序,这两种杠杆率回报上的差异。

这种杠杆率背后隐含了这样一种基本现实:基于很多现有的框架,小而精的团队已经可以通过产品撬动极大的生意,这并不仅局限于Instagram。而为了打造这种小而精的团队,大家在听一些分享时就会发现:很多人都有意愿找ACM上成绩比较好的人,他们认为这类人更有以一当十的可能性等。

从这类现象中我们可以挖掘出来什么东西?

  • 第一点,如果把程序员进行分级,一个极端是能做很高端的活,比如以小而精的团队打造很牛的产品;一个极端是只能做CRUD的活,那收入与这种技能等级正相关是无疑问的,杠杆率在那里。
  • 第二,做很高端的工作可以并不只局限于打造产品,也可以去弄系统底层等等,但总的来看,越往高端走对基础要求越高,这里的基础范围可以广点:可以是算法,可以是对体系结构的理解等。没有这类基础工作时,就很容易被卡在一些地方干瞪眼,不知道如何下手解决有点难度的问题,而事实上当你试图创建一个新产品的时候,必然会碰到独属于你自己的问题

要想成为名好程序员 学习C语言是非常必要的

在《程序员生存定律》里,我写过一篇文章叫:程序人生的出口。其中列举了程序员最可能的结局,比如:

1 成就超一流高手 
简单来讲就是继续以程序员的身份进行奋斗成为牛人。
2 积累、爆发、开始创业
简单来讲就是自己做产品,努力当CxO去。
3 转向管理之路
大多情形下是抛弃程序,内部转行去喊口号。
4 维持原状的老码农
就是在CRUD这个层面打转那种。
5 提前退场、向代码说再见
眼看前途渺茫,转行了。

这其中1对基础要求很高,2与3对打基础比较无所谓,这时候技术很像一种敲门砖,而4与5很可能正是忽视了基础的结果。

这样一来事情就非常清楚,如果你真想长时间做程序员,并且想比较好的实现自己的人生价值(包括现金价值),那么打基础是很必要的,再进一步就是说从C语言开始学习编程其实是很必要的。

从C语言开始学习编程对大学生的另外重意义

从C语言开始学习编程对大学生而言还有另一重含义:除了大学的时间,你可能再也没有大段的时间打基础。容易的东西是可以用碎片时间学的,比如各种脚本语言,但难的东西是需要大片时间学的,所以一旦大学里不把硬骨头啃掉,未来很可能就没时间啃了,说回来还是要先打基础再谈其它。

历史上赵匡胤曾经犹豫过是先搞定比较羸弱的南唐还是先搞定幽云十六州,最终他选择了先易后难去搞南唐,从结果来看这是错了,你不趁自己最巅峰的时刻搞定最难搞的,未来可能就再没机会了,而羸弱其实一直会弱在那里,早搞晚搞差别不大。

当然我们也必须承认即使努力的去打基础,也不是每个人向上走,都能成为高手、成为特别牛的程序员,还是有人会卡在某条线下面,要去维护垃圾代码、写垃圾代码,但关键是我们谈的是在学习阶段应该怎么做,不争一争就放弃某种可能性,还是太可惜了。

此外,对于大学生或者那些有充足时间学习的人,我不太认可一种方式可以培养兴趣,另一种就不能培养兴趣的说法。这更多的可能是种借口,因为在有如此多好玩开源项目的年代,对于想学的人,C语言一样可以有很多兴趣,对于不想学的人再简单的语言一样也很无聊。

有没有趣,是学习或者是教学方法的问题,而不是编程语言的问题。

最后我想再补充两点

首先,我写上面内容时,没太考虑职业技术学校的情形,一旦考虑速成,考虑大规模生产,结果必然会掉过来,这并不令人意外。

其次,并不是只有我有这类观点,大名鼎鼎的Joel在《软件随想录》里专门有一章叫“学校只教Java的危险性”,其中所表达的观点与这里的观点类似。

作者介绍:李智勇,V众投发起人,《完美软件开发:方法与逻辑》作者。目前正在免费发布《程序员生存定律》,微博:李智勇SZ,微信:vfacebook。


《畅言》第三期:【[畅言]Android、Chrome OS长达四年的“恋情”,为什么会在今天确立关系?】Android和Chrome OS融合的传闻早在2010年就有了,这个传闻到2013年即被谷歌执行董事长Eric Emerson Schmidt和Android主管Sundar Pichai否定,时隔仅不到一年,谷歌为什么又允许Chrome OS上运行Android应用呢?

《畅言》第四期:【[畅言]流量变现——社交问答网站的生与死】互联网流量真的就一定能变现吗?如果是,那为何知乎、果壳的产品成功了、流量也可观了,但为何它们至今仍没有走出绝地?如果不是,那流量的繁盛为什么没有给他们带来盈利?社交问答网站路在何方?

《畅言》第五期:【[畅言]管理者:我不需要你喜欢我】爱奇艺上海PPS研发总监陆其明称,有人若对你说,喜欢在你底下干活,别自喜!这不一定是在肯定你能力。如果他能力不强,那么他的言外之意却是“在你底下混得比较舒服”。这是个危险信号!因此管理者,不要无原则地讨好员工、不需要让他喜欢你,而是需要:赢得他们的尊敬!

《畅言》是CSDN新栏目,供大家各抒己见。只要你看完CSDN文章或评论后有话说,都可以通过电子邮件(zhangyong@csdn.net)投稿,从而获得上CSDN首页表达自己观点、想法的机会。《畅言》不怕观点“雷人”,只要你逻辑表达清楚、数据引用可靠,你敢投稿,我们就敢首页!欢迎大家畅所欲言。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/447520.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

系统集成项目管理工程师(软考中级)重点知识、背诵版

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 为了入户广州报考了软考中级,一次通过。 以下为背诵笔记:

JVM的新生代、老年代、MinorGC、MajorGC

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 参考: http://blog.csdn.net/flamezyg/article/details/44673951 http://www.blogjava.net/ldwblog/archive/2013/07/24/4…

解决:无法获取实体类com.xxx.xx.xx.xx.dto.XxxDTO对应的表名

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 1.报错如题: 无法获取实体类com.xxx.xx.xx.xx.dto.XxxDTO对应的表名 2. 报错原因,如下图红框中部分&#xff0c…

IDEA 查看最近修改、已提交文件

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 如图:点击 Version Control --> Repository --> 最左边蓝色圆圈 --> 选择一条提交日志:右边就…

程序员赚钱致富的6种方法

我认识一个朋友,也是程序员出身,他在一家还不错的外企上班,每个月工资收入也就差不多15K,五年的工作经验了,在他面前,我算是小弟。那天我们几个朋友一起打完球就去附近的饭馆吃饭,环境还不错&am…

解决:Changes not staged for commit:

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 1. git push 报错: 2. 提交时加上参数:-a ,表示新增。 git commit -am "提交说明" 提交成…

java8 注解: @FunctionalInterface (函数式接口)

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 Java8提倡函数式编程,因而新增了一个函数式接口。函数式接口保证了函数式编程,同时也保证了能够兼容以前的java版…

写给年轻程序员的一封信

很多年轻的程序员发emails给我,说希望能够得到一些如何尽快跻身优秀程序员行列的建议和方法。关于这个问题,我已经有提到过很多次,现在已经没什么可以补充的了。不过 为了满足大家的要求,在这里我再详细地归纳总结一下&#xff1a…

Docker中RocketMQ的安装与使用

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 搜索RocketMQ的镜像,可以通过docker的hub.docker.com上进行搜索,也可以在Linux下通过docker的search命令进行搜索…

大浪淘沙:不是所有的IT公司都以成功收场

本文列举了50家创业公司没有什么先后顺序,最后显示,其中21家是独立公司,19家被收购了,4家正在走下坡路,6家已倒闭。但是我希望有更多的公司彻底倒闭,留下实力最强大的公司。公司倒闭也许是重新开始的标志。…

解决:阿里云ECS服务器 远程连接不上、极慢 (主机监控的实现)

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 个人低配版的阿里云ECS服务器,突然发现用 Xshell 或者 git-bash 都连接不上... 第一反应发工单去问下为什么,然…

TIOBE 2014年7月编程语言排行榜:仅发布1月,Swift进Top 20!

摘要:TIOBE7月编程语言排行榜发布,本月最值得关注的是,苹果公司在WWDC 2014上推出新的编程语言Swift,发布至今仅一月有余,Swift竟挤进TIOBE排行榜的Top 20,排名第16位。Swift能取得如此骄人的成绩&#xff…

Math对象方法总结(向上取整、向下取整、四舍五入、取随机数,取最大值、取最小值)

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。

Docker 方式安装 gitlab ( 阿里云ECS )

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 1.查找镜像: docker search gitlab 2. 拉取镜像: docker pull 镜像名 我选择的是搜索出来的第一个镜像&…

生成多个 SSH-Key 、生成多个公钥和私钥

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 当有多个仓库要同时使用时,需要配置多个公钥、私钥。于是就要先生成多个。 PS:初次生成参见文章:查…

使用Lucid Virtu在有独立显卡的情况下使用Intel硬件加速H.264编码

在硬编码领域,大家都知道CUDA技术对于H.264视频编码速度的提升。然而实际上常见的高清H.264视频压缩都不是用CUDA技术进行硬编码,而是用传统的x264进行软编码,因为通过CUDA硬编码的视频效果远远差于x264软编码压缩出的视频效果。随着Intel Sa…

Intel硬件加速 VS CUDA完胜 视频转码感受

对比试用平台介绍 在体验了酷睿 I5 2300 在3D游戏和多任务、高清播放等方面的突出性能后,今天我利用空闲时间针对酷睿 I5 2300在高清转码方面上与本人的旧平台上对比了一下.,其结果也让人感到震撼。好了闲话不多说了,先来给自己新旧PC做个介绍…

解决 : Shell 脚本 $‘\r‘: command not found 问题

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 1.经查证,只是 Windows 的空行在 linux 中不识别,故需要用 dos2unix 来转换。 2. 安装 dos2unix,2 …

H.264 软/硬编码器 画质量化分析评测

第1页:前言——视频压缩无处不在H.264 或者说 MPEG-4 AVC 是目前使用最广泛的高清视频编码标准,和上一代 MPEG-2、h.263/MPEG-4 Part4 相比,它的压缩率大为提高,例如和 MPEG-2 相比,同样的压缩后画面品质,h…

解决:Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.8.2:deploy (default-deploy)

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 1. 执行 mvn clean deploy ... 想把 jar 包更新到私服仓库,报错: Failed to execute goal org.apache.maven.pl…