- 论坛徽章:
- 2
|
回复 1# starwing83
>> 事情最开始是这样的,OW想用clojure写脚本
从你的角度,可能是这样。
从我的角度,这事情从emacs lisp就开始了。
所以我才知道你用的是 #!/usr/bin/perl -w 而不是 #!/usr/bin/env perl -w。
所以在知道shebang的设计有重大缺陷。
所以才知道有些软件为什么要支持 '-Xopt1 arg1 opt2 arg2'
所以才认为语言应该提供一个不需要参数的launcher。
emacs始终没有,它至少得加一个--script参数。
但clojure有,只是官方 —— clojure的repo、clojure.org里的download —— 没有附带而已。
4楼列出的就是一个例子:
clojure /usr/bin/clj
clojure /usr/share/clojure/clojure.jar
>> 我个人觉得clojure本身是基于java-vm的一种语言。它本身其实并不考虑作为脚本这么一个用途,所以不提供这样的命名约定什么的其实也是合理的。不过
clojure基于jvm于是本身不考虑作为脚本用途 —— 你敢不敢承认这话是你自己的臆测?
0. 有些case,尤其是牵涉到网络传输的, 根本不在乎启动速度。
1. 前面一个回复已经说了, 哪怕是emacs lisp这种特殊目的的语言都有当作脚本的需求, 何况是clojure这种通用目的的语言?
2. 各种linux发行版的软件仓库里都有clj, 又该怎么解释? 它们都是傻叉对不对,拿jvm这种启动就要花时间的语言当脚本用?
我批评的是应该将clj更官方化, 最好是拿到clojure的repo里维护。
如果想偷懒, 至少在clojure.org里提一下, 启动方式是clj program.clj, 然后去自己操作系统的软件仓库里找clj。
这要求是不是合理?
是啊,我就是懒,哪怕我没解决这问题也懒得去跟官方说(不擅长英文的理由够充分吗?)。
我就在qq上吐槽了一句"他咪咪的官方居然不带", 在你看来是抱怨了对不对? 是"向你"抱怨了对不对? 就算是我怨妇了一句, 你接下来跟我扯这么多又是怎么回事?
我因为一个合理的需求怨妇了一句, 你给我扯这么多无理取闹的东西, 真tm烦。
>> 我在考虑这么一个问题,就是软件本身的设计目的,和用户的需求不明确的时候,用户到底应该怎么办。我对OwnWaterloo说,你应该去clojure邮件列表发言,说明这个问题,而不是跟我讨论,因为这完全没有用。不过我也不知道OwnWaterloo自己的看法是如何,大概是“我已经想到一种解决方案了,我为什么要等待别人去解决这个问题呢?”
用户需求不明确? 不要自己骗自己了。
我找里讨论? 就像"tm啥啥啥网站又被盾了", 你怎么就不会认为我是在和你讨论? 怎么就不推荐我去给government的邮件列表发言? 我敢去吗?
"他咪咪的官方居然不带", 就是这样个情况。 在给提jark, clj时顺带吐槽了一句, 就是想和你讨论了?
另外: 我还真就是这么想的。 而且这解决方案不是刚想到, 而是在emacs lisp那时就知道了。
所以遇见clojure就有经验了, 赶紧找无参数的启动器, 结果没有, 那只能不用shebang而是混合语言了。
邮件列表有用? 你提了对方就会理你?Roberto 拒绝、无视过多少? 这其中还包括你自己的。
给你看个我在"找"的过程中发现clojure用户是怎么吐槽这语言的:
http://stackoverflow.com/questio ... shebangs-in-clojure
I'm surprised the Clojure authors didn't try harder to make Clojure scripts fit in better. – sarnold Mar 28 '11 at 7:11
The Clojure community is anti-POSIX. How do I shebang? "Don't; Use clj." How do I manually compile? "Don't; use Leiningen." – mcandre Mar 30 '11 at 1:54
是啊,我就是等不及。等不及clojure去支持(哪怕真能说服rich), 等不及他人回答我的"问", 因为通过"找"就能找出他人之前"问过"的。
你问的tcsh的两问题, 到现在有人理你么? "问"比"找"能先进在哪里?
当我"问"了, 要么是这问题我确实不关心,只想找个solution —— 比如被别人问起office什么什么功能 —— 要么就是我最后的手段, 先问着, 然后去找其他方案。 有人回答就赚到了。
>> 我自己其实也遇到了这种关于“需求”的情况。我用tcsh,tcsh本身的shebang我很少用(其实我是根本就没用过,脚本我都是直接用Vim执行,或者在命令行会写解释器来执行,很少会直接执行脚本),所以在测试的时候,我发现tcsh的windows版本竟然不认shebang,然后经过了Stack Overflow提问、自行编译等等方式最后都没有解决这个问题。这本质上依然是“软件的开发者没有满足使用者的需求”。我认为,我遇到的情况是不合理的,因为作为一个shell,在任何系统上行为一致应该是很有必要的。tcsh不支持shebang的原因是它支持Windows式的“按照后缀名判断文件类型”,可是在这之前,先打开文件并检测一下#!应该是很简单的。而且tcsh的源代码中的确也表示Win32移植版本应该支持HASHBANG特性。
"任何系统上行为一致"? 目录树结构都不一样, 一致个毛啊。 人家凭什么要去重复设计一个单根到多驱动器的映射方案?
源代码中的确表示? 就因为一句 #define HASHBANG 1? 不要自己骗自己。
你之前也说过, 以为tcc是stateless的, 最终发现是个骗局。 这有可能又是另一个"想重构、但做到一半(这次是#define HASHBANG 1)没动力或代价太高就摆那不管了"?
>> 我认为我遇到的现象和OwnWaterloo遇到的现象是不一样的。Clojure的官方主页上完全没有提到过支持在shell中直接执行clojure程序的做法。而tcsh作为一个shell,是必须满足POSIX对shell的要求的——即至少在某种情形下识别shebang。所以这并不是一种情况。对clojure来说,这种用途是作者“完全没有考虑过,或者没有考虑透彻的使用情景”,而对tcsh来说,这应该是“宣称的功能没有达到”。
windows关posix什么事? windows的posix子系统记得是因为有段时间吃官司了。 之后风头过了就停止了。 进度都还没达到shell那里去。
我评判的就是clojure.org根本就不提clj。
至于clojure是否可以作为script, 我再给你找个证据 http://clojure.org/repl_and_main 。
如果你还要继续说此script非彼script, 又或者还是不承认clojure可以当作script用, 我真拿你没办法。
而如果你还敢承认这一点, 那在shell中直接执行也是"暗含的"功能。 同样按你的说法是"宣称的功能没有达到"。
哎。。。 居然最终按你的路线走, 得出个"宣称功能没达到"。。。
从"而tcsh作为一个shell,是必须满足POSIX对shell的要求的" 这句开始就可以不理你的。
>> 因为#字符在clojure中并不是注释符。可以发现clojure的确是对clojure程序中包含shebang做出了支持。问题在于这个支持不全面,并不能保证clojure一定能够通过shebang调用到。一方面,shell不支持shebang参数分割是一个缺陷,另一方面,clojure本身没有提供独立的可执行的工具来直接执行clojure程序也是一个问题。两者共同造成了clojure无法通过shebang执行的情况。
clojure在277a070955e86697c2e0f38883ccab945c47e50a这个commit就增加#!作为至行末注释。
这个commit是1.0之前的200多个commit。 3年前, 1.0之前就支持了。
只是文档一直没提这个事。
>> 这其实是另一个话题了,在两个软件的缺陷同时造成一个困难的时候,谁应该为这个困难负责?OwnWaterloo认为应该是clojure,我不知道这是基于什么情况的考虑,反正我觉得应该负责的是shell。因为归根结底,是shell的shebang不完善造成的,clojure提供独立执行文件的方式只是一个work around而已,而shell的shebang仍然不完善。
我一直都承认责任在shebang。
但问题已经产生了,只追究责任有什么用?因为责任不在自己就事不关己了? 不说别的, 你为Windows的各种缺陷擦过多少次屁股? 因为这是Windows的责任所以自己就什么事都不做? 等着Windows去更新? 它会理你?
shebang这种老古董,你有能力让所有*nix的发行版都更新并让它分离参数?劝说所有的*nix用户都去更新?就为了一个shebang? 这现实么?
哪怕责任不在自己, 但能不能让一步,语言自己提供一个launcher? 而这就很现实。
>> 4. 如果你是使用者,你在向人抱怨自己的“正常”使用没有达到预期的目标,反而需要自己去想work around,并埋怨其设计糟糕的时候,如果有人提出相反意见,你是否能保持冷静并考虑。
你那也叫相反意见? 你完全是更年期综合征好吗?
我坚持和你这种不用unix那一套的人纠缠了这么久,通篇都是你自己的各种臆测,这样讨论真心累啊。你什么时候变成这种人了?
最后实在觉得太浪费时间不想理你了,结果被你反咬一口说我不冷静?
>> 6. 对待这种情况,作为抱怨者,和作为被抱怨者,以及作为聆听抱怨者,应该采取什么样的行为是合适的?
得,以后我再也不"抱怨"了,中? |
|