為何電腦人應該懂一點編譯知識?

来源:http://www.cnblogs.com/fanzhidongyzby/archive/2016/08/13/5768854.html
-Advertisement-
Play Games

快餐式的學習確實會在短期內對個人迅速瞭解未知事物有所幫助,而作為專業人士要保持長期的競爭力,提高專業素養是必不可少而又漫長的過程,瞭解和學習基礎理論並加以實踐是一種行之有效的方式。 ...


 

2009年冬,本科電腦《編譯原理》課程結業考試結果公佈,雖然取得了不錯的考試成績,可是自己除了熟練掌握了那些艱澀難懂的文法分析演算法之外,對編譯器的工作原理仍然貌似“一無所知”。這讓我下定決心在本科畢業設計時,選定了《自定義語言編譯器的設計與實現》這個題目,從此與編譯領域結下了不解之緣。2012年讀研期間,在之前實現的編譯器的基礎上繼而實現了彙編器和靜態鏈接器,並添加了編譯優化器。2013年著手啟動《自己動手構造編譯系統》書稿的撰寫,歷經兩年終於完稿。20168月,《自己動手構造編譯系統——編譯、彙編與鏈接》一書正式面市,為自己多年投入該方面的精力和心血圓滿地划上了句號。

 

如果不是當初好奇心的驅動,是很難讓自己在編譯的這條路上堅持這麼久的。不過我仍慶幸當初的“一意孤行”,它不僅實現了我構建編譯系統的願望,還讓我繼而完成了專著幫助到更多的人。更重要的是,實現編譯系統的過程對電腦人的專業素養有著巨大的促進作用。從數據結構與演算法的增強訓練,到大型軟體系統的設計與構建;從理解離散數學中代數系統和圖論在電腦科學中的作用,到使用數據流和控制流分析進行代碼優化;從設計編程語言每一個單詞和語法,到使用文法分析演算法理解程式的語義;從指令系統和二進位文件結構的研究到編譯環境和操作系統運行時環境的深刻理解。可以說,構建編譯系統的過程,涉及了電腦科學從原理到實踐的方方面面。它帶給一個專業學習者的不僅僅是一個軟體系統的實現價值,而是系統級的從電腦底層到上層的全局性認識和理解。

 

編譯,即便對於在電腦領域工作多年的人來說,也會覺得枯燥乏味。尤其是在高負荷的業務需求的壓力之下,更鮮有人會主動關註它的原理和細節。快餐式的學習確實會在短期內對個人迅速瞭解未知事物有所幫助,而作為專業人士要保持長期的競爭力,提高專業素養是必不可少而又漫長的過程,瞭解和學習基礎理論並加以實踐是一種行之有效的方式。我個人踏入工作崗位這兩年多來,一直從事大數據平臺構建相關的工作。錶面上看來與編譯領域關係不大,但是實踐中發現,當初在實現編譯系統中學習和接觸的電腦的原理和知識,曾無數次間接地幫助我更好地完成工作中的任務。無論是學習新的編程語言和工具,還是準確地理解開源系統的原理和使用,亦或是定位各類軟體系統的運行時問題,還是開發新型的軟體系統或者擴展已有軟體系統的新功能,瞭解和熟悉電腦的工作原理確實給我帶來了巨大的幫助。曾經有互聯網公司的面試官這樣說,公司更看重的是一個人解決問題的能力。說白了,學習新的技術,使用各色各樣的軟體系統,根本上來說還是為瞭解決來自於業務或系統的問題,而對電腦更加熟悉的瞭解,可以幫助我們在解決問題的時候更加游刃有餘,胸有成竹。

 

《自己動手構造編譯系統——編譯、彙編與鏈接》一書詳細闡述了一門編程語言從無到有的過程,從語言的功能特性設計,到詞法、文法、語義分析;從編譯器、彙編器的設計實現,到目標文件的鏈接生成可執行文件;甚至編譯優化器的實現、二進位指令、可執行文件格式以及語言運行時和標準庫的概念,都在書中做了認真細緻地剖析。相信對本書的閱讀,將是一次不錯的獲得知識的體驗!

 

訪問圖書線上銷售鏈接,請點擊:http://item.jd.com/12004876.html

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 當前全球正處在新一輪科技革命和產業變革的關鍵時期,以大數據為代表的信息技術產業變革,使各個企業在信息技術發展上處於新的起跑線上,如何充分挖掘利用大數據資源,是企業當前面臨的重大課題。 ...
  • 一、資料庫操作 1、查看資料庫 2、創建資料庫 3、使用資料庫 4、用戶管理 mysql> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user; + + | query | + + | ...
  • 查詢方式:LIKE '%xx%' 普通: SELECT * FROM TABLE T WHERE T.COLUNM LIKE '%xx%' 優化:使用 INSTR SELECT * FROM TABLE T WHERE INSTR(T.COLUNM, xx)>0 在執行的時候,執行計劃顯示,消耗值, ...
  • hive odbc 驅動配置成功後,通過c#訪問就變得比較簡單了,分為查詢與更新操作,直接附上測試代碼。在此過程中需要註意c#工程編譯的目標平臺 讀寫訪問代碼示例: public class HiveOdbcClient { /// <summary> /// /// </summary> publ ...
  • 熟悉了Sqlserver的sqlserver management studio、Oracle的PL/SQL可視化資料庫查詢分析工具,在剛開始使用hive、phoenix等類sql組件時,一直在苦苦搜尋是否也有類似的工具,不負所望,SQuirrel Sql client 可視化資料庫工具基本可滿足要 ...
  • 針對Windows 32位和64位的系統對應有多個版本的 Hive ODBC Connector, 在安裝的過程中,版本必須完全匹配(即:32位的 connector 只能在32位的系統運行,64位的 connector 只能在 64位系統運行) 參考資料: http://doc.mapr.com/ ...
  • Hive是一個基於Hadoop的數據倉庫,最初由Facebook提供,使用HQL作為查詢介面、HDFS作為存儲底層、mapReduce作為執行層,設計目的是讓SQL技能良好,但Java技能較弱的分析師可以查詢海量數據,2008年facebook把Hive項目貢獻給Apache。Hive提供了比較完整 ...
  • 查詢執行的記憶體授予(Query Execution Memory Grant) 有些操作符需要較多的記憶體才能完成操作。例如,SORT、HASH、HAS聚合等。執行計劃通過操作符需要處理數據量的預估值(通過統計信息獲得的預估行數)、操作符類型和列大小來獲得所需要的記憶體總量。這個執行計劃的記憶體總量,也叫 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...