为什么我的那个帖子会有这么多人攻击我呢?(带解释)

2013-09-26 10:03:48 +08:00
 sdjl
再开一个帖子吧,免得那边跑题。

昨天发了一个小测试,我也没想打会有这么多人参与和回复,到目前为止已经收到了约500份有效完整答卷,这么多人参与确实是我完全没有预料到的,因为我只花了一个晚上多点的时间就把这些题目出完了,所以也不会太科学,太严禁。并且在帖子和题目开场中都强调了这一点。

但是同样让我完全不能预料到的是,招来了一部分同学的攻击,很多都是带有愤怒感情的,因此我对于这个事情嘛再开一个帖子,如果这个帖子又招来这些同学的谩骂,那大家就让它沉了吧

首先,我丝毫没有某些同学说的“恶意”,甚至许多同学用主观判断来形容我,比如“鄙视别人”,我自己不认为我鄙视了谁,甚至不认为我主动喷了谁。我只是发了一个由程序自动判断分数的题目,然后都没有和别人争执,就招来了别人主观的谩骂。

我发这个题目的目的也很简单,一可以测验程序bug,二可以收集到想要的数据,三可以宣传一下我们的产品,至于其它同学说的“目的”,只存在于你们的意识中

但是我尊重你们的意识,所以也不反对你们来喷喷,但不代表我必须要和你对喷才算尊重你嘛,因此我选择性的回复那些没有明显攻击的内容以避免招致更多的谩骂

有些同学说我无视别人的回复,那主要是两个原因,第一是明显是来挑衅谩骂的,二是我觉得你的回复有对的地方也有不对的地方,这个交给大叫讨论就行了。我主要对题目中表达有误的地方,或者容易引起误解的地方做解释

另外,题目确实有主观性,出题的时候也注意到了这个问题,所以尽量避免,但是个人知识范围有限,不可能面面俱到,因此会出现题目不合胃口也在所难免。如果你也想出题,我可以给你开一个账号

我不解的是,为什么你们这么具有攻击性呢,这不过是一个小测试而已,就算你拿了0分,又能说明什么呢,最多能说明我的题目和判断程序设计得不科学嘛

最后感谢对题目提出建议的各位同学
7144 次点击
所在节点    问与答
86 条回复
sdjl
2013-09-26 16:41:24 +08:00
@yangff 你的这个观点是你故意强加的,大家可以通过发帖记录来评估一下我是否有:
“一副高傲的我最叼你们这些渣渣还不来跪舔老子要大十个的样子”

或者是 “不同意我的观点的都是小学都没毕业的喷子”

或者是 “XXXX是最好的语言”

或者,你可以举证证明我表达了这样的观点
sdjl
2013-09-26 16:43:03 +08:00
@soli 答错这个是程序按照“所有选项完全正确”来判断的,但是得分是根据每个选项单独判断的。
soolby
2013-09-26 17:11:30 +08:00
@for4 没仔细看题目,也不是程序员,也做不了这个题。

从体验上说说,我这种问答的形式,问题可以稍微长一些,答案尽量简洁明了,而且最好是A/B,最多A/B/C。

你这个问题很简洁,答案太长了
(也许是我不懂,乱说的)
dblue
2013-09-26 17:12:03 +08:00
@yangff 來說說爲什麼有些地方你說得不大對。

送你一句我師兄送給我的話:「軟件工程裏面最重要的是權衡。」
你的思路體現了你其實對着點沒多少體會。

----

对于成熟的现代流行的编程语言,只要能熟练运用,开发相同程序的效率都一样。而与所使用的语言类型没有太大关系

既然是成熟的流行的编程语言,当然是这样的。这里的效率说的是开发效率,做不到这点说明不够熟练。

語言的成熟是各方面權衡,達到一個相對穩定的情況後的境界,不同的語言有不同的哲學,也就有不同的側重點。在無限的情況下當然各方面都是好的,又正確,又高效,又開發效率高,問題是這樣的語言從來沒有過。於是乎,語言只能有選擇。

於是乎,你看到成熟的C,開發效率很低很低,但是有限的時間內還是各種語言裏面運行性能數一數二的。於是乎,你看到成熟的python,開發效率很高,但是性能很差。他們都已經說的上「成熟」了,「熟練」只能說充分發揮語言的特性,而「成熟」並不代表開發效率高。


----

如果把语言看成命令式的语言(比如js)以及描述式的语言(比如css)。那么这两种类型在使用方式上可以互换,比如可把命令式改为描述式的,也能把描述式改为命令式的

您改一个试试?css要体现一部分命令的效果需要伪类,不过哪怕这样,也不可能实现js能实现的所有功能。IE6除外。LESS != CSS!他的看起来的特性特性是在编译期实现的,本质还是描述式的,没有动态的效果。

這句話我也覺的有爭議,但是大致上,如果是圖靈完備的語言,都是可以互換的。我們把命令式的看成how,描述式的看成what,那麼how的確可以是what的答案。

你在混淆題目的意思,題目沒有說任何一個how都可以變成what或者已經有成型的what了。

----


大多数编程语言的核心功能都差不多,基本由循环、条件判断、数据类型等组成,只是语法与库的不同。因此学习多种编程语言对提高个人能力没有太大帮助,开发者应该把时间花在学习数据结构、算法、以及解决具体问题等方向上

程序=算法+数据结构

少年你真的覺的上面這條公式是對的麼?是完備的麼?我只能呵呵了。。。。

btw,算法和數據結構最後也會投影到編程語言上。好吧長期國內的教育就是不重視「編程語言」這門學問,樓主顯然在故意戳害你們弱小的心,但是很遺憾樓主在這件事情是的確是對的。另外,數據解構和算法在不同的編程語言裏面,用於工程上也有很大的差別。

----


“专用语言”与“通用语言”相比使用范围较窄,因为它们无法实现“通用语言”的强大功能

请用CSS访问Cookie,并把它发到xss平台上。
JavaScripts是脚本语言,具体请看:http://en.wikipedia.org/wiki/ECMAScript#Implementations

你連專用語言和通用語言都沒搞明白吧。另外,又跟腳本語言什麼事情。

另外你的邏輯也錯了啊。你實際上是說「存在一個專用語言,無法實現通用語言的功能。」這跟「專用語言無法實現通用語言的功能」是兩回事啊。這裏的謂詞,根據語義,只能取全部啊……也即是「全部的專用語言都無法實現通用語言的功能」。

其實還是編程語言的圖靈完備性啊。其實題目想表達的是「專用語言也可以是圖靈完備的。」估計您一直沒意識到吧?

----

相比Python这种通用语言Shell是一门语法比较复杂的语言,以至于有些人希望能够不用Shell实现的就不用Shell,而用其它语言代替Shell来编写脚本

Shell语法还复杂,看到Python不是要哭了?

shell的確複雜,你去看看bash的ref你不哭?我現在都不會寫shell。你知道shell可以寫子程序,而且傳參有多蛋疼麼?shell長大以後,維護的確十分困難,「用其它语言代替Shell来编写脚本」的確是可行的作法啊。

----


Shell是一门跨平台的语言,使用Shell编写的脚本不用修改,便能很好的在各种Linux发行版上运行

http://en.wikipedia.org/wiki/Bash_(Unix_shell)
首先shell的主语指带不明,甚至Windows的控制台你都可以叫他Shell。其次,类UNIX系统所共同支持的shell语法。最后,绝大多数linux系统都会带上bash,就算你硬要说没有,也至少会带一个兼容http://en.wikipedia.org/wiki/Bourne_shell 语法的shell。
请不要把用户自行安装的其他shell考虑在内。

看不到你回答的邏輯啊。最後一句「请不要把用户自行安装的其他shell考虑在内。」跟上下文完全沒有聯繫的感覺 = =

原命題的錯誤,應該是「使用Shell编写的脚本不用修改,便能很好的在各种Linux发行版上运行」,真正寫過跨發行版的shell程序看到這句話估計就哭了。如果一開始沒有考慮跨發行版,在複雜的環境中,基本不可能很好地在各種發行版上運行。原因不在於shell,而在於linux破碎的發行版帶來的破碎的環境不一致。所以才有了各種猜測系統環境的工具……

----

使用设计模式,有时可让程序代码变得更清晰易懂,也更容易和其它懂模式的人沟通。但模式也可能会增加程序的复杂度

更多情况下,设计模式会让代码变得更加冗长复杂,增加他人阅读的难度,沟通请使用文字。同样的目的,你是愿意面对1000行的代码还是400行的。阅读代码的成本,比重新完成的成本高10倍以上,看方法名知内容的阅读不算。

你的設計模式是老師教的吧?漂亮的設計模式根本不會讓代碼冗長,增加閱讀難度,增加溝通成本。(如果不是漂亮的設計模式,就相當於你在用工具做一件錯誤的事情,這時候請不要埋怨工具)。不要拿你在課堂上學到的那種設計模式過來說啊 = = 有多少老師懂設計模式的,亂用而已。

----


协议往往比实现此协议的程序活的更久,因此我们不但应该学会使用程序,也应该学习程序所使用的协议

私有协议死得比程序还快,比如,QQ2000使用的登录协议。

人家說的是往往 = = 根據我的經驗,「协议往往比实现此协议的程序活的更久」是說得過去的。當然可能你見過很多垃圾協議,覺的垃圾協議比正確的協議還多,那只能說這道題出得不好了。你的例子在邏輯上不能作爲反例駁倒原命題,比較有說服力的例子,應該是統計數據來說明是不是「往往」。

其實原命題的意思是「因此我们不但应该学会使用程序,也应该学习程序所使用的协议」。估計出題人是載了很多教科書的坑,想用這道題來表達他「程序使用的協議是很有學習價值的材料(然而這卻常常被忽視了)」。

----

版本管理工具在合并两个分支的代码时,此两个分支可能分别来至不同的程序项目

干出这种事情的拖出去揍。

你邏輯又出錯了。「可能」不是「應該」,講可能是講「可行性」,而不是「正確性」。

不同的程序項目完全是可能的。雖然有點牽強,不過你可以考慮一個項目在github上被多次fork,最後他們實際上是「不同的程序項目」(repo),但是的確可能合併,而且也是git的feature之一)

----

测试驱动方法可以提高开发程序的效率,特别是在不增加新功能重构现有程序代码时

带来更多的限制,减慢开发速度。

傾向於認爲出題者這句話是不嚴密的,是錯誤的。原因還是在表達,應該加上「往往」,「一般」,不然就只能當「测试驱动方法一定可以提高开发程序的效率」。出現這種錯誤,是因爲英文到中午的翻譯會丟掉一些東西。

TDD can help more dev effect. // 沒有「一定」的意思
测试驱动方法可以提高开发程序的效率. // 有「一定」

不過一般人都覺得「可以」就是「可以」,「测试驱动方法可以」==》的確有時候可以。

然後無論如何,你的反駁都是錯的。「带来更多的限制,减慢开发速度。」更多是在錯誤的使用的情況下。好吧我從來不用TDD,因爲我總覺得我還不需要 = = 但這不是TDD的問題。

然後出題人後面半句是非常正確的。在不增加新功能重构现有程序代码时,TDD非常幸福。

----

管道为两个程序之间建立起了互相通信的方式,程序在运行过程中可以通过管道互相传输数据

不能吗?LZ多想想

原題明顯表述,是shell裏面的pipe,你丟掉了上下文。以下的你對管道的觀念都不是shell裏面的pipe,而是*inux提供的程序間通訊的方法,是用API來做的,是論非所論。

shell的pipe是單向的,「相互」是錯誤的。

----

管道可以让程序与程序之间分工更为明确,从而减少了整个程序代码的复杂度

带来额外的协议维护费用。

錯誤在於你論非所論。這裏的協議就是「標準輸入和標準輸出」,任何unix風格的程序,都是直接操作標準輸入,標準輸出,使得程序之间分工更为明确,从而减少了整个程序代码的复杂度。沒有帶來額外的協議維護費用。

此外,恰恰是這種方法,使得unix下的程序不需要這麼多「協議」,因爲每個程序都直接處理標準輸入輸出裏面的字符串流。

----

管道可让一个程序在未来发挥出程序作者自身没有预料到的作用

http://zh.wikipedia.org/wiki/%E7%A1%AE%E5%AE%9A%E6%9C%89%E9%99%90%E7%8A%B6%E6%80%81%E8%87%AA%E5%8A%A8%E6%9C%BA

你壞掉了,沒見過「管道可让一个程序在未来发挥出程序作者自身没有预料到的作用」的例子吧?好吧你沒見過,但是神奇地搭配管道真的是可以很神奇的,多多積累吧 = =

這裏跟DFA沒什麼關係。。。一個程序可以近似DFA,而shell是一個膠水,把這些DFA拼裝起來,有什麼問題?

----

使用管道可以避免两个程序之间必须互相了解对方的实现细节才能彼此合作

协议还不是细节?我用json,你用urlencode,我们来交流一下吧。

理由見上。我都不想說你的邏輯 = = 人家說可以,你舉個不可以的例子,來說明可以是錯的?

----

当一个网站的数据量越来越大时,为了存储更多的数据,必须使用支持可存储量更大的数据库,或者使用空间更大的磁盘

……到更多的服务器上就不要增加硬盘啦!!!LZ真是太TM机智了!!!!太神了!!!!!快去拿图灵奖,还和我等傻逼瞎哔哔个毛啊!!!!!!!还有物理学的诺奖也可以拿了吧!!!!信息熵都被你吃到黑洞里去了吧!!!!!!
这个答案真的是找喷

lz沒說不用增加硬盤吧?

----

数据结构也可视为算法的一部分,优秀的数据就够能够引出优秀的算法。因此有时可以把编程的重心从算法的角度移步到关注数据结构,从而降低整个算法的复杂度

程序=算法+数据结构
顺便说一句,SplayTree是数据结构,Splay是算法

。。。啊。。。

**只會做點點算法,沒有做過實際的項目,是遠遠不夠的**

----


在开发程序初期,若能为未来程序中可能会遇到的性能问题设计好算法代码,便能优化程序的性能。因此在项目初期应该多提前考虑算法优化问题

……在您眼里只要能跑出结果,跑1W年也无所谓是吧,反正跑着跑着CPU性能就上升了,然后时间就会越缩越短,不用考虑优化是吧,您在微软工作是吧?还是在开发Android?不考虑优化算法效率,其它的优化都是搞笑。CPU累个半死帮你争取回来的常数,都被您败光了。
PS:还是说古剑2是您开发的,我要求退货!!!

過早的優化是萬惡之源。人家沒說性能不重要,是在討論關注性能的時機。軟件不是寫個幾百行幾十行的東西交給評測機AC了就是好項目了……性能越來越不是項目最重要的東西了。學會權衡啊少年。
yangff
2013-09-26 17:13:32 +08:00
@sdjl
这几句是你说的吧:
大家都说题目出得不好,那你可以@几个高手来认真回答一下,看看别人能回答多少分
大家都说题目出得不好:你们居然认为题目不好?
那你可以@几个高手来认真回答一下:其实原因是你们太弱,无法理解我有多么牛逼,高手自然知道我的题目有多厉害
看看别人能回答多少分:滚

出题目的目的,就是要检测,不是为了让大家都能回答正确。:我都是对的,我可以站在一个至高的立场,检验你们,而你们所说的不好,那是因为你们太弱。

选项里面有许多必须、应该、可能、某些等字眼需要注意哦:我就玩文字游戏怎么着了?

本帖子有了新的讨论,“为什么会有这么多人攻击我”:你们这些小学生就知道人生攻击。


60分算中手了,我已经改了。80以上才算高手,这里说的高手就是实实在在的高手

大家试一下找身边写程序写得很好的人试一下,看看人家能不能答对才是检验题目的科学办法

当然,题目中确实有很多细节判断需要思考


在比如:
22分
编程初手
您的水平一般般,需要更多的努力,加油!

好的,如果说这是10页的算法题,然后得出这个结果,我可以接受。但是这里,你就直接把观念与你不同的人,定义成了“水平一般”。

你不能说这句子说的很客气(你看,我还说了加油哦!)他的味道就不一样了。但是实际上你就把分数较低的人看作是了弱,不然说什么努力呢?努力变成你?

当然,事实上你这么说什么也改变不了,除了让人不满。最后受着的还是你自己。

“ 我写这个测试嘛,又不是搞科学研究。能回复的尽量回复,回复不了的也让我休息一下嘛。你们这么多人喷”
“但是面试总是要问一些问题的,所以把这类题目作为一种参考,然后加上自己的判断来考考面试者的话不错,但判断被面试者的关键不在于是否答对,而在于他如何讨论题目吧”
“我把低手去掉,60分以下都是初手。 这样就不会这么具有攻击性了”
“嗯, 感谢大家参与, 都说了不要过于认真, 哈哈

如果有对题目或答案有疑惑,为什么不发到v2ex上面来讨论讨论?”

当然LZ不想被喷,当然也不愿意承认除了文案和程序bug以外的问题,那还有什么可说的呢。

比如你在那个帖子里面回我的:“@ yangff 嗯,主观确实是一个问题,这毕竟不是考试嘛。我也想不出客观的问题来”
想不出客观的问题……想不出客观的问题……你直接说你在调查算了!

PS: V2EX不能编辑真是棒极了。
PPS: 语文很重要。
sdjl
2013-09-26 17:28:09 +08:00
@dblue 你说的这句话不错,大家对题目的讨论和反驳我基本都是认可的,没有不认可

不用再拿那些引用来证明观点了,

太长了,一会再看


@yangff 回复一下你

“大家都说题目出得不好,那你可以@几个高手来认真回答一下”

这句话是你拼接出来的吧,我的愿意是“@几个高手来回答一下看能得多少分”,这句话没有藐视你的意思


“出题目的目的,就是要检测,不是为了让大家都能回答正确”
这句话是针对一个某位同学回复的,大概意思是:出题就是要有陷阱,否则大家分数都一样就没有意思了


“选项里面有许多必须、应该、可能、某些等字眼需要注意哦”
如果没有这些字眼,那么就不好判断一个备选项是否正确了


其它的话嘛,基本差不多,你认为这样就攻击到你了么?

讨论问题要结合上下文,只是选择一部分文字,然后按照自己的想法拼接在一起,再强加自己的观点非得和别人吵一架。。。
sdjl
2013-09-26 17:29:13 +08:00
@yangff 还有 “您的水平一般般,需要更多的努力,加油!”

这句话只是一个程序的自动判断,你干嘛非得更一个程序较劲。我又不是针对你说了这句话
fgwww
2013-09-26 17:34:55 +08:00
“@几个高手来回答一下看能得多少分”,这句话没有藐视你的意思

233333...跟这种人你们战个毛啊
dblue
2013-09-26 17:35:40 +08:00
lz的這套題,讓我覺的是一個開始被學院派灌輸了很多站不住腳、似是而非、對各種華麗概念打過雞血的人,出來真正擼過項目了,對很多事情產生了新的看法,而且覺的這些新的看法其實是對提升修爲更重要的(卻沒有人在傳播)。然後題目中拿了很多這些看法過來,是爲判斷高手的依據。

如果真的去找高手做,真的高手未必分數高,但大概還是很喜歡這些題目的。與其這麼沒理性地噴樓主的語文,不如多想想題目裏面有用的部分,對自己的衝激,然後用理性而謙虛的心去看看是不是正確的,以及爲什麼樓主要這樣設計題目吧。
ywencn
2013-09-26 17:39:10 +08:00
感谢您的参与,您可以回顾错题,或者直接查看结果与得分。

如果觉得此调查不错,请在查看结果里分享给朋友吧。
您一共答错10道题
for4
2013-09-26 17:43:05 +08:00
@soolby 真不好意思, 虽然不是职业的,但我写了七年代码了.
然后否定一次就行, 请不要一而再再而三的否定, 谢谢!
yangff
2013-09-26 18:01:59 +08:00
@dblue 对于成熟的现代流行的编程语言,只要能熟练运用,开发相同程序的效率都一样。而与所使用的语言类型没有太大关系

既然是成熟的流行的编程语言,当然是这样的。这里的效率说的是开发效率,做不到这点说明不够熟练。

语言的成熟是各方面权衡,达到一个相对稳定的情况后的境界,不同的语言有不同的哲学,也就有不同的侧重点。在无限的情况下当然各方面都是好的,又正确,又高效,又开发效率高,问题是这样的语言从来没有过。于是乎,语言只能有选择。

于是乎,你看到成熟的C,开发效率很低很低,但是有限的时间内还是各种语言里面运行性能数一数二的。于是乎,你看到成熟的python,开发效率很高,但是性能很差。他们都已经说的上「成熟」了,「熟练」只能说充分发挥语言的特性,而「成熟」并不代表开发效率高。

####
所以说是熟练度的问题,C用的熟练,开发效率不会比Python差。
这里的熟练不仅仅是对语言的熟练,Coding从来不是瓶颈啊……
####

----

如果把语言看成命令式的语言(比如js)以及描述式的语言(比如css)。那么这两种类型在使用方式上可以互换,比如可把命令式改为描述式的,也能把描述式改为命令式的

您改一个试试?css要体现一部分命令的效果需要伪类,不过哪怕这样,也不可能实现js能实现的所有功能。IE6除外。LESS != CSS!他的看起来的特性特性是在编译期实现的,本质还是描述式的,没有动态的效果。

这句话我也觉的有争议,但是大致上,如果是图灵完备的语言,都是可以互换的。我们把命令式的看成how,描述式的看成what,那么how的确可以是what的答案。

你在混淆题目的意思,题目没有说任何一个how都可以变成what或者已经有成型的what了。

----

####
如果把语言看成命令式的语言(比如js)以及描述式的语言(比如css)。那么这两种类型在使用方式上可以互换
命令式的语言 => Js
描述式的语言 => css
使用方式 互换 => use css as Js
说完了。
####


大多数编程语言的核心功能都差不多,基本由循环、条件判断、数据类型等组成,只是语法与库的不同。因此学习多种编程语言对提高个人能力没有太大帮助,开发者应该把时间花在学习数据结构、算法、以及解决具体问题等方向上

程序=算法+数据结构

少年你真的觉的上面这条公式是对的么?是完备的么?我只能呵呵了。。。。

btw,算法和数据结构最后也会投影到编程语言上。好吧长期国内的教育就是不重视「编程语言」这门学问,楼主显然在故意戳害你们弱小的心,但是很遗憾楼主在这件事情是的确是对的。另外,数据解构和算法在不同的编程语言里面,用于工程上也有很大的差别。

----

####
如果你做的比较多,你就会严重的同意上面这句话是对的。
其他的东西都是几分钟可以解决的事情,但是算法和数据结构可能是几年、几十年甚至都不可能解决的问题。
算法和数据结构最后也会投影到编程语言上 => 哪个人这么告诉你的……算了不多说。
不重视算法和数据结构是中国的开发者超级严重的一个问题……没办法,大学教出来的很多就这尿性。
####


“专用语言”与“通用语言”相比使用范围较窄,因为它们无法实现“通用语言”的强大功能

请用CSS访问Cookie,并把它发到xss平台上。
JavaScripts是脚本语言,具体请看:http://en.wikipedia.org/wiki/ECMAScript#Implementations

你连专用语言和通用语言都没搞明白吧。另外,又跟脚本语言什么事情。

另外你的逻辑也错了啊。你实际上是说「存在一个专用语言,无法实现通用语言的功能。」这跟「专用语言无法实现通用语言的功能」是两回事啊。这里的谓词,根据语义,只能取全部啊……也即是「全部的专用语言都无法实现通用语言的功能」。

其实还是编程语言的图灵完备性啊。其实题目想表达的是「专用语言也可以是图灵完备的。」估计您一直没意识到吧?

####
F 专用语言通常更擅长解决一些特定领域的问题,但它们也能摇身一变成为通用语言,看看JavaScript和Node.js
他自己说的哦。
PS:……所谓领域专用语言(Domain Specific Language/DSL),其基本思想是“求专不求全”……
通用语言可以作为专用语言来使用,但他本质上还是通用语言,而专用语言在设计时就不是为了实现通用的目的的。
「专用语言也可以是图灵完备的。」
如果他完备了,那为什么它还是专用语言呢?仅因为是他只被在该场合使用吗?多想想?
####

----

相比Python这种通用语言Shell是一门语法比较复杂的语言,以至于有些人希望能够不用Shell实现的就不用Shell,而用其它语言代替Shell来编写脚本

Shell语法还复杂,看到Python不是要哭了?

shell的确复杂,你去看看bash的ref你不哭?我现在都不会写shell。你知道shell可以写子程序,而且传参有多蛋疼么?shell长大以后,维护的确十分困难,「用其它语言代替Shell来编写脚本」的确是可行的作法啊。

----

####
不蛋疼,shell比python好调多了,但是这个看个人吧,出成题目实在不合适,我只是吐槽下。
不过至少Shell写成什么混蛋样子还能看得懂,python可以写到没学过这个语言的人看都看不懂。
####


Shell是一门跨平台的语言,使用Shell编写的脚本不用修改,便能很好的在各种Linux发行版上运行

http://en.wikipedia.org/wiki/Bash_(Unix_shell)
首先shell的主语指带不明,甚至Windows的控制台你都可以叫他Shell。其次,类UNIX系统所共同支持的shell语法。最后,绝大多数linux系统都会带上bash,就算你硬要说没有,也至少会带一个兼容http://en.wikipedia.org/wiki/Bourne_shell 语法的shell。
请不要把用户自行安装的其他shell考虑在内。

看不到你回答的逻辑啊。最后一句「请不要把用户自行安装的其他shell考虑在内。」跟上下文完全没有联系的感觉 = =

原命题的错误,应该是「使用Shell编写的脚本不用修改,便能很好的在各种Linux发行版上运行」,真正写过跨发行版的shell程序看到这句话估计就哭了。如果一开始没有考虑跨发行版,在复杂的环境中,基本不可能很好地在各种发行版上运行。原因不在于shell,而在于linux破碎的发行版带来的破碎的环境不一致。所以才有了各种猜测系统环境的工具……

####
使用Shell编写的脚本不用修改,便能很好的在各种Linux发行版上运行

我的意思是在语法上的。各个Linux平台有自己的差异,但是这与shell无关。
####

----

使用设计模式,有时可让程序代码变得更清晰易懂,也更容易和其它懂模式的人沟通。但模式也可能会增加程序的复杂度

更多情况下,设计模式会让代码变得更加冗长复杂,增加他人阅读的难度,沟通请使用文字。同样的目的,你是愿意面对1000行的代码还是400行的。阅读代码的成本,比重新完成的成本高10倍以上,看方法名知内容的阅读不算。

你的设计模式是老师教的吧?漂亮的设计模式根本不会让代码冗长,增加阅读难度,增加沟通成本。(如果不是漂亮的设计模式,就相当于你在用工具做一件错误的事情,这时候请不要埋怨工具)。不要拿你在课堂上学到的那种设计模式过来说啊 = = 有多少老师懂设计模式的,乱用而已。

####
不妨来个栗子?这个主观上的原因是我比较排斥设计模式。客观上是能用的好设计模式的实践实在是少的可怜。当然确实也有不错的就是了……不过看多了垃圾代码这东西真心会吐。
能不能,当然可能,不过实在没什么意义。
还有我是自学的。
增加阅读难度,我的意思是,不管什么代码,反正一眼一行,我是受不了带一大堆修饰的……我宁可复制到编辑器里面手动去掉……
####

----


协议往往比实现此协议的程序活的更久,因此我们不但应该学会使用程序,也应该学习程序所使用的协议

私有协议死得比程序还快,比如,QQ2000使用的登录协议。

人家说的是往往 = = 根据我的经验,「协议往往比实现此协议的程序活的更久」是说得过去的。当然可能你见过很多垃圾协议,觉的垃圾协议比正确的协议还多,那只能说这道题出得不好了。你的例子在逻辑上不能作为反例驳倒原命题,比较有说服力的例子,应该是统计数据来说明是不是「往往」。

其实原命题的意思是「因此我们不但应该学会使用程序,也应该学习程序所使用的协议」。估计出题人是载了很多教科书的坑,想用这道题来表达他「程序使用的协议是很有学习价值的材料(然而这却常常被忽视了)」。

####
作者没有举出任何可以证明他的观点的证据。
但是,除了成为标准的协议,绝大多数的私有协议在程序死后还能存活?这个没什么可质疑的吧。
####

----

版本管理工具在合并两个分支的代码时,此两个分支可能分别来至不同的程序项目

干出这种事情的拖出去揍。

你逻辑又出错了。「可能」不是「应该」,讲可能是讲「可行性」,而不是「正确性」。

不同的程序项目完全是可能的。虽然有点牵强,不过你可以考虑一个项目在github上被多次fork,最后他们实际上是「不同的程序项目」(repo),但是的确可能合并,而且也是git的feature之一)

####
这个我只是纯粹吐槽他举的栗子,干这种事不是没事闲着么= =、
####

----

测试驱动方法可以提高开发程序的效率,特别是在不增加新功能重构现有程序代码时

带来更多的限制,减慢开发速度。

倾向于认为出题者这句话是不严密的,是错误的。原因还是在表达,应该加上「往往」,「一般」,不然就只能当「测试驱动方法一定可以提高开发程序的效率」。出现这种错误,是因为英文到中午的翻译会丢掉一些东西。

TDD can help more dev effect. // 没有「一定」的意思
测试驱动方法可以提高开发程序的效率. // 有「一定」

不过一般人都觉得「可以」就是「可以」,「测试驱动方法可以」==》的确有时候可以。

然后无论如何,你的反驳都是错的。「带来更多的限制,减慢开发速度。」更多是在错误的使用的情况下。好吧我从来不用TDD,因为我总觉得我还不需要 = = 但这不是TDD的问题。

然后出题人后面半句是非常正确的。在不增加新功能重构现有程序代码时,TDD非常幸福。

####
后半句是正确的同意。
但是要证反这个命题太同意了,我们来举个极端的栗子,比如A+B。要推翻一个命题只需要找到一个特例使他不成立就行了。
“测试驱动方法可以提高 **(中)大型** 开发程序的效率,特别是在不增加新功能重构现有程序代码时”
我同意。
####

----

管道为两个程序之间建立起了互相通信的方式,程序在运行过程中可以通过管道互相传输数据

不能吗?LZ多想想

原题明显表述,是shell里面的pipe,你丢掉了上下文。以下的你对管道的观念都不是shell里面的pipe,而是*inux提供的程序间通讯的方法,是用API来做的,是论非所论。

shell的pipe是单向的,「相互」是错误的。

####
同意。没看到“|”抱歉。
####

----

管道可以让程序与程序之间分工更为明确,从而减少了整个程序代码的复杂度

带来额外的协议维护费用。

错误在于你论非所论。这里的协议就是「标准输入和标准输出」,任何unix风格的程序,都是直接操作标准输入,标准输出,使得程序之间分工更为明确,从而减少了整个程序代码的复杂度。没有带来额外的协议维护费用。

此外,恰恰是这种方法,使得unix下的程序不需要这么多「协议」,因为每个程序都直接处理标准输入输出里面的字符串流。

####
你得定义流之间要怎么传递数据吧!!
本来我只要考虑dlopen之后,从某个函数把参数丢过去。
用管道,无非就是把这个过程放到了流里面。
相反,dlopen的话函数定位系统还能代劳,用流的话这还得你自己处理。
####

----

管道可让一个程序在未来发挥出程序作者自身没有预料到的作用

http://zh.wikipedia.org/wiki/%E7%A1%AE%E5%AE%9A%E6%9C%89%E9%99%90%E7%8A%B6%E6%80%81%E8%87%AA%E5%8A%A8%E6%9C%BA

你坏掉了,没见过「管道可让一个程序在未来发挥出程序作者自身没有预料到的作用」的例子吧?好吧你没见过,但是神奇地搭配管道真的是可以很神奇的,多多积累吧 = =

这里跟DFA没什么关系。。。一个程序可以近似DFA,而shell是一个胶水,把这些DFA拼装起来,有什么问题?

####
拼凑起来之后,每个程序所发挥的还是每个程序所做的事情。多想想?
####

----

使用管道可以避免两个程序之间必须互相了解对方的实现细节才能彼此合作

协议还不是细节?我用json,你用urlencode,我们来交流一下吧。

理由见上。我都不想说你的逻辑 = = 人家说可以,你举个不可以的例子,来说明可以是错的?

####
理由同上上,比如我要请求你一个方法OpenFile,我得知道你怎么处理我输入的流吧,比如,你要接受一个
Funcall <- header[\n]
Name:[ ]<- 一个空格,必需的 Funcname[\n]
Argc:[ ]<- 一个空格,必需的 Number(<100)[\n]
Args:[\n]
base64(arg1)
base64(arg2)
base64(arg3)
还有我得知道你返回的是什么吧。
如果我只丢过去:
FCall OpenFile("xxx.md")
你也能处理?就算这个你也考虑到了,你也处理了.
^_OF("xxx.md")
我这样传递你还受得了?
不了解怎么通讯?
就像如果上面这段内容我写成:
qdw2r3r2^qw34rf4f34g.fgf34rrr3r3,**OpenFile^^&&,r3232fe43f4.
……
你知道我在说什么?这是我花了5分钟想出来的一个语言规则。
如果你说题目说的细节不是这个,那我要质疑,难道不用管道就不能避免了吗?用管道避免有什么特殊性?难道我用libopenssl我真的把libopenssl的代码都读了一遍,才开始编译它?
####

----

当一个网站的数据量越来越大时,为了存储更多的数据,必须使用支持可存储量更大的数据库,或者使用空间更大的磁盘

……到更多的服务器上就不要增加硬盘啦!!!LZ真是太TM机智了!!!!太神了!!!!!快去拿图灵奖,还和我等傻逼瞎哔哔个毛啊!!!!!!!还有物理学的诺奖也可以拿了吧!!!!信息熵都被你吃到黑洞里去了吧!!!!!!
这个答案真的是找喷

lz没说不用增加硬盘吧?

####
说了。LZ认为这是错的。
####

----

数据结构也可视为算法的一部分,优秀的数据就够能够引出优秀的算法。因此有时可以把编程的重心从算法的角度移步到关注数据结构,从而降低整个算法的复杂度

程序=算法+数据结构
顺便说一句,SplayTree是数据结构,Splay是算法

。。。啊。。。

**只会做点点算法,没有做过实际的项目,是远远不够的**

####
做过,不好意思。
对算法的理解只限于教科书,真的很可怕。

另外,我们很多时候会说,我用线段树优化Dp之类的,你以为这里的线段树只是数据结构?你每次不需要Query?你只考虑了线段树的区间性质,不需要处理线段树的查询?只是因为这些算法基本是和数据结构配套而生的,但,你和你弟弟是双胞胎,你能说你弟弟就是你吗?
####
----


在开发程序初期,若能为未来程序中可能会遇到的性能问题设计好算法代码,便能优化程序的性能。因此在项目初期应该多提前考虑算法优化问题

……在您眼里只要能跑出结果,跑1W年也无所谓是吧,反正跑着跑着CPU性能就上升了,然后时间就会越缩越短,不用考虑优化是吧,您在微软工作是吧?还是在开发Android?不考虑优化算法效率,其它的优化都是搞笑。CPU累个半死帮你争取回来的常数,都被您败光了。
PS:还是说古剑2是您开发的,我要求退货!!!

过早的优化是万恶之源。人家没说性能不重要,是在讨论关注性能的时机。软件不是写个几百行几十行的东西交给评测机AC了就是好项目了……性能越来越不是项目最重要的东西了。学会权衡啊少年。

####
还是那句话,连性能都不考虑就开始写代码,写出来的都是垃圾,都要推倒,最后剩下的只有框架。
“性能不是最重要的东西”,
这种思想特别可怕,以次充好啦,打一炮就走了,能用就行管他什么垃圾,把这些看成正统的人,呵呵。
权衡?权衡什么?能问一句吗?

能AC的代码才是好代码,你可以把这里的AC理解成单元测试。
同样AC的代码,效率越高越好。
效率同样的代码,越短越好。
长短相同的代码,再和我说可读性。

没错CPU会越跑越快,GPU会越来越强大,这不是不重视算法的理由。就算CPU快到,你的代码
0.0000000000001s
我的代码
0.0000000000000000000000001s
跑10000000000000遍,高下立判。
为什么会要这样呢……多想想?N^3可以过就不去做N^2logN的事我不是没做过,也不是没吃过亏哦。
####
……长的我都只能用记事本写了……
yangff
2013-09-26 18:05:04 +08:00
@sdjl 你要上下文?你回到原来的帖子不就有了。是你让我节选出句子的,我当然默认你能够知道上下文的额……
“或者,你可以举证证明我表达了这样的观点”
难道我要把全文复制过来?那我还举啥栗子……
yangff
2013-09-26 18:13:45 +08:00
@dblue 很多时候很难说牺牲一部分效率换来Coding上,或者Test、协作上的优势是否必要……

另外有必要解释一下。

我举的栗子多是比较极端的,也不具有什么建设性。这很正常,如果你要说权衡,什么都可以权衡,我们总可以在问题的答案找到一个平衡点,那就没有什么正确或者错误的答案的,每个人都有自己的习惯和观点。另一方面这套题目大多是这样偏主观的,我只是在举出一些极端的栗子来证明他的命题是错误的。这个大家都知道选择题的话我只要给出一个特殊值能证明他不成立就行了吧。破坏确实比建设要容意啊……笑) 恩,大概是这个意思吧。
Divil
2013-09-26 18:14:13 +08:00
其实该说的楼上大家都说了
楼主那个问答既没有娱乐性,又没有专业性
答案都太过业余了
dblue
2013-09-26 18:40:31 +08:00
@yangff = = 啊,我搞不掂你了,好自爲之。。。

1. 不同語言表達力真的不同,甚至差別很大,足以對開發效率產生極大的影響。
2. coding不等於打字。對語言的熟練無法完全克服語言本身。
3. 程序=算法+数据结构。這句話在我編碼生涯的前五年我都是信奉的,在我認識了面向對象以後我懷疑了。現在,我認爲這句話有正確的地方,也有錯誤的地方。
4. 算法和数据结构可能是几年、几十年甚至都不可能解决的问题。
5. 中國大學對算法和數據結構還說不上不重視,就沒有什麼東西說的上重視的了 = = 很多老師一輩子就是用C在寫算法和數據結構……(重視不等於教的夠更不等於教的好)
6. 算法和数据结构最后也会投影到编程语言上。
7. 专用语言也可以是图灵完备的。
8. 「不过至少Shell写成什么混蛋样子还能看得懂」……笑而不語。
9. 很多人都在錯誤地使用設計模式然後設計模式是壞東西 ===》設計模式是可怕的,但是工具無善惡,善惡在於人。
10. 管道可让一个程序在未来发挥出程序作者自身没有预料到的作用。
11. 过早的优化是万恶之源。性能越来越不是项目最重要的东西了。

以上都是我仔細斟酌過而且認同的觀點,(而且大多數都不是我原創的觀點),雖然只說觀點不說理由(吐槽一下樓上)的作法基本是腦殘,但是我知道我是無法說服你的了 = = 啊,還說下去就變成語文和邏輯的討論了。。。

以上。
momo5269
2013-09-26 18:45:21 +08:00
我什么都不是29分 人家程序员也有31的 有那么一两个答案我都觉得d疼 觉得业余
你觉得呢 (✿◕ ‿◕ฺ)ノ))。₀: *゜
momo5269
2013-09-26 18:52:13 +08:00
我觉得修饰的词语用的真有点多了
你觉得有些人主观判断你 先看看你的1L和题怎样主观了别人在说吧 - -


这事楼上说的很清楚了 你的描述和题目实际差距太大,续楼又『不经意』嘲讽了
jybox
2013-09-26 19:01:58 +08:00
感觉楼主这题目的形式和选题不错,但是确实很多题目的答案存在争议。
我不是很理解为什么这个帖子所有人都是在喷楼主。
sdjl
2013-09-26 19:02:01 +08:00
@ywencn 对十道全错的朋友表示sorry。。。 不会当做单选了吧


@Divil 是啊,我自己都承认这一点

@dblue 非常谢谢!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/83724

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX