免费注册 查看新帖 |

Chinaunix

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

[C] 学生为什么搞不懂C语言?不论是对于老师还是学生自己,这通常是一个谜 [复制链接]

论坛徽章:
8
CU大牛徽章
日期:2013-04-17 10:59:39CU大牛徽章
日期:2013-04-17 11:01:45CU大牛徽章
日期:2013-04-17 11:02:15CU大牛徽章
日期:2013-04-17 11:02:36CU大牛徽章
日期:2013-04-17 11:02:58技术图书徽章
日期:2013-12-04 10:48:50酉鸡
日期:2014-01-03 10:32:30辰龙
日期:2014-03-06 15:04:07
61 [报告]
发表于 2012-12-11 11:03 |只看该作者
另一方面,作为一种不支持布尔类型的语言标准,避免提到true/false是正确的。可以避免使用者被误导,以至于想在这种语言里找到标准的true/false表示。

但,这并不等于该语言排斥true/false。

事实上,正确的表述应该是:C虽然不直接支持布尔数据类型;但它给了一个语法糖,使得用户可以把0和非0直接映射到false/true。


————————————————————————
类似的,python定义None、[]、{}等为False。这显然不等于说python中None、空列表、空字典、空集合等等就是布尔值False。False就是False。只是python提供了一个语法糖,可以让你不必写 var!=None 或者 len(var)!=0 而已。

当然,python中有boolean数据类型,所以它的用户几乎不会产生如上误解(即把语法糖提到不必要的高度上);到了C这里就不一样了……

论坛徽章:
0
62 [报告]
发表于 2012-12-11 12:16 |只看该作者
shan_ghost 发表于 2012-12-10 14:13
http://zh.wikipedia.org/wiki/%E5%B0%81%E8%A3%9D_(%E7%89%A9%E4%BB%B6%E5%B0%8E%E5%90%91%E7%A8%8B%E5%BC ...


中午有点时间,我来纠正一下你对oo/java的错误理解,看看究竟是别人“变异”了,还是你“变异”了,免费的,不收钱
1.写java代码,的确靠javadoc来生成api文档,但面向对象语言本身并没有任何规定或建议必须按照javadoc的格式写注释。javadoc只是文档生成器的一种,其他文档生成器,不止能从java代码注释中生成文档,也能从C,php,perl等等函数式语言,脚本语言中生成文档,这可就和纯OO没什么关系了
你说“OO的重要目标之一是替代文档”
正确的表述应该是:“文档生成器的重要目标是替代单独编写api文档”
2.文档分很多种类型 ,对于程序员来说,除了api文档外,架构/设计文档也非常重要,尤其在大中型项目中。而文档生成器只能生成api文档。
3.文档的目的是沟通,没文档,那就只能用嘴了。当然,可以通过完整阅读源代码来理解作者的思想(代码即文档?),但,我们做的毕竟是工程,不是理论研究,得考虑时间/人力成本(仅一个设计/架构图,就能节约大量看代码时间,这取决于人类的认知方式,图形化的东西比线性阅读更容易和更快的理解)
我这说是有关文档的,至于其他的,比如什么代码是否好读等等,因为缺乏限制条件,所以属无意义命题

论坛徽章:
8
CU大牛徽章
日期:2013-04-17 10:59:39CU大牛徽章
日期:2013-04-17 11:01:45CU大牛徽章
日期:2013-04-17 11:02:15CU大牛徽章
日期:2013-04-17 11:02:36CU大牛徽章
日期:2013-04-17 11:02:58技术图书徽章
日期:2013-12-04 10:48:50酉鸡
日期:2014-01-03 10:32:30辰龙
日期:2014-03-06 15:04:07
63 [报告]
发表于 2012-12-11 15:20 |只看该作者
darrenlee3 发表于 2012-12-08 11:51
OO有时确实过于复杂,没文档没uml分析起来非常累人,
不像函数式的语言,只要算法和原理明白,源代码都比较容易看懂


好吧,你赢了。88

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

论坛徽章:
8
CU大牛徽章
日期:2013-04-17 10:59:39CU大牛徽章
日期:2013-04-17 11:01:45CU大牛徽章
日期:2013-04-17 11:02:15CU大牛徽章
日期:2013-04-17 11:02:36CU大牛徽章
日期:2013-04-17 11:02:58技术图书徽章
日期:2013-12-04 10:48:50酉鸡
日期:2014-01-03 10:32:30辰龙
日期:2014-03-06 15:04:07
65 [报告]
发表于 2012-12-11 15:41 |只看该作者
http://zh.wikipedia.org/wiki/%E8%AF%AD%E6%B3%95%E7%B3%96

语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家彼得·約翰·蘭達(Peter J. Landin)发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。

語法糖的例子

[编辑]for 循环
一个例子是C語言中的for 循环:
for (i = 0; i < 10; i++)
{
  //P
}
其效果和以下的while 循环是一樣的,其中 P 是循环要處理的主體。
i = 0;
while (i < 10)
{
  //P
  i++;
}
[编辑]中置表示法
Haskell 雖然是函數程式語言,但它提供了 a + b 這種「中置表示法」的語法,讓程式更容易撰寫,也比較容易閱讀。
[编辑]Lua
在Lua中,一个变量的赋值方法如下:
foo = "bar"
而一个函数,作为基本类型之一,语法与定义变量的方法基本一致:
foo = function()
    print "bar"
end
但是此种写法对于有其他编程语言背景的人来说不够直观,故 Lua 提供了如下的语法糖:
function foo()
    print "bar"
end
它与上述方法效果完全一样,但是更加紧凑和易于理解。

论坛徽章:
0
66 [报告]
发表于 2012-12-11 18:08 |只看该作者
归根结底,是小学数学没学好。哈哈

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP