免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: zyzbill
打印 上一主题 下一主题

[C] osc有人也在写C语言书 [复制链接]

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
21 [报告]
发表于 2012-10-23 20:58 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
22 [报告]
发表于 2012-10-23 21:07 |只看该作者
回复 19# pmerofc


    我啥时候有金庸古龙的风格了………………这也太谬赞了吧……

如果非说有的话,我觉得也是倪匡的风格……我看过不少倪匡的作品(占倪匡作品量的2/3吧),很喜欢那种风格。虽然看多了觉得也就那么回事,不过也还是觉得很不错。如果说金庸是昆仑派的,稳重严正,那么古龙就应该是逍遥派的,飘渺猎奇。两者一正一奇。而倪匡的风格在于洞见,善于从小细节出发,推出一个大故事,这可以算是超出了“风格”的范畴了。洞见其实很多作家都有,但是在洞见之外,倪匡也能将一些小细节连起来,在各个独立的作品之间形成一条线,这当然也是金庸古龙等大师的惯用手法了,只是倪匡的手法更像“寻宝”,并不仅仅是在文化脉络上的连续,在故事构架上也有一定的延续。

不过要说计算机书籍,同样离不开一正一奇。小乔的问题在于奇巧有余,稳正不足。需要有严肃的精神去探索去求知,之后再用奇特的方式叙述,这样才能达到目标。大多数看上去困难的事情,用一正一奇的手法,应该都能有效果。有正作为内功(如九阳神功),再添上奇特的表象(如乾坤大挪移),才能成就一代大侠。不过我本人是差得远了。

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
23 [报告]
发表于 2012-10-23 21:20 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
24 [报告]
发表于 2012-10-23 21:23 |只看该作者
回复 23# pmerofc


    卫斯理听说过么?

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
25 [报告]
发表于 2012-10-23 21:26 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
11
摩羯座
日期:2013-09-16 11:10:272015亚冠之阿尔萨德
日期:2015-06-12 22:53:29午马
日期:2014-04-15 11:08:53亥猪
日期:2014-03-02 23:46:35申猴
日期:2013-12-06 22:07:00亥猪
日期:2013-11-28 12:03:13双鱼座
日期:2013-11-21 14:43:56亥猪
日期:2013-10-23 10:55:49处女座
日期:2013-10-17 18:15:43午马
日期:2013-09-27 17:40:4215-16赛季CBA联赛之青岛
日期:2016-06-22 00:45:55
26 [报告]
发表于 2012-10-23 21:48 |只看该作者
pmerofc 发表于 2012-10-23 21:20
回复 22# starwing83

倪匡我从来没听说过


《卫斯理系列》,听说过吧?

倪匡是基督徒,《卫斯理系列》的第一人称主角卫斯理,得名于基督教循道宗(卫理公会)的创始人卫斯理(Wesley)兄弟。

还有,“原振侠”,应该也听说过吧?1990年代末刚刚上网的许多网民,都取这个名字做网名的。

还有,周慧敏,大美女,这个肯定知道吧!倪匡是她的老公公。

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
27 [报告]
发表于 2012-10-23 21:54 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
28 [报告]
发表于 2012-10-24 13:19 |只看该作者
初步看了一下那三篇节选,有写得好的地方,也有不好的地方,例如:


C语言,只是一个编程语言,对于工程师或程序员无非是个可选择的工具。是否选择,根据设计目标和任务以及执行团队的习惯、特长。
--------------------------------------------------------------------------------------------------------------------------------------------
这种理解是不错的


而工具,从此篇开始,新手始终要明确,C语言是用拿来用的,不是拿来研究的。
------------------------------------------------------------------------------------
但后面这句,又太极端了,不符合事实。


C语言虽然称为高级语言,那也只是相对汇编语言等早期的面向指令的语言。而C语言从语言的高级程度来谈,更应该定性为,面向计算机组成原理的语言。
------------------------------------------------------------------------------------------------------------------------------------------------------------------
这个语言的定位描述偏离得有点离谱


因此,在数字计算机的世界,0一定是起点。位宽如此,地址也一样。计算机的惯例,我们对存储区域,每8个位,我们认为是同一个地址,
----------------------------------------------------------------------------------------------------------------------------------------------------
0不一定是起点,而一个字节的二进制宽度也不一定是8位。在起点问题上,应该强调选择0的合理性,而不是绝对性


32位系统,从硬件角度看,是能提供32位数据并发传输,计算,存储的系统。从OS角度看,最小指令为32位,逻辑寻址宽度为32位。
-----------------------------------------------------------------------------------------------------------------------------------------
这一句也有问题,CPU的字长,不是由“数据传输、计算、存储”等这些因素来定义的,而是根据内部寄存器的二进制宽度来定义的,例如8088,16位CPU,
但外部数据总线只有8位,后面描述的OS角度,也存在类似的问题。


C是面向模块和过程的,C++是面向对象的
-------------------------------------------------------
相信多数人都知道这句话存在什么问题。


C++就是C++,和C没有任何关系,只是历史原因导致不叫D,而叫C++。
----------------------------------------------------------------------------------
C++从C那里借鉴了几乎所有的语法及相当一部分原理,这不是“关系”是啥?


简单说,面向对象,看到的是个体之间的差异与关联。面向模块或面向过程,看到的是行为之间的差异和关联。
----------------------------------------------------------------------------------------------------------------------
这句应该赞扬一下


总体上看,使用的文字比较生动,但有点过火,文字之间的组织较松散,缺乏清晰的条理和概念,甚少总结性的语言。

论坛徽章:
0
29 [报告]
发表于 2012-10-24 13:51 |只看该作者
1、ISO/IEC 9899:201X Programming languages -C。
这是2011版的C国际标准。不要怀疑作为初学者,此为第一本资料。老师告诉你,看教科书,不妨我说一句,教科书算老几啊?你没有国际标准,你如何对规范有最权威的理解。学会使用国际标准是你要掌握的基本能力。教科书只能让你应付考试,而国际标准可以令你找到教科书的错误。
----------------------------------------------------------------------------------------------------------------------
强调标准的权威及作用,这是令人赞赏的。但不适宜作为新手的初次学习的资料。



1、main  有两种写法。其实别图省事,保持良好习惯,坚持使用 int argc ,char *argv[],而不是void。这是你整个程序在启动前,与外部信息对接的接口,留着总有用,何必void掉。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
这个不同意,当一个程序实际上不使用参数的时候,写上argc、argv这些东西可能会对阅读者造成误解。



请相信我的鬼话:标准库是唯一你能依赖,跨越任何平台均不怕的库。.......................因此标准库是要严格保证的。你想尽可能的另你的代码在跨越平台时,不需要二次修改,那么尽可能的使用标准库里的函数。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
在新手的早期教育中就强调标准,是非常有益的,但如果加上对标准库中实现相关的行为的“提醒”就更好了。


这里的大概意思是说,stdout, stdin是一个标准的输入输出流,而C标准说他得是一个宏,所以我们就自己定义自己,另他成为一个宏。省得说我不支持标准。哈,现在看到标准的强大了吧。无论你是否嘲笑,你也得跟着标准来。
------------------------------------------------------------------------------------------------------------------------------------------------------------
非常怀疑作者有没有翻过C标准?无论C90、C99都说stdout、stdin是具有FILE*类型的表达式,而非宏


论坛徽章:
0
30 [报告]
发表于 2012-10-24 14:18 |只看该作者
小的有char 类型,只有8个位宽。大的有long long 有 64个位宽..........................char表示8位的位宽。
---------------------------------------------------------------------------------------------------------------
char至少8位,但并非只有8位,long long也是至少64位,而非只有64位。


很多书籍包括标准,说这是个变量,你当然可以认为这就是个变量
--------------------------------------------------------------------------------------------
实际上,C标准并没有提出“变量”这个概念,虽然计算机程序设计语言理论主要讲述的是变量概念,但是C并不看重variable,而是object(也正因此,C的类型系统主要脉络是
从对象模型的角度来区分的),虽然C标准有些地方提到了variable这个词,但并不对什么是variable进行定义,因为它认为不需要。再次怀疑作者有没有阅读过或者理解好标准中的内容?


那么对应p这个用于存放地址的存储区域又是多少呢?32位的系统,是32位宽,64位的系统是64位宽。也就是说,无论你的一个指针,指向的存储区是8位宽的还是32位宽的,
哪怕是128位宽的(结构体类型的存储区域有这种情况,以后展开讨论),指针本身的存储区域的位宽只和系统有关。
-------------------------------------------------------------------------------------------------------------------------------------------------
这句话错误比较多,对指针的理解还需要较大的提升。指针的二进制宽度是实现相关的,C/C++标准仅保证void*具有最大的数值范围。换言之,
32位系统的指针不一定是32位,64位系统的指针当然也不一定是64位,更彻底地说,指针的二进制宽度是系统无关性的,它仅与编译器相关。


变量就是存储区
---------------------
这个定义错误,变量是有名对象,变量一定是有名的,但一段存储不一定是有名的。


j的空间分配只有一次。同时而每次循环均会对 j = 0;进行操作,而实际逻辑上是三个不同的空间。
-----------------------------------------------------------------------------------------------------------
这里用“空间”这个概念不够准确,存在某个环境真把它放相同的空间。应该强调这三个J是三个不同的对象!


局部代码风格不太好,例如:

printf("the data is %d\n",(int)strtol(argv[2],&argv[2],10));

完全可以改为两个语句。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP