《程序員的吶喊》讀書筆記(下)

接著《程序員的吶喊》讀書筆記(上)收毫,繼續(xù)分享下篇攻走,這次干貨比較多哦,有靜動態(tài)類型的優(yōu)缺點此再、強(qiáng)弱類型系統(tǒng)的對抗昔搂、設(shè)計模式、程序員的數(shù)學(xué)输拇、編譯器的重要性以及保守派自由派的較量摘符,一時消化不了的建議保存以便read it later。


靜態(tài)類型和動態(tài)類型的優(yōu)缺點

  1. 靜態(tài)類型的優(yōu)點
    下面列出了靜態(tài)類型的主要優(yōu)點:
    (1)靜態(tài)類型可以在程序運行之前策吠,依賴其與生俱來的限制來及早發(fā)現(xiàn)一些類型錯誤逛裤。(或是在插入/更新記錄,解析XML文檔等情況下進(jìn)行檢測猴抹。)
    (2)靜態(tài)類型有更多機(jī)會(或者說更容易)優(yōu)化性能带族。例如只要數(shù)據(jù)模型完整豐富,那么實現(xiàn)智能化的數(shù)據(jù)庫索引就會更容易一些蟀给。編譯器在擁有更精確的變量和表達(dá)式類型信息的情況下可以做出更優(yōu)的決策蝙砌。
    (3)在C++和Java這樣擁有復(fù)雜類型系統(tǒng)的語言里,你可以直接通過查看代碼來確定變量跋理、表達(dá)式择克、操作符和函數(shù)的靜態(tài)類型。
    這種優(yōu)勢或許在ML和Haskell這樣的類型推導(dǎo)語言里并不明顯前普,他們顯然認(rèn)為到哪里都要帶著類型標(biāo)簽是缺點肚邢。不過你還是可以在有助閱讀理解的情況下標(biāo)明類型一而這些在絕大多數(shù)動態(tài)語言里是根本做不到的。
    (4)靜態(tài)類型標(biāo)注可以簡化特定類型的代碼自動化處理拭卿。比如說自動化文檔生成骡湖、語法高亮和對齊、依賴分析记劈、風(fēng)格檢查等各種“讓代碼去解讀代碼”的工作勺鸦。換句話說,靜態(tài)類型標(biāo)簽讓那些類似編譯器的工具更容易施展拳腳:詞法工具會有更多明確的語法元素目木,語義分析時也比較少要用猜的换途。
    (5)只要看到API或是數(shù)據(jù)庫結(jié)構(gòu)(而不用去看代碼實現(xiàn)或數(shù)據(jù)庫表)就能大致把握到它的結(jié)構(gòu)和用法。
    還有其他要補(bǔ)充的嗎刽射?

  2. 靜態(tài)類型的缺點如下:
    (1)它們?nèi)藶榈叵拗屏四愕谋磉_(dá)能力军拟。
    比如,Java的類型系統(tǒng)里沒有操作符重載誓禁、多重繼承懈息、mix-in、引用參數(shù)摹恰、函數(shù)也不是一等公民辫继。原本利用這些技術(shù)可以做出很自然的設(shè)計怒见,現(xiàn)在卻不得不去遷就java的類型系統(tǒng)。無論是Ada還是C++姑宽,或是OCaml等任何一種靜態(tài)類型系統(tǒng)都有這樣的問題遣耍。差不多半數(shù)的設(shè)計模式(不光是Gof的那些)都是扭曲原本自然直觀的設(shè)計,好將它們?nèi)M(jìn)某種靜態(tài)類型系統(tǒng):這根本就是方枘圓鑿嘛炮车。
    (2)它們會拖慢開發(fā)進(jìn)度舵变。
    事先要創(chuàng)建很多靜態(tài)模型(自頂向下的設(shè)計),然后還要依據(jù)需求變化不斷修改瘦穆。這些類型標(biāo)注還會讓源代碼規(guī)模膨脹導(dǎo)致代碼難以理解纪隙,維護(hù)成本上升。(這個問題只在Java里比較嚴(yán)重扛或,因為它不支持給類型取別名绵咱。)還有就是我上面已經(jīng)提到過的,你得花更多的時間來調(diào)整設(shè)計告喊,以適應(yīng)靜態(tài)類型系統(tǒng)麸拄。
    (3)學(xué)習(xí)曲線比較陡。
    動態(tài)類型語言比較好學(xué)黔姜。靜態(tài)類型系統(tǒng)則相對挑剔,你必須花很多時間去學(xué)它們建模的方式秆吵,外加靜態(tài)類型的語法規(guī)則淮椰。另外,靜態(tài)類型錯誤(也可以叫編譯器錯誤)對于初學(xué)者來說很難懂纳寂,因為那時程序根本還沒跑起來呢主穗。你連用printf來調(diào)試的機(jī)會都沒有,只能撞大運似的調(diào)整代碼毙芜,祈求能讓編譯器滿意忽媒。因此學(xué)習(xí)C++比C和Smalltalk難,OCaml比Lisp難腋粥,Nice語言比Java難晦雨。而Perl所具備的一系列靜態(tài)復(fù)雜性—各種詭異的規(guī)則,怎么用隘冲,什么時候用等—讓它的難度比Ruby和Python都要高闹瞧。我從來沒見過有哪門靜態(tài)類型語是很好學(xué)的。
    (4)它們會帶來虛幻的安全感展辞。
    靜態(tài)類型系統(tǒng)確實能減少運行時的錯誤奥邮,提升數(shù)據(jù)的完整性,所以很容易誤導(dǎo)人們覺得只要能通過編譯讓程序跑起來,那它基本上就沒什么bug了洽腺。人們在用強(qiáng)靜態(tài)類型系統(tǒng)的語言寫程序時似乎很少依賴單元測試脚粟,當(dāng)然這也可能只是我的想像罷了。
    (5)它們會導(dǎo)致文檔質(zhì)量下滑蘸朋。
    很多人覺得自動生成的javadoc就足夠了珊楼,哪怕不注釋代碼也沒關(guān)系, Sourceforge 上充斥著這樣的項目度液,甚至連Sun JDK也常常有這個問題。(比如画舌,Sun很多時候都沒有給static final常量添加javadoc注釋堕担。)
    (6)很難用它們寫出兼具高度動態(tài)和反射特點的系統(tǒng)。
    絕大多數(shù)靜態(tài)類型語言(大概)都出于追求性能的目的曲聂,在運行時丟棄了幾乎所有編譯器生成的元數(shù)據(jù)霹购。可是這樣一來這些系統(tǒng)通常也就很難在運行時作出修改(甚至連內(nèi)省都做不到)比如朋腋,若要想給模塊加一個新函數(shù)齐疙,或是在類里加個方法,除了重新編譯旭咽,關(guān)閉程序然后重啟之外別無他法贞奋。受此影響的不單是開發(fā)流程整個設(shè)計理念也難逃波及。你可能需要搭建個復(fù)雜的架構(gòu)來支持動態(tài)功能而這些東西會無可避免地和你的業(yè)務(wù)代碼混在一起穷绵。

  3. 動態(tài)類型的優(yōu)缺點:
    只要把上面的列表對調(diào)一下轿塔,你基本上就可以列出動態(tài)類型語言的優(yōu)缺點了。動態(tài)語言的表達(dá)能力更強(qiáng)仲墨,設(shè)計靈活度也更大勾缭;易學(xué)易用,開發(fā)速度快目养;通常運行時的靈活性也更高俩由。相對地,動態(tài)語言無法及時給出類型錯誤(至少編譯器做不到)癌蚁,性能調(diào)優(yōu)的難度也比較高幻梯,很難做自動化靜態(tài)分析,另外匈勋,變量和表達(dá)式的類型在代碼里很不直觀礼旅,沒辦法一眼看出來。
    靜態(tài)語言最終會向用戶屈服開始添加一些動態(tài)特性洽洁,而動態(tài)語言常常也會嘗試引入一下可選的靜態(tài)類型系統(tǒng)(或是靜態(tài)分析工具)痘系,此外它們還會設(shè)法改善性能增加錯誤檢測,以便及早發(fā)現(xiàn)問題饿自。很遺憾汰翠,除非一開始設(shè)計語言的時候就考慮到可選的靜態(tài)類型龄坪,否則強(qiáng)扭的瓜怎么也不會甜的。

強(qiáng)類型與弱類型系統(tǒng)的較量

  1. 下面我會以稍微有點戲謔的方式解釋這兩種理念(指的是強(qiáng)類型和弱類型)的工作流程复唤,盡可能將它們本質(zhì)區(qū)別展現(xiàn)出來健田。
    強(qiáng)類型陣營基本是這樣工作的:首先是按照當(dāng)前的需求進(jìn)行設(shè)計;制定出文檔哪怕只是初稿也沒關(guān)系佛纫;然后定義接口和數(shù)據(jù)模型妓局。假設(shè)系統(tǒng)要承受巨大流量,因此每個地方都要考慮性能呈宇。避免采用垃圾收集和正則表達(dá)式這類抽象好爬。(注意:即便是Java程序員,通常也會努力避免觸發(fā)垃圾收集甥啄,他們總是在開始寫程序之討論對象池的問題存炮。)
    他們只有在無計可施的情況下才會考慮動態(tài)類型。例如蜈漓,一支采用Corba的團(tuán)隊只有在極端情況下才會在每個接口調(diào)用上添加一個XML字符串參數(shù)穆桂,這樣他們就能繞開當(dāng)初選擇的死板的類型系統(tǒng)了。

第二個陣營基本是這樣工作的:先搭建原型融虽。只要你寫代碼的速度比寫同等詳細(xì)程度的文檔快享完,你就可以更早地從用戶那里獲得反饋。按照當(dāng)下的需求定義合理的接口和數(shù)據(jù)模型衣形,但是別在上面浪費太多時間驼侠。一切以能跑起來為準(zhǔn),怎么方便怎么來谆吴。假設(shè)自己肯定要面對大量的需求變化倒源,所以每個地方首先考慮的是盡快讓系統(tǒng)運行起來。能用抽象的地方就盡量用(比如如每次都去收集數(shù)據(jù)而先不考慮緩沖句狼,能用正則的地方就先不用字符串比較)就算明明知是牛刀也沒關(guān)系笋熬,因為你換回的是更大的靈活性。代碼量比較少腻菇,通常bug的數(shù)量也會更少胳螟。
他們只有在被逼無奈的情況下才會進(jìn)行性能調(diào)優(yōu)以及禁止修改接口和數(shù)據(jù)定義。例如筹吐,一支Perl團(tuán)隊可能會將一些關(guān)鍵的核心模塊用C重寫糖耸,然后創(chuàng)建XS綁定。時間—長丘薛,這些抽象就漸漸變成了既定標(biāo)準(zhǔn)嘉竟,它們被包裹在數(shù)據(jù)定義和細(xì)致的OO接口里,再也無法修改。(就算是Perl程序員也常常會忍不住祭出銀彈舍扰,為常用的抽象編寫OO接口)
那你覺得最終采用這些策略的結(jié)果會怎么樣倦蚪?

設(shè)計模式

  1. 不過現(xiàn)在大家都清醒過來了,不是嗎边苹?設(shè)計模式不是特性陵且。工廠不是特性,委托个束、代理慕购、橋接也都不是。它們只是提供了漂亮的盒子茬底,以松散的方式來裝載特性脓钾。但是別忘了,盒子桩警、袋子和隔板自己也是要占用空間的。設(shè)計模式也不例外(至少在“四人幫”的書里所介紹的大多數(shù)模式都是這樣)昌妹。更悲劇的是“四人幫”模式里唯一能精簡代碼的解釋器(Interpreter)模式卻被那些恨不得把設(shè)計模式紋在身上的程序員忽略了捶枢。
    依賴注入是另一個新型的Java設(shè)計模式,Ruby飞崖、Python烂叔、Perl還有Javascript,程序員大概聽都沒聽過吧固歪。就算他們聽過蒜鸡,他們也能正確地得出他們根本不需要這種玩意兒的結(jié)論。依賴注入是一種驚人的描述式架構(gòu)牢裳,讓Java能在某些方面和更高級的語言一樣逢防,變得更動態(tài)一點。你猜得沒錯蒲讯,依賴注入會讓Java代碼變得更大忘朝。變大是Java中無法回避的東西。成長是生活的一部分判帮。Java就像是俄羅斯方塊局嘁,不過積木和積木之間的空隙都填不滿,結(jié)果只能越堆越高晦墙。

me:現(xiàn)在Java程序員相信都知道依賴注入了悦昵,因為它太重要了,用在各大框架里晌畅,比如spring但指,依賴注入使得能夠在文件里配置類及其各種關(guān)系,當(dāng)然使得Java更靈活更強(qiáng)大了。

程序員需要了解的是哪些數(shù)學(xué)分支枚赡?

  1. 實際生活中氓癌,計算機(jī)科學(xué)家常用的數(shù)學(xué)和上面那個列表幾乎沒有重疊。其一贫橙,小學(xué)和中學(xué)里教的絕大部分?jǐn)?shù)學(xué)都是連續(xù)的贪婉,也就是實數(shù)上的數(shù)學(xué)。而對計算機(jī)科學(xué)家來說卢肃,95%有趣的數(shù)學(xué)都是離散的疲迂,也就是整數(shù)上的數(shù)學(xué)。

me:程序員所要解決的數(shù)學(xué)問題一般都是離散數(shù)學(xué)莫湘,其中最有用的課程應(yīng)該就是組合數(shù)學(xué)和概率論統(tǒng)計尤蒿。

  1. 除了概率論和離散數(shù)學(xué),其他數(shù)學(xué)分支也是有助于程序員的幅垮⊙兀可惜除非你去輔修數(shù)學(xué),否則學(xué)校是不會教你的忙芒。它們包含了:
    (1) 統(tǒng)計示弓。我的離散數(shù)學(xué)書里講到了一點。但是統(tǒng)計是一門完整的學(xué)科呵萨,而且是非常重要的學(xué)科奏属,重要到根本不需要額外介紹。
    (2)代數(shù)和線性代數(shù)(比如矩陣)潮峦。線性代數(shù)應(yīng)該緊跟在代數(shù)后面教囱皿。它不是很難,而且在很多領(lǐng)域都非常非常有用忱嘹,比如機(jī)器學(xué)習(xí)嘱腥。
    (3)數(shù)理邏輯。
    (4)信息論和柯氏復(fù)雜度拘悦。信息論(粗略地講)主要是關(guān)于數(shù)據(jù)壓縮的爹橱,而柯氏復(fù)雜度(同樣粗略地講)則是關(guān)于算法的復(fù)雜度(比如最小空間是多少毙玻,需要多長時間鹊漠,程序或者數(shù)據(jù)結(jié)構(gòu)有多優(yōu)雅等)的。它們都是好玩腾誉,有趣椭盏,實用的學(xué)科组砚。
    當(dāng)然還有其他的分支,而且有些學(xué)科互有重疊掏颊。但重點在于:對你有用的數(shù)學(xué)和學(xué)校覺得有用的數(shù)學(xué)是非常不同的糟红。
  2. 微積分的本質(zhì)就是連續(xù)一變化的速度艾帐,曲線下的面積,固體的體積盆偿。很有用柒爸,記憶和很多煩瑣的步驟程序員通常不需要這些東西。知道大致概但是需要大量的概念和技巧就可以了事扭,細(xì)節(jié)方面等到需要的時候再查也來得及捎稚。

編譯器,你懂嗎求橄?

  1. 我在招人的時候有一個訣竅今野。就是在尋找優(yōu)秀的軟件工程師“通才”的時候,通常在簡歷上你可以看到到各種讓你覺得不行的關(guān)鍵字和詞罐农,但“編譯器”是我唯一感興趣的詞条霜。

me:作者強(qiáng)烈要求程序員學(xué)編譯器原理,你還記得嗎涵亏?

  1. 編譯器會接收一串符號流宰睡,根據(jù)預(yù)先定義好的規(guī)則,分析出這串符號的結(jié)構(gòu)气筋,然后把它轉(zhuǎn)換成另一串符號流夹厌。是不是很籠統(tǒng)?的確是裆悄。一幅圖片能不能被當(dāng)成是符號流?當(dāng)然可以臂聋。它可以是每一行像素所組成的流光稼。每個像素就是一個數(shù)字。每個數(shù)字就是一個符號孩等。編譯器當(dāng)然可以轉(zhuǎn)換圖片艾君。英語可以被當(dāng)做符號流叫嗎?當(dāng)然可以肄方。規(guī)則或許會很復(fù)雜冰垄,但是自然語言處理的確可以被看成是某種很炫的編譯。
  2. 編譯過程中第一個大階段就是解析权她,即把輸入的內(nèi)容變成一棵樹虹茶。中間要經(jīng)過預(yù)處理,詞法分析(也叫單詞化)然后是語法分析和中間代碼生成這幾個步驟隅要。詞法分析通常是由正則表達(dá)式來完成的蝴罪。語法分析則是根據(jù)語法完成。你可以采遞歸向下(最常見)或是解析器生成器(在小語言中比較常見)或是更炫的算來實現(xiàn)步清,只不過相應(yīng)的執(zhí)行速度也會慢一點要门。無論如何虏肾,最后的結(jié)果通常都是某解析樹。
    第二個大階段是類型檢查欢搜。這是一群狂熱的學(xué)術(shù)分子(包括他們的組織以及或者手下的研究生)他們自信可以寫出非常聰明的程序封豪,能分析出你的程序想干什么,并且在你出錯的時候幫你指出炒瘟。不過奇怪的是吹埠,他們并不覺得自己是在研究人工智能畢竟人工智能界已經(jīng)(明智地)放棄確定性的方法了。
    第三個陣營是代碼生成唧领,他們通常都被邊緣化了藻雌。只要你對遞歸有足夠的了解,知道自己的祖先不是亞當(dāng)和夏娃斩个,那么代碼生成還是挺直觀的胯杭。這里要講的其實是優(yōu)化就是那種生成足夠正確的代碼,讓絕大多數(shù)用戶都意識不到有問題的藝術(shù)受啥。等等不好意思做个,這是亞馬遜化。優(yōu)化是指根據(jù)你那些昂貴的菜鳥程序員寫出來的垃圾代碼生成“正確”代碼的藝術(shù)滚局。

保守派和自由派居暖,你屬于哪派?

  1. 軟件工程有自己的政治軸心藤肢,—端是保守派太闺,另—端是自由派。
    畢竟“保守的”這個形容詞基本上和謹(jǐn)慎嘁圈、厭惡風(fēng)險就是同義詞省骂。金融上的保守主義常常(也是顯而易見的)和年齡以及財富聯(lián)系在一起。公司會隨著時間逐漸變得保守起來最住,因為它們熬過過了各種法律訴訟钞澳、技術(shù)失敗、公共危機(jī)涨缚、金融風(fēng)暴等危機(jī)轧粟。連螞蟻和蚱蜢的寓言故事都告訴我們寒冬將至,要儲存食物脓魏。
    本質(zhì)上兰吟,保守主義就是風(fēng)險管理。
    同樣自由派的觀點常常和年輕茂翔、理想主義揽祥、天真無邪聯(lián)系在一起。在企業(yè)里檩电,創(chuàng)業(yè)公司往往是典型的自由派拄丰,一部分原因是他們本來就是為了(在一定程度上)改變世界而存在的(而自由主義原本就意味著變化)府树,另一部分則是他們必須全力以赴完成投資人設(shè)定的目標(biāo),所以放棄一點軟件安全也就變得合理(不得已)了料按。

me:保守派奄侠,盡量修復(fù)所有bug,回避錯誤载矿,學(xué)不會新語法垄潮,通過編譯器安全檢查,數(shù)據(jù)必須遵循事先定義好的格式闷盔,公共接口必須嚴(yán)格建模弯洗,生產(chǎn)系統(tǒng)里絕不允許存在危險過有風(fēng)險的后門,安全性有疑慮就不能上線逢勾,快比慢好牡整,注重性能。自由派則相反溺拱。

  1. 各大語言的分派:(作者自己使用語言的經(jīng)驗逃贝,僅供參考)
    難以言喻的自由:匯編語言
    極端自由:Perl、Ruby迫摔、PHP沐扳、腳本
    非常自由:Javascript、VB句占、Lua
    自由:Python沪摄、Common Lisp、Smalltalk/Sqeak
    溫和自由:C纱烘、Object-C杨拐、Schema
    溫和保守:C++、Java凹炸、C#、D昼弟、Go
    保守:Clojure啤它、Erlang、Pascal
    非常保守:Scala舱痘、Ada变骡、Ocaml、Eiffel
    極端保守:Haskell芭逝、SML

  2. (1)Facebook是極端自由的塌碌。他們主要用的是C++和PHP,他們的數(shù)據(jù)都放在memcached里:只有鍵值對旬盯,沒有數(shù)據(jù)庫結(jié)構(gòu)台妆。他們把數(shù)據(jù)導(dǎo)出來放到一個后臺Hⅳe數(shù)據(jù)倉庫里翎猛,然后用Hadoop來進(jìn)行離線數(shù)據(jù)分析。每兩個星期左右他們?nèi)匀粫e辦通宵黑客馬拉松接剩,反正他們的程序員大多都是單身男青年(至少我上次去參觀的時候還是如此)切厘,股票的估值也還很高(我上次查價格的時候好像已經(jīng)沒那么好了)。作為一家公司懊缺,F(xiàn)acebook是非常緊密的疫稿,具有很強(qiáng)的執(zhí)行力,十分注重程序員在網(wǎng)站上發(fā)布新功能的單兵能力鹃两,沒有什么官僚主義遗座。這對一家規(guī)模這么大、用戶那么多多的公司來講是難能可貴的俊扳。保守派毫無疑問會厭惡蔑視他們途蒋。但是Facebook證明了不管具有什么世界觀的程序員,只要聯(lián)合起來拣度,就能解決很多問題碎绎。
    (2)Amazon是自由的。
    (3)Google是保守的抗果。開始是有點自由的 筋帖,然后就變得越來越保守了。只有在剛剛開始的時候才是軟件自由的冤馏,那時候的搜索引擎是用Python寫的日麸。隨著公司不斷壯大,他們很快就轉(zhuǎn)向了軟件保守主義逮光,而這完全是由工程師自己主導(dǎo)的代箭。他們寫了很多宣言警告太多語言所帶來的危險,而僅有的幾門語言里涕刚,也里嗡综,也有嚴(yán)格的風(fēng)格指南,限制使用那些端保守杜漠,險”或者“難以閱讀”的語言特性极景。
    (4)微軟是難以言喻的保守。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末驾茴,一起剝皮案震驚了整個濱河市盼樟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌锈至,老刑警劉巖晨缴,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異峡捡,居然都是意外死亡击碗,警方通過查閱死者的電腦和手機(jī)筑悴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來延都,“玉大人雷猪,你說我怎么就攤上這事∥浚” “怎么了求摇?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長殊者。 經(jīng)常有香客問我与境,道長,這世上最難降的妖魔是什么猖吴? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任摔刁,我火速辦了婚禮,結(jié)果婚禮上海蔽,老公的妹妹穿的比我還像新娘共屈。我一直安慰自己,他們只是感情好党窜,可當(dāng)我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布拗引。 她就那樣靜靜地躺著,像睡著了一般幌衣。 火紅的嫁衣襯著肌膚如雪矾削。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天豁护,我揣著相機(jī)與錄音哼凯,去河邊找鬼。 笑死楚里,一個胖子當(dāng)著我的面吹牛断部,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播班缎,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼蝴光,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了吝梅?” 一聲冷哼從身側(cè)響起虱疏,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤惹骂,失蹤者是張志新(化名)和其女友劉穎苏携,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體对粪,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡右冻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年装蓬,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片纱扭。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡牍帚,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出乳蛾,到底是詐尸還是另有隱情暗赶,我是刑警寧澤,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布肃叶,位于F島的核電站蹂随,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏因惭。R本人自食惡果不足惜岳锁,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蹦魔。 院中可真熱鬧激率,春花似錦、人聲如沸勿决。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽剥险。三九已至聪蘸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間表制,已是汗流浹背健爬。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留么介,地道東北人娜遵。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像壤短,于是被迫代替她去往敵國和親设拟。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內(nèi)容