免费注册 查看新帖 |

Chinaunix

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

[C] 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
61 [报告]
发表于 2012-11-18 16:36 |只看该作者
回复 57# OwnWaterloo


    是嘛,早这么说不就OK了,你又不用,那这些“需求”又是什么呢?哦,Lua支持Repl了,你吐槽官方不支持,OK我们假设官方被你的霸王之气打动,开始支持REPL,你又开始说Lua不支持宏,不支持AST,不支持不可变数据,不支持STM,还不支持纯函数式开发——您玩Clojure呢?

本来你就不用了,又哪里谈的上需求,本来就是完全不同的应用领域和开发方式,你又哪里谈得上缺陷?

这就是我对于“不按照正统方式做事”觉得很不好的原因。因为你藐视正统,你就会轻视它,轻视它的一切方案。你藐视C++正统,所以你就看不到遵守正统带来的描述逻辑方面强大的工具。你藐视Scheme正统,所以你看不到Scheme其实可以通过自行开发编译器的方式支持几乎任意语法。你藐视Haskell正统,所以还在静态的时空分析的深渊里面挣扎。现在是Clojure了恩?那我就不知道你会怎么去用Clojure了。

你可以藐视正统,如同你在C++里面做的那样,但是,在你学习的时候,你并没有藐视他。这样就够了。了解它的哲学,理解他的做法,再去藐视它,OK。但是在完全没理解到他的精髓他处理问题的态度和方式的前提下,你就去藐视它——你纯追求心理优越感么?

你可以说Lua很简陋,这没什么。但是你不能说Lua不完备,因为在概念上它的确是完备的。你可以说Lua官方没有提供什么支持,但是你不能说因为官方没有提供支持就会导致混乱和不兼容——你看到了,就算是官方已经提供了支持(自5.0开始有require),依然有人直接dofile,官方的态度和精髓我已经说了:平面,显式。OK既然你无视掉,那你就继续追求你的道德优越感吧。

Lua是一门不强制的语言,除非是进行不下去的错误,Lua选择相信程序员,这和C一脉相承。所以我认为每个学习C的人,都应该学习一下Lua。为了某些子虚乌有的原因报错——可能有这个需求——这绝对不是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
62 [报告]
发表于 2012-11-18 16:37 |只看该作者
回复 60# OwnWaterloo


    我已经说了无数遍了,你选择性失明?

如果你用一个模块叫做stm,那么除非文档明确说明,否则只有require 'stm'是导出给你用的。

就这么难理解?

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

语言为什么要强制某些东西呢?特别的,在Lua这种连参数数目都不强制,连变量声明都不强制的语言里面,你去强制不允许载入某些模块,你不觉得很可笑么?

starwing83 发表于 2012-11-18 15:43
回复 41# OwnWaterloo

你喝醉酒了?你看清楚条件行不行?我还刚刚好给高亮过了你还没看见?不是说支持私有模块可笑,也不是说对载入私有模块给错误可笑。是说在一门“参数数量和变量声明初始值都不会做报错处理”的语言中,“让载入私有模块报错”是很可笑的事情,麻烦你看清楚前提,好吗?

OwnWaterloo 发表于 2012-11-18 16:04
是你自己没有说清楚前提。 你敢不敢承认你高亮的部分很多在原帖里都是没有的?

starwing83 发表于 2012-11-18 16:19
回复 52# OwnWaterloo
好,你说我加了很多东西,我贴原话!你应该满意了吧?

看清楚了?


看清楚了?


OwnWaterloo 发表于 2012-11-18 00:21
回复 23# starwing83

除了文档、注释,有没有其他方式在源代码里向用户表达这个事?以避免用户无意间地访问了stm不打算提供稳定界面的部分?


又看清楚了?

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

很奇怪的事情是,1+1=2有什么好辩论的。你的观点无非就是“Lua做的不够多”,OK,我举例子说有人做了,你的观点就成了“Lua官方做的不够多”,然后你自己还引了一段话说明“官方就是不做”,你这样让我怎么办?是不是要我说“55555Lua你怎么这样啊,这简直就是上帝都救不了你啊!因为上帝不是Lua的作者啊!!他无权改变什么啊!!算了,我自己写个语言吧,就叫OWLua好了,我就是作者,我能做很多”,这样?

这是抱怨,对不对?不能解决任何问题,对不对?能解决问题的方案,我贴的还不够多么?甚至连Lua对模块的要求很低,只要返回导出函数的表即可,因此任何的模块系统的实现,都能兼容现在所有的模块。你还要我说什么?是不是还要说“可是官方不支持啊”。那你还要我怎么办?发明一个新语言?一个和Lua的区别仅仅是官方支持模块载入的新语言么?



"lua做得不够多" -> "lua官方做的不够多" -> "官方不做"

你这是迫害妄想症?

只有最后一句是我引的pil里的,是为了说明即使是lua作者也是尊重私有/公有区分的,只是lua语言因为各种原因不提供表达,而是让程序员自己去协商。
只是为了说明:连lua作者都承认这是有用的,只是lua不做。 而你要帮lua维护到:这是不需要的, 可笑的。 你这不是自掌耳光?
哪天lua要是真支持了相对路径, 没屁股让你舔了, 你的脸该往哪放?


starwing83 发表于 2012-11-18 16:19
问题是,这里面提到的,基本上100%都不是语言的问题,不是语言“做不到这个做不到那个”,而是说那种东西有先天的缺陷,语言做到这个本身是有问题的(如相对载入——那个相对的文件本身可能自己根本就不是文件);而有些是语言能做得到,但是不是标准的;最坏的情况是你得自己做;还有什么是做不到的?


那是因为你在这贴里,也包括平时,都被lua这个框给限制死了。

starwing83 发表于 2012-11-18 16:24
哦?所以你的论点就转为嘲讽我Vim无法开repl了?你Emacs的repl模式威武牛逼?你是不是还得说,”Clojure鄙视所有用Vim的人!Emacs威武牛逼可以REPL!”这样?套用你的句型,连Clojure自己都没有锁REPL是自己的卖点吧?你有什么资格站在clojure的角度嘲笑Lua?


包括这个,也不是嘲讽vim。是你自己刻意强调"一点一点敲代码",没达到原有目的,反而暴露了你自己思想僵化。 这才是我嘲讽的东西。

不是那种东西有先天缺陷,做到这个是有问题的,而是你根本就不愿意往这方面去想。 你潜意识里已经认为这是没必要的了, lua已经做得足够好了。


PS: clojure不需要特别强调repl是自己的卖点。 因为这是lisp的卖点。 然后越来越多的语言引入了。
http://clojure.org/features 看第1项。
以及clojure现有的书都会花或多或少的篇幅说repl。
最多的在"clojure programming"里, "PART III Tools, Platform, and Projects", "CHAPTER 10 REPL-Oriented Programming"一整个chapter, 20+页都是。

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

哦,Repl然后dump state这个估计有困难,但是依然做得到,有个模块叫Pluto——当然不是官方的!我想问问,你自己的发言:

clojure可以dump repl的当前状态?Python可以?Elisp可以???Haskell可以??我怎么一个都没听说过呢?这就是你嘲笑的方式么?为其他语言装上他们根本就不具备的功能,然后说Lua没有这个功能?看过云风写的文章么?他做到了将Lua持久化(采用客制化内存分配器的方式),以及将Lua状态共享(同样的方案)的方法,clojure做个看看?JVM可以客制化内存分配器?别逗了。

而且还说了,你真想dump——我就听说过matlib有这个功能,可以直接dump,有人好像就因为引用没清干净dump一个函数dump出来200M的文件——的话,有Pluto,你以为Lua就真做不到?

好,现在轮到我来嘲笑你了,Python怎么做到这个?



因为lua有个模块叫pluto,所以repl的persistent是指dump? 你看你是不是又被lua的经验蒙蔽了?
云风又怎样了? 他那个实现dump出来的东西是人可读的? 他要把这做出来了, 也有值得我追捧的点了。


你嘲笑我好了, py, el, haskell, clojure都做不到(或者我不知道如何做)dump出内存状态。
而且我也不知道dump出来了有什么用。 又关我什么事?

是什么原因让你变得这么不自信了? 一提到关于lua的事,就非要得出"lua是可以做到的","lua有很多优美的解决方案","不然就是需求的错"的结论不可?
是因为你自己已经卖给lua了吗? 于是lua有什么疑似短板就让你很焦急?

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
66 [报告]
发表于 2012-11-18 17:24 |只看该作者
starwing83 发表于 2012-11-18 16:37
如果你用一个模块叫做stm,那么除非文档明确说明,否则只有require 'stm'是导出给你用的。

就这么难理解?


这是lua里的惯例? 至少大多数模块都是这样?
那这样也行。


starwing83 发表于 2012-11-18 16:37
我已经说了无数遍了,你选择性失明?

你前面有说过无数次? 我怎么感觉是第1次看到?
你早这么说嘛, 清清楚楚明明白白的。
我理解能力又低, 而且看到一大篇一大篇讲"哲学"的文字就烦躁, lua的哲学关我什么事?
这么说你可能会觉得我有失公允。 haskell/clojure/lisp的哲学也不关我的事。 满意了么?

你要真的在一大段"哲学"里插入惯例, 那我真有可能选择性失明, 虽然我是无心的。

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

不一定是打开的,是可以在C源代码里面直接loadBuffer的,你如果真的开发过Lua甚至是Python你就会发现,有些时候异常给出的dump stack有些项是问号,就是因为在C源代码里面干活根本取不到文件名。

你如果认为我连问号都没看到过。。。 也太小看我了。。。
C源代码里loadBuffer, 那这个C源代码又是被谁调用的?  这个谁又是被另一个谁调用的?
这个stack trace里一直往上, 难道全都是问号?


starwing83 发表于 2012-11-18 16:22
另一个例子:Lua(甚至是Python)都支持不同的载入器,可能那个”文件“根本不是物理文件。而是,比如说,zip里面的某个文件。这种情况下的”相对载入“就必须提供在任何载入器上都兼容的uri表示方式——你不觉得这个很扯么?

既然要加载zip, 那lua肯定官方不支持, 这iso c都没有的东西, 怎么支持啊。
那么。。。 哪个读取zip的库没有相对路径的概念。。。

有多少介质是没有相对路径这个概念的?  相对路径是多么基础, 再基础不过的概念?


starwing83 发表于 2012-11-18 16:22
甚至连Java都不支持相对载入,必须设置CLASS_PATH。Android的ClassLoader本身还有点暧昧不清的问题,网上文章一把一把的。


别和java比。。。  java的class path甚至current working directory在整个JVM生存期内都是不能改变的, 你敢信?

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

是嘛,早这么说不就OK了,你又不用,那这些“需求”又是什么呢?哦,Lua支持Repl了,你吐槽官方不支持,OK我们假设官方被你的霸王之气打动,开始支持REPL,你又开始说Lua不支持宏,不支持AST,不支持不可变数据,不支持STM,还不支持纯函数式开发——您玩Clojure呢?

本来你就不用了,又哪里谈的上需求,本来就是完全不同的应用领域和开发方式,你又哪里谈得上缺陷?

那是因为lua至少还在一个candidate列表里。
如果是ruby什么的, 我根本就懒得关系它支持或不支持什么。 它支持everything is an object就够了。


starwing83 发表于 2012-11-18 16:36

这就是我对于“不按照正统方式做事”觉得很不好的原因。因为你藐视正统,你就会轻视它,轻视它的一切方案。你藐视C++正统,所以你就看不到遵守正统带来的描述逻辑方面强大的工具。你藐视Scheme正统,所以你看不到Scheme其实可以通过自行开发编译器的方式支持几乎任意语法。你藐视Haskell正统,所以还在静态的时空分析的深渊里面挣扎。现在是Clojure了恩?那我就不知道你会怎么去用Clojure了。

C++正统的描述逻辑方面的强大工具? 是啥啊? 给我介绍介绍啊? 别说是UML什么的啊?

通过自行开发编译器的方式支持几乎任意语法, 别天真了, 你见过几个scheme项目是这么做的? 它们又该怎么与其他人库合作?
这真是scheme的正统? 还是你意淫出来的正统? 尽信书不如无书。 书上说的, 和现实中做的很有可能是两个样子。

Haskell的正统是怎么的? 你教教我?Haskell正统程序员又不用做时空分析了? 嗯?


至于轻视,能别给我扣帽子行么?你自己往回翻,我说的是不是在正统里找不到办法才开始考虑非正统的?
我轻视的不是正统,而是对正统绝对服从


starwing83 发表于 2012-11-18 16:36
你可以藐视正统,如同你在C++里面做的那样,但是,在你学习的时候,你并没有藐视他。这样就够了。了解它的哲学,理解他的做法,再去藐视它,OK。但是在完全没理解到他的精髓他处理问题的态度和方式的前提下,你就去藐视它——你纯追求心理优越感么?

同上,别给我扣藐视。 将我抹黑了就能显得你正确了么? 你怎么开始耍这些手段了?



starwing83 发表于 2012-11-18 16:36
你可以说Lua很简陋,这没什么。但是你不能说Lua不完备,因为在概念上它的确是完备的。你可以说Lua官方没有提供什么支持,但是你不能说因为官方没有提供支持就会导致混乱和不兼容——你看到了,就算是官方已经提供了支持(自5.0开始有require),依然有人直接dofile,官方的态度和精髓我已经说了:平面,显式。OK既然你无视掉,那你就继续追求你的道德优越感吧。

先是哲学, 现在又开始优越感, 道德。 你心是有多虚?

java在概念上还是完备的呢。

好,精髓是平面和显式, 那它们与相对路径的关系是?


starwing83 发表于 2012-11-18 16:36
Lua是一门不强制的语言,除非是进行不下去的错误,Lua选择相信程序员,这和C一脉相承。所以我认为每个学习C的人,都应该学习一下Lua。为了某些子虚乌有的原因报错——可能有这个需求——这绝对不是Lua的哲学,所以Lua不这么做。这不是功能缺失,就这么简单。

某些人给我说在项目里推行用闭包控制访问权时是多么意气风发。
那时候你怎么要因为某些子虚乌有的原因去强制了呢? 怎么不就让私有域随便被访问呢? 怎么就不遵守lua的哲学了呢

限制私有域与限制库的私有组织方式到底有什么区别? 哦, 区别就是一个lua至少还是有闭包来支持, 另一个没有。 所以后面就符合lua不强制,和C一脉相承的哲学。
前者? 管它的呢。 大多数人都对闭包来限制感到很满意。 只有我这种讨厌的人才会去抱怨、 才会去戳人痛处、 故意刁难。

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


    1. 你自己看清楚没?这两个表述有什么区别?Lua的强制除了报错还有什么?

2. 我已经说的很明白了:除非文档说明,否则除了模块的名字,其他子模块都是私有的。不明白?

C++的class不写存取权限符,就是默认private,不明白?

C的char*不主动给它赋值一块合法内存,其值就是未初始化的,不明白?

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
70 [报告]
发表于 2012-11-18 18:00 |只看该作者
你俩还是写个解释器去吧.. 别在这浪费口水了.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP