給我換編譯起畫畫
A. 編程是什麼意思
定義簡單的說,編程就是為了藉助於計算機來達到某一目的或解決某個問題,而使用某種程序設計語言編寫程序代碼,並最終得到結果的過程。
計算機雖然功能十分強大。可以供你上網、打游戲、管理公司人事關系等等,但是沒有程序,它就等於是一堆廢鐵,不會理會我們對它下達的「命令」。於是,我們要馴服它,只有通過一種方式——程序,這也是我們和計算機溝通比較特殊的方式。 [編輯本段]編程原理程序也就是指令的集合,它告訴計算機如何執行特殊的任務。打個比方說,它好比指導你烹調菜品的菜譜或指揮行駛一路到達目的地的交警(或者交通路標)。沒有這些特殊的指令,就不能執行預期的任務。計算機也一樣,當你想讓計算機為你做一件事情的時候,計算機本身並不能主動為我們工作,因此我們必須對它下達指令,而它根本不會也不可能聽懂人類自然語言對事情的描述,因此我們必須使用程序來告訴計算機做什麼事情以及如何去做?甚至對最簡單的任務也需要指令,例如如何取得擊鍵,怎樣在屏幕上放一個字母,怎樣在磁碟中保存文件等等。
上面講到的計算機本身不會主動的做任何事情。因此我們要通過程序的方式來讓計算機為我們「效勞」。而這個過程就是我們「編」出來的。編程可以使用某一種程序設計語言來實現,按照這種語言的語法來描述讓計算機要做的事情。
我們這里所講的語法和外語中的語法完全兩碼事,這里講的語法只是讀你的程序書寫做出一些規定而已。寫出程序後,再由特殊的軟體將你的程序解釋或翻譯成計算機能夠識別的「計算機語言」,然後計算機就可以「聽得懂」你的話了,並會按照你的吩咐去做事了。因此,編程實際上也就是「人給計算機出規則」這么一個過程。 [編輯本段]常見的編程語言* CSS Cascading Style Sheets 層疊樣式表
* .NET 是微軟2002年,為開發應用程序創建的一個富有革命性的新平台
* ActionScript ActionScript是Flash的腳本語言,與JavaScript相似,ActionScript是一種面向對象編程語言。
* APL、A+和J
* Ada Ada是一種表現能力很強的通用程序設計語言
* 匯編語言 匯編語言(Assembly Language)是面向機器的程序設計語言
*易語言是全中文語言編程中最為強大的一個編程語言
* AWK AWK是一種優良的文本處理工具
* Basic 是一種設計給初學者使用的程序設計語言
o QBasic QBASIC是BASIC(Beginner's All-purpose Symbolic Instruction Code,初學者通用指令代碼)語言的一個變種,由美國微軟公司開發
o Visual Basic Visual Basic(VB)是一種由微軟公司開發的包含協助開發環境的事件驅動編程語言
* VBScript VBScript是Visual Basic Script的簡稱,即 Visual Basic 腳本語言
* Brainfuck Brainfuck是一種極小化的計算機語言
* C、C++ 、C# C語言是一種面向過程的計算機程序設計語言 ; C++是一種靜態數據類型檢查的,支持多重編程範式的通用程序設計語言。它支持過程化程序設計、數據抽象、面向對象程序設計、製作圖標等等泛型程序設計等多種程序設計風格。C#是微軟公司發布的一種面向對象的、運行於.NET Framework之上的高級程序設計語言。
o Objective-C 通常寫作ObjC和較少用的Objective C或Obj-C,是擴充C的面向對象編程語言
* Clipper Clipper晶元主要用於商業活動的計算機通信網
* COBOL 一種適合於商業及數據處理的類似英語的程序設計語言
* dBase dBASE是第一個在微型計算機上被廣泛使用的資料庫管理系統(DBMS
* PASCAL、Delphi Pascal是一種計算機通用的高級程序設計語言 ;Delphi是全新的可視化編程環境,是一種方便、快捷的Windows應用程序開發工具
* Forth 由Charles H. Moore發展出來在天文台使用的電腦自動控制系統及程序設計語言,允許使用者很容易組合系統已有的簡單指令,定義成為功能較復雜的高階指令。
* Fortran 譯為「公式翻譯器」,它是世界上最早出現的計算機高級程序設計語言,廣泛應用於科學和工程計算領域。
* FoxPro 是由美國Fox Software公司於1988年推出的資料庫產品
* F# F#是由微軟發展的為微軟.NET語言提供運行環境的程序設計語言
* Fava Fava語言是一個小型的解釋語言,它主要面向於系統測試領域及小型嵌入式設備。
* IDL IDL 是一種數據分析和圖像化應用程序及編程語言
* Java Java是由Sun Microsystems公司於1995年5月推出的Java程序設計語言,他是一種面向對象的跨平台語言,可以在多種平台上運行。支持開源。大量的類庫。大量的開源項目。是一種非常強大的編程語言!
* JavaScript Javascript是一種由Netscape的LiveScript發展而來的腳本語言
* J# Visual J# 是一種工具,供 Java 語言程序員用於構建在 .NET Framework 上運行的應用程序和服務
* LISP 一種基於λ演算的函數式編程語言。
* Lua Lua 是一個小巧的腳本語言
* LOGO 是一種早期的編程語言,也是一種與自然語言非常接近的編程語言,它通過「繪圖」的方式來學習編程
* Mole 在軟體工程中,指較高一級程序或模塊使用的一個單元或模塊
* Nuva Nuva語言是一種面向對象的動態腳本語言 Nuva語言的設計目的是用於基於模板的代碼生成
* Perl Perl 一般被稱為「實用報表提取語言」(PracticalExtraction andReportLanguage),也做「病態折中垃圾列表器」(PathologicallyEclectic Rubbish Lister
* PHP PHP 是一種 HTML 內嵌式的語言
* PL/I PL/I是Programming Language One的簡寫。當中的「I」其實是羅馬數字的「一」。它是一隻IBM公司在1950年代發明的第三代高級編程語言
* Prolog Prolog(Programming in Logic的縮寫)是一種邏輯編程語言
* Python 是一種面向對象的解釋性的計算機程序設計語言,也是一種功能強大而完善的通用型語言
* R R是用於統計分析、繪圖的語言和操作環境
* Ruby Ruby,一種為簡單快捷面向對象編程(面向對象程序設計)而創的腳本語言
* Scheme Scheme,一種系統設計語言,由LISP語言發展而來,屬於lisp的一種方言。與其他lisp不同的是,scheme是可以編譯成機器碼的。Scheme的一個主要特性是可以像操作數據一樣操作函數調用
* Smalltalk 一種面向對象的程序設計語言 一種程序設計環境 一個應用開發環境(ADE)
* Tcl/Tk 是一種 腳本語言
* Visual FoxPro Visual FoxPro原名FoxBase,是美國Fox Software公司推出的資料庫產品 [編輯本段]編程工具關於C++的: CFREE(初學者適用),VC,MyC++,Magic C++,DevC++
關於JAVA的:JBuilder、Eclipse、NetBeans IDE、JCreator +J2SDK、JDK、Tomcat、Weblogic、JRun
關於C#的:VS2008,SharpDevelop
關於Delphi的:delphi2005
B. 為什麼開發出了這么多的編程語言
C#與JAVA的相同之處:由於C#與JAVA都是基於C++發展起來的,因此二者之間具有很多相似之處,具體如下:
1、C#和JAVA語言的編譯結果是獨立於計算機和編程語言的,可執行文件可以在受管理的執行
環境中執行;
2、C#和JAVA語言都是採用了自動的垃圾回收機制;
3、C#和JAVA語言都取消了指針操作;
4、C#和JAVA語言都沒有頭文件;
5、C#和JAVA語言都只支持單重繼承,要實現與多重繼承類似的功能,必須通過介面來實現;
6、類都是從Object類派生而來,類的對象通過關鍵字new生成;
7、C#和JAVA語言都支持線程;
8、C#和JAVA語言都沒有全局變數和全局函數,所有的變數和函數都屬於某個類所有;
9、C#和JAVA語言都支持對數組和字元串邊界的嚴格檢查,不會出現邊界溢出的情況;
10、C#和JAVA語言都使用「.」操作符,不再使用「->」和「::」操作符;
11、C#和JAVA語言都將null和bool作為關鍵字;
12、C#和JAVA語言中所有的值都必須先初始化後才能使用;
13、C#和JAVA語言中的if語句都不允許採用整數作為判斷條件;
14、C#和JAVA語言中的try語句塊都可以後接finally語句塊。
C#與JAVA的不同之處:
盡管C#和JAVA有很多相同之處,但是由於二者是兩家不同公司開發的高級程序設計語言,它們又相互獨立,
自成體系,各自具有一些自己特有的特點,下面將C#與JAVA之間的不同之處如下:
1、屬性
對於那些經常使用快速開發工具,如Delphi或者Visual Basic的開發人員來說,屬性是一個非常熟悉的概念。
一般來說,通過getXXX可以讀取屬性的值,而通過setXXX可以設置屬性的值。
JAVA中比較常見的屬性操作語句: foo.setSize(foo.getSize()+1); label.getFont().setBold(true);
c#中比較常見的屬性操作語句: foo.size++; label.font.bold=true;
很明顯,上述的屬性設置方式較JAVA來說更為簡潔,可主讀性也更強。這充分體現了C#簡單的特點。
JAVA對於屬性的定義:public int getSize(){ return size; } public void setSize(int value){ size=value; }
c#對於屬性的定義進行了簡化:public int Size{ get{ return size; } set{size=value; }}
2、index
C#提供index來給對象加上索引的功能,從而用與處理數組類似的方式來處理對象,JAVA語言則不支持index
C#中定義index的典型方式如下:
public Story this[int index]
{
get{return stories[index]; }
set{
if(value!=null){
stories[index]=value
}
}
3、delegate :可以認為是一種類型安全、面向對象的函數指針。
C#使有delegate可以通過一個名字訪問不同的函數,它實現和JAVA中的interface類似的功能,但是它比interface更為好用。
4、event
C#提供對event的直接支持,它通過delegate和event關鍵字實現對事件的處理。event關鍵字隱藏所有delegate方法,運算符「+=」和「-+」允許程序員自由加入或者刪除時間處理程序。
5、enum:枚舉用於指定一系列的對象。
C#通過如下語句來定義和使用枚舉:
定義:public enum Direction{North,East,West,South};
使用:Direction wall=Direction.North;
JAVA不直接支持枚舉,如果要實現和C#相類似的功能,必須先定義一個類
public class Direction{
public final static int NORTH=1;
public final static int EAST=2;
public final static int WEST=3;
public final static int SOUTH=4; }
在定義了Direction類後,JAVA可以通過引用類中的值來使用枚舉:
int wall= Direction.NOTRH;
6、foreach語句
C#提供了標準的for循環,同時還提供了foreach語句(從VB中引入)來循環處理集合中的元素。
JAVA遍歷集合中的所有元素的典型處理方式如下:
while(!collection.isEmpty())
{
Object o=collection.get();
connection.next();
…
}
C#遍歷集合中的所有元素:foreach(object o in collection){…}
7、統一數據類型:
大多數的高級程序設計語言都有基本數據類型,如整型、浮點類型等。同時,為了更好地滿足實際的需要,對不同的數據類型有不同的處理方式,顯然,如果能夠對簡單數據類型的處理和對復雜數據類型的處理結合在一起,並用一致的方式加以處理的話,無疑會大大提升應用程序設計的效率,增強程序設計的靈活性。
JAVA語言在處理基本數據類型的時候也採取分別處理的策略,但是在基本數據類型的基礎上提供了一系列封裝這些基本數據類型的類,例如:整型(int)被類Integer所封裝,雙精度浮點(double)被類Double封裝。
C#提供了一種和JAVA不同的方式來實現數據類型的統一。事實上,在c#中,即使是int這樣的簡單數據類型在C#內部也是通過一個結構體Int32來實現的,在C#中,可以這樣認為,int只是結構體Int32的一個別名。由於C#中的結構體也繼承自類Object,這樣,Object類中定義的方法,各個結構體也擁有,於是,在C#中可以通過如下的方式來操作整數:int I=5; System.Console.WriteLine(i.ToString());
8、操作符重載
通過操作符重載可以用一種比較自然的方式來操縱各種數據類型,從而大大提升程序的可讀性和靈活性。C#中的「==」操作符在Object類中進行了定義,在Object中定義的==操作符通過比較兩個值的引用來獲得最後的結果。如果使有和集合相關的類,則必須在這樣的類中實現ICompar介面,這個介面中定義了一個方法CompareTo,該方法返回兩個對象的比較結果,在此基礎上,可以進一步定義各個實現比較的操作符,如
「>」、「<」、「>=」、「<=」等。事實上,數字類型(int、long等)可以直接使用這些比較操作符,它們的內部都實現了ICompare介面。
9、多態性
虛似方法提供了多態性的技持。多態意味著派生類可以定義一個和基類中同名的方法。盡管JAVA和C#都支持多態性,但是它們的具體實現方式還是有一定的差別。
在JAVA語言中,默認情況下,基類的對象可以直接調用派生類中的虛似方法,在C#語言中,基類要調用派生類中的虛似方法必須通過virtual關鍵字來實現。同時,在C#語言中,一個方法要重載基類中的同名方法,還必須通過關鍵字override來實現。在C#中實現多態的典型程序如下:
Class B{ public virtual void foo{}}
Class D:B{ public overried void foo(){}}
以上只是簡單地比較了C#和JAVA之間的異同,事實上,這二者之間的比較遠不止上面所介紹的內容,要學好這兩種語言,需要經過大量的實踐工作,在實踐中區分開兩種語言
C. 繼續學習編譯原理的意義是什麼
對於學習一個什麼的意義,就像跟人生有什麼意義一樣。這是一種很空泛的東西啊,非常的主觀。你喜歡這樣東西,你就覺得他做起來有意義,如果你不喜歡的話,那你就覺得做起來沒有意義了。如果你的專業是學的編譯原理。那你也對他非常的有興趣,那麼你繼續學的意義當然就是因為你喜愛,所以說你繼續,這就是意義啊。
所以說就學習的東西而言,你說的。所以說。就學習的東西而言,你學的越多,對你自己的好處就越多。這可不就是學習的意義了嗎?讓你自己懂得了更多的知識,這份支持還可以給你帶來很多的經濟效益。這是多麼美好的一件事情啊。
D. 有沒有可見即可得的 LaTeX 編譯器
可以,我可以將TeX的輸出模塊改成可以輸出到GDI的形式。但這只是即時顯示。但是,可見即可得。則是另外的一個概念了。這和畫畫一個道理,你畫到哪裡,那幅畫上的痕跡就在哪裡。TeX/LaTeX的典型用法就是開一個編輯器,然後編輯器裡面可能有一些快捷鍵或者按鈕,能夠觸發一個命令將你正在編輯的文件交給編譯器編譯。但是這個和所見即所得完全沒有關系。這是在編程的感覺。
所謂所見即所得,這種東西起碼看起來得失MS Word/WPS的感覺。這種東西確實有,比如LyX和TeXmacs,用起來和TeX的感覺不是太一樣的。如果不著急,可以試試這兩個東西。不過要有一個預警給你,就是後者的某些版本會特別卡。商業版本的是Scientific Word/WorkPlace和BaKoMa TeX,不過價格不菲罷了。
所見即所得的缺點很明顯,就是需要大量的人工調整。這一點在你使用的時候必須要知道。
E. 用ipad編程能行嗎
總體來說還是比較麻煩的,vscode有在線版,但是編程需要調試,調試你需要有一台自己的伺服器。你應該是學生,可以考慮使用騰訊或者阿里的雲伺服器,直接用輕量級就行,然後走vscode remote進行開發,總體來說有些脫褲子放屁的感覺。你真的有這種便攜性,不如買個surface,如果一定喜歡iPad,可以考慮iPad+MacBook Air,總體來說都要比iPad編程要好很多。
編程拼的是,編程環境對寫的代碼的靜態編譯能力,也就是說,編程環境越智能,代碼提示能力越強,佔用內存越大,比如我是c加加程序員,用的vs測試版,一個cpp文件就幾百m的內存。同時開兩個工程的話16g內存都吃緊。所以說,ipad是可以買來順帶學編茄模程的,畢竟看個視頻教程或者文檔還是夠用的。就像我當年買個平板想要上山鍛煉身體的時候寫代碼,結果,這幾年山都沒上,身體也沒鍛煉成。平板就閑置了,每年就定期沖沖電。防止電池壞掉。
另外,說說重量的事情。如果你要做編程,不可能用 iPad 的屏幕鍵盤,一定是要配一個實體鍵盤Magic Keyboard的,那個實體鍵盤還是有相當的重量的,我們家那個 iPad Pro + 鍵盤現在被娃征去上網課+玩 Scratch 去了,我單手拿著也並不輕松。最後,以上觀點並不絕對,初學者在手機上運行貪吃蛇之類的代碼我也有試過,得看本人對於編程的需求在哪裡。