1. 中國大學學編譯原理有什麼用,也沒有人開發新的編程語言【編譯器】簡直是浪費時間
編譯原理可以了解源程序是怎麼轉換成計算機二進制代碼的,對於編寫高性能程序會有幫助。另外,編譯原理所涉及的一些演算法和數據結構,詞法分析什麼的,在一些軟體開發中都會用的著。
2. 請問各位編程大佬,C++中,運行和編譯運行有什麼區別,編譯和調試有什麼用
編譯依賴於編譯器,英文是compile,vc中這一過程是將源代碼轉換成目標文件,如.obj文件,.rc文件等生成應該指的是鏈接的過程,英文是build.依賴於鏈接器.vc中在這一階段將所有的目標文件和所有需要用到的組件組合成一個整體,例如需要生成的是windows系統下的PE可執行文件,鏈接器會依照特定格式將目標文件組合,最後生成PE格式的.exe或.dll文件.調試是所有或部分代碼編寫完成後,讓程序在調試器中運行,用這種手段對程序進行分析,找出並修正潛在問題.運行就是讓程序在系統中運行啦.
3. 編譯原理究竟有沒有用對編程的人
我跟你說,編譯原理太有用了。
我是做手機游戲的,現在做一個游戲引擎。既然是引擎,就需要提供抽象的東西給上層使用。這里,我引入了腳本系統。
這個腳本系統包括一堆我根據實際需求自行設計的指令集,包括基本的輸入輸出,四則運算,系統功能調用,函數聲明,調用等等(其實你要是用過lua或者其他游戲腳本你就知道了。)整個結構包括指令集、編譯器、虛擬機等部分。這樣,引擎提供一些基礎服務,比如繪圖,計算位置等,腳本就可以非常簡單控制游戲。甚至快速構建新游戲。你應該知道QUAKE引擎吧?
這里提供給你一個計算器的小程序,應用了EBNF理論,支持表達式,比如(2+3*6)*4+4,你自己體驗一下它的簡潔和強大。
/*
simple integer arithmetic calculator according to the EBNF
<exp> -> <term>{<addop><term>}
<addop>->+|-
<term>-><factor>{<mulop><factor>}
<mulop> -> *
<factor> -> ( <exp> )| Number
Input a line of text from stdin
Outputs "Error" or the result.
*/
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
char token;/*global token variable*/
/*function prototypes for recursive calls*/
int exp(void);
int term(void);
int factor(void);
void error(void)
{
fprintf(stderr,"Error\n");
exit(1);
}
void match(char expectedToken)
{
if(token==expectedToken)token=getchar();
else error();
}
main()
{
int result;
token = getchar();/*load token with first character for lookahead*/
result = exp();
if(token=='\n')/*check for end of line */
printf("Result = %d\n",result);
else error();/*extraneous cahrs on line*/
return 0;
}
int exp(void)
{
int temp = term();
while((token=='+')||(token=='-'))
switch(token)
{
case '+':
match('+');
temp+=term();
break;
case '-':
match('-');
temp-=term();
break;
}
return temp;
}
int term(void)
{
int temp = factor();
while (token=='*')
{
match('*');
temp*=factor();
}
return temp;
}
int factor(void)
{
int temp;
if(token=='('){
match('(');
temp = exp();
match(')');
}
else if(isdigit(token)){
ungetc(token,stdin);
scanf("%d",&temp);
token = getchar();
}
else error();
return temp;
}
其實編程學到一定程度總是沒有方向了,總是在問學C/C++下一步怎麼學啊,覺得掌握了該語言了雲雲,實際上,你缺少的就是這些軟的東西,缺少的是理論。
編譯原理不是單一的理論,它涵蓋了一個niche,裡面可以學到很多其他知識,比如正則表達式、BNF、EBNF、分析樹、語法樹還有很多運行時環境等知識
這些給你帶來的是非常豐厚的回報。不說多了,學完運行時,你就會加深對C++語言本身的理解。
你要想有好的發展,還是學吧。
4. 關於編譯和編程
編程就是為了藉助於計算機來達到某一目的或解決某個問題,而使用某種程序設計語言編寫程序代碼,並最終得到結果的過程。
什麼叫編譯程序
編譯程序:是指這樣的程序,它能夠把某種語言的程序轉換成另一種語言的程序,而後者與前者在邏輯上是等價的.如果源語言是諸如FORTRAN,Pascal,C,Ada,Smalltalk或Java這樣的"高級語言",而目標語言如匯編語言之類的"低級語言"這樣的翻譯程序則稱之為編譯程序.
注意編譯程序與解釋程序的區別,一個語言的解釋程序是著樣的程序:它以該語言寫的源程序作為輸入,但不產生目標程序,而是邊解釋邊執行源程序本身.
術語"編譯"的內涵是實現從源語言表示的演算法向目標語言表示的演算法的等價變換.
你說學編程還是學編譯啊?
5. 在編寫程序時要用到編譯器,什麼是編譯器有什麼用
VC Borland C Eclipse 都是編譯器 就是把你的源代碼 編譯 解釋成機器能讀懂的機器碼 因為機器內部是用二進制的嘛 所以最終也就是一串 1 0 組成的序列
6. 請問:匯編語言和編譯原理對日常編程多大幫助作用
匯編語言和編譯原理是計算機專業的基礎課,看似沒用。當你一旦想深入計算機軟體的話,它們的作用就很大了。
而且抓住了基礎,學計算機的其它東西就顯得是小兒科了。
7. 編程完要編譯,編譯到底是什麼意思
編程就是編寫程序,也就是敲代碼
編輯應該也是寫代碼的意思吧
編譯一般都是在寫了一行代碼保存的時候,開發工具會編譯你寫的代碼是否有錯,然後會幫你生成一些其他文件
8. 軟體編程在學習了編譯原理這門課後有什麼好處
菜鳥向高手進階的一個跳板,能夠大大加深你對程序設計的理解。
9. 資料庫,數據結構,編譯原理對編程有那些影響和幫助
他們太重要了,
(1)數據結構:首先要明白---->程序=演算法+數據
「數據結構」就是做數據這塊的,例如一個「電影播放器」程序,首先要有「電影」嗎,這個就是「數據」,那麼就要用「數據結構」的知識,怎麼存儲每一幀,怎麼高效,怎麼能無損,怎麼空間最節省.........,然後才是怎麼去「解碼」(解碼就是「演算法」做的啦),當然這么講起來不是很嚴謹,但你可以看得出,數據結構可以說的上是有50%的重要性了。
(2)編譯原理:不要以為,自己不去開發「語言」,編譯原理就沒有用啦,它能讓你從根本上理解編譯器,這對怎麼提高程序的效率,怎麼變出漂亮的程序很有用................當然貌似如果從事,「人工智慧」這一塊的話,編譯原理也非常重要。
(3)資料庫:又是剛才哪一點----------->程序=演算法+數據
數據以文件的形式存儲,是在不是很高效,所以,為了方便數據的管理與查找等等..........人類作出了「資料庫」,說白了,它就是用來解決「數據」這部分內容的,現在基本無論你做什麼都離不開資料庫了,從大型網游到網站,到手機等的移動設備編程,都要用到資料庫
--------------------------------------------------------------------------------------------------
從你的體溫來看,你可能剛剛接觸編程,沒有做過什麼成品,隨著你越來越了解這個領域,你會剛到這些東西非常重要,當然還有很多東西,與以上三者地位相當,或更高,例如,微型計算機組成原理,等一些硬體方面的知識.......................................
---------------------------------------------------------------------------------------------------
還是「廣泛閱讀」吧。
10. 編譯環境對編程很重要嗎
你好!
請參考:
不論是 VC 還是 TC,其實都是C(或C++)語言。不同之處是不同版本(或廠商)的編譯器,當然不同版本或廠商的編譯器就可能帶不同的庫文件或工具或宏。
如果你水平夠高,不論是那個版本的編譯器所提供的工具你都可以不用,也能編出高水平的程序,就是效率低一點(VC等編譯器可以迅速卡發一個小程序,就是利用里邊的工具和MFC庫)
Windows 系統就是用匯編和C++編寫的,但是微軟決不利用VC里邊提供的MFC庫(執行效率太低,容易出錯)
所以只要你C或C++學的比較好,不論是VC還是TC都可以迅速的掌握(主要是掌握里邊的工具和庫就行了)
希望可以幫到你,我也在學這個……