科學家研發出DNA計算機:未來程式設計師拿試管「寫」代碼?

2020-12-05 新華網客戶端

  未來程式設計師拿試管「寫」代碼?

  如今,無論在生活還是在工作中,我們都離不開計算機的幫忙。然而,隨著大數據時代的到來,目前電子計算的並行運算速度和存儲能力面臨發展瓶頸,科學家開始尋找新的計算媒介。

  近日,加州理工學院的科學家研發出可廣泛編程的DNA計算機,其有望完成多重計算任務,相關成果刊登在《自然》雜誌上。

  那麼,DNA計算機的原理是什麼?與傳統的電子計算機相比它有哪些優勢?科技日報記者帶著這些問題,採訪了相關專家。

  電子晶片發展遭遇物理極限

  在介紹「大神」DNA計算機前,我們要先講講它的「前輩」——電子計算機。

  別看電子計算機能為我們解決很多難題,但對於一些難度較大的數學問題,它也束手無策。例如,哈密爾敦路徑問題,即假定存在多座城市,計算機要規劃出一條經每座城市且不重複的最短路線。當城市數量少時,電子計算機或許能在短時間內給出答案,但當城市數量多至100個時,電子計算機就會「忙不過來」,要找出這條路線或許需要數百年。

  在生活中,我們或許很少會遇到這類「燒腦」難題,但在大數據時代,由於數據存儲量的激增,大體量計算任務也會隨之增多。

  「如今,傳統電子計算機的算力逐漸接近『天花板』,未來可能無法滿足巨大的計算需求。」 廈門大學信息科學與技術學院教授劉向榮介紹道,為了提高計算機的運算速度,其內部電路的集成度會越來越高,晶片上的電晶體也會愈發密集。目前管道之間的距離約為10納米,該距離一旦小於1納米,就會出現問題。比如,電子在運動過程中將穿過電晶體壁,「亂成一鍋粥」,無法再形成穩定有序的電路,致使計算無法正常進行。

  「按照摩爾定律的說法,集成電路上可容納的元器件的數目每隔約18到24個月便會增加一倍。」劉向榮說。

  不過隨著晶片技術的不斷發展,摩爾定律也逐漸遇到了物理法則的限制。目前,電晶體的體積已達到納米級別,繼續縮小的可能性正在變小,摩爾定律所預言的發展軌跡似乎已再難延續。

  於是,部分科學家開始尋找能力更強大的、可突破目前電子計算機瓶頸的下一代計算機。

  利用生化反應在液體裡進行計算

  科學家將目光投向了生物領域,在那裡尋找「後補選手」。

  1994年,圖靈獎獲得者、美國科學家阿德拉曼提出基於生物化學反應機理的DNA計算模型,推開了DNA計算的大門。

  DNA,即脫氧核糖核酸,是具有雙螺旋結構的有機化合物。那麼,染色體中的DNA是怎麼完成計算任務的?

  「DNA計算是以DNA和相關生物酶為基本材料,利用某些生化反應進行計算的一種新型的分子生物計算方法。」北京大學信息科學技術學院副研究員張成在接受科技日報記者採訪時表示,它主要是利用DNA分子特有的雙螺旋結構和鹼基互補配對原則進行計算。

  其具體的計算步驟為,首先工作人員對待解決的問題進行編碼,即將運算對象編碼成DNA分子鏈(單鏈或雙鏈);其次是將編碼後的DNA分子鏈混入生物酶溶液中,生成各種數據池;然後在生物酶的作用下,按照一定規則將解決問題的過程映射成DNA分子鏈的可控生化反應的過程;最後,利用分子生物技術,如聚合酶鏈式反應等,得到最終的運算結果。

  「與電子計算的操作不同,DNA計算屬於『溼實驗』,即大部分運算都在液體裡進行。」張成告訴科技日報記者,在DNA計算環境下,要想讀取數據,可不像電子計算機這麼方便,看一眼電子屏幕就成了,而是需要通過凝膠電泳、螢光成像、原子力顯微鏡、透射電鏡等生物分子檢測技術獲得計算結果。

  存儲力和算力遠超傳統方式

  張成介紹道,DNA計算的最大優勢在於其高並行性,即DNA的每條單鏈都可被看成是一臺計算設備,其內部海量的鏈條則可被看成一個「機房」,這就相當於成百上千臺計算機在同時進行運算。

  這種高並行性極大地提升了運算速度。舉例來說,若想從億萬人中找出一個手拿釘子的人,傳統的電子計算機往往要一個一個篩,直到檢索出目標;而DNA計算模式,則可並行對1018個人同時進行檢測,其計算速度相當可觀。「高並行性讓DNA計算具備了進行大規模計算的能力,可用於專用計算。」劉向榮表示。

  北京大學信息科學技術學院教授許進曾撰文表示,一臺DNA計算機在一周的運算量或相當於所有電子計算機問世以來的總運算量。

  「除具有高並行性外,DNA分子還具有海量存儲能力,這也是DNA計算的另一優勢。」張成指出,資訊時代的數據量呈指數級增長,電子計算機晶片等元器件的集成能力愈發接近瓶頸,亟待開發新的存儲媒介。

  DNA作為信息的載體,其貯存容量巨大。1立方米的DNA溶液可存儲1萬億億個二進位數據,遠超當前全球所有電子計算機的總儲存量。

  近年來,不僅很多科學家熱衷於研究DNA存儲,一些企業也將目光投向這一領域。微軟研究院計劃於2020年前將DNA存儲系統投入到數據中心中使用,華為戰略研究院也將DNA存儲納入未來研發計劃中。

  此外,許進還提到,DNA計算機所消耗的能量只佔一臺電子計算機完成同樣計算任務所消耗能量的十億分之一。

  DNA計算技術落地或需20年

  「高大上」的DNA計算,能被用在哪兒呢?

  「在信息技術領域中,基於DNA計算的強大運算能力,其有望被應用於密碼破譯或超大規模信息處理等業務中。」劉向榮表示,現有的密碼體系之所以安全、可靠,並非在於其無法被破譯,而是因為破譯時間過長,可能需要上百年。而DNA計算則有望將同一密碼的破譯時間縮短至幾天、甚至更短,屆時現有密碼體系可能會「潰不成軍」。

  在北京理工大學計算機學院副教授閆懷志看來,生物醫藥也將是DNA計算主要的應用場景之一。「DNA計算由於其融合應用了電子技術和生物技術,使得電腦與人腦相結合的『人機合一』成為可能。可以設想,採用DNA計算技術,甚至能在人體或細胞內直接植入人造生物晶片、運行電腦程式。」閆懷志說。

  「利用DNA計算技術,科學家可在細胞內植入DNA納米機器人和分子電路,完成細胞功能調控。例如,北京大學相關團隊構建的多種DNA分子電路,可對某種腫瘤標誌物進行特異性識別,進而實現快速診斷。」張成說。

  「此外,得益於DNA分子鏈本身的微小性、可摺疊性及高度穩定性,DNA分子存儲技術近年來受到廣泛關注。」張成指出,科學家已經把莎士比亞的詩、馬丁·路德金的演講等信息通過分子編碼,成功以DNA形式進行存儲。DNA硬碟或將於不久後問世。

  與此同時,專家也表示,目前來看,DNA計算技術落地仍面臨諸多挑戰。

  「目前學界還未找到實時、高靈敏度的檢測DNA單分子的技術手段。DNA運算結果信號往往為微小、微量的DNA單分子,如何增強這種納米級別的信號或提升單分子檢測技術的能力,需要我們進一步努力。」劉向榮指出。

  新技術只有走出實驗室,才能體現其價值,造福大眾。張成坦言,目前由於DNA計算技術相關研究仍屬於前沿基礎研究範疇,市場資金介入度不夠。「因此,我們亟須加強相關的應用研究,吸引市場的關注。」張成說。

  「目前來看,DNA計算技術距離真正落地,還有很長的路要走,或許需要20年。」劉向榮推測道。

相關焦點

  • 程式設計師是做什麼的?未來計算機變得智能,就不需要程式設計師了嗎?
    很多人認為計算機變得如此智能,所以在不久的未來將不再需要程式設計師。另外一些人認為程式設計師是天才,他們在電腦前能不斷地解決複雜的數學難題。(不過,我有點關心如果這成為現實後,計算機還需要人類程式設計師嗎?) 現代計算機具有完全邏輯性、直接性和順從性。如果你知道它應該做什麼並且知道如何命令它,那麼和計算機一起工作是快樂的。唯一的問題是,計算機只會做你告訴它去做的。因此,你應該有清晰的思路並且在見你的上司或客戶時保證計算機不出岔子。
  • 阿里傳奇程式設計師,只會寫代碼,卻從一名員工做到了合伙人
    而在阿里巴巴,也有一位和多隆一樣憨厚忠實的程式設計師工程師,他就是蔡景現,現在是阿里巴巴的合伙人之一,今天就來說說他的故事。阿里傳奇程式設計師,只會寫代碼,卻從一名員工做到了合伙人。1967年,蔡景現出生於浙江省蒼南縣一個貧困的農村家庭。小時候他學習一般,性格也比較內向,但在蔡景現平凡普通的校園成長經歷中,一本basic的程式語言書改變了他的生命歷程。
  • 程式設計師:停電去網吧寫代碼,被當成黑客報警了,網友:想偷我戒指
    相信很多人對程式設計師這個行業有著很多看法,畢竟作為高薪行業,一直以來也是備受關注,但因為強大的工作壓力,也讓很多人望而卻步。甚至在很多人眼裡,這就是年薪百萬,一夜成名的職業了,也讓程式設計師這個行業增添了幾分神秘感,這也讓很多人好奇,究竟是做什麼能夠讓自己收入這麼多呢,他們為何有如此強大的吸金能力呢?有位網友就在論壇上發表自己作為一位程式設計師曾遇到的尷尬事情。
  • 計算機科學家vs程式設計師vs開發人員vs黑客,你們更想成為哪個
    通常,我們會聽到他是一名程式設計師,他是一名開發人員,他是一名黑客以及他是一名計算機科學家。但是程式設計師,開發人員,黑客和計算機科學家之間有什麼區別?因此,在本文中,我將嘗試區分這幾個詞。在這裡,我給出一個基本的想法,我不會深入探討。
  • 代碼你打算寫到幾歲?雷軍、張一鳴都曾寫過...
    這也代表,他們已經通過寫代碼創造出市場最需要的產品,實現巨大商業價值。而他們曾經寫出的代碼,即便放到今天,也會被很多開發者交口稱讚。當然,也有人在功成名就之後,把寫代碼當做新的生活,從頭學起——潘石屹在56歲生日當天,宣布開始學習 Python。現在就來盤點一下,中國的商業大佬們曾經用代碼寫的故事。
  • 超過三十歲就不適合寫代碼了?看看國外程式設計師怎麼說
    在未來一段時期,我能否繼續把編程作為我的主要收入來源?30歲以上的程式設計師有哪些方式可以保持活躍在在技術崗位上,而不必轉向人道主義(管理性)的方向?回答回答1Justozauras:學習那些有長期價值且不會經常改變的基礎性東西——停止學習框架。如果一家公司有自己的產品,就要獲取相關領域知識和業務洞察力,以便有更廣闊的前景。
  • 程式設計師如何寫出高質量的代碼程序
    編碼是程式設計師最重要的工作,每個程式設計師都希望自己可以寫出優雅,高性能,高質量的代碼,對於大師級別的程式設計師,他們的寫的代碼就和藝術品一樣,你會忍不住發出驚嘆,他們怎麼可以創造出如此驚豔的作品出來。下面筆者就以自己的淺薄學識和一些經驗來總結下優秀的程序應該具有的特點。
  • 程式設計師:停電去網吧寫代碼,被當成黑客,網友調侃:想偷我裝備
    程式設計師,一個似乎很省洗髮水的職業,這些年一直活躍在段子手的作品中,為網友所津津樂道。人們一邊羨慕他們的高薪,一邊對他們在計算機世界中好像呼風喚雨無所不能的技術嘆為觀止。同樣是敲鍵盤,鍵盤俠只能洩憤,程式設計師卻能在電腦裡上天入地。
  • 學歷低的程式設計師是否能夠在技術研發領域走得更遠
    首先,在IT網際網路行業從事技術研發崗位,如果想持續獲得崗位升級,個人的技術研發能力是第一位的,學歷對於大多數程式設計師來說僅僅是一個進入職場的敲門磚,學曆本身對於程式設計師來說也許並不重要,但是學歷背後的知識體系對於程式設計師的成長還是有很大影響的。
  • 國外程式設計師推薦:每個程式設計師都應讀的書
    算法領域的標準教材,全球多所知名大學選用MIT名師聯手鑄就,被譽為「計算機算法的聖經」編寫上採用了「五個一」,即一章介紹一個算法、一種設計技術、一個應用領域和一個相關話題。推薦數:617《重構:改善既有代碼的設計》清晰地揭示了重構的過程,解釋了重構的原理和最佳實踐方式, 並給出了何時以及何地應該開始挖掘代碼以求改善。
  • 被嫌棄的35歲程式設計師
    在國內科技公司,大齡程式設計師想要一直做研發需要運氣和實力。公司得提供這樣的崗位,還要有足夠的開放度允許他們長期寫代碼。而 35+ 程式設計師也要證明自己寫的代碼對公司有利,年輕人還替代不了。另一方面,技術做久了,升到管理層,也是正常的職場晉升流程。
  • 科學家在試管中創建由DNA構成的人工神經網絡
    目前,科學家在實驗室裡研製一種完全由DNA製成的人工神經網絡,能夠模仿大腦工作形成自己的「記憶」。這種位於試管中的人工智慧系統通過識別手寫數字,可以解決典型的機器學習問題。科學家表示,這項工作是證實人工智慧植入人造有機電路的一個重要步驟。
  • 程式設計師猜不到,計算機剛出現的時候,是用女人頭做計算能力單位的
    但是,埃尼阿克這個計算機有個小問題:埃尼阿克的創造者(因為懶)沒有寫任何操作手冊,所以具體操作全要這些女程式設計師自己搞定。圖片來源:wikimedia總而言之,女程式設計師的編程工作是,首先把要解決的問題用機器能讀懂的語言描述和翻譯出來,然後把這些代碼通過機器的開關輸入進去。聽起來很簡單,但是上手之後,這些女程式設計師才真的想打人。一開始,光是為埃尼阿克輸入要處理的問題就要花費數天時間。
  • 大學裡計算機老師那麼厲害,為何不從事薪資更高的程式設計師工作呢?
    術業有專攻,專業的程式設計師和大學計算機老師還是有著非常大的差別,大學計算機老師的職責不是自己去編寫程序,主要任務是把知識灌輸給大學生,很多程式設計師的編程能力很強但距離傳道受業還是有著非常大的差距
  • 程式設計師的這108個笑話 你都看得懂嗎?-程式設計師,笑話,編程, ——快...
    11、程式設計師,年二十有二,始從文,連考而不中。遂習武,練武場上發一矢,中鼓吏,逐之出。14、檢驗代碼質量的唯一標準=代碼review時罵的次數/代碼review時間。15、殺一個程式設計師不需要用槍,改三次需求就可以了。16、C++程式設計師看不起C程式設計師,C程式設計師看不起java程式設計師,java程式設計師看不起C#程式設計師,C#程式設計師看不起美工。周末了,美工帶著妹子出去約會了,一群SX程式設計師還在加班。17、問:如何生成一個隨機的字符串?
  • 不發項目獎金,程式設計師怒刪代碼,被判 5 個月!
    整理 | 王曉曼責編 | 伍杏玲出品 | 程序人生 (ID:coder _life)之前CSDN 報導過,一外國公司因縮減專利獎金,員工拒絕提交代碼的故事:程式設計師怒了!你敢削減專利獎金,我敢拒絕提交代碼!
  • 普通程式設計師與高級程式設計師有什麼差別?你知道嗎?
    世界上,程式設計師界的大神很多,諸如Margaret Hamilton(阿波羅計劃飛行控制軟體的幕後英雄)、Donald Knuth(《計算機編程藝術》的作者)、Ken Thompson(Unix 締造者)等等,當你去了解他們的經歷時,你會發現他們能夠達到這種登峰造極的境界,無非是天賦加上努力。
  • 數學公式太晦澀,不如用代碼寫出來:這是程式設計師學數學的獨特方式
    我發現代碼不僅能用來寫程序,而且還是用於解釋複雜問題的全球通用語言。當我學習數據科學背後的數學時,我總是發現理解數學的最佳方式是寫出描述這些等式的代碼段。最終,我理解了這些符號,現在讀它們就像讀一篇普通論文一樣。我希望通過這篇文章分享一些示例,讓大家知道用代碼描述數學竟會如此簡單!
  • 偉大的公司都推崇代碼評審,平庸的程式設計師卻認為是浪費時間
    今天來聊一聊程式設計師如何提升自己,曾經我讀過一篇文章,為什麼很多人工作十年,卻無法成為架構師,無法成為技術專家,很多人寫了十萬個小時代碼,卻還是碌碌無為。寫代碼,就好比在大海上泛舟,很多人找不到參照物,隨波逐流。
  • 阿波羅11號登月飛船原始碼:除了代碼還有笑料和吐槽
    他們提出了一種存儲電腦程式的新方法,名為「線存儲器」,並創造了一種特殊版本的彙編語言。對於現今的很多程式設計師來說,彙編語言晦澀難懂,其目的是方便計算機理解,而不是便於人類理解。MIT的程式設計師們為阿波羅制導計算機(AGC)編寫了成千上萬行的那種深奧代碼。 從下圖中,可以直觀地感受到他們到底寫了多少代碼。