由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 为什么C语言很难?
相关主题
我老不厚道地说一句,C的工作稳定是假的。在main()里面创建了几个线程,如何等待所有线程都结束?
我觉得学C的话还是K&R最好自学C语言-书和online resources (转载)
有码工的地方就有是非啊Unix在计算机历史上的传奇(转载)
c++ pointer conversion question加拿大是码工的祖国,Java,Php,Unix之父都是加拿大人 (转载)
JAVA的初衷本来就是C++太复杂了,productivity不行解释一下吧Re: C语言的前途
interview with Ben Klemens, author of 21st Century CC语言的变量都一定要放在stack上吗?
BAT, FLG C++的职位都比java多,c++还是很无敌的C/C++函数调用和栈内存
正看一本叫code complete的书,有一句话关于c不明白问个 C++到C的问题
相关话题的讨论汇总
话题: c语言话题: 语言话题: java话题: 简单话题: linux
进入Programming版参与讨论
1 (共1页)
y******3
发帖数: 3
1
赵岩 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语言很简单,要理解这种简单,却不简单(文章
排比对账,我只服自己!)
N********n
发帖数: 8363
2
C最大问题是那堆路数很野的MACRO。一通#ifdef之后IDE无法intellisense。
与IDE不合作是当代程序语言一大禁忌。
l**********0
发帖数: 150
3
抽象不够,生产效率低。
n*w
发帖数: 3393
4
rust 什么能完全代替c吗?
d****n
发帖数: 12461
5
不行。rust写着很蛋疼,有一大堆问题还没碰到呢。

【在 n*w 的大作中提到】
: rust 什么能完全代替c吗?
j*a
发帖数: 14423
6
clojure也是么?

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

d*******r
发帖数: 3299
7
其实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入门的小年轻.
h**********c
发帖数: 4120
8
c 最大得问题是移植得问题,先在linux得移植还烂得一筐
第二C内部派系咬得很厉害。
第三,VB得成功,VISUAL STUDIO。JAVA 离不开ECLIPSE。都是成功得团队工作。
d***a
发帖数: 13752
9
C语言好学。有编程基础的人,三天就能把基本的东西学会。
但C语言程序不容易写好。要写出高效精练虫子少的程序,不容易。
x***4
发帖数: 1815
10
指针,内存管理

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

相关主题
interview with Ben Klemens, author of 21st Century C在main()里面创建了几个线程,如何等待所有线程都结束?
BAT, FLG C++的职位都比java多,c++还是很无敌的自学C语言-书和online resources (转载)
正看一本叫code complete的书,有一句话关于c不明白Unix在计算机历史上的传奇(转载)
进入Programming版参与讨论
h*i
发帖数: 3446
11
C和Clojure的共同点在于,都是很简单的语言。一个是底层的,一个是高层的,但都力
求简单。
简单,所以都是我喜欢的语言。

【在 j*a 的大作中提到】
: clojure也是么?
r***s
发帖数: 737
12
灞佺敤娌℃湁銆傚浜庡垵瀛﹁瀛︿互鑷寸敤鏄渶閲嶈鐨勩瀛ava鍙互寰
堝揩鐢ㄤ竴鍫嗗簱鎼釜灏忔父鎴忔垨鑰卆pp 瀛︿簡C鑳界敤鏉ュ共鍢涳紵
s********k
发帖数: 6180
13
C语言难不是本身C的语法或者应用难,关键是真正派的上用场大规模实践的C语言和计
算机体系,编译,操作系统要一起学才有放大价值,当时啥都没学大一第一学期学C完
全不明白为啥要搞指针,觉得直接取值不就是了,何苦脱了裤子放屁,知道后来学习其
他之后才明白
o**n
发帖数: 2130
14
c是最简单的语言,需要记住的东西最少,这种极简主义正是现在语言所缺乏的,搞出
一大堆新特性恰恰说明了初始设计的失误
g****y
发帖数: 2810
15
c语言还是很好的,可是被淘汰是必然

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

g****t
发帖数: 31659
16
C是贝尔实验室的项目
不是IBM的
没有EE知识的
补课不容易
难点很多是和硬件
或者信号处理什么的相关的
这些东西并不难
没什么特别高的智力成分
不过很多诀窍会的人不会告诉你
前段时间我们组把一个退休的designer弄回来
做一个东西,给了2M
相当部分工作是C code
其实没什么技术含量
但是求个稳妥不出事
所以找最有经验的人来
s***l
发帖数: 133
17
因为什么都得自己编
c******3
发帖数: 6509
18
只能说用的领域越来越窄,淘汰还是不可能的
比如我现在做的项目,每秒700亿样本,就算给1/100计算量,不知道用Java或者Python
处理的过来不?或者用巨型机和普通i7得到相同处理能力?

【在 g****y 的大作中提到】
: c语言还是很好的,可是被淘汰是必然
w**z
发帖数: 8232
19
每秒700亿,70billon?是神马东西?

Python

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

h**********c
发帖数: 4120
20
电视机雪花点,白噪音吧?

【在 w**z 的大作中提到】
: 每秒700亿,70billon?是神马东西?
:
: Python

相关主题
加拿大是码工的祖国,Java,Php,Unix之父都是加拿大人 (转载)C/C++函数调用和栈内存
解释一下吧Re: C语言的前途问个 C++到C的问题
C语言的变量都一定要放在stack上吗?除了类,c++和C区别在那?
进入Programming版参与讨论
d***a
发帖数: 13752
21
不会是欧洲那个对撞机吧?那可真是高大尚的东西。
对搞科学计算的人来说,700亿倒真不是什么了不得的数目。他们现在还在写Fortran程
序,因为Fortran比C还要快一点点。

【在 h**********c 的大作中提到】
: 电视机雪花点,白噪音吧?
w**z
发帖数: 8232
22
是每秒 700 亿

【在 d***a 的大作中提到】
: 不会是欧洲那个对撞机吧?那可真是高大尚的东西。
: 对搞科学计算的人来说,700亿倒真不是什么了不得的数目。他们现在还在写Fortran程
: 序,因为Fortran比C还要快一点点。

d***a
发帖数: 13752
23
啊 ,那就不是欧洲那个。那个是每秒钟产生300GB的原始数据,这是每秒~70G采样...
不过,如果一个数据采样是32-bit,那数据量也差不多是每秒300GB了。

【在 w**z 的大作中提到】
: 是每秒 700 亿
c*********e
发帖数: 16335
24
主要是指针难。java没有指针。

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

w***g
发帖数: 5958
25
45年前发明的语言,当时的机器pdp-7内存是差不多10K,每秒作25万次加法。
现在随便一个台式机,内存都是它的100万倍,随便一个200块钱的显卡,
计算能力可能是它的1000万倍。然后一群人在讨论C语言的指针太难用。
更可怕的是真要做点mission critical的东西竟然还是离不了C语言。
做软件真难啊。

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

c*********e
发帖数: 16335
26
做底层,還是要用c, c++.

【在 w***g 的大作中提到】
: 45年前发明的语言,当时的机器pdp-7内存是差不多10K,每秒作25万次加法。
: 现在随便一个台式机,内存都是它的100万倍,随便一个200块钱的显卡,
: 计算能力可能是它的1000万倍。然后一群人在讨论C语言的指针太难用。
: 更可怕的是真要做点mission critical的东西竟然还是离不了C语言。
: 做软件真难啊。

C******8
发帖数: 501
27
Java 只有指针,没有引用

【在 c*********e 的大作中提到】
: 主要是指针难。java没有指针。
M********t
发帖数: 5032
28
每个语言都有自己的domain, c也不例外。现在新的语言层出不穷, 为什么c却屹立不
倒,就是因为c在其领域内的不可替代性。简单来说就是其实时高效性。c所面对的问题
往往是其他语言不能解决的,这也就决定了要用c来解决的问题都不是简单问题。为了
实时高效,c程序员必须掌握语言之外的很多东西,很多硬件相关,底层的东西。其他
语言解决一个问题,往往是做出来就可以了,而对于c来讲,不但要做出来,而且要做
的快。多快才算快?别人比你快10%,你如何打败它?这些都是c程序员需要考虑的问题
。而且性能是个无底洞,永远做不完。所以说c难,并不只是说它本身难,而是说它面
向的问题难。
n*********2
发帖数: 357
29
怎么我的感觉是反的: Java 只有 reference.

【在 C******8 的大作中提到】
: Java 只有指针,没有引用
k***5
发帖数: 583
30
这个作者写了洋洋洒洒一大堆,没几个到关键的点子上的。
C本身很简单,麻烦的是什么基本都要自己弄。
相关主题
strcat()我觉得学C的话还是K&R最好
嵌入式编程问题有码工的地方就有是非啊
我老不厚道地说一句,C的工作稳定是假的。c++ pointer conversion question
进入Programming版参与讨论
c******3
发帖数: 6509
31
雷达信号

【在 w**z 的大作中提到】
: 每秒700亿,70billon?是神马东西?
:
: Python

sa
发帖数: 1384
32
Fortran is a bit faster than c.

【在 M********t 的大作中提到】
: 每个语言都有自己的domain, c也不例外。现在新的语言层出不穷, 为什么c却屹立不
: 倒,就是因为c在其领域内的不可替代性。简单来说就是其实时高效性。c所面对的问题
: 往往是其他语言不能解决的,这也就决定了要用c来解决的问题都不是简单问题。为了
: 实时高效,c程序员必须掌握语言之外的很多东西,很多硬件相关,底层的东西。其他
: 语言解决一个问题,往往是做出来就可以了,而对于c来讲,不但要做出来,而且要做
: 的快。多快才算快?别人比你快10%,你如何打败它?这些都是c程序员需要考虑的问题
: 。而且性能是个无底洞,永远做不完。所以说c难,并不只是说它本身难,而是说它面
: 向的问题难。

h**********c
发帖数: 4120
33
伟大领袖毛主席教导我们,我们的教育方针是有钱干啥都行,没钱寸步难行。这是他老
人家在井冈山踹启动(kickstart)时候血的教程。
叔也就再弄一把斧头。高大尚的东西,叔也算摸过点皮毛。比如说里雅浦诺夫几个平衡
点,版上谁来说道说道?叔这点有限,但最少特定行为还是门清的。最少有人告诉叔这
些东西怎么搞,叔以前讲过,就叔那破学校,应数的书一面墙,你自己去看吧!老板给
两个PDF学了五六门科,两三本相关专著,叔加上点能量守恒的观点,最少图还画出来
一些。当然物理叔是门外。
叔再问个 Poncare section(旁卡来,欧拉应该读熬爱嘞)。就这个估计数学版能有多少
人不查资料讲讲,当初答辨预演,老板还特意问了我一个相关的问题,叔当时也没客气
,这个问题不是他想象的那样,布拉布拉。老板听了也没吱声。一方面是修养,做事让
你挑不出毛病。另一方面听你对不对,不听你说的好不好听。具体计算结果他也没自己
折腾一遍。
这些东西算了几百个G是有的。但没有数学的边界条件加上后来的人工渲染,几百个T也
啥不是。
这不是高大尚什么是高大尚,世界顶级数学家得圈子,叔没挤进去,最少也知道是什么
样子。
说道这里得关键是,those things dont sell.老板得薄厚,刨除宗族因素,去微软面
试,被问了reverse link list被剧。这人别得不说,linux绝不在好虫之下。欧洲人都
是从第一版玩起得。you don't have to sniff, there is something wrong there.
It does not sum up.
再来说NLP,语音识别,人工智能。叔得团队有过世界顶级得NLP 科学家。叔坐这里吹
,叔设计的机器人逻辑会打扑克。吹不吹,we have tangible results, deliveries.
当然这背后有复杂的pipeline,叔也是参照一些范例做的。再比如DRAGON,买了license
,也是折腾很久加上天天打SUPPORT,最后弄的象个样子,叔加入之前就已经搞了几年。
当时叔还没听说过siri啥的,可能因为没有智能手机的缘故。这个东西最也没火。
突如一夜春风来,就好些东西,英文写的都不利索,那framework就得别人买帐。
尽管是随笔,you know what I mean.
你是月和花,信你得永生。信你全组被雷,这很难办得!
当然网络言论,你愿意和我叫真,PM。

【在 d***a 的大作中提到】
: 不会是欧洲那个对撞机吧?那可真是高大尚的东西。
: 对搞科学计算的人来说,700亿倒真不是什么了不得的数目。他们现在还在写Fortran程
: 序,因为Fortran比C还要快一点点。

d***a
发帖数: 13752
34
您没事吧? 纯技术性讨论,别想太多。
欧洲那个对撞机,当年在搞网格计算(现在云计算的前身)的community中挺有名,就是
因为它产生的数据太大。为了处理和共享数据,还得建个computing grid, 是早年促进
grid computing发展的重要应用之一,所以很多搞高性能计算的人都知道,如此而已。
:)

【在 h**********c 的大作中提到】
: 伟大领袖毛主席教导我们,我们的教育方针是有钱干啥都行,没钱寸步难行。这是他老
: 人家在井冈山踹启动(kickstart)时候血的教程。
: 叔也就再弄一把斧头。高大尚的东西,叔也算摸过点皮毛。比如说里雅浦诺夫几个平衡
: 点,版上谁来说道说道?叔这点有限,但最少特定行为还是门清的。最少有人告诉叔这
: 些东西怎么搞,叔以前讲过,就叔那破学校,应数的书一面墙,你自己去看吧!老板给
: 两个PDF学了五六门科,两三本相关专著,叔加上点能量守恒的观点,最少图还画出来
: 一些。当然物理叔是门外。
: 叔再问个 Poncare section(旁卡来,欧拉应该读熬爱嘞)。就这个估计数学版能有多少
: 人不查资料讲讲,当初答辨预演,老板还特意问了我一个相关的问题,叔当时也没客气
: ,这个问题不是他想象的那样,布拉布拉。老板听了也没吱声。一方面是修养,做事让

h**********c
发帖数: 4120
35
没有什么纯技术之说,所有技术都是背后的财东角力的延续,对生产力劳动效率提高的
期待。
说学C,如果自己招台机器,装个老的UNIX或者LINUX没有图形界面。然后看看最简单的
CD , LS 是怎样从C 的到机器代码的,到了这个份,C不再是难度。难度是当年的各大
硬件厂商以及附庸,,不同的CPU架构,little endian big endian,和今天的
javascript一样,你要学就必须跟一个,跟一个就失去了整个森林。
C的发展也就搞计算这些人(也是背后财东)一步一步抬过来的。
在叔的文章里,实际说的是目前的学院教育和现实公司需求的脱节。学院里的老头子对
公司里的HP瞎子摸象,另外一方面这些公司里是否对这些“严肃”科学方法买帐。
叔的解决方案是活到老,刷到老,跟着ZTURN。

【在 d***a 的大作中提到】
: 您没事吧? 纯技术性讨论,别想太多。
: 欧洲那个对撞机,当年在搞网格计算(现在云计算的前身)的community中挺有名,就是
: 因为它产生的数据太大。为了处理和共享数据,还得建个computing grid, 是早年促进
: grid computing发展的重要应用之一,所以很多搞高性能计算的人都知道,如此而已。
: :)

f****n
发帖数: 399
36
这个回复靠谱。
C就是跟操作系统和硬件打交道最直接的语言,性能和可靠都很重要。
能写好的人不多,但是需求也不多,要解决的问题基本都是通用性的问题,有那么几个
公司垄断了,其他的公司就不用写了。

【在 M********t 的大作中提到】
: 每个语言都有自己的domain, c也不例外。现在新的语言层出不穷, 为什么c却屹立不
: 倒,就是因为c在其领域内的不可替代性。简单来说就是其实时高效性。c所面对的问题
: 往往是其他语言不能解决的,这也就决定了要用c来解决的问题都不是简单问题。为了
: 实时高效,c程序员必须掌握语言之外的很多东西,很多硬件相关,底层的东西。其他
: 语言解决一个问题,往往是做出来就可以了,而对于c来讲,不但要做出来,而且要做
: 的快。多快才算快?别人比你快10%,你如何打败它?这些都是c程序员需要考虑的问题
: 。而且性能是个无底洞,永远做不完。所以说c难,并不只是说它本身难,而是说它面
: 向的问题难。

r***s
发帖数: 737
37
高中生,学完个 python java 啥的,直接连点啥API的就能做点东西出来。
学了C能用来干啥?

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

l****e
发帖数: 198
38
用C的人都有自己的domain knowledge。纯CS的人也不需要用C
c********e
发帖数: 2726
39
同意这个。只要CS科班出身,任何语言都不是问题。至于半路出家做码公的,他们说什
么语言难你们也敢信!

【在 k***5 的大作中提到】
: 这个作者写了洋洋洒洒一大堆,没几个到关键的点子上的。
: C本身很简单,麻烦的是什么基本都要自己弄。

j*a
发帖数: 14423
40
非常同意

【在 k***5 的大作中提到】
: 这个作者写了洋洋洒洒一大堆,没几个到关键的点子上的。
: C本身很简单,麻烦的是什么基本都要自己弄。

相关主题
c++ pointer conversion questionBAT, FLG C++的职位都比java多,c++还是很无敌的
JAVA的初衷本来就是C++太复杂了,productivity不行正看一本叫code complete的书,有一句话关于c不明白
interview with Ben Klemens, author of 21st Century C在main()里面创建了几个线程,如何等待所有线程都结束?
进入Programming版参与讨论
m*****n
发帖数: 3575
41
楼主说的是对的。
计算机程序语言一般都在两个极端之间徘徊
一个是接近机器的思维,一个是接近人的思维
普及版的肯定选接近人的思维
高精尖的必须接近机器的思维,否则速度上不去啊,容量上不去啊
m*****n
发帖数: 3575
42
从教学角度讲,C不适合初学,虽然它是最先被发明出来的。
i***h
发帖数: 12655
43
macro真是可以让后来的人读的生不如死

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

j***w
发帖数: 489
44
没好好学过C的,我觉得对计算机的体系结构和操作系统都不太理解。

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

d***a
发帖数: 13752
45
我觉得也可以这样说,要真正用好C语言,得学会汇编语言,理解体系结构和操作系统。

【在 j***w 的大作中提到】
: 没好好学过C的,我觉得对计算机的体系结构和操作系统都不太理解。
h**********c
发帖数: 4120
46
叔当年决心出国,自己在家把谭浩强那本C语言,一个题不拉做了一遍,后来又把数据
结构和算法那本全做了一遍。
先在看这两本书还是简单,40X的课都要比这个难得多。
教授主要还是要搞研究,写这种教材当时中国实在太匮乏,C的书几乎没有别的可看。
当然这边的教授写这种教材的也有,但是做C的没有自己的操作系统是很没份的。
后来又把thinking in cpp, thinking in java的题都做了一边,刷不刷题就那么回事
。you know what i mean.
p*****n
发帖数: 64
47
C真不难,难的是C++。C的奇技淫巧不过函数指针和宏而已,C++列不过来,而且没升级
一个标准还增加一堆特性。真心累人
w**z
发帖数: 8232
48
这有点装

【在 j***w 的大作中提到】
: 没好好学过C的,我觉得对计算机的体系结构和操作系统都不太理解。
p**********e
发帖数: 316
49
什么语言也无所谓难于不难, 最难的是设计语言和写最基本库的
有一门基本课程叫程序语言,学懂了,没有什么语言会难倒你, 但是掌握一门语言,
还是要从hello world学起,练习还是要的,但是基本原理不在语言本身
熟悉一下基本语法, 用法, 就可以看看一下中大型的程序是怎么写的, 这样子你就
拿到了它的best practice了
接下来,你就要思考如何应用和构建大型的程序了,或者想想别人的东西是怎么实现的
,如果能领悟,就是站在高处了
当然每一个东西都有一些很专业的东西比如怎么写driver,怎么写graphical library
,怎么写game, 怎么写data driven的app, etc, 找一个类似的程序研究一下。

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

1 (共1页)
进入Programming版参与讨论
相关主题
问个 C++到C的问题JAVA的初衷本来就是C++太复杂了,productivity不行
除了类,c++和C区别在那?interview with Ben Klemens, author of 21st Century C
strcat()BAT, FLG C++的职位都比java多,c++还是很无敌的
嵌入式编程问题正看一本叫code complete的书,有一句话关于c不明白
我老不厚道地说一句,C的工作稳定是假的。在main()里面创建了几个线程,如何等待所有线程都结束?
我觉得学C的话还是K&R最好自学C语言-书和online resources (转载)
有码工的地方就有是非啊Unix在计算机历史上的传奇(转载)
c++ pointer conversion question加拿大是码工的祖国,Java,Php,Unix之父都是加拿大人 (转载)
相关话题的讨论汇总
话题: c语言话题: 语言话题: java话题: 简单话题: linux