轉(zhuǎn)載-如何掌握所有的程序語(yǔ)言

原文出處:http://www.yinwang.org/blog-cn/2017/07/06/master-pl

如何掌握所有的程序語(yǔ)言


對(duì)的轧抗,我這里要講的不是如何掌握一種程序語(yǔ)言,而是所有的……

很多編程初學(xué)者至今還在給我寫(xiě)信請(qǐng)教瞬测,問(wèn)我該學(xué)習(xí)什么程序語(yǔ)言横媚,怎么學(xué)習(xí)。由于我知道如何掌握“所有”的程序語(yǔ)言月趟,總是感覺(jué)這種該學(xué)“一種”什么語(yǔ)言的問(wèn)題比較低級(jí)灯蝴,所以一直沒(méi)來(lái)得及回復(fù)他們 :P 可是逐漸的,我發(fā)現(xiàn)原來(lái)不只是小白們有這個(gè)問(wèn)題狮斗,就連美國(guó)大公司的很多資深工程師,其實(shí)也沒(méi)搞明白弧蝇。

今天我有動(dòng)力了碳褒,想來(lái)統(tǒng)一回答一下這個(gè)擱置已久的“初級(jí)問(wèn)題”。類(lèi)似的話(huà)題貌似曾經(jīng)寫(xiě)過(guò)看疗,然而現(xiàn)在我想把它重新寫(xiě)一遍沙峻。因?yàn)樵诟芏嗳私涣髦螅覍?duì)自己頭腦中的(未轉(zhuǎn)化為語(yǔ)言的)想法两芳,有了更精準(zhǔn)的表達(dá)摔寨。

如果你存在以下的種種困惑,那么這篇文章也許會(huì)對(duì)你有所幫助:

  1. 你是編程初學(xué)者怖辆,不知道該選擇什么程序語(yǔ)言來(lái)入門(mén)是复。
  2. 你是資深的程序員或者團(tuán)隊(duì)領(lǐng)導(dǎo),對(duì)新出現(xiàn)的種種語(yǔ)言感到困惑竖螃,不知道該“投資”哪種語(yǔ)言。
  3. 你的團(tuán)隊(duì)為使用哪種程序語(yǔ)言爭(zhēng)論不休,發(fā)生各種宗教斗爭(zhēng)茁肠。
  4. 你追逐潮流采用了某種時(shí)髦的語(yǔ)言画髓,結(jié)果兩個(gè)月之后發(fā)現(xiàn)深陷泥潭,痛苦不堪……

雖然我已經(jīng)不再過(guò)問(wèn)這些世事,然而無(wú)可置疑的現(xiàn)實(shí)是画拾,程序語(yǔ)言仍然是很重要的話(huà)題啥繁,這個(gè)情況短時(shí)間內(nèi)不會(huì)改變。程序員的崗位往往會(huì)要求熟悉某些語(yǔ)言青抛,甚至某些奇葩的公司要求你“深入理解 OOP 或者 FP 設(shè)計(jì)模式”旗闽。對(duì)于在職的程序員,程序語(yǔ)言至今仍然是可以爭(zhēng)得面紅耳赤的宗教話(huà)題脂凶。它的宗教性之強(qiáng)宪睹,以至于我在批評(píng)和調(diào)侃某些語(yǔ)言(比如 Go 語(yǔ)言)的時(shí)候,有些人會(huì)本能地以為我是另外一種語(yǔ)言(比如 Java)的粉絲蚕钦。

顯然我不可能是任何一種語(yǔ)言的粉絲亭病,我甚至不是 Yin 語(yǔ)言的粉絲 ;) 對(duì)于任何從沒(méi)見(jiàn)過(guò)的語(yǔ)言,我都是直接拿起來(lái)就用嘶居,而不需要經(jīng)過(guò)學(xué)習(xí)的過(guò)程罪帖。看了這篇文章邮屁,也許你會(huì)明白我為什么可以達(dá)到這個(gè)效果整袁。理解了這里面的東西,每個(gè)程序員都應(yīng)該可以做到這一點(diǎn)佑吝。嗯坐昙,但愿吧。

重視語(yǔ)言特性芋忿,而不是語(yǔ)言


很多人在乎自己或者別人是否“會(huì)”某種語(yǔ)言炸客,對(duì)“發(fā)明”了某種語(yǔ)言的人倍加崇拜,為各種語(yǔ)言的孰優(yōu)孰劣爭(zhēng)得面紅耳赤戈钢。這些問(wèn)題對(duì)于我來(lái)說(shuō)都是不存在的痹仙。雖然我寫(xiě)文章批評(píng)過(guò)不少語(yǔ)言的缺陷,在實(shí)際工作中我卻很少跟人爭(zhēng)論這些殉了。如果有其它人在我身邊爭(zhēng)論开仰,我甚至?xí)魃隙鷻C(jī),都懶得聽(tīng)他們說(shuō)什么 ;) 為什么呢薪铜?我發(fā)現(xiàn)歸根結(jié)底的原因众弓,是因?yàn)槲抑匾暤氖恰罢Z(yǔ)言特性”,而不是整個(gè)的“語(yǔ)言”隔箍。我能用任何語(yǔ)言寫(xiě)出不錯(cuò)的代碼田轧,就算再糟糕的語(yǔ)言也差不了多少。

任何一種“語(yǔ)言”鞍恢,都是各種“語(yǔ)言特性”的組合傻粘。打個(gè)比方吧每窖,一個(gè)程序語(yǔ)言就像一臺(tái)電腦。它的牌子可能叫“聯(lián)想”弦悉,或者“IBM”窒典,或者“Dell”,或者“蘋(píng)果”稽莉。那么瀑志,你可以說(shuō)蘋(píng)果一定比 IBM 好嗎?你不能污秆。你得看看它里面裝的是什么型號(hào)的處理器劈猪,有多少個(gè)核,主頻多少良拼,有多少 L1 cache战得,L2 cache……,有多少內(nèi)存和硬盤(pán)庸推,顯示器分辨率有多大常侦,顯卡是什么 GPU,網(wǎng)卡速度贬媒,等等各種“配置”聋亡。有時(shí)候你還得看各個(gè)組件之間的兼容性。

這些配置對(duì)應(yīng)到程序語(yǔ)言里面际乘,就是所謂“語(yǔ)言特性”坡倔。舉一些語(yǔ)言特性的例子:

  • 變量定義
  • 算術(shù)運(yùn)算
  • for 循環(huán)語(yǔ)句,while 循環(huán)語(yǔ)句
  • 函數(shù)定義脖含,函數(shù)調(diào)用
  • 遞歸
  • 靜態(tài)類(lèi)型系統(tǒng)
  • 類(lèi)型推導(dǎo)
  • lambda 函數(shù)
  • 面向?qū)ο?/li>
  • 垃圾回收
  • 指針?biāo)阈g(shù)
  • goto 語(yǔ)句

這些語(yǔ)言特性罪塔,就像你在選擇一臺(tái)電腦的時(shí)候,看它里面是什么配置器赞。選電腦的時(shí)候垢袱,沒(méi)有人會(huì)說(shuō) Dell 一定是最好的墓拜,他們只會(huì)說(shuō)這個(gè)型號(hào)里面裝的是 Intel 的 i7 處理器港柜,這個(gè)比 i5 的好,DDR3 的內(nèi)存 比 DDR2 的快這么多咳榜,SSD 比磁盤(pán)快很多夏醉,ATI 的顯卡是垃圾…… 如此等等。

程序語(yǔ)言也是一樣的道理涌韩。對(duì)于初學(xué)者來(lái)說(shuō)畔柔,其實(shí)沒(méi)必要糾結(jié)到底要先學(xué)哪一種語(yǔ)言,再學(xué)哪一種臣樱。曾經(jīng)有人給我發(fā)信問(wèn)這種問(wèn)題靶擦,糾結(jié)了好幾個(gè)星期腮考,結(jié)果一個(gè)語(yǔ)言都還沒(méi)開(kāi)始學(xué)。有這糾結(jié)的時(shí)間玄捕,其實(shí)都可以把他糾結(jié)過(guò)的語(yǔ)言全部掌握了踩蔚。

初學(xué)者往往不理解,每一種語(yǔ)言里面必然有一套“通用”的特性枚粘。比如變量馅闽,函數(shù),整數(shù)和浮點(diǎn)數(shù)運(yùn)算馍迄,等等福也。這些是每個(gè)通用程序語(yǔ)言里面都必須有的,一個(gè)都不能少攀圈。你只要通過(guò)“某種語(yǔ)言”學(xué)會(huì)了這些特性暴凑,掌握這些特性的根本概念,就能隨時(shí)把這些知識(shí)應(yīng)用到任何其它語(yǔ)言量承。你為此投入的時(shí)間基本不會(huì)浪費(fèi)搬设。所以初學(xué)者糾結(jié)要“先學(xué)哪種語(yǔ)言”,這種時(shí)間花的很不值得撕捍,還不如隨便挑一個(gè)語(yǔ)言拿穴,跳進(jìn)去。

如果你不能用一種語(yǔ)言里面的基本特性寫(xiě)出好的代碼忧风,那你換成另外一種語(yǔ)言也無(wú)濟(jì)于事默色。你會(huì)寫(xiě)出一樣差的代碼。我經(jīng)呈ㄍ龋看到有些人 Java 代碼寫(xiě)得相當(dāng)亂腿宰,相當(dāng)糟糕,卻罵 Java 不好缘厢,雄心勃勃要換用 Go 語(yǔ)言吃度。這些人沒(méi)有明白,是否能寫(xiě)出好的代碼在于人贴硫,而不在于語(yǔ)言椿每。如果你的心中沒(méi)有清晰簡(jiǎn)單的思維模型,你用任何語(yǔ)言表述出來(lái)都是一堆亂麻英遭。如果你 Java 代碼寫(xiě)得很糟糕间护,那么你寫(xiě) Go 語(yǔ)言代碼也會(huì)一樣糟糕,甚至更差挖诸。

很多初學(xué)者不了解汁尺,一個(gè)高明的程序員如果開(kāi)始用一種新的程序語(yǔ)言,他往往不是去看這個(gè)語(yǔ)言的大部頭手冊(cè)或者書(shū)籍多律,而是先有一個(gè)需要解決的問(wèn)題痴突。手頭有了問(wèn)題搂蜓,他可以用兩分鐘瀏覽一下這語(yǔ)言的手冊(cè),看看這語(yǔ)言大概長(zhǎng)什么樣辽装。然后洛勉,他直接拿起一段例子代碼來(lái)開(kāi)始修改搗鼓,想法把這代碼改成自己正想解決的問(wèn)題如迟。在這個(gè)簡(jiǎn)短的過(guò)程中收毫,他很快的掌握了這個(gè)語(yǔ)言,并用它表達(dá)出心里的想法殷勘。

在這個(gè)過(guò)程中此再,隨著需求的出現(xiàn),他可能會(huì)問(wèn)這樣的問(wèn)題:

  • 這個(gè)語(yǔ)言的“變量定義”是什么語(yǔ)法玲销,需要“聲明類(lèi)型”嗎输拇,還是可以用“類(lèi)型推導(dǎo)”?
  • 它的“類(lèi)型”是什么語(yǔ)法贤斜?是否支持“泛型”策吠?泛型的 “variance” 如何表達(dá)?
  • 這個(gè)語(yǔ)言的“函數(shù)”是什么語(yǔ)法瘩绒,“函數(shù)調(diào)用”是什么語(yǔ)法猴抹,可否使用“缺省參數(shù)”?
  • ……

這些實(shí)際問(wèn)題都是隨著寫(xiě)實(shí)際的代碼锁荔,解決手頭的問(wèn)題蟀给,自然而然帶出來(lái)的,而不是一開(kāi)頭就抱著語(yǔ)言手冊(cè)看得仔仔細(xì)細(xì)阳堕。因?yàn)檎莆樟苏Z(yǔ)言特性的人都知道跋理,自己需要的特性,在任何語(yǔ)言里面一定有對(duì)應(yīng)的表達(dá)方式恬总。如果沒(méi)有直接的方式表達(dá)前普,那么一定有某種“繞過(guò)方式”。如果有直接的表達(dá)方式壹堰,那么它只是語(yǔ)法稍微有所不同而已拭卿。所以,他是帶著問(wèn)題找特性缀旁,就像查字典一樣记劈,而不是被淹沒(méi)于大部頭的手冊(cè)里面勺鸦,昏昏欲睡一個(gè)月才開(kāi)始寫(xiě)代碼并巍。

掌握了通用的語(yǔ)言特性,剩下的就只剩某些語(yǔ)言“特有”的特性了换途。研究語(yǔ)言的人都知道懊渡,要設(shè)計(jì)出新的刽射,好的,無(wú)害的特性剃执,是非常困難的誓禁。所以一般說(shuō)來(lái),一種好的語(yǔ)言肾档,它所特有的新特性摹恰,終究不會(huì)超過(guò)一兩種。如果有個(gè)語(yǔ)言號(hào)稱(chēng)自己有超過(guò) 5 種新特性怒见,那你就得小心了俗慈,因?yàn)樗鼈儙?lái)的和可能不是優(yōu)勢(shì),而是災(zāi)難遣耍!

同樣的道理闺阱,最好的語(yǔ)言研究者,往往不是某種語(yǔ)言的設(shè)計(jì)者舵变,而是某種關(guān)鍵語(yǔ)言特性的設(shè)計(jì)者(或者支持者)酣溃。舉個(gè)例子,著名的計(jì)算機(jī)科學(xué)家 Dijkstra 就是“遞歸”的強(qiáng)烈支持者〖拖叮現(xiàn)在的語(yǔ)言里面都有遞歸赊豌,然而你可能不知道,早期的程序語(yǔ)言是不支持遞歸的绵咱。直到 Dijkstra 強(qiáng)烈要求 Algol 60 委員會(huì)加入對(duì)遞歸的支持亿絮,這個(gè)局面才改變了。Tony Hoare 也是語(yǔ)言特性設(shè)計(jì)者麸拄。他設(shè)計(jì)了幾個(gè)重要的語(yǔ)言特性派昧,卻沒(méi)有設(shè)計(jì)過(guò)任何語(yǔ)言。另外大家不要忘了拢切,有個(gè)語(yǔ)言專(zhuān)家叫王垠蒂萎,他是早期 union type 的支持者和實(shí)現(xiàn)者,也是 checked exception 特性的支持者淮椰,他在自己的博文里指出了 checked exception 和 union type 之間的關(guān)系 :P

很多人盲目的崇拜語(yǔ)言設(shè)計(jì)者五慈,只要聽(tīng)到有人設(shè)計(jì)(或者美其民曰“發(fā)明”)了一個(gè)語(yǔ)言,就熱血沸騰主穗,佩服的五體投地泻拦。他們卻沒(méi)有理解,其實(shí)所有的程序語(yǔ)言忽媒,不過(guò)是像 Dell争拐,聯(lián)想一樣的“組裝機(jī)”。語(yǔ)言特性的設(shè)計(jì)者晦雨,才是像 Intel架曹,AMD隘冲,ARM,Qualcomm 那樣核心技術(shù)的創(chuàng)造者绑雄。

合理的入門(mén)語(yǔ)言


所以初學(xué)者要想事半功倍展辞,就應(yīng)該從一種“合理”的,沒(méi)有明顯嚴(yán)重問(wèn)題的語(yǔ)言出發(fā)万牺,掌握最關(guān)鍵的語(yǔ)言特性罗珍,然后由此把這些概念應(yīng)用到其它語(yǔ)言。哪些是合理的入門(mén)語(yǔ)言呢脚粟?我個(gè)人覺(jué)得這些語(yǔ)言都可以用來(lái)入門(mén):

  • Scheme
  • C
  • Java
  • Python
  • JavaScript

那么相比之下靡砌,我不推薦用哪些語(yǔ)言入門(mén)呢?

  • Shell
  • PowerShell
  • AWK
  • Perl
  • PHP
  • Basic
  • Go

總的說(shuō)來(lái)珊楼,你不應(yīng)該使用所謂“腳本語(yǔ)言”作為入門(mén)語(yǔ)言通殃,特別是那些源于早期 Unix 系統(tǒng)的腳本語(yǔ)言工具。PowerShell 雖然比 Unix 的 Shell 有所進(jìn)步厕宗,然而它仍然沒(méi)有擺脫腳本語(yǔ)言的根本問(wèn)題——他們的設(shè)計(jì)者不知道他們自己在干什么 :P

采用腳本語(yǔ)言學(xué)編程画舌,一個(gè)很?chē)?yán)重的問(wèn)題就是使得學(xué)習(xí)者抓不住關(guān)鍵。腳本語(yǔ)言往往把一些系統(tǒng)工具性質(zhì)的東西(比如正則表達(dá)式已慢,Web 概念)加入到語(yǔ)法里面曲聂,導(dǎo)致初學(xué)者為它們浪費(fèi)太多時(shí)間,卻沒(méi)有理解編程最關(guān)鍵的概念:變量佑惠,函數(shù)朋腋,遞歸,類(lèi)型……

不推薦 Go 語(yǔ)言的原因類(lèi)似膜楷,雖然 Go 語(yǔ)言不算腳本語(yǔ)言旭咽,然而他的設(shè)計(jì)者顯然不明白自己在干什么。所以使用 Go 語(yǔ)言來(lái)學(xué)編程赌厅,你不能專(zhuān)注于最關(guān)鍵穷绵,最好的語(yǔ)言特性。

掌握關(guān)鍵語(yǔ)言特性特愿,忽略次要特性


為了達(dá)到我之前提到的融會(huì)貫通仲墨,一通百通的效果,初學(xué)者應(yīng)該專(zhuān)注于語(yǔ)言里面最關(guān)鍵的特性揍障,而不是被次要的特性分心目养。

舉個(gè)夸張點(diǎn)的例子。我發(fā)現(xiàn)很多編程培訓(xùn)班和野雞大學(xué)的編程入門(mén)課毒嫡,往往一來(lái)就教學(xué)生如何使用 printf 打印“Hello World癌蚁!”,進(jìn)而要他們記憶 printf 的各種“格式字符”的意義,要他們實(shí)現(xiàn)各種復(fù)雜格式的打印輸出匈勋,甚至要求打印到文本文件里,然后再讀出來(lái)……

可是殊不知膳叨,這種輸出輸入操作其實(shí)根本不算是語(yǔ)言的一部分洽洁,而且對(duì)于掌握編程的核心概念來(lái)說(shuō),都是次要的菲嘴。有些人的 Java 課程進(jìn)行了好幾個(gè)星期饿自,居然還在布置各種 printf 的作業(yè)。學(xué)生寫(xiě)出幾百行的 printf龄坪,卻不理解變量和函數(shù)是什么昭雌,甚至連算術(shù)語(yǔ)句和循環(huán)語(yǔ)句都不知道怎么用!這就是為什么很多初學(xué)者感覺(jué)編程很難健田,我連 %d烛卧,%f,%.2f 的含義都記不住妓局,還怎么學(xué)編程总放!

然而這些野雞大學(xué)的“教授”頭銜是如此的洗腦,以至于被他們教過(guò)的學(xué)生(比如我女朋友)到我這里請(qǐng)教好爬,居然罵我凈教一些沒(méi)用的東西局雄,學(xué)了連 printf 的作業(yè)都沒(méi)法完成 :P 你別跟我講 for 循環(huán),函數(shù)什么的了…… 可不可以等幾個(gè)月存炮,等我背熟了 printf 的用法再學(xué)那些熬娲睢?

所以你就發(fā)現(xiàn)一旦被差勁的老師教過(guò)穆桂,這個(gè)程序員基本就毀了宫盔。就算遇到好的老師,他們也很難糾正過(guò)來(lái)享完。

當(dāng)然這是一個(gè)夸張的例子飘言,因?yàn)?printf 根本不算是語(yǔ)言特性,但這個(gè)例子從同樣的角度說(shuō)明了次要膚淺的語(yǔ)言特性帶來(lái)的問(wèn)題驼侠。

這里舉一些次要語(yǔ)言特性的例子:

  • C 語(yǔ)言的語(yǔ)句塊姿鸿,如果里面只有一條語(yǔ)句,可以不打花括號(hào)倒源。
  • Go 語(yǔ)言的函數(shù)參數(shù)類(lèi)型如果一樣可以合并在一起寫(xiě)苛预,比如 func foo(s string, x, y, z int, c bool) { ... }
  • Perl 把正則表達(dá)式作為語(yǔ)言的一種特殊語(yǔ)法
  • JavaScript 語(yǔ)句可以在某些時(shí)候省略句尾的分號(hào)
  • Haskell 和 ML 等語(yǔ)言的 currying

自己動(dòng)手實(shí)現(xiàn)語(yǔ)言特性


在基本學(xué)會(huì)了各種語(yǔ)言特性,能用它們來(lái)寫(xiě)代碼之后笋熬,下一步的進(jìn)階就是去實(shí)現(xiàn)它們热某。只有實(shí)現(xiàn)了各種語(yǔ)言特性,你才能完全地?fù)碛兴鼈儯蔀樗鼈兊闹魅宋舨觥7駝t你就只是它們的使用者筹吐,你會(huì)被語(yǔ)言的設(shè)計(jì)者牽著鼻子走。

有個(gè)大師說(shuō)得好秘遏,完全理解一種語(yǔ)言最好的方法就是自己動(dòng)手實(shí)現(xiàn)它丘薛,也就是自己寫(xiě)一個(gè)解釋器來(lái)實(shí)現(xiàn)它的語(yǔ)義。但我覺(jué)得這句話(huà)應(yīng)該稍微修改一下:完全理解一種“語(yǔ)言特性”最好的方法就是自己親自實(shí)現(xiàn)它邦危。

注意我在這里把“語(yǔ)言”改為了“語(yǔ)言特性”洋侨。你并不需要實(shí)現(xiàn)整個(gè)語(yǔ)言來(lái)達(dá)到這個(gè)目的,因?yàn)槲覀冏罱K使用的是語(yǔ)言特性倦蚪。只要你自己實(shí)現(xiàn)了一種語(yǔ)言特性希坚,你就能理解這個(gè)特性在任何語(yǔ)言里的實(shí)現(xiàn)方式和用法。

舉個(gè)例子陵且,學(xué)習(xí) SICP 的時(shí)候裁僧,大家都會(huì)親自用 Scheme 實(shí)現(xiàn)一個(gè)面向?qū)ο笙到y(tǒng)。用 Scheme 實(shí)現(xiàn)的面向?qū)ο笙到y(tǒng)慕购,跟 Java锅知,C++,Python 之類(lèi)的語(yǔ)言語(yǔ)法相去甚遠(yuǎn)脓钾,然而它卻能幫助你理解任何這些 OOP 語(yǔ)言里面的“面向?qū)ο蟆边@一概念售睹,它甚至能幫助你理解各種面向?qū)ο髮?shí)現(xiàn)的差異。

這種效果是你直接學(xué)習(xí) OOP 語(yǔ)言得不到的可训,因?yàn)樵趯W(xué)習(xí) Java昌妹,C++,Python 之類(lèi)語(yǔ)言的時(shí)候握截,你只是一個(gè)用戶(hù)飞崖,而用 Scheme 自己動(dòng)手實(shí)現(xiàn)了 OO 系統(tǒng)之后,你成為了一個(gè)創(chuàng)造者谨胞。

類(lèi)似的特性還包括類(lèi)型推導(dǎo)固歪,類(lèi)型檢查,惰性求值胯努,如此等等牢裳。我實(shí)現(xiàn)過(guò)幾乎所有的語(yǔ)言特性,所以任何語(yǔ)言在我的面前叶沛,都是可以被任意拆卸組裝的玩具蒲讯,而不再是凌駕于我之上的神圣。

總結(jié)


寫(xiě)了這么多灰署,重要的話(huà)重復(fù)三遍:語(yǔ)言特性判帮,語(yǔ)言特性局嘁,語(yǔ)言特性,語(yǔ)言特性晦墙!不管是初學(xué)者還是資深程序員悦昵,應(yīng)該專(zhuān)注于語(yǔ)言特性,而不是糾結(jié)于整個(gè)的“語(yǔ)言品牌”晌畅。只有這樣才能達(dá)到融會(huì)貫通但指,拿起任何語(yǔ)言幾乎立即就會(huì)用,并且寫(xiě)出高質(zhì)量的代碼踩麦。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末枚赡,一起剝皮案震驚了整個(gè)濱河市氓癌,隨后出現(xiàn)的幾起案子谓谦,更是在濱河造成了極大的恐慌,老刑警劉巖贪婉,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件反粥,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡疲迂,警方通過(guò)查閱死者的電腦和手機(jī)才顿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)尤蒿,“玉大人郑气,你說(shuō)我怎么就攤上這事⊙兀” “怎么了尾组?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)示弓。 經(jīng)常有香客問(wèn)我讳侨,道長(zhǎng),這世上最難降的妖魔是什么奏属? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任跨跨,我火速辦了婚禮,結(jié)果婚禮上囱皿,老公的妹妹穿的比我還像新娘勇婴。我一直安慰自己,他們只是感情好嘱腥,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布咆耿。 她就那樣靜靜地躺著,像睡著了一般爹橱。 火紅的嫁衣襯著肌膚如雪萨螺。 梳的紋絲不亂的頭發(fā)上窄做,一...
    開(kāi)封第一講書(shū)人閱讀 52,262評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音慰技,去河邊找鬼椭盏。 笑死,一個(gè)胖子當(dāng)著我的面吹牛吻商,可吹牛的內(nèi)容都是我干的掏颊。 我是一名探鬼主播,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼艾帐,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼乌叶!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起柒爸,我...
    開(kāi)封第一講書(shū)人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤准浴,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后捎稚,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體乐横,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年今野,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了葡公。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡条霜,死狀恐怖催什,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情宰睡,我是刑警寧澤蒲凶,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站夹厌,受9級(jí)特大地震影響豹爹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜矛纹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一臂聋、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧或南,春花似錦孩等、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至蹬癌,卻和暖如春权她,著一層夾襖步出監(jiān)牢的瞬間虹茶,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工隅要, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蝴罪,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓步清,卻偏偏與公主長(zhǎng)得像要门,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子廓啊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

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

  • 王垠:如何掌握所有的程序語(yǔ)言 CSDN2小時(shí)前或許王垠是后者欢搜,但不妨礙看到有才華人的一些思考。本文是他博客剛更新的...
    不二王1006閱讀 563評(píng)論 0 50
  • 對(duì)的谴轮,我這里要講的不是如何掌握一種程序語(yǔ)言炒瘟,而是所有的…… 很多編程初學(xué)者至今還在給我寫(xiě)信請(qǐng)教,問(wèn)我該學(xué)習(xí)什么程序...
    八戒程序猿閱讀 295評(píng)論 0 3
  • 對(duì)的书聚,我這里要講的不是如何掌握一種程序語(yǔ)言唧领,而是所有的…… 很多編程初學(xué)者至今還在給我寫(xiě)信請(qǐng)教藻雌,問(wèn)我該學(xué)習(xí)什么程序...
    肆虐的悲傷閱讀 462評(píng)論 0 1
  • 王垠對(duì)的胯杭,我這里要講的不是如何掌握一種程序語(yǔ)言驯杜,而是所有的…… 很多編程初學(xué)者至今還在給我寫(xiě)信請(qǐng)教,問(wèn)我該學(xué)習(xí)什么...
    lsh的學(xué)習(xí)筆記閱讀 498評(píng)論 0 3
  • 文/蘭舟醬 在暑假進(jìn)行的皖南地區(qū)野外實(shí)習(xí)中做个,我了解到該地區(qū)昆蟲(chóng)種類(lèi)非常豐富鸽心,其中包括許多體型較大的可食用昆蟲(chóng)(如直...
    蘭舟醬閱讀 2,254評(píng)論 6 4