假如DNA是一種編程語言,那麼誰能保證人類對DNA的修改沒有bug?
可不可以把DNA作為一種編程語言,如果可以的話,人類對DNA的修改雖然目前沒有問題,但是可以保證沒有bug么?就比如一個剛剛會編程的小白去修改谷歌的alpha—go,可能會導致整個項目崩潰~還有就是未來,人類能否通過這種「語言」來自己設計生物~當一回「上帝」~
你覺得上帝寫代碼不出錯么?你猜各種遺傳病和癌症是怎麼來的?上帝寫代碼一般是滾鍵盤,滾出各種版本,這些版本絕大部分編譯通不過(被免疫系統幹掉),編譯通過的裡面絕大部分通不過Alpha測試(不能進入遺傳),然後Beta測試再刷掉一部分(導致遺傳病死亡),感謝 @馬若寒 補完:最後應用了以後在市場上又淘汰一批(自然選擇)。僅剩的那些才是你現在看到的東西。
怎麼說呢。
人們誇一個程序員NB,通常不會有人誇他寫代碼從來不出Bug,而是誇他具有優秀的DeBug的能力:精確地定位bug,詳盡地分析bug,高效地修改bug。
畢竟如@吃完就餓所說,有史以來最屌的程序員:耶和華先生。他編了半天也是bug頻出,99%的都給自己整down機了。
當然其實我個人看法是,耶和華先生並不是在寫程序,而是拿臉在鍵盤上滾了一圈然後驚訝的發現其中幾個字元段居然能運行出個玩意。
It"s not a bug, it"s a feature.
之前寫了點東西,只寫了一部分,名字就叫《上帝的編程語言》。
上帝是個程序員
上帝寫代碼只用了字元串
char chr1=「TAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCCTAACCCTAACCCTAACCCTAACCCTAACCT..............................";http://www.ncbi.nlm.nih.gov/nuccore/568815364而生物學家用了好幾個世紀在理解這段代碼的真實含義,有點類似反彙編的過程。偶爾發現上帝的代碼的一個功能,比如端粒的TACCC的功能,就可以發一篇nature science 什麼的。但是上帝寫的代碼太亂了,生物學家到現在也沒徹底搞懂。所以當別人說你寫的代碼太爛的時候,一定是你水平不夠,不信你看上帝寫的代碼那麼爛,這些人還研究的這麼開心。
chr1變數的前邊的重複序列TAACCC就是端粒,端粒會在細胞分裂過程中越來越短,分裂幾十次後,細胞就會凋亡。
這段代碼:
chr1 = chr[6*random():];這裡有沒有bug呢,有呢,上帝喜歡隨機,這是上帝最大的bug。
上帝最開始不是用AGTC這四個字元寫代碼的,而是用氨基酸,氨基酸有點像上帝的顯示器,當然了這只是上帝輸出設備中最小的元素,整個宇宙都是上帝的輸出系統。
上帝每天用氨基酸在屏幕上打像素點,打的太累,覺得重複工作太多,還不好保存結果,就想著減輕自己的工作,於是用AGTC去操縱蛋白質,這樣能避免重複勞作。於是他開始寫代碼了。
DNA 就是上帝的硬碟,可以持久化保存上帝的代碼和數據,RNA就是上帝的內存不穩定,但是可以直接硬碟數據保持聯繫,然後指導氨基酸在顯示器上畫東西。這個過程被生物學家叫做central dogma 中心法則,在計算機領域叫馮諾依曼體系。
上帝最開始寫程序也是從簡單到複雜的,不是一下子就寫出windows linux 這麼複雜的系統的,他最開始寫的程序就是dos 這級別的。
比如病毒和細菌什麼的。
當然一旦寫完代碼,bug一定很多,畢竟上帝寫完代碼都是不維護的,任其自生自滅的,而且還實現了遺傳學演算法,讓這些代碼自己進化。
最經典的bug就是噬菌體可以跑到細菌裡邊,搞死細菌。
未完待續。全知全能的上帝可以保證,但是上帝自己的作品也很一般啊,上帝創造了這麼多物種,99%都滅絕了,可見這個造物主能力也挺一般的,在這方面還是人比較靠譜一些。
你肯定沒想過誘變育種和雜交這種純靠臉滾鍵盤的。系色望了!對顧頭不顧腚的地球人系色望了!!!
人體內每天都會生產出幾個癌細胞,然後被自己的免疫系統殺掉
遺傳演算法,不用自己寫,運行起來就行了
就像vhdl不是「編程」語言,一樣,dna描述語言,或者我猜可以把這個叫做ddl,也不是「編程」語言,而是「描述」語言——雖然演算法和布爾代數都是圖靈完備的,但是你不能用描述演算法和自動機的方法去描述線路計算模型/布爾函數。
同樣的,雖然可能演算法和dna等價,但是這並不意味著你能直接用一段代碼去描述dna。
如果有ddl的話,它更可能是類似於各種markup language的語法,比如xml,html,json,yaml,markdown,或者latex的語法…………或者類似verilog的語法…………表示我並不是為了黑verilog看了@楊毛毛的回答後頗有腦洞
可能上帝先生只是在不停地用肢體滾動鍵盤然後編譯運行。而人類也只是無數次隨機排列中的一個幸運的、bug較少的、可運行的程序。
如果當時上帝先生中途撓了個癢,現在可能就是猩猩們在香蕉房裡刷《猩乎》了?有嚴重bug人類早就GG了
即使有遺傳病,這一支的人類也會迅速絕後,算是debug了吧
癌症是人類祖先還是細胞生物的時候一種延續機制,額,貌似那時候動植物可能還是一家並且早期人類,事實上直到100年前人類的壽命都普遍偏低,癌症等各種疾病少有大規模出現的情況,難以debug,沒辦法至於以後只能靠醫學來剔除問題了吧不修改DNA照樣出bug,不然那些遺傳病都哪來的。
免疫系統。
1.如果只修改幾個細胞,改動大的話不論也沒有bug,幾個吞噬細胞馬上爬過去,
「舉起手來!你被捕了!」(話說細胞有手么)然後你的bug細胞就被消滅了。
當然也有可能Delta分裂時間=1,結果就是你造出了癌細胞。2.如果修改了全局,DNA里也有AutoDebug(什麼鬼)功能,有錯誤可以直!接!修!改!源!代!碼!秒殺各種try-catch!
當然要是你作死,就不是throwable的事情了。小則遺傳病,大則直接完蛋。具體可參考轉基因。
以後?
然而首先我想到的是以後「計算機」計算速度和存儲密度將大大提升開下腦洞,以後的新聞廣告可能是這樣的:「多國聯合攻關,JVM人植入成功」「專家解讀:中國人OS能否戰勝AndroidHuman」
「金士頓DDR12人腦神條即將發售,256GB市場再掀風浪」「DNA編碼技術在植物上首次應用,生物學家即將消失?」「人有多大膽,地有多大產」手機碼字真心累。遺傳演算法,是一種模擬自然界生物進化中自然選擇機制的一種演算法。雖然不是編程語言,但是樓主想說的那個東西。有關這一演算法的資料非常多,可以自行百度。簡單的來說就是採用組合、交叉、變異等運算元反覆迭代選擇出一個最優解。特點是不易陷入局部最有解,而找到全局最優解。
如果你看不懂上面的一堆廢話,你只需要知道,這個演算法的效率個機制和臉滾鍵盤,其實差不多╮(‵▽′)╭
當然,還是要快那麼一點。
哦,忘了說debug機制,bug多的簡直顯而易見,我猜可能是通過變異的概率小,種群數量大,顯隱性機制,大量無作用片段等方式。這個估計得懂生物的來解釋了。
簡而言之就是,隨緣debug。bug太大,人就直接死掉。bug不大不小則沒有競爭優勢,最終還是因為競爭不過沒有後代而逐漸滅絕。小的bug會隨著不停的繁殖後代而稀釋掉。
不是人編輯的(天然的,自然進化,突變來的)也是一堆bug。只要bug沒多到讓你無法繁殖就可以保留下來
我們現在不是自己一點一點寫代碼,而是拷貝別人的函數
想辦法把自身root了 然後su過去 就能對DNA編程..
有足夠的鹼基對來debug 就不會出bug出bug的都死了,這就是自然之美
DNA如果不出bug(變異),哪來這個多彩的世界。
推薦閱讀:
※CPU空操作的原理是什麼?
※如何評價 VBA 語言?
※怎麼評價 Idris 語言?
※為什麼 Belleve的答案總是那麼高大上,想理解他的問題答案,需要哪些領域知識和前置知識?