開放源代碼的必要性程序有多少,看看字處理程序是多少
2021-10-20
本文原作者為:tomz。tomz的網(wǎng)頁:
開源的必要性
在介紹編程語言之前,先說一下開源的必要性?,F(xiàn)在,在軟件生產(chǎn)領域存在著巨大的智力浪費,每個人都將大量精力花在編寫別人已經(jīng)實現(xiàn)的程序代碼上??纯从卸嗌傥谋揪庉嬈?,有多少ftp程序,有多少文字處理程序。盡管這些程序不同,但它們的主要功能是相同的。實現(xiàn)個性化的功能,修改現(xiàn)有軟件會節(jié)省多少時間!分別編譯每個程序會浪費多少時間?如果沒有這種重復的工作量,全世界的程序員至少可以節(jié)省80%的工作量。同時,開源代碼也方便了大家的交流。
要開源代碼,以下幾點更為重要:
語言統(tǒng)一:如果每個人都使用一種編程語言,相同的功能,相同的庫,那么每個人都會有很多共同的語言。每個人只要學會一門語言,一套函數(shù),一套庫,就可以閱讀理解對方的源碼。這樣,學習量最少;但是不可能統(tǒng)一語言,因為所有語言都有自己的特點。, 如果利用其中一個優(yōu)勢,通常會犧牲另一個。但是,學習一個新的 API 會浪費程序員大量的時間和精力,尤其是當這個 API 有很多與其他 API 重疊的功能時。
要增加代碼的復用性,必須從以下幾點入手:
語言功能的強大可以從以下幾點看出:
語言友好:
多種語言選擇
如果你正在編寫一個對性能要求苛刻或與操作系統(tǒng)緊密結合的程序,你必須選擇C。
如果您編寫的程序可以隨處使用,請選擇 Java。
如果編寫大型程序,可以的話盡量使用Ruby等腳本語言,不行的話就用Java和C。因為腳本語言帶來了生產(chǎn)力。
用 Perl 或 Ruby 編寫文本處理程序。
用于編寫知識處理程序。
用 Lisp 編寫最靈活、最晦澀的程序。
使用 vba 編寫程序。
編寫服務器端程序,PHP、(用你熟悉的語言編寫,如Perl、Ruby)、CGI、ASP和(如果你熟悉Java)JSP都是選擇。
用vb,或者寫數(shù)據(jù)庫程序。
進行算法研究、設計和使用。
多種語言選擇
如果要追求性能和程序能力,充分利用操作系統(tǒng)的能力,最好使用C/C++語言。在類 Unix 環(huán)境中使用 VC 或 gcc。
如果不是追求與操作系統(tǒng)的完美融合,而只追求性能,還追求跨平臺,那么還是選擇C,但是可以選擇跨平臺的庫,比如qt、gtk、fox、。如果您想編寫游戲,還有一個跨平臺選項:SDL。
如果對C領域標準的不一致不滿意,對C不滿意的人容易出錯,對C的面向對象特性不滿意的人不透徹。如果不關心跨平臺,平臺可以選擇C#,mac平臺選擇(-C)。如果需要跨平臺,可以選擇Java。
如果您需要跨平臺和廣泛的支持,請選擇 Java。
在類 Unix 下,最方便的工具語言是 Perl,它有強大的社區(qū)和代碼庫支持。
如果只是作為簡單應用的工具語言,Ruby 是更好的選擇。它們的跨平臺移植性好,應用廣泛。其中比較適合入門和交流,也有利于長期使用。Ruby 是另一種不滿的選擇,它提供了許多額外的功能。
如果要選擇程序的嵌入式語言,以前有Lisp和Java,現(xiàn)在也可以選擇Ruby。
如果你要求動態(tài)解釋執(zhí)行語言,但又不想學習其他語言,C程序員的選擇是pike,Java程序員的選擇是。
在Java平臺上,如果你想使用腳本語言,你可以使用它。
最正統(tǒng)的基于文檔的語言或動態(tài)頁面語言是。
最專業(yè)的服務器端語言是 PHP,當然還有很多其他的選擇。
最著名的 XML 語言是 XUL,dtml 也算是其中之一。您還可以將 XML 用作您自己的專用語言。例如,您可以使用 XML 作為模式定制語言。XML 語言是一個比較先進的趨勢,在特殊領域比現(xiàn)有語言更高效。
對于易于實現(xiàn)的語言,Lisp 和 Tcl 是選擇。
Lisp 集成數(shù)據(jù)和程序的能力和自由是其他語言所不具備的。現(xiàn)在有一個 Lisp 的現(xiàn)代變體:
如果需要基于事實的編程,那么 sum 是不可避免的。
我為什么選擇
首先聲明我只編譯應用程序,這是一個代替我自己工作的小程序。如果您編寫系統(tǒng)程序,您將始終使用 C 或 Java。
我喜歡腳本語言。腳本語言無需編譯即可運行,非常容易修改。編程是一項常規(guī)活動。程序編譯后,一直在修改。沒必要認真做和編譯。另外,使用該腳本的每個人都可以隨意修改它,無需尋找源代碼。因此,C/C++ 和 Java 被排除在外。
我喜歡簡單的語言。我不喜歡為了編寫簡單的程序而學習很多復雜的規(guī)則。需要大量學習的語言不是一門好語言。它將人視為機器。C/C++ 和 Java 都有嚴格但 的語法編程語言圖案,并且有你永遠學不完的函數(shù)、類和庫。當人們看到它時它很大。而且 Perl 有各種奇怪的速記符號,程序經(jīng)常讓人頭暈目眩。簡單的含義不僅簡單易學,而且功能豐富。常用的東西要早準備好,大家不用寫同樣的數(shù)據(jù)結構程序。有豐富的數(shù)據(jù)類型、完整的面向對象結構、正則表達式等方便的編程模塊。邏輯是,如果程序做得更多,人們就會做得更少。如果程序做得更少,人們就會做得更多。這是用戶友好性的問題。易于使用和豐富的功能是程序設計的一個非常重要的目標,它很受歡迎。這也很好地反映了這一點。而且 Perl 與 Unix 等其他工具一樣強大,但它太難學習和理解。這是非常違背人性的。
關于性能。現(xiàn)在CPU非常強大。除大型程序和系統(tǒng)程序外,無需關心性能。
關于功能。如果你不是在寫系統(tǒng)程序和接近系統(tǒng)的程序,就沒有必要使用操作系統(tǒng)專門提供的功能。C可以做任何事情,但它的編程效率低且復雜。
至于我為什么不用vb,因為vb太大了。我不需要實現(xiàn)一個小功能來啟動這么龐大的程序。太夸張了。另外,VB沒有類繼承。雖然是應用程序編程,但是如果你想編譯一個稍微大一點的程序,你總是會使用類繼承。
它必須強大且可擴展,這樣正確的學習才不會被浪費。經(jīng)過簡單的處理,可以使用各種C、C++庫編程語言圖案,也可以被C、C++調(diào)用。可以直接使用Java類,也可以直接通過Java調(diào)用。這樣,yes、Java、C的學習和使用經(jīng)驗就不會浪費了,可以相互補充??梢蕴岣逬ava和C的編程效率,可以補充Java和C的功能不足。您還可以直接與內(nèi)置的 Tcl 交互。我期待簡單地調(diào)用 Perl 和 PHP 函數(shù)。可以使用 Lisp 和更好。
Ruby 和 Ruby 的比較
與Ruby類似,相比Ruby的優(yōu)勢,它可以實現(xiàn)列表中的條件語句和循環(huán)語句。Ruby 使用“塊”來實現(xiàn)這個功能,更加靈活和通用。Ruby 有條件語句、循環(huán)語句等,功能類似于 Lisp。句子的表達能力更強。自帶一些Unix工具,如raCC等。對比Ruby的缺點
和 Ruby 語言選擇
從簡單到好,選擇就對了。適合尋找簡單語言的人,這樣很可能會引起更多的人氣,所以有更多的支持。但是如果你想追求更強大的語法功能,對編程語言感興趣,想了解各種編程概念,Ruby 是一個不錯的選擇。Ruby 和兩者都想取代 Perl,解決 Perl 的缺點——面向對象的不足,但方法是混合面向對象和過程式編程語言。Ruby 是一種面向對象的語言,它允許自己偽裝成一種過程編程語言。
多種腳本語言的統(tǒng)一與問題
現(xiàn)在腳本語言太多了,有必要整合一下,這是個好主意。.NET 也是一個好主意。為各種腳本提供統(tǒng)一的虛擬機,為各種腳本語言提供基于“類”的相互調(diào)用,為各種腳本提供統(tǒng)一的類庫。
現(xiàn)在各種腳本語言只給C語言提供交互性,而這種交互性也是費力且無效的。比如Perl、Ruby等,都為C提供了交互功能,腳本語言之間的交流有很多障礙。和 .NET 類似的東西為各種腳本提供了一種非常簡單的方法來相互使用,避免了大量的代碼重復。這個標準平臺的力量是巨大的。為什么這個標準平臺沒有首先出現(xiàn)在開源領域?眾多的腳本是開源的特點和優(yōu)勢。為什么微軟要解決這個問題?之前有人問過類似的問題。為什么國內(nèi)至今沒有好用的類似ODBC的東西?
也許只有商業(yè)公司才有能力實現(xiàn)這種整合。
我的理解是,如果有創(chuàng)新想法的人會用他的想法來賣錢,那么開源中只剩下模仿者。kde在模仿,在模仿,在模仿Unix,gcc,bash等等都在模仿,如此等等,也在模仿,SDL也在模仿。我想知道開源社區(qū)有沒有自己的創(chuàng)新?我所知道的創(chuàng)新是zope,但是zope最初是一個商業(yè)產(chǎn)品,然后它被開源了。Perl 是創(chuàng)新,創(chuàng)新,但還有什么?開源領域只有一個,不是嗎?
.NET介紹
.NET 實現(xiàn)的 Java 功能
代碼可控,跨平臺虛擬機和偽代碼,免費的命令行編譯器,純面向對象語言支持XML和XML web,為jsp對應的asp.NET網(wǎng)頁上的程序提供統(tǒng)一的中間件環(huán)境。
Asp.NET 和jsp 不是同一級別的Web 技術。Asp.NET 使用完整的事件響應機制。對于類似的技術,只有 JSF 和 Asp.NET 具有可比性。
.NET 中未實現(xiàn)的 Java 功能
免費集成開發(fā)環(huán)境,多廠商支持,跨平臺成熟
免費IDE,#,ASP.NET有MS和免費開源CLR實現(xiàn),MS自帶XP,Mac OS下實現(xiàn)(原理演示不能用于商業(yè)應用),版本下的Mono項目已經(jīng)發(fā)布,即將發(fā)布2004 年 6 月 30 日;還有一個 .NET 的 GNU 實現(xiàn)?。?/p>
.NET 實現(xiàn)的 Java 中不可用的功能
多語言支持強大的集成開發(fā)環(huán)境。它的速度可與本機程序的速度相媲美。支持 COM,繼承與圖形和直觀的表單、Web 表單和服務器端程序編程。
相對于 vs6 的改進
集成開發(fā)環(huán)境統(tǒng)一,使C++程序也對vb友好。
XML各種技術介紹:RDF:SVG:::XML-rpC和soap:XUL:xaml:
最先進的XML格式圖形界面程序開發(fā)工具-XUL
程序大家都知道,僅次于IE的瀏覽器,很多人都知道它有開源版本。但是很多人只是使用它,并不知道另一個重要的功能——程序開發(fā)。開源代碼三年后,1.0版本還沒有出來。很多人嘲笑他超慢的發(fā)展速度。事實上,一個超酷的新產(chǎn)品正在醞釀中,可以算是軟件開發(fā)工具的開發(fā)。一個里程碑。
基于瀏覽器的三層開發(fā)結構現(xiàn)在很流行,微軟對.NET的思考就是基于這種結構。此外,無論服務器結構如何,即使是基于網(wǎng)頁的小程序也非常吸引人。這些產(chǎn)品的想法是使用 HTML 作為用戶界面,但開發(fā)人員經(jīng)常擔心 HTML 過于粗糙。而 XUL 解決了這個問題。
XUL 是 HTML 的擴展,與 HTML 完全兼容。XUL 在 XML 格式的基礎上對 HTML 進行了擴展,實現(xiàn)了完整而強大的圖形用戶界面設計功能??梢栽O計復雜的圖形界面程序。其實整體就是XUL設計的。XUL使用Css控制界面風格,DTD替換字符串,方便本地化。用于響應用戶界面的操作,提供基本的邏輯編程,通過對象文檔界面DOM動態(tài)控制用戶界面。同時通過調(diào)用提供的豐富的底層API實現(xiàn)強大的功能。為文件操作、網(wǎng)絡操作、圖形操作等操作提供了強大的API,并且這個API是完全跨平臺的。最后,
總結: XUL 提供了最強大的用戶界面定制,因為它與 HTML 兼容,而 DTD 提供了最方便的本地化。XUL、RDF 提供顯示、邏輯和數(shù)據(jù)的分離。底層API提供強大的跨平臺編程能力。
希望大家關心。
最接近人類語言的編程語言——
有關詳細信息,請參閱。以下是我的印象。
缺點是顯而易見的。它是商業(yè)公司的產(chǎn)品。它只能像 Java 一樣免費使用。但它不是開源的。并且它的數(shù)據(jù)庫連接函數(shù)庫是收費的。但它的優(yōu)勢也非常明顯。如果因為不是開源軟件而不能放心使用,也可以欣賞和借鑒它的各種特點,懂了就忍不住用起來。
第一個是Lisp語言的替代品,可以實現(xiàn)Lisp的所有功能。它具有Lisp語言對數(shù)據(jù)和程序的處理相同的特點,以及句子和表達的統(tǒng)一性。但它極大地打破了 Lisp 的局限性。它允許中綴運算符的形式?jīng)]有醒目的括號,這與一般編程語言中的表達式完全相同。同時擁有豐富的庫,完備的圖形界面庫,完備的網(wǎng)絡庫。因為是公司的產(chǎn)品,所以也保證了庫的統(tǒng)一性。
自稱為網(wǎng)絡編程語言,其網(wǎng)絡編程能力很強。一般一句話就可以下載一個文件,或者下載一個網(wǎng)頁,或者接收一封郵件。
一個神奇的功能是它的圖形界面設計。它的界面編程非常簡單。它根本不使用語句和函數(shù),但就像HTML一樣,它只需要表達核心內(nèi)容。這是由于“方言”的能力。
內(nèi)置“方言”功能。是yacc一樣的語言解析能力。“子語言”可以隨時擴展。
有數(shù)十種內(nèi)置數(shù)據(jù)類型。用它編程時,句子絕對是最精煉的。
可以實現(xiàn)運行類似Java的網(wǎng)絡下載程序的能力,還具有沙箱功能。它比Java更進了一步,有自己的桌面,可以在上面任意啟動各種程序,桌面有豐富的表達和HTML一樣的超鏈接。您可以通過鏈接到功能性網(wǎng)站來使用各種程序,就像瀏覽網(wǎng)頁一樣。因為該語言比Java簡潔得多,而且是一種不需要編譯的腳本語言,它的程序文件很小,更適合網(wǎng)絡傳輸。因為這個神奇的功能,它自稱為操作系統(tǒng)。因為是腳本語言,自然是跨平臺的。它有許多操作系統(tǒng)實現(xiàn)。
另一個特點是語言本身只是一個幾百k的可執(zhí)行文件,所以程序的分發(fā)非常簡單。
最現(xiàn)代的 Lisp 解釋器
Lisp 是一種古老的計算機編程語言。給人的印象是速度慢,輸入輸出能力弱,沒有圖形界面,庫太少,很多功能無法實現(xiàn)。這一切都在手中改變了。
它具有現(xiàn)代語言所具備的大量功能,如嵌入腳本的能力、圖形界面編程能力、面向對象的能力、組件編程能力、正則表達式能力、XML能力、作為網(wǎng)絡的輸入輸出能力服務器和客戶端,以及其他網(wǎng)絡能力,生成獨立可執(zhí)行文件的能力。一個集成的編輯和調(diào)試環(huán)境。但是,它的程序執(zhí)行速度還是稍慢了一些。
當然,它具有所有優(yōu)點,定義語法宏的能力,命名空間的能力,不區(qū)分數(shù)據(jù)和程序的能力,堆棧內(nèi)存管理,無限嵌套,以及用簡單的方式表達所有語句和數(shù)據(jù)“表”。自然而然地具有在程序環(huán)境中存在的永恒能力。這些功能似乎在最新的編程語言中出現(xiàn)??磥砟壳暗木幊陶Z言發(fā)展趨勢是從C語言的方式向更多Lisp特性的方向發(fā)展。就像逐漸擁有Unix已經(jīng)實現(xiàn)的越來越多的功能一樣。
我知道 Lisp 的編程環(huán)境已經(jīng)很好了。
語言印象
令人印象深刻的是,它是一門貫穿整個開發(fā)周期的語言,并且在開發(fā)周期中是可追溯的。它類似于艾達。它是一種類似于 C++ 的編譯型面向對象語言,但更簡單且能夠進行多重繼承。它是C語言中面向對象編程的替代品。
盎司語言
oz介紹,它是一種面向對象、邏輯編程、并發(fā)分布的語言。oz 給我印象最深的是它的多線程功能。一個簡單的 Case 語句可以啟動多個線程。此外,它也是編寫分布式并發(fā)人工智能程序的替代品。
各種語言的選擇以及語言之間的關系
一般用什么軟件,用的軟件語言
以我使用的軟件為例:
要使用,只需使用vba編程。
只需使用編程
使用 zope 只使用編程
如果您使用 gimp,請使用或編程
只需使用或編程
只需使用編程
然后看處理的是什么類型的數(shù)據(jù)
如果您正在處理文件操作,請使用語言。比如bash
如果您正在處理文本文件,請使用 Perl 或 awk。如果您喜歡 Perl 的風格并編譯大型程序,您應該使用 Ruby。
如果您正在處理數(shù)據(jù)庫,只需使用 sed。否則,使用 sql。
如果是對象數(shù)據(jù)庫,可以使用+ZODB,或者Lua,fish
如果通用數(shù)據(jù)庫不能滿足要求,需要專家系統(tǒng),使用
如果您正在處理結構化文本,例如 XML,請使用 xslt。
處理HTML,客戶端使用,服務器端使用PHP
如果您正在處理類似于語言分析的文本,請使用 yacc
如果處理的結果是打印文件或屏幕文件,使用tex
如果是圖像、動畫或其他二進制文件,一般使用C語言。
如果處理問題和操作系統(tǒng)底層,使用C語言
在語言特點上
如果對運行多線程的并發(fā)性和分布性要求極高,可以考慮oz語言。
如果你很看重文檔,希望程序的文檔寫好,程序差不多完成,那就用Cweb
復雜的程序需要在編寫之前用 UML 記錄下來。
如果您想編寫大型程序或計劃只學習一種編程語言,請使用
如果你寫一個程序來處理復雜的數(shù)據(jù)結構和算法,使用Lisp and(類似Lisp的風格,希望更簡單,使用)
如果你想把一種語言最簡單的實現(xiàn)作為嵌入式語言,就用Tcl,如果Tcl有限制,就用Lua
C語言是最流行的語言,但是C語言有一些缺點,因此產(chǎn)生了很多改進C的語言
因為C寫不出大程序,C++誕生了
因為C++也有指針等缺點,所以Java誕生了
如果你不喜歡 C++ 的缺點,想使用編譯型語言,選擇
C語言的缺點之一是標準庫規(guī)模小,不能解決所有問題。產(chǎn)生了大量不兼容的庫,導致許多不可移植的程序。如果您想要一種與 C 相同級別的可移植編程語??言,請選擇 Ada。Ada 的圖形用戶界面庫和各種操作系統(tǒng)相關的庫是標準化的,您可以選擇不同廠商的解決方案。它是軍隊所需的標準編程語言。
如果你不喜歡C語言的繁瑣,并希望你經(jīng)常做的編程可以簡單,那么你可以使用它。為了完成同樣的工作,代碼行數(shù)是 C 的一小部分。
C 風格的腳本語言是 pike
關于圖形用戶界面的選擇
最簡單的圖形界面是tk,可以在各種平臺上使用
如果有更高的要求,使用gtk。Gtk 的可移植性較差。
一個以可移植性為目標的開源 C 庫是
如果你想要簡單的編程并且不是很苛刻,你可以使用XUL
跨平臺的圖形用戶結構是Java的awt和。如果不是跨平臺,還有ibm的Java解決方案。
如果你不排除商業(yè)編程語言,你可以使用qt,因為qt的程序需要付費才能用于商業(yè)用途。
如果你要寫一個全屏的文本界面程序,它是最權威的。我們可以回憶一下,C 的編程環(huán)境與圖形用戶界面一樣友好。它是一個全屏文本用戶界面。
如果你寫一個家庭式的程序,上面的選項也可以考慮。gtk也可以。
>如果您正在處理結構化文本,例如 XML,請使用 xslt。XML 本身也可以計算在內(nèi)。>處理HTML,客戶端,服務端PHP不是唯一的PHP一. >如果處理的結果是打印文檔或者屏幕文檔,使用tex 。>如果是圖像、動畫或其他二進制文件,一般使用C語言。>如果是操作系統(tǒng)底層處理的問題,我會在C語言的C/C++中選擇C++。>如果對運行多線程的并發(fā)性和分布有極高要求,可以考慮oz語言>>語言。20 年后的一門語言。> 如果你寫程序來處理復雜的數(shù)據(jù)結構和算法,使用 Lisp 并且> Lisp 也很流行。
>如果你要寫一個全屏的文本界面程序,它是最權威的。我們>> 可以回憶起C 的編程環(huán)境和圖形用戶界面一樣友好。It> 是一個全屏文本用戶界面。什么,。
或許,語言是用來超越的。許多應用程序需要混合使用不同的語言。我發(fā)現(xiàn)將它嵌入到應用程序中非常誘人。
文學編程與CWEB簡介
CWEB是tex作者創(chuàng)造的一種編程語言。tex 是主流的文檔打印標準和文檔生成工具。tex及相關軟件都是用Cweb編寫的,tex體現(xiàn)了Cweb的編程特點。CWEB的編程思想被稱為“文學編程”。事實上,它應該被稱為“文章編程”,因為它與文學幾乎沒有關系,但類似于學術著作。主要思想是:編程應該像寫學術著作一樣,有一個整體的思路,并以節(jié)、章、節(jié)、小節(jié)、小節(jié)的形式逐步豐富。這實際上類似于我們所說的“自頂向下”的編程方法。但是“自頂向下”只是軟件工程的一種方式,它是通過編寫文檔來實現(xiàn)的,不與編程語言結合。在我看來,CWEB在編程語言中實現(xiàn)了“自頂向下”。
CWEB的實現(xiàn)是“宏替換”,就是用更具體的內(nèi)容逐層替換更一般、更簡潔的內(nèi)容。我們使用的編程工具“”其實是一個宏替換工具(我沒用過,只是聽說)。Zope 的TAL 語言是替換工具,但不是宏替換工具,因為它的內(nèi)容是不可執(zhí)行的。如果內(nèi)容是可執(zhí)行的,那么它也可以稱為宏替換。