免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
0
51 [报告]
发表于 2012-10-26 10:17 |只看该作者
中山野鬼 发表于 2012-10-26 00:53
非常感谢你的内容。我也确实觉得说"macro"有多余的嫌疑。且不谈对不对,反倒可能会误导新人。当然还是非 ...


虽然现实世界中我是比较平易近人的,但在技术论坛中,却是一个比较较真的人,1就是1,2就是2,也许就是这个原因吧,有时候会让人感到不舒服,但我仅是抱着讨论问题的心态,无论对人或书什么的,都没有其它任何意思。

事实上,我也在筹备一本涵盖c与c++的书,刚刚大体上完成了框架,写完后可能也会在技术论坛及博客中放一部分,到时候也请你多提宝贵意见。

论坛徽章:
0
52 [报告]
发表于 2012-10-26 18:00 |只看该作者
supermegaboy 发表于 2012-10-26 10:17
虽然现实世界中我是比较平易近人的,但在技术论坛中,却是一个比较较真的人,1就是1,2就是2,也许就是 ...

技术不较真,就不是严谨的工程人员了。我也如此,哈。除了工作,其他一律不认真,认真你就输了。。。而且透透的。。。C++我提不出任何意见。早就放弃C++了。哈。

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

论坛徽章:
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
54 [报告]
发表于 2012-10-27 11:58 |只看该作者
回复 53# pmerofc


    C语言拥有完整的抽象内存模型,是一种能够完全操纵程序内存的语言。这一点使得C语言不那么安全,但同样给予C语言强大的操控能力。特别是如果计算机是采用内存抽象模型进行硬件操纵时,C语言能获得完全的硬件操纵能力。

但C语言又是一门真正的高级语言。它有着丰富的控制结构,完善的类型系统和完备的抽象能力。这使得C语言即使是作为一门通用语言,也有其独有的价值。

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

论坛徽章:
0
56 [报告]
发表于 2012-10-27 12:42 |只看该作者
本帖最后由 Musikk_P3 于 2012-10-27 06:44 编辑
中山野鬼 发表于 2012-10-26 12:00
技术不较真,就不是严谨的工程人员了。我也如此,哈。除了工作,其他一律不认真,认真你就输了。。。而且 ...


支持中山老师写书啦!

希望书里面,能多一些基本概念的具体讲解,还有就是讲解跟链接呀、编译呀、调试呀、反汇编呀等等实践有关的,比如这一类问题:

http://bbs.chinaunix.net/thread-3777467-1-1.html

我就一直搞不清楚,貌似国内C语言基础书讲解这些内容,能讲的、讲清楚的,很少很少,反正我一直没有搞清楚这些基本概念,学习C语言起来,感觉特别不踏实、特别卡。

谢谢老师了!

论坛徽章:
0
57 [报告]
发表于 2012-10-28 09:33 |只看该作者
pmerofc 发表于 2012-10-27 12:35
回复 54# starwing83

完整抽象内存模型,这个不知道从和说起。完全操作程序内存的语言,这个还是把完全去掉吧。毕竟不太好精确操作,自然也谈不上完全,且不谈硬件的各类寄存器或者MMU之类的内存问题,毕竟你谈的是程序内存,这是恰当的,仅就逻辑,但完全有点极端了。哈。

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

论坛徽章:
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
59 [报告]
发表于 2012-10-28 10:01 |只看该作者
本帖最后由 starwing83 于 2012-10-28 10:02 编辑

回复 58# pmerofc


    是这样的。对于很多所谓“具备完整抽象概念”的语言来说,其操作的“对象”是值,以及承载值的“槽”。值本身有属性有内容,而槽是值的容器。根据槽的不同,可以将语言划分为动态类型语言和静态类型语言。

C语言的不同在于,它不止提出了“槽”的概念,它更进一步地提出了“槽的槽”的概念。即槽的集合——既然有集合,自然就有地址,以及地址之间的一系列的关系——即内存。这个内存只是“程序内存”,这个词语可能选择不当,但是我没有找到更好的选择。我可以解释一下:首先这个内存显然不是物理内存。也可能并不是虚拟内存或者逻辑内存。而仅仅是一个类似图灵机的格子的编号这样一种抽象的东西。这种思想贯彻了C语言的设计,应该说,就是C语言发明时的硬件环境,经过多年的抽象和标准化的努力之后,才产生了这样一种独立的“设计”。

举个例子吧。假设你在ARM机器上面做开发,内存0x00CAFF00这个字节被映射到一个端口,可以对外输出电平。如果是高,则会有一个LED灯点亮。除了C语言以外(这里包括了C++),没有任何一种语言允许你这么做:

*(char*)0x00CAFF00 = 1;

对C语言来说,你可以越过“槽”,直接在“内存”上面,自由地获得一个槽。这样的能力,即“对内存的完全操纵能力”。我们类比Lua语言,如果要做到这一步,你只能:

  1. local trigger = trigger_at(0x00CAFF00)
  2. trigger:on()
复制代码
(谁知道怎么关掉该死的表情转换………………)

你看,你无法直接定位一个Lua的number在那个地方,你得借助其他的抽象(函数、或者对象)才行。C语言有能直接定位槽的能力,这是C语言的独特之处。

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
60 [报告]
发表于 2012-10-28 10:07 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP