㈠ 學編程需要物理知識嗎
可能有的領域需要.....
下面的經驗很重要 高手們肺腑之言
軟體在國內熱了起來,程序員也強手了,越來越多的人加入了程序員行列。程序員的經歷也是很多編程愛好者急於想知道的,本文介紹了一個」過來人的經驗和感悟,或許對准程序員們有一定的啟發。
不知不覺做軟體已經做了十年了,有成功的喜悅,也有失敗的痛苦
單不敢稱自己是高手,因為和我心目中的高手們比起來,還差的遠。世界上並沒有成為高手的捷徑,但一些基本原則好似可以遵循的。
1 扎實的基礎
數據結構,離散數學,編譯原理,這些是所有的計算機科學的基礎,如果不掌握它們,很難寫寫出高水平的程序。程序人人都會寫,但當你發現寫到一定程度很難再提高的時候,就應該想想是不是要回過頭來學學這些最基本的理論。不要一開始就去學OOP,即使你在精通OOP,遇到一些基本的演算法的時候可能也會束手無策。因此多讀一些計算機基礎理論方面的書籍是非常有必要的。
2 豐富的想像力
不要拘泥於固定的思維方式,遇到問題的時候要多想幾種解決的方案,試試別人從沒有想過的方法。豐富的想像力是建立在豐富的知識的基礎
上,除了計算機以外,多涉獵到其他的學科,比如天文,物理,數學等等。開闊的思維是對程序員來說是很重要的。
3 最簡單的是最好的
這也許是所有的學科都遵循的一條准則,復雜的質能轉換原理在愛因斯坦眼裡不過是簡單的不能在簡單的公式:E=mc^2.簡單的方法更容易被人理解,更容易實現,也更容易維護。遇到問題優先考慮最簡單的方案只有簡單的方案不能滿足要求時在考慮復雜的方案。
4 不鑽牛角尖
當你遇到障礙時候,不妨暫時遠離電腦,看看窗外的風景,聽聽輕音樂,和朋友聊天。當我遇到難題的時候回去玩游戲,當負責游戲的那部分時間細胞極度亢奮的時候,負責編程的那部分細胞就得到的充分的休息。當重新開始的時候,我會發現難題竟然還可以迎刃而解。
5 對答案的渴求
人類自然科學的發展史就是一個渴求得到答案的過程,即使只能知道答案的一小部分也值得我們去付出。只要你堅定信念,一定要找到問題的答案,你才會付出精力去探索,即使最後沒有答案,在過程中你也回會學到很多的東西。
6 多與別人交流
三人行必有我師,也許在一次和別人不經意的 談話中,就可以迸出靈感的火花。多上上網看看別人對同一問題的看法,會有很大的啟發。
7 良好的編程風格
注意養成良好的習慣,代碼的縮進編排,變數的命名規則始終要保持一致。大家都知道如何排除代碼中的錯誤,卻往往忽視了對注釋的排列。注釋是程序的一個重要的組成部分,它可以使你的代碼更容易理解,而如果代碼已經清楚的表達了你的思想,就不必在加註釋了,如果注釋和代碼不一樣,那就更糟糕了。
8 韌性和毅力
這也許是「高手」和一般程序員的最大的區別。高手們並不是天才,他們是在無數個日日夜夜中磨練出來的。成功能給我們帶來無比的喜悅,但是過程確實無比的枯燥無味。你不妨做個測驗,找個10000以內的素數表,把他們全都抄下來,然後在檢查三遍,如果能夠不間斷的完成這一工作,你就可以滿足這一條。
給廣大夢想成為程序員的----忠告!
㈡ 怎樣為「逗號分隔的左結合的標志符列表」構建無二義性的上下文無關文法
這段話時龍書上的原話:
依照慣例,9+5+2等價於(9+5)+2,9-5-2等價於(9-5)-2.當一個運算分量(比如上式中的5)的左右兩側都優於氨酸時,我們需要一些規則來決定哪個運算符被應用於該運算分量。我們說運算符」+「是左結合(associate)的,因為當一個運算分量左右兩側都有」+「號時,它屬於其左邊的運算符。在大多數程序設計語言中,加減乘除四種算術運算符都是左結合的。
某些常用的運算符是右結合偶的,比如指數運算符。作為另一個例子,C語言中的賦值運算符」=「及其後裔(即+=,-=等譯者注)也是右結合的。對表達式a=b=c的處理和對表達式a=(b=c)的處理相同。帶有右結合運算符的串,比如a=b=c,可以由如下文法產生;
right=letter=right|letter
letter=a|...........|z
這是右結合的分析樹,它向右下方延伸。
所以你的答案為 list——>list,a|a.
㈢ V8 編譯淺談
V8 編譯淺談的答案如下:
1. 解釋器與編譯器的區別: 解釋器:將程序逐行轉換為機器語言並執行,逐行解釋執行代碼。 編譯器:將整個程序轉換為機器語言或中間表示形式,生成目標代碼時可以進行優化處理,提升程序執行效率。
2. JIT 編譯技術: JIT編譯器動態編譯代碼,在運行時進行優化。 V8 引入 JIT 技術,結合混合動態編譯策略,優化 JavaScript 代碼執行速度。
3. V8 編譯原理: Ignition 解釋器:將抽象語法樹轉換為位元組碼,跟蹤熱點代碼。 TurboFan 優化編譯器:接收 Ignition 解釋器傳遞的熱點代碼,利用 JIT 技術結合反饋向量對代碼進行優化。
4. 運行時表現與調試: 使用調試工具 D8 可以查看編譯和運行時信息。 D8 調試工具可以顯示 AST、中間代碼、優化和反優化代碼等詳細信息,有助於深入理解 V8 的編譯機制。
5. 總結與建議: V8 編譯原理概述了解釋器與編譯器的區別、JIT 技術的應用、V8 的編譯框架以及運行時表現。 建議在開發中使用 TypeScript 進行類型聲明,以提升代碼性能。
㈣ 編譯原理及編譯程序構造課後習題答案 薛聯鳳
您好,《普通高校計算機專業精品教材系列:編譯原理及編譯程序構造(第2版)》介紹編譯理論基礎及其實現方法,強調語言的形式化定義、編譯技術的各種概念及實現過程的具體方法。介紹過程以演算法為核心,力求簡單明了地反映編譯的基礎知識。從形式語言理論角度討論詞法分析和語法分析技術,為計算機軟體工作者開發大型軟體打下良好基礎。《普通高校計算機專業精品教材系列:編譯原理及編譯程序構造(第2版)》以理論聯系實際為宗旨,內容深入淺出,重點突出,並結合構造el語言的編譯程序介紹一種常用而又簡單的編譯方法。