免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 29066 | 回复: 133
打印 上一主题 下一主题

[C] 思考题:语言是工具?重要是思想?那如何表达思想?(修改版) [复制链接]

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-10-24 19:11 |只看该作者 |倒序浏览
本帖最后由 OwnWaterloo 于 2011-10-24 22:34 编辑

标题
懂的同学应该明白,标题既想切题,又想不剧透,真心不好取…… 有什么建议么?

语言
给出一些代码既可以让题目表述更准确,又可以避免一些不必要的分歧,使讨论更集中。
既然这里是C/C++板块,自然用C描述比较合适。 但讨论不一定局限于C/C++。
不是都在追求所谓的语言只是工具么?

背景
与图形相关的程序的一些片段,不妨设

点定义如下:

  1. typedef struct {
  2.       int x,y;
  3. } point;
复制代码
目前程序需要处理圆形与矩形。将来可能会增加更多的需要处理的图形。
定义如下:

  1. typedef struct {
  2.       point  center;
  3.       double radius;
  4. } circle;

  5. typedef struct {
  6.       int top,bottom,left,right;
  7. } rect;
复制代码
两点间距离以及圆形与矩形的中心计算已经实现:

  1. double distance(point p,point q);
  2. point center_of_circle(circle const* c) { return c->center; }
  3. point center_of_rect(rect const* r)
  4. {
  5.       point p;
  6.       p.x = (r->left + r->right)/2;
  7.       p.y = (r->top + r->bottom)/2;
  8.       return p;
  9. }
复制代码
问题1
在思考以下问题的同时请考虑软件演化时可能会需要处理更多的图形。

1.1. 设计一个函数R: double R(? x);
计算图形x的中心到原点的距离

1.2. 设计一个函数D: double D(? x,? y);
计算图形x,y中心之间的距离

1.3. 设计一个函数P: double P(? x,? y,? z);
计算图形x,y,z的中心构成的三角形(假设输入保证构成三角形)的周长


====== ====== 分割线:两个新增问题 ====== ======
原准备另开一贴的, 不过貌似这贴也不挤, 就放这了。


问题2: 设计一个函数 double distance(? x,? y); 求两图形上最近两点之间的距离

例:
若两圆相切或相交,则最近两点(可能存在多对)间距离为0。
若两圆相离,则最近两点是连接两圆心的线段与两圆的的两个交点之间的距离。

  1. double distance_of_circle(circle const* a,circle const* b)
  2. {
  3.       double d = distance(a->center,b->center);
  4.       double s = a->radius + b->radius;
  5.       return d>s? d-s: 0;
  6. }
复制代码
同样,还有矩形与矩形、圆形与矩形的距离计算

  1. double distance_of_rect(rect const* a,rect const* b);
  2. double distance_of_circle_rect(circle const* c,rect const* r);
复制代码
问题3: 设计一个函数 double intersection(? x,? y,? z); 求三图形交集的面积。

论坛徽章:
11
未羊
日期:2013-12-16 12:45:4615-16赛季CBA联赛之青岛
日期:2016-04-11 19:17:4715-16赛季CBA联赛之广夏
日期:2016-04-06 16:34:012015亚冠之卡尔希纳萨夫
日期:2015-11-10 10:04:522015亚冠之大阪钢巴
日期:2015-07-30 18:29:402015亚冠之城南
日期:2015-06-15 17:56:392015亚冠之卡尔希纳萨夫
日期:2015-05-15 15:19:272015亚冠之山东鲁能
日期:2015-05-14 12:38:13金牛座
日期:2014-12-04 15:34:06子鼠
日期:2014-10-16 13:40:4715-16赛季CBA联赛之八一
日期:2016-07-22 09:41:40
2 [报告]
发表于 2011-10-24 19:17 |只看该作者
工具的本质是 ”用来制造对人有用的东西“ 的东西, 而自身如果不能制造, 则其本身对人无用。
就这个意义来说, 我感觉举什么例子都没用。

你所说的是工具的用法, 工具用法自然值得研究, 但很难推翻语言是工具这个论点

论坛徽章:
5
技术图书徽章
日期:2013-11-07 13:21:58技术图书徽章
日期:2013-12-07 10:34:46技术图书徽章
日期:2014-04-23 08:50:31双鱼座
日期:2014-09-16 09:12:34亥猪
日期:2015-01-23 13:37:49
3 [报告]
发表于 2011-10-24 19:23 |只看该作者
即使他们都图灵等价,但是表达能力有差别不能否认。

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
4 [报告]
发表于 2011-10-24 19:35 |只看该作者
回复 2# zylthinking

你想多了……  我是不知道标题应该怎么取合适…… 所以就搞了个噱头……

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
5 [报告]
发表于 2011-10-24 19:36 |只看该作者
回复 3# nketc

图灵完备的要求太低太低了……
若按图灵完备的要求评价语言,没多少不是冗余的

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
6 [报告]
发表于 2011-10-24 19:38 |只看该作者
回复 2# zylthinking


    如果你只是用某種語言,那它對你來說就是一種工具。其實強調思想也好,強調設計也罷,本身並沒有什麼錯,但要是認為有了好的設計,或是使用了什麼牛逼得不得了的思想,那隨便抓一個人來都能實現好,或是拿一門以前沒接觸過的語言隨便學兩天就能實現好,這就不靠譜了。

论坛徽章:
14
巨蟹座
日期:2013-11-19 14:09:4615-16赛季CBA联赛之青岛
日期:2016-07-05 12:36:0515-16赛季CBA联赛之广东
日期:2016-06-29 11:45:542015亚冠之全北现代
日期:2015-07-22 08:09:472015年辞旧岁徽章
日期:2015-03-03 16:54:15巨蟹座
日期:2014-12-29 08:22:29射手座
日期:2014-12-05 08:20:39狮子座
日期:2014-11-05 12:33:52寅虎
日期:2014-08-13 09:01:31巳蛇
日期:2014-06-16 16:29:52技术图书徽章
日期:2014-04-15 08:44:01天蝎座
日期:2014-03-11 13:06:45
7 [报告]
发表于 2011-10-24 20:44 |只看该作者
语言是一个表达思想的工具
所以CPPer和Javar绝走不到一块去,除非是个伪娘

论坛徽章:
4
戌狗
日期:2013-08-15 18:22:43技术图书徽章
日期:2013-08-21 13:48:45巨蟹座
日期:2013-09-26 17:06:39处女座
日期:2013-12-25 11:26:10
8 [报告]
发表于 2011-10-24 21:27 |只看该作者
回复  nketc

图灵完备的要求太低太低了……
若按图灵完备的要求评价语言,没多少不是冗余的
OwnWaterloo 发表于 2011-10-24 19:36


别J8扯什么图灵完备,我脑残,学不了那么深奥的东西。



我就问你,你不是在1楼扯什么计算圆形和矩形呢么?

linux系统中,计算这些图形的东西都放在了pixman这个库中,pixman里的一些主要函数,你懂么???

论坛徽章:
0
9 [报告]
发表于 2011-10-24 21:40 |只看该作者
本帖最后由 幻の上帝 于 2011-10-24 21:43 编辑

我歪一下楼。自然语言对我来说都是managed code,所以对我来说CET啥的不会比中文难多少,一句话用鸟语说出来可能更快(差别只是熟练度,包括词汇量之类)。然而无论何种自然语言,用来串联做数学题时的思维,效率都不怎么样。
思想不见得是必须被限制为特定形式表达才方便使用的;关键是得明确,这里的对表达形式的限制本身是不是需求之一。

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
10 [报告]
发表于 2011-10-24 21:54 |只看该作者
本帖最后由 OwnWaterloo 于 2011-10-24 22:09 编辑
别J8扯什么图灵完备,我脑残,学不了那么深奥的东西。

我就问你,你不是在1楼扯什么计算圆形和矩形呢么?

linux系统中,计算这些图形的东西都放在了pixman这个库中,pixman里的一些主要函数,你懂么???
塑料袋 发表于 2011-10-24 21:27


我不懂,并且我并不认为我目前需要去懂

是否了解自己了解的知识去评价他人,你认为科学吗?
我知道你不懂C++,LISP。但我不会因为你不懂C++或LISP而认为你一无是处。
我猜你也不知道如何用C实现闭包、如何在Windows上实现位置无关DLL。同样,不会因此就认为你是什么所谓的牛鬼蛇神。


其实这个问题本来是为你设置的。为你这位06年就对linux的vfs有5成(如你所说,按Linus Torvalds的成色)理解的同学。
也如我所预见,即使问你也是对牛弹琴而已,你根本不明白题目的意义所在。
并且,我已经降低了难度,最后的炸弹还没抛出来。


记得看过大湿的一帖,说他为了看SICP还回去学夹逼定理,泰勒级数之类的,应该不至于不知道提取抽象这种东西。还是说书白看了
tempname2 发表于 2011-10-20 09:26

若此事非虚,我是真难理解看了SICP:
不懂scheme
不懂lambda演算
不懂词法作用域
不懂闭包
而去搞什么夹逼定理,泰勒级数……

真是白看了。知道什么叫买椟还珠吗?


一法通,则万法皆通。
塑料袋 发表于 2011-10-23 13:56

这是建立在有合理的思维方式的基础上。
我认为你还真不配这句话。
按你这种学习方式,学到的只能是万般知识,依葫芦画瓢的本事而已。


欧阳锋和黄药师,总是互相有些苦恼的吧。。淡定,淡定。。
AD8018 发表于 2011-10-21 09:27

真把我给贬低了。


PS: 我算是明白了,你在CU上就不是为了讨论问题的。
将自己不懂的讨论当作牛鬼蛇神。
而只要讨论中有一点自己熟练的方面就抓住机会显摆
你就那么的空虚寂寞冷吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP