免费注册 查看新帖 |

Chinaunix

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

[C] Lua 造成的代码冗余太严重了, 这个现状怎么改善? [复制链接]

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

一个库可能可以划分为私有与公有部分。

呃,比如,假设就是一个STM的库。它"提供给用户的界面"就只有:
1. stm这一个库(或者文件、或者模块、或者包什么的)
2. 以及若干数据类型(Ref, ...)与函数(ref, dosync, alert, commute, ...)

但它内部也许是由其他一些库构成,比如atomic操作。下面这些都不是stm的用户界面的组成部分:
1. 内部使用了哪些库?
2. 它们的组织方式?
也许stm一开始没有这种"私有/公有"的划分,而是逐渐演变出。
也许一开始私有部分就只有util,然后将atomic从中单独拆分出。
也许一开始引用了一些成熟的库来提供某些功能,最终演化为独立的,没有外部依赖的库。
又或者相反,一开始只为某些功能提供了简陋的实现作为prototype, 最终使用成熟的库(可选地)替换这些简陋的实现。

但总之,用户界面是稳定的,就只有stm。


这种库的组织方式是否合理?
如果合理,lua又为这种组织方式提供了什么机制?能有那些方案支持这种组织方式?这些方案对一些"全局设置"会产生怎样的影响?
比如C里对-I, -L 的影响? 比如java里对class path的影响?比如elisp里对load-path的影响?

论坛徽章:
5
技术图书徽章
日期:2013-08-17 07:26:49双子座
日期:2013-09-15 16:46:29双子座
日期:2013-09-25 08:17:09技术图书徽章
日期:2013-09-25 09:11:42天秤座
日期:2013-10-01 16:25:34
22 [报告]
发表于 2012-11-17 23:02 |只看该作者
本帖最后由 __BlueGuy__ 于 2012-11-17 23:24 编辑
starwing83 发表于 2012-11-17 14:08
回复 13# __BlueGuy__


最重要的是,要有一群出生入死的兄弟,而这一群人很难集齐
圈子太小, 竞争太激烈,稍不留神就会被淘汰出局...

游戏已经不仅仅是游戏,技术也已经不仅仅是技术,本质还是为了钱.
兴趣、技术、语言都必须用心拈量着来,你不用心淘汰别人,别人就淘汰你
被淘汰意味着什么,大家都应该明白...

没有强大的内心,也活不了

论坛徽章:
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
23 [报告]
发表于 2012-11-17 23:26 |只看该作者
回复 21# OwnWaterloo


    在Lua中,用户界面只有一个——函数,没有类型。

在Lua中,没有“私有库”这么一说,所有包含的库都是私有的(不像python,你import出来的库外界是看得到的)。问题是,被包含的库应该是公有的——这个要求很合理吧?我要用atomic,难道还禁止别人用不成?

如果实在不想给别人用,或者和自己的逻辑结合的很紧密,可以自己建个目录,比如叫stm,然后在目录里面放自己想放的:

local atomic = require 'stm.atomic'

别人爱用就用,不关心的也可以不关心,公有界面只有stm.lua而已。

Lua本身在库方面的规范是默认私有。

论坛徽章:
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-11-17 23:39 |只看该作者
回复 22# __BlueGuy__


    这就是问题了。

梵高,如果不去画画,如果去做苦力啊包工头什么的,会饿死么?

艺术需要某种病态的偏执。

正常情况下来说,你满足生存基本需要了,才会去想艺术,你饭都吃不饱,怎么去艺术?艺术是以生存为基础的上层建筑。

然而,就有些人,的确饭都吃不饱,但是也想做艺术,他们是在以生命为代价做艺术。

这两种人做的都是艺术。而如果你饭吃饱了/或者没吃饱,反正你做艺术的目的是为了吃饭,那么你做的就是商品,而不是艺术。

游戏是艺术的一种表现形式。如同电影。

我们类比上面的说法。

做游戏需要某种偏执。

正常情况下来说,你技术牛逼,思维敏捷,才能去做游戏。你连C都用不好,写个屁的游戏?游戏是以高级技术和创意为基础的上层建筑。

然而,就是有些人,技术不好,创意贫乏,但是也想做游戏,他们是用生命去做游戏。

这两种人做的都是游戏,而如果你只是为了骗傻逼,为了圈钱,反正做游戏的目的是为了赚钱,那么你做的是商品,而不是游戏。

游戏是一种商品,但商品不都是游戏。如同电影。

你要明白,你做出来的东西,是带着灵魂的。而商品是没有灵魂的。

不反对把商品做成艺术品,但是好歹那得是个艺术品。你不能打着艺术品的幌子卖商品,这种东西也没人买。

这就是为什么国内游戏地位微妙的原因。一来国人愚昧,傻逼哪儿都有,东西只要做出来就会有人给钱。游戏本质上不是在做游戏,在做炫耀,在做社区,在做富二代的约炮场地。游戏不是为了让人感到快乐和成就感而去做的。游戏是为了给那些想炫耀自己有钱和想约炮的人一个平台而作的。这种游戏观本质上是社会价值观扭曲造成的。二来,既然游戏只要出来了就能赚钱,那么就不谈游戏质量了。游戏只是一个平台,不是以一种艺术,所以也不需要管什么技术高超创意牛逼了,只要营销运营好就OK。

这就是中国游戏业的现状。网游的发展基本上宣判了游戏艺术的死刑。——现在大家都没饭吃,但是随便拉一坨粑粑都能赚钱,那谁会去傻逼了做木雕?等到大家都有饭吃了,即使拉一坨粑粑照样能赚钱,也会有人无聊了想做木雕的。这就是艺术的来源。

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
25 [报告]
发表于 2012-11-18 00:21 |只看该作者
本帖最后由 OwnWaterloo 于 2012-11-18 00:23 编辑

回复 23# starwing83

>> 在Lua中,用户界面只有一个——函数,没有类型。

io.open返回的是什么?close是根据什么判断close("file")不行而close(open("file"))可以?
至于不需要import这个东西,那lua确实如此。不过我前面也没有这个意思。
而且到底能import什么其实也无关紧要。
前面我具体语言都没提及。。。 而是说存在这样一种组织方式。


>> 在Lua中,没有“私有库”这么一说,所有包含的库都是私有的(不像python,你import出来的库外界是看得到的)。

我记得python不是这样的。哪怕python就是这样,这也不是我说的"私有"的意思。


>> 问题是,被包含的库应该是公有的——这个要求很合理吧?我要用atomic,难道还禁止别人用不成?

私有的意思就是这个,stm自己可以包含atomic,但stm的用户不行,但stm的用户不行,至少不能无意间地就行了。
至于理由,你自己就说了一个:
>> 如果实在不想给别人用,或者和自己的逻辑结合的很紧密

除此之外还有很多我觉得合理的理由。
举atomic不是随意的, boost里就有一个不公开的atomic。 曾经被要求公开, 至于boost的理由以及后续处理如何我也没追踪了。。。


>> 可以自己建个目录,比如叫stm,然后在目录里面放自己想放的:
>> local atomic = require 'stm.atomic'
>> 别人爱用就用,不关心的也可以不关心,公有界面只有stm.lua而已。

有没有一种方式可以告知用户:
1. stm是提供的用户界面,stm库有责任维护它的接口的兼容性,有责任为其更新文档,等等等等公共接口应该做的事。
2. stm.atomic不是,它只是stm内部的组织方式,是不稳定的,没有上面那些义务。

以此避免一些人阅读了stm.lua的源代码后发现,哟,居然有stm.atomic可以用! 然后就直接用了, 然后stm的下个版本他也许就悲剧了。
除了文档、注释,有没有其他方式在源代码里向用户表达这个事?以避免用户无意间地访问了stm不打算提供稳定界面的部分?

如果用户能被告知stm.atomic不是公共接口, 那他至少就有得选择:
1. 要求stm将stm.atomic稳定化。
2. 或者用其他的提供了atomic功能,且接口较稳定的库
3. 再或者,最坏的情况,他依然可以直接用stm.atomic。 但不同的是他更新stm库的时候就会更谨慎了。

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
26 [报告]
发表于 2012-11-18 00:27 |只看该作者
starwing83 发表于 2012-11-17 23:39
回复 22# __BlueGuy__

你连C都用不好,写个屁的游戏?

这回复的亮点是不是这里

论坛徽章:
5
技术图书徽章
日期:2013-08-17 07:26:49双子座
日期:2013-09-15 16:46:29双子座
日期:2013-09-25 08:17:09技术图书徽章
日期:2013-09-25 09:11:42天秤座
日期:2013-10-01 16:25:34
27 [报告]
发表于 2012-11-18 00:28 |只看该作者
OwnWaterloo 发表于 2012-11-18 00:27
+这回复的亮点是不是这里

我真的是用生命去做游戏,但是我真的伤不起了,纯技术路线太难走了...

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
28 [报告]
发表于 2012-11-18 00:34 |只看该作者
__BlueGuy__ 发表于 2012-11-18 00:28
我真的是用生命去做游戏,但是我真的伤不起了,纯技术路线太难走了...


我觉得你不适合走纯技术路线。。。

这话难听。而且我这判断的依据也只是你在CU的种种表现。哪怕采样全了判断也不一定就会准。
反正我只是想到了,就这么说了而已。。。

论坛徽章:
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
29 [报告]
发表于 2012-11-18 00:34 |只看该作者
回复 27# __BlueGuy__


    所以要有信仰啊!别整些程序就是数学这种无用的东西,脑海里面抽象一下整个架构,幻想一下数据的流动,很有用的。

论坛徽章:
6
寅虎
日期:2013-10-10 21:59:16狮子座
日期:2013-11-12 09:24:41金牛座
日期:2013-12-14 17:02:23酉鸡
日期:2014-01-16 12:34:37技术图书徽章
日期:2014-02-15 12:52:31巨蟹座
日期:2014-05-17 14:09:52
30 [报告]
发表于 2012-11-18 00:34 |只看该作者
这些年做网游的不是都捞得风生水起么?为什么经你二人一说,都成了苦逼了?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP