Ⅰ c語言什麼情況需要調用數學函數庫
當你調用的數學函數是由標准庫中的數學函數庫提供時。如求絕對值的函數就是由「math.h」庫提供的。也就是你調用到了標准庫的函數就要引用標准庫頭文件,如printf()就要調用「stdio.h」,當然有時編譯器是默認包含"stdio.h"。
Ⅱ 學習編譯原理之前,除了需要學習c語言外,還需要學什麼
主要是會數學邏輯,你可以看看離散數學,其實話說回來 主要看你學編譯原理用來干什麼了,如果只學理論 你會發現你學完以後依然不知道怎麼具體運用,只能知道大概的程序編譯過程, 如果你想可以自己也能寫出詞法分析器語法分析器 甚至語義分析 那麼 你最重要的是學好數據結構,我的畢業設計是C語言編譯器 剛開始我覺得自動機什麼的 是難點 可是到後來我才發現 最重要的是要有良好的數據結構的運用能力 數據結構是一切程序的靈魂!沒有合理的存儲結構 程序就像沒有根基的浮萍
Ⅲ 學好「計算機編譯原理」需要具備其他一些知識么
1.你要學到什麼水平?是想考試考好還是想實際寫出來一個足夠強度的編譯器?如果是前者,就一句:努力當學霸才是你唯一的出路。
2.對於scanner &parser的話,對於書上所講的演算法的要求是很高的,有很大的依賴性,所以必須理解透徹,即使沒有機會實現也要自己動手畫畫。同時這也是本科階段所學的編譯原理的所有內容。雖然flex和bison很好使,但是強烈不建議使用。
3.對於生成器、連接器或者解釋器的話,那麼你要了解匯編語言、微處理器、微機介面等計算機基礎學科。簡單的說就是從底層學到高級語言的層面。這個要求是很高的,畢竟涉及到二進制代碼優化等很麻煩的。
Ⅳ 數學之於編程重要呢還是不那麼重要
數學之於編程是否重要這個問題,第一感覺會覺得很重要,然後很多人會說,數學在編程上實際上用得很少!所以我們認真的討論一下,數學對於編程到底有多重要。
首先,「編程」是一個很泛的概念,「編程」這件事對於各個人有不同的意義、
對一般碼農來說,編程略等於用戶需求實現的過程,寫出能運行的代碼或者軟體就算達到了目的。
編譯工具開發的
「天才」級程序員而言,編程幾乎等於演算法,談編程幾乎等於談演算法。
對開發編譯工具的人來說,編程就是編寫合符語法的字元串,通過編譯器生成能正確執行的程序。
對各種計算機應用領域研究(計算機圖形學、計算物理、機器學習、密碼學……)的人來說,編程就是實現各種實驗的工具。當然有一些部分最終也可能成為應用軟體。
編程是計算機科學的子集。而計算機科學涉及的數學很多,以計算機所有分支(計算機圖形學、計算物理、機器學習、密碼學……)涉及的數學來說明編程需要很多數學,似乎並不洽當。
我嘗試單純從一般編程的情況,列出當中與數學的相關性。
許多編程的構成部分,如整數、實數、變數、常量、運算符、函數、參數、布爾運算等,都是沿自數學上的概念/名字。但在編程中,我們要知道它們和原來的數學概念不一樣的地方。
例如,由於計算機只能表示有限的數字,所使用的整數只能是整數集的有限子集,並可使用同餘算術。同理,計算機也不能表示實數集,通常是使用浮點數或定點數這些有限子集。編程中的純函數基本上與數學中的函數概念相同,可以用上單射、滿射、雙射、反函數學數學概念。
有一些編程的構成部分使用了編程專門的術語,但實際上和數學的概念幾乎一樣。例如
一維數組(1D array) -> 矢量(vector)/多元組(tuple)
二維數組(2D array)-> 矩陣(matrix)
另外,大部分編程語言不直接支符號計算(symbolic calculation),而只是對表達式進行求值(evaluation)。
在很多場合,編程需要使用到演算法,而演算法涉及很多數學。但除演算法以外,在一般的編程中,我想到涉及數學的部分並不多。
編程時除了考慮正確性及性能,還要考慮很多軟體工程上的因素,如內聚性、耦合性、可讀性、可擴展性、可測試性等。一般編程需要一些基本的數學知識,但說「編程就是數學」並不洽當。
--
補充:幾年前讀《Elements of Programming (豆瓣)》時,就因數學基礎不好讀不太懂,然後就去學抽象代數。不過這本書談及的內容是否對編程很有幫助,就是見仁見智了。
Ⅳ 編譯原理好學嗎是偏硬體的嗎
我認為編譯原理~與大學計算機專業課程的其他科目比起來的話相對較難
真正開發編譯器的人的確需要豐富的硬體的知識。
但不能說偏硬體,而且國內編譯原理教材著重理論,常常可以忽略對硬體的認識
總的來說,樓主為了考試學編譯原理的話,比較難啊,沒有偏硬體的說
如果為了開發編譯器(尤其靜態編譯器)的話,難度大 ,需要i強大硬體知識