【題目致敬JavaScript(一種編程語(yǔ)言)經(jīng)典:《JavaScript: The Good Parts》(《JavaScript語(yǔ)言精粹》)】
無(wú)疑跌帐,《瘋狂動(dòng)物城》是一部偉大的作品。
你可以用任何喜歡的贊美之辭來(lái)描述它绊率,諸如制作精良谨敛、劇情完整、寓意深刻滤否、想象豐富等等脸狸,然而贊美往往千篇一律,簡(jiǎn)單而無(wú)趣藐俺。本文嘗試從其表達(dá)的內(nèi)涵出發(fā)炊甲,以不一樣的視角來(lái)分析這部電影。題目中的 "The Bad Parts" 不一定指電影的瑕疵欲芹,更多是指其內(nèi)涵體現(xiàn)出的現(xiàn)實(shí)的暗黑面卿啡。
作為迪士尼出品的一部動(dòng)畫片,其實(shí)電影并沒(méi)有太多太搞笑的部分菱父,尤其是無(wú)厘頭式的搞笑更是沒(méi)有颈娜。而在幽默層面上對(duì)影片貢獻(xiàn)最大的片段,無(wú)疑是封面圖片上“找樹(shù)懶查車輛記錄”這個(gè)橋段浙宜。利用樹(shù)懶行動(dòng)超級(jí)遲緩的特點(diǎn)官辽,影片在此制造了可以讓觀眾爆笑的笑點(diǎn)。把這個(gè)橋段放回電影整體梆奈,我們可以看出電影基本上就是用動(dòng)物世界里巨大的反差來(lái)抓眼球和制造笑料的野崇。大小之間的反差,快慢之間的反差亩钟,總之因?yàn)閯?dòng)物們千奇百怪卻又同住一城乓梨,所以影片利用這個(gè)方面來(lái)制造笑料,這樣確實(shí)可以產(chǎn)生事半功倍的效果清酥,邏輯上也很自然扶镀。
不過(guò),正是因?yàn)檫@一點(diǎn)焰轻,戲里戲外臭觉,一個(gè)更暗黑的現(xiàn)實(shí)卻浮現(xiàn)了出來(lái)。
電影主旨的基本落腳點(diǎn)在偏見(jiàn)與歧視上,但電影本身卻采用了大量迎合觀眾“刻板印象”的表現(xiàn)方式蝠筑,來(lái)制造“反差萌”和“幽默點(diǎn)”狞膘。兔子就應(yīng)該生一窩、樹(shù)懶就一定慢到不行(即便真的是為了諷刺辦事人員效率低下)什乙、所有猛獸的配音都是雄性等等挽封。當(dāng)然,這不應(yīng)該算作是電影內(nèi)核的一個(gè)矛盾臣镣,作為兼具藝術(shù)性和商業(yè)性的電影來(lái)說(shuō)辅愿,迎合觀眾的口味與想象(或者說(shuō)“刻板印象”)是其想要達(dá)到的目標(biāo)之一,而反差和夸張忆某,能更好地增強(qiáng)其表現(xiàn)力点待。
這不禁讓我想起了這么一回事兒。學(xué)習(xí)過(guò) Python(一種編程語(yǔ)言)的大多知道弃舒,使用 "import this" 命令會(huì)輸出一首小詩(shī)癞埠,名字叫《The Zen Of Python》(見(jiàn)附一),可譯為“ Python 之道”或者“ Python 禪道”都可聋呢,其主要表達(dá)的就是 Python 崇尚的一些類似軟件工程價(jià)值觀層面的東西燕差,譬如代碼要簡(jiǎn)潔易讀等等,然而如果你去看 this 模塊的源代碼坝冕,卻可以發(fā)現(xiàn)這個(gè)模塊的源代碼(見(jiàn)附二)幾乎違背了所有它所崇尚的東西。這段源碼故意用凱撒加密的方式(每個(gè)字符的值往后移13位)來(lái)打印《The Zen Of Python》瓦呼,至少就已經(jīng)違反了“Simple is better than complex. ”這條“禪道”喂窟。當(dāng)然,這應(yīng)該只是 this.py 的作者作為程序員故意開(kāi)的一個(gè)玩笑央串。
回到主題磨澡,《瘋狂動(dòng)物城》用“貼標(biāo)簽”增強(qiáng)表現(xiàn)力來(lái)反對(duì)“貼標(biāo)簽”,其實(shí)正是說(shuō)明了质和,偏見(jiàn)就跟優(yōu)越感一樣稳摄,它無(wú)處不在。this.py 的作者半開(kāi)玩笑之中其實(shí)也帶著某種偏見(jiàn)饲宿∠贸辏《The Zen Of Python》著力強(qiáng)調(diào)編碼工作應(yīng)該變得簡(jiǎn)潔優(yōu)雅,這也正是 Python 的設(shè)計(jì)之道瘫想,然而作者依然用難以閱讀的方式書寫了這段源碼仗阅,這莫不是一種對(duì)編程“奇技淫巧”的偏見(jiàn)。偏見(jiàn)無(wú)處不在国夜,每個(gè)人都或多或少對(duì)某些事物帶著偏見(jiàn)减噪,這從一個(gè)側(cè)面佐證了大眾的愚昧。你,我筹裕,都是這愚昧大眾中的一員醋闭。
偏見(jiàn)就跟優(yōu)越感一樣,它無(wú)處不在朝卒,但當(dāng)它表現(xiàn)出不好的一面時(shí)证逻,往往比優(yōu)越感更傷人。當(dāng)然扎运,個(gè)人的偏見(jiàn)并不可怕瑟曲,它甚至在某個(gè)正面就轉(zhuǎn)化成了“經(jīng)驗(yàn)”,隨著年齡增長(zhǎng)“偏見(jiàn)”可能還越來(lái)越深豪治,幫你在這紛繁冗雜的世界里快速篩選出自己想要的東西洞拨。然而群體性的偏見(jiàn)卻不容小視,種族歧視和性別歧視便是當(dāng)今世界最現(xiàn)實(shí)的表現(xiàn)负拟。
最后烦衣,花費(fèi)睡覺(jué)時(shí)間在這里開(kāi)腦洞亂扯,我只是簡(jiǎn)單地希望像對(duì)待優(yōu)越感一樣掩浙,更多人能夠正視內(nèi)心的偏見(jiàn)花吟,唯有更好的認(rèn)識(shí)才能更好的控制。
晚安厨姚,愿每個(gè)人都能在這殘忍又愚昧的世界里找到屬于自己的“溫柔以待”衅澈。
附一:
The Zen of Python, by Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one -- and preferably only one -- obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than right now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
附二:
Python Lib庫(kù),this.py源碼:
s = """Gur Mra bs Clguba, ol Gvz Crgref
Ornhgvshy vf orggre guna htyl.
Rkcyvpvg vf orggre guna vzcyvpvg.
Fvzcyr vf orggre guna pbzcyrk.
Pbzcyrk vf orggre guna pbzcyvpngrq.
Syng vf orggre guna arfgrq.
Fcnefr vf orggre guna qrafr.
Ernqnovyvgl pbhagf.
Fcrpvny pnfrf nera'g fcrpvny rabhtu gb oernx gur ehyrf.
Nygubhtu cenpgvpnyvgl orngf chevgl.
Reebef fubhyq arire cnff fvyragyl.
Hayrff rkcyvpvgyl fvyraprq.
Va gur snpr bs nzovthvgl, ershfr gur grzcgngvba gb thrff.
Gurer fubhyq or bar-- naq cersrenoyl bayl bar --boivbhf jnl gb qb vg.
Nygubhtu gung jnl znl abg or boivbhf ng svefg hayrff lbh'er Qhgpu.
Abj vf orggre guna arire.
Nygubhtu arire vf bsgra orggre guna evtug abj.
Vs gur vzcyrzragngvba vf uneq gb rkcynva, vg'f n onq vqrn.
Vs gur vzcyrzragngvba vf rnfl gb rkcynva, vg znl or n tbbq vqrn.
Anzrfcnprf ner bar ubaxvat terng vqrn -- yrg'f qb zber bs gubfr!"""
d = {}
for c in (65, 97):
for i in range(26):
d[chr(i+c)] = chr((i+13) % 26 + c)
print("".join([d.get(c, c) for c in s]))