當前位置:首頁 » 編程軟體 » 學習編譯原理的好處知乎

學習編譯原理的好處知乎

發布時間: 2023-01-06 09:58:24

編譯原理與嵌入式的關系

總有一天你會想學的。現在不想學可以先放放,能過就行。興趣最重要,別磨滅了。以後用到了自然就想學了。
編譯原理主要講的是如何去做個編譯器。其中的很多概念對開發很有用,如有限狀態自動機。編譯器如何代碼優化,優化了那些部分。做嵌入式應該知道怎麼優化,畢竟資源是有限的。

㈡ 繼續學習編譯原理的意義是什麼

對於學習一個什麼的意義,就像跟人生有什麼意義一樣。這是一種很空泛的東西啊,非常的主觀。你喜歡這樣東西,你就覺得他做起來有意義,如果你不喜歡的話,那你就覺得做起來沒有意義了。如果你的專業是學的編譯原理。那你也對他非常的有興趣,那麼你繼續學的意義當然就是因為你喜愛,所以說你繼續,這就是意義啊。

所以說就學習的東西而言,你說的。所以說。就學習的東西而言,你學的越多,對你自己的好處就越多。這可不就是學習的意義了嗎?讓你自己懂得了更多的知識,這份支持還可以給你帶來很多的經濟效益。這是多麼美好的一件事情啊。

㈢ 計算機基礎知識對程序員來說有多重要

非常重要,必須認真學習。
學習基礎知識從來都是枯燥的,而且很多時候會給我們一個錯覺,就是基礎知識沒有用。這主要是因為,我們未來工作以後,更多的是面向應用,更直接的就是面向工具的使用,基礎知識基本是不可能直接拿出來用的,所以,大家就會覺得我只要懂應用方面的知識就好了,基礎知識根本不需要去學。
就拿程序員來舉例:
很多的程序員培訓機構,他們並不會教任何的基礎知識,直接就是教編程語言,然後設計一些案例做練習,3個月-6個月基本就結束。這樣教出來的程序員能夠寫代碼嗎?當然是能的,不然這些培訓機構早垮了。而很多大學本科4年讀完的應屆生,說不定寫代碼都沒有這些培訓幾個月的學生強,大學4年對於程序員來說難道就是白費嗎?
並不是的。
基礎知識決定的是你未來的高度,可能你作為一個初級、中級程序員,你不一定會用到數據結構、演算法、編譯原理。但初中級的程序員就是你未來幾十年的全部嗎?
如果是的,在你30多歲的時候,應該就會面對裁員了並且很難找到下一份工作。
程序員是一個干到老學到老的工作,每天都需要去學習一點新的知識,技術也是在不斷的演進,需要去了解未來的技術發展方向,這樣才能夠一直產生價值。而基礎知識是什麼呢,就是當你對技術了解越深入時,越需要用到的東西。
例如:你要做大數據的工作時,你需要數據建模,需要在海量的數據中抽取自己需要的數據,還需要不影響系統的性能,運算速度更快。那麼你就必須要了解演算法,了解時間復雜度。如果你曾經大學時好好的學習了這些知識,並且時不時會溫習一下,那麼你更高更快的勝任這份工作。
但是,對於一個只是了解應用知識的程序員來說,他需要想辦法學習你用4年時間堆積起來的知識,而且還不一定有可靠的老師能夠教他。
再舉個例子,現在華為需要一些技術人才,來做他方舟編譯器的迭代,待遇非常可觀。
而這時,對於懂數據結構、懂演算法、懂編譯原理的人來說,查的無非就是一些應用實踐的知識,這些知識只要有基礎、有環境,1-2周就可以上手。
但是對於只懂應用知識的人,他可能就是看都看不懂,華為也就不可能去招聘這樣的人。
所以,程序員也是有高低之分的,有的年薪百萬,有的年薪可能就十來萬。誰不想拿百萬年薪呢?可能他們也覺得某些知識沒有用,所以沒有去認真的學吧。

㈣ 試述編譯原理中優先函數有何好處與不足之處

構造算符優先分析表時使用的優先函數,其等價於矩陣表,但存儲量校 定義兩個函數,其對應元素的值為優先值,通過循環比較各元素的兩個值,每次將優先順序大的值改為小的值+1,若相等則都賦為目前較大的值,循環直至結果沒有變化,構造OK

㈤ 非計算機專業為什麼學c語言知乎

對於題主的問題,我覺得有點大了,這個問題就好像我問一個學習金融的人這樣一個問題:對於非金融專業的學生,怎麼入門金融學?

OK,我先說說我對計算機的理解吧,因為我覺得這對學習計算機比較有好處。

我所認為計算機是什麼呢? 他是一種輔助設備,能夠拓展人類的能力。能夠輕易完成人類很難做到和很費時間和精力才能做到的事情。

Okey,理解說完了,開始干貨:

計算機分為硬體和軟體,硬體就是你看得見摸得著的,軟體是你看得見摸不著的。介於題主是想說入門,我就不推薦計算機有關硬體的東西了,我主要推薦的是軟體的方向。

通常對於計算機專業的人來說,了解計算機的硬體組成是非常有必要的。因為這不單單只是告訴你現象,還告訴你的本質。

學習計算機的軟體(還有硬體):首先,你要看一本叫《計算機科學技術導論》的書(事實上不管你專攻硬體還是軟體,這本書看看絕對沒錯),這本書包含了很多的基礎內容,
比如2進制(「計算機世界」的語言,計算機非常笨,哦,也就是cpu非常笨,只能明白01010101,其他的統統不知道),
計算機硬體的組成(運算器,控制器,存儲器,輸入輸出設備),
匯編語言(因為010101對於人類來說過於麻煩和難以理解,所以就把一段010101用幾個字母定義,例如「mov」),
然後就是c語言,一些很懶的使用匯編語言的程序員覺得匯編語言還是不夠方便,所以就發明了高級語言---c語言。(可以看出來計算機的發展史真的是一群很懶的人的奮斗史:),我希望有幸成為他們其中的一員。)
當然,裡面還說了很多其他的東西。

看完了《計算機科學技術導論》以後,好吧,這是開胃菜,正菜開始上桌了。

C++ 。推薦書目:《C++ primer》 ,C++是一門計算機高級語言,計算機語言是拿來干什麼的呢?就是和計算機交流的,你看,你和英國人說話要說英語,要和廣東人說粵語,要和荷蘭人說荷蘭語。一樣的道理。隨著「hello world」在那個黑黑的界面中顯示出來的時候,你甚至會懷疑:這TM就是編程?!
哦,這只不過是萬里長征中的第一步。後面還有好多有趣的東西呢。
你要開始了解什麼是變數,什麼是常量,什麼是循環,什麼是類,什麼是判斷語句,什麼是繼承,等等等等。
如果你學習完了語法部分(就是上述說的),那麼,恭喜你,基本上已經可以和別人說:我學過編程了。

好嘞,開始下一步:

因為題主的研究生是金融的,而且boss是做risk management的,那麼演算法就是必不可少的了。
《演算法藝術及信息學競賽》 這本書還不錯,介紹了一些基本的演算法(當然裡面不會告訴你怎麼進行風險管理,那是金融專業的事)。我只是粗略的過了一遍,所以就不獻丑了。不過研究演算法感覺就像在原始叢林裡面爬山,一般人進去就跪了,有了大量的經驗以後才能生還。

《數據結構》 ,在計算機科學或信息科學中,數據結構(英語:data structure)是計算機中存儲、組織數據的方式。通常情況下,精心選擇的數據結構可以帶來最優效率的演算法。(來自維基網路),這是修煉的內功心法之一。

《操作系統》,了解了操作系統的原理以後,才能更好的操作我們正在使用的系統。屬於中級的課程吧。

《編譯原理》, 如果說計算機語言是魔法咒語的話,編譯原理就是告訴你,這些魔法咒語是怎麼生效的

《計算機組成原理》 哦,這個非常有趣,和操作系統有很大關系,但是這個是從硬體的層次上面(大部分來說)來解釋計算機的組成

《軟體工程》 估計題主暫時看不到這里的了,什麼是軟體工程呢?我的理解就是,把寫軟體規范化。形成一種規范以後好處就不言而喻了。

實話說,在學習的過程中會出現很多問題:
比如說語言選擇的問題,你會聽說JAVA無所不能,C#簡單方便,python優雅至極,php開發速度快到帶你飛。
我個人覺得,語言不是重點,語言只是個工具而已,重要的是人,就好像我們都會寫中文,為啥俺和莫言的差距咋就這么大呢!
個人建議是:發揮各個語言的優勢,在不同的情況使用不同的語言。
比如說:
1.想要開發個簡單的網站,PHP是不二的選擇(你可以想像用C++寫網站的「快感」么?)
2.windows下的程序,C#絕對是王道,還有比微軟自家的東西更懂自己的么?
3.android開發,平台的限制,最好還是用JAVA。
4.考慮到性能問題,如果你是個大神(那是不可能的,如果這樣你就不會問怎麼入門了)那絕對會使用到C++,對於一般的凡人,JAVA的回收機制以及夠用了。

如果你想要買書,個人覺得最好不要買國人寫的,因為國內大部分都是你抄我我抄你的節奏,最好買國外的書。圖靈系列的我覺得不錯。

我個人覺得,學習計算機並不神秘和復雜,甚至有些可怕的簡單,有付出,就一定有回報。因為計算機的嚴謹性,他永遠不會出錯,你給出了正確的方法,就會得到正確的結果。

這里推薦題主一個小網站,名字叫做提問的智慧:
http://www.beiww.com/doc/oss/smart-questions.html

㈥ 想去學習軟體有什麼好處呢

1、計算機硬體原理:了解硬體怎麼工作,知道軟體是怎樣在硬體上工作的,CPU架構,指令,怎麼做運算,內存如何工作,內容地址是怎麼回事,硬碟如何存儲,數據和指令如何通過電路和元器件轉化成電流和脈沖,可能需要數據電路的原理。無論從事計算機哪方面,比如網路、軟硬體,這個原理都必須精通。因為計算機技術是很抽象的,但是在現實和具象上是依賴硬體。
2、操作系統原理:在了解了硬體原理後,了解操作系統是怎麼工作的。因為所有的軟體都是基於操作系統的,而操作系統本身也是一個軟體。這些結合硬體來理解,就更容易了。
3、編譯原理:了解軟體從源文件到目標文件,到執行的全過程。如果有必要,其中的東西也要專門買書去研究。這樣代碼上不容易犯錯誤。了解了硬體原理和操作系統原理的基礎上,了解編譯原理也就比較簡單。當然每種語言編譯過程都不一樣,但是原理都是基本相同。
4、數據結構和演算法分析:好的演算法,事半功倍,此外可能還要補一些高中數學、高等數學的知識。
以上每部分,都要至少1-2個月或者150個小時以上的鑽研,要做到基本掌握。如果不掌握以上部分,不是說學不了軟體,但是如果想學精通,想比一般人強,是不可能的,因為你只知道怎麼做,但是為什麼這樣做不清楚,就是死記硬背了,反反復復的記憶效率也很差。
有時候很多獨立的軟體開發的工具書,沒有講的那麼細致,只是告訴你如何做,但是不會告訴你為什麼這樣做,另外一些好的方法也無法告訴你,因為都需要從基礎的硬體電路電流原理來介紹,如果從原理上說,那會說的沒完沒了。
大約半年甚至1年後,此時你所有軟體開發需要掌握的基礎知識,都比較明白了。再開始研究程序開發,就會覺得開發很簡單,事半功倍。因為你已經從原理上理解了,軟體是怎麼工作的。所以也知道軟體開發的學習周期至少在1年以上。 達到能夠開發中型軟體,至少也要1年半,而且這個時間還是每天都在鑽研的時間。

㈦ 學習數據結構演算法和操作系統等基礎課程對提高編程有什麼用處 知乎

首先,這兩門課程對於編程而言是非常重要的,但由於大學課程安排的不合理性以及學生自身的編程差異,對於未深入研究過編程的人或者未參與過項目開發的人而言,課程缺乏足夠的吸引力。通俗而粗略的講數據結構可提高程序本身的健壯性以及靈活性,無關任何編程語言;操作系統有助於你開發基於操作系統的各類應用,要知道絕大多數的程序都是基於操作系統的,再者類似內存分配、存儲空間的分配等細節也因操作系統不同而不同。我個人感覺是,這兩門課程對於大多數學生而言是缺乏實際意義的,但如果你從事過一段編程工作後再返回學習兩門課程會有更深入的體會。希望我的回答可以幫助到你。

㈧ 請問學習編譯原理對程序員有什麼用

知道你寫的程序編譯器是怎麼編譯的,學好了以後可以開發編譯器(那要很牛很牛)。更現實點的好處是學會使自己寫的程序更優,提高程序的效率。
另外,我覺得裡面《運行時的存儲組織與管理》這章很有用,它能告訴你編譯器是怎麼在內存中為程序的函數(包括變數)分配空間的,裡面的對堆棧的講解很詳細,幫助你更深入了解內存分配情況。

熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:593
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:888
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:581
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:765
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:684
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1012
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:255
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:113
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:806
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:712