当前在线人数14319
首页 - 分类讨论区 - 电脑网络 - 葵花宝典版 - 同主题阅读文章
未名交友
[更多]
[更多]
为什么C语言很难?
[版面:葵花宝典][首篇作者:yzhao123] , 2017年06月16日13:01:55 ,6670次阅读,50次回复
来APP回复,赚取更多伪币 关注本站公众号:
[首页] [上页][下页][末页] [分页:1 2 3 ]
yzhao123
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 1 ]

发信人: yzhao123 (yzhao), 信区: Programming
标  题: 为什么C语言很难?
发信站: BBS 未名空间站 (Fri Jun 16 13:01:55 2017, 美东)

赵岩 http://zhaoyan.website

前两天,有个学校要给高中生开一门编程的课,大家讨论用什么编程语言授课,大部分
人推荐用JAVA, 一部分说用Python,但是几乎所有的人都说:C语言太难了!

作为《C语言点滴》的作者,《C语言新思维》译者,这种语言坑我一般都绕开的,因为
无论我说什么,没私心也显得有私心。但是“C语言太难”这句话太扎心,搞得我有点
伤心。(文章排比对账,我只服自己!)我决定站出来为C语言说两句公道话!首先我
个人必须承认,大家认为的都没错,相比较另外两种语言,C语言确实是最难学的。但
是C语言为什么难?我认为锅不能C语言一个人背!背后还有三个主要的原因,那就是:
面对任务难,开发环境难,底层难。

首先是面对任务难。我不认为用{}就比用缩进难!声明一个变量的类型就比不声明一
个类型难!需要编译一遍就比直接运行难!就像你认为英语难,还分he, she;还有a,
the。老外却不这么想。换位思考一下,下面这个牌匾也会让老外抓狂的。

说到底,这种语法级别的难度比较其实没有任何意义,只是一个使用习惯,一个小程序
python用10行,C语言可能用20行,就因为多敲了10行你就难受的不要不要的,我只能
对你说:要身残志坚!

不同与JAVA和python,C语言面临的任务几乎都是要求实时,高速或者是嵌入的。例如
医疗,军事,飞控,航天,金融等领域。举个栗子,NASA大部分软件要基于三个不同的
时钟系统,自转(公转)时间,CPU的晶振时间和原子钟时间。一秒要分成500份,基于
2毫秒的基础进行操作同步;同时用全球的原子钟时间均值对所有时钟系统调整。在这
种环境下,JAVA那种“大约一分钟以后”的虚拟机管理方式一定是不行的。 所以我在
NASA工作所接触的软件,几乎都是C语言编写的。可想而之,这种软件的开发难度,当
你阅读这种程序代码的时候,你说C语言太难了,这是否有点不公平?

其次是开发环境难。C语言一开始就和UNIX(LINUX)有不解之缘,它们是伴生的系统。
所以要想发挥C语言的全部威力,最好的开发环境就是UNIX(LINUX)系统。但是问题来
了,UNIX(LINUX)系统里的各种开发工具,每一个都不是省油的灯。它们设计的最初
目的就是效率,而不是易学性。再举个栗子,gcc的各种编译开关就很复杂了,make系
统为了解决gcc的部分问题,自己随之带来了更大的问题。git目的就是帮你保存历史备
份,但是你会发现你经常会串改历史,或者干脆迷失在历史中。就连最简单的一个编辑
器VIM,头一个月内,你最多的使用体验就是“恨不得拽自己的头发把自己提溜起来。”

好吧,外面的世界太凶险!让我们回到Windows妈妈哪里。虽然Windows的大部分内核都
是C语言写的,但是它对C语言的支持缺最差。Why?如果你用Window的编译器去编译C语
言,你会发现变量必须要写到函数的开头。它是唯一一个只支持到C89标准的编译器。
Windows本身不想去抢这份实时,高速,嵌入的市场,老老实实做消费电子市场就好,
这种市场要求开发容易,发布快。所以C#语言和后面的.Net平台才是它发展的重心。像
玩LEGO那样的编程,你需要做的就是把一个个控件拽到窗口上,用鼠标来编程!所以还
是算了吧,毕竟你也不想你在做飞机的时候,飞机上控制降落的电脑突然蓝屏了吧!所
以如果你是一个C程序员,你唯一能做的就是在linux下使用哪些臭名昭彰的难学的工具
。这笔账难到也要算到C语言的头上吗?


最后是底层难。这必须要要聊聊C语言两个最受诟病的特性,位操作和指针。这两个概
念本身很简单。但是通过这两个概念,它把很多底层操作系统的知识和体系结构的知识
都暴露了出来。指针指向地址后,马上引入了一大堆内存管理知识。什么是堆?什么是
栈?这个地址在内存的那个区域?这个区域可以修改吗?这个区域自动回收吗?指针指
向函数后,又引入了一堆操作系统知识,什么是回调函数啊?什么是事件驱动啊?以及
位操作后面的二进制,溢出,浮点数精度等等一系列的问题。我用手指指向了一本《相
对论》,然后就有人跑过来对我说,你这个手指头太难了!

如果编程只是你的业余爱好,使用那种语言真的无所谓。大部分初学者面临的任务规模
下,三种语言的开发难度都差不多。 就是打个招呼,英语的“hello”,中文的“你好
”,或者是日语的‘牙买碟’,我实在看不出这有什么难度上的区别。但是如果你立志
要当一名高水准的程序员,C语言你是逃避不开的。或者编程序是你的饭碗,你也要认
真考虑一下C语言。语言的易学性在就业上是一把双刃剑。如果一个公司招聘C程序员,
你第一个反应就是他为什么不去招聘满大街的JAVA程序员?你面临的一定不是什么图书
管理系统,也一定不是一个什么网站。想明白了这一点,就完全有理由要一个高价钱!

C语言很难,要逃避这种难,却很难!C语言很简单,要理解这种简单,却不简单(文章
排比对账,我只服自己!)
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 2602:0306:363d:]

 
NeverLearn
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 2 ]

发信人: NeverLearn (24K golden bear), 信区: Programming
标  题: Re: 为什么C语言很难?
发信站: BBS 未名空间站 (Fri Jun 16 17:12:15 2017, 美东)

C最大问题是那堆路数很野的MACRO。一通#ifdef之后IDE无法intellisense。
与IDE不合作是当代程序语言一大禁忌。
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 69.]

 
lestrois2000
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 3 ]

发信人: lestrois2000 (lestrois2000), 信区: Programming
标  题: Re: 为什么C语言很难?
发信站: BBS 未名空间站 (Fri Jun 16 17:35:56 2017, 美东)

抽象不够,生产效率低。

--
☆ 发自 iPhone 买买提 1.23.01
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 65.]

 
nkw
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 4 ]

发信人: nkw (非死非活), 信区: Programming
标  题: Re: 为什么C语言很难?
发信站: BBS 未名空间站 (Fri Jun 16 18:56:53 2017, 美东)

rust 什么能完全代替c吗?
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 66.]

 
dynkin
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 5 ]

发信人: dynkin (化神奇为腐朽), 信区: Programming
标  题: Re: 为什么C语言很难?
发信站: BBS 未名空间站 (Fri Jun 16 19:00:33 2017, 美东)

不行。rust写着很蛋疼,有一大堆问题还没碰到呢。

【 在 nkw (非死非活) 的大作中提到: 】
: rust 什么能完全代替c吗?



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 24.]

 
joa
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 6 ]

发信人: joa (不痛不痒), 信区: Programming
标  题: Re: 为什么C语言很难? and clojure?
发信站: BBS 未名空间站 (Fri Jun 16 19:20:47 2017, 美东)

clojure也是么?

【 在 NeverLearn (24K golden bear) 的大作中提到: 】
: C最大问题是那堆路数很野的MACRO。一通#ifdef之后IDE无法intellisense。
: 与IDE不合作是当代程序语言一大禁忌。



--

※ 来源:·BBS 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 100.]

 
dumbCoder
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 7 ]

发信人: dumbCoder (HumbleCoder 不懂就问-_-), 信区: Programming
标  题: Re: 为什么C语言很难?
发信站: BBS 未名空间站 (Fri Jun 16 19:37:30 2017, 美东)

其实C语言本身不难, 因为特性少, 倒是底层知识还有(上古的)开发工具有点难.
比如 Xnix 的C语言 tool chain, 比C语言难多了, 而且很多年一直用.
就是些 bash, make, gcc, vim/emacs, gdb, valgrind, core dump 等等.
system公司里, 螺丝钉员工都搞不定, 有专人干这些脏活, 比如build用的大make&bash.
所以本版那些自己又做admin/build, 又编写大型C/C++代码的, 都是独立的老司机.
我每次读到复杂的make&bash都晕菜, 更别说从Java/Python入门的小年轻.
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 2601:0646:c501:]

 
heteroclinic
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 8 ]

发信人: heteroclinic (asymptotically stable), 信区: Programming
标  题: Re: 为什么C语言很难?
发信站: BBS 未名空间站 (Fri Jun 16 21:51:22 2017, 美东)

c 最大得问题是移植得问题,先在linux得移植还烂得一筐
第二C内部派系咬得很厉害。
第三,VB得成功,VISUAL STUDIO。JAVA 离不开ECLIPSE。都是成功得团队工作。
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 47.]

 
digua
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 9 ]

发信人: digua (姚之FAN), 信区: Programming
标  题: Re: 为什么C语言很难?
发信站: BBS 未名空间站 (Fri Jun 16 22:55:57 2017, 美东)

C语言好学。有编程基础的人,三天就能把基本的东西学会。

但C语言程序不容易写好。要写出高效精练虫子少的程序,不容易。

--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 73.]

 
xyz14
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 10 ]

发信人: xyz14 (xyz14), 信区: Programming
标  题: Re: 为什么C语言很难?
发信站: BBS 未名空间站 (Fri Jun 16 23:50:07 2017, 美东)

指针,内存管理

【 在 yzhao123 (yzhao) 的大作中提到: 】
: 赵岩 http://zhaoyan.website
: 前两天,有个学校要给高中生开一门编程的课,大家讨论用什么编程语言授课,大部分
: 人推荐用JAVA, 一部分说用Python,但是几乎所有的人都说:C语言太难了!
: 作为《C语言点滴》的作者,《C语言新思维》译者,这种语言坑我一般都绕开的,因为
: 无论我说什么,没私心也显得有私心。但是“C语言太难”这句话太扎心,搞得我有点
: 伤心。(文章排比对账,我只服自己!)我决定站出来为C语言说两句公道话!首先我
: 个人必须承认,大家认为的都没错,相比较另外两种语言,C语言确实是最难学的。但
: 是C语言为什么难?我认为锅不能C语言一个人背!背后还有三个主要的原因,那就是:
: 面对任务难,开发环境难,底层难。
: 首先是面对任务难。我不认为用{}就比用缩进难!声明一个变量的类型就比不声明一
: ...................




--
☆ 发自 iPhone 买买提 1.23.01
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 73.]

 
hci
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 11 ]

发信人: hci (海螺子), 信区: Programming
标  题: Re: 为什么C语言很难? and clojure?
发信站: BBS 未名空间站 (Sat Jun 17 00:51:13 2017, 美东)

C和Clojure的共同点在于,都是很简单的语言。一个是底层的,一个是高层的,但都力
求简单。

简单,所以都是我喜欢的语言。

【 在 joa (不痛不痒) 的大作中提到: 】
: clojure也是么?



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 34.]

 
remus
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 12 ]

发信人: remus (没意思), 信区: Programming
标  题: Re: 涓轰粈涔圕璇█寰堥毦?
发信站: BBS 未名空间站 (Sat Jun 17 00:52:04 2017, 美东)

灞佺敤娌℃湁銆傚浜庡垵瀛﹁呭浠ヨ嚧鐢ㄦ槸鏈閲嶈鐨勩傚java鍙互寰
堝揩鐢ㄤ竴鍫嗗簱鎼釜灏忔父鎴忔垨鑰卆pp 瀛︿簡C鑳界敤鏉ュ共鍢涳紵
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 50.]

 
silverhawk
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 13 ]

发信人: silverhawk (silverhawk), 信区: Programming
标  题: Re: 为什么C语言很难?
发信站: BBS 未名空间站 (Sat Jun 17 02:37:01 2017, 美东)

C语言难不是本身C的语法或者应用难,关键是真正派的上用场大规模实践的C语言和计
算机体系,编译,操作系统要一起学才有放大价值,当时啥都没学大一第一学期学C完
全不明白为啥要搞指针,觉得直接取值不就是了,何苦脱了裤子放屁,知道后来学习其
他之后才明白
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 24.]

 
ozin
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 14 ]

发信人: ozin (ozin), 信区: Programming
标  题: Re: 为什么C语言很难?
发信站: BBS 未名空间站 (Sat Jun 17 03:18:23 2017, 美东)

c是最简单的语言,需要记住的东西最少,这种极简主义正是现在语言所缺乏的,搞出
一大堆新特性恰恰说明了初始设计的失误
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 128.]

 
garphy
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 15 ]

发信人: garphy (喜欢猫), 信区: Programming
标  题: Re: 为什么C语言很难?
发信站: BBS 未名空间站 (Sat Jun 17 09:18:27 2017, 美东)

c语言还是很好的,可是被淘汰是必然

【 在 ozin (ozin) 的大作中提到: 】
: c是最简单的语言,需要记住的东西最少,这种极简主义正是现在语言所缺乏的,搞出
: 一大堆新特性恰恰说明了初始设计的失误




--
☆ 发自 iPhone 买买提 1.23.01
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 2601:0640:8202:]

 
guvest
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 16 ]

发信人: guvest (我爱你老婆Anna), 信区: Programming
标  题: 为什么C语言很难?
发信站: BBS 未名空间站 (Sat Jun 17 11:34:31 2017, 美东)

C是贝尔实验室的项目
不是IBM的

没有EE知识的
补课不容易

难点很多是和硬件
或者信号处理什么的相关的
这些东西并不难
没什么特别高的智力成分
不过很多诀窍会的人不会告诉你

前段时间我们组把一个退休的designer弄回来
做一个东西,给了2M
相当部分工作是C code

其实没什么技术含量
但是求个稳妥不出事
所以找最有经验的人来

--
※ 修改:·guvest 於 Jun 17 11:42:37 2017 修改本文·[FROM: 172.]
※ 来源:· 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 172.]

 
swsll
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 17 ]

发信人: swsll (sws), 信区: Programming
标  题: Re: 为什么C语言很难?
发信站: BBS 未名空间站 (Sat Jun 17 13:14:22 2017, 美东)


因为什么都得自己编
--
※ 来源:·iOS 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 71.]

 
chenm003
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 18 ]

发信人: chenm003 (____), 信区: Programming
标  题: Re: 为什么C语言很难?
发信站: BBS 未名空间站 (Sat Jun 17 13:27:48 2017, 美东)

只能说用的领域越来越窄,淘汰还是不可能的
比如我现在做的项目,每秒700亿样本,就算给1/100计算量,不知道用Java或者Python
处理的过来不?或者用巨型机和普通i7得到相同处理能力?

【 在 garphy (喜欢猫) 的大作中提到: 】
: c语言还是很好的,可是被淘汰是必然



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 99.]

 
wwzz
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 19 ]

发信人: wwzz (一辈子当码工), 信区: Programming
标  题: Re: 为什么C语言很难?
发信站: BBS 未名空间站 (Sat Jun 17 16:00:42 2017, 美东)

每秒700亿,70billon?是神马东西?

【 在 chenm003 (____) 的大作中提到: 】
: 只能说用的领域越来越窄,淘汰还是不可能的
: 比如我现在做的项目,每秒700亿样本,就算给1/100计算量,不知道用Java或者
Python
: 处理的过来不?或者用巨型机和普通i7得到相同处理能力?



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 24.]

 
heteroclinic
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 20 ]

发信人: heteroclinic (asymptotically stable), 信区: Programming
标  题: Re: 为什么C语言很难?
发信站: BBS 未名空间站 (Sun Jun 18 01:01:30 2017, 美东)

电视机雪花点,白噪音吧?
【 在 wwzz (一辈子当码工) 的大作中提到: 】
: 每秒700亿,70billon?是神马东西?
: Python



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 47.]

[首页] [上页][下页][末页] [分页:1 2 3 ]
[快速返回] [ 进入葵花宝典讨论区] [返回顶部]
回复文章
标题:
内 容:

未名交友
将您的链接放在这儿

友情链接


 

Site Map - Contact Us - Terms and Conditions - Privacy Policy

版权所有,未名空间(mitbbs.com),since 1996