-
1 # 鄧珍林1
-
2 # 扣扣熊
上述3中平臺都可以編寫出你想要的行業軟體,但是如果真的編寫首推C++。
C++完全可以編寫出不錯的行業軟體,因為C++比較底層,可以操作指標、記憶體、硬碟分割槽等。以上特性可以完美處理計算機對應影象處理的高難度需求。看似簡單的影象處理軟體其實對底層演算法有這很高的要求,這時候C++的指標以及對記憶體的直接控制可以幫助軟體提升處理能力與執行速度。順便一提現在很多遊戲中提到的遊戲引擎也是使用C++寫的核心。畢竟C++又叫做“帶類的C語言”。
反觀C#與JAVA就比較高階,他們都在底層的外殼上包裝了一層。JAVA叫做java虛擬機器,而C#使用framework。由於C與C++的超級靈活性,對於軟體編寫的安全性等問題C#和JAVA基本取消了指標這種神一般的型別,取而代之的是委託、繼承、過載。可以說C#\JAVA完全做到了面向物件程式設計,如果使用這2款平臺開發在執行速度上會有所欠缺。
-
3 # 中原一點紅3341
當然可以。用VB都行。當然不考慮程式的冗餘性效率等。說實話,PS等軟體主要考慮的是影象演算法,用什麼開發軟體程式設計倒是其次。
開發軟體很少有不能,只是適合不適合的問題。這個問題已經老生常談n年了
-
4 # 犍為真人
用C++當然可以寫出adobe的軟體,因為它們本身就是用C/C++寫的。這裡我沒有區分C和C++,可以不嚴格地認為後者就是前者的超集。
二八原則我們都聽過,我們多數人可能只用到了adobe的20%的功能,但是它卻可以滿足80%的需求。如果問我們能否用C#和Java去實現這20%最基本的功能,那自然是沒有問題的。現在網上就有用C#寫的影象處理軟體,對標photoshop。
但是一個優秀軟體、專業軟體,它們的競爭力恰好是那普通人很少用的功能。就像一輛汽車一樣,基本功能很多廠家都能做(有的中中國產車可以賣到5萬以下),絕對能滿足多數人80%甚至99%的代步功能。而貴車就強在一些不常用或不必須的功能,安全問題就是其中之一。我們可能一輩子都經歷不了一次車禍,但是遇到了,貴車就更能保命。
我們先以adobe的photoshop為例。基本的影象處理,對於C#和Java來說那都不是事,無非就是載入圖片、縮放、顏色、畫素、儲存等等這些東西。但是,很多人可能沒有意識到,C#和Java是執行在虛擬機器上的,它們的核心程式碼用的就是C/C++。當我們寫一個Jpg載入程式時,你以為你寫的是純粹的C#和Java,而實際上後端的關鍵實現是用的C語言。
為了證實這一點,我特地去網上下載了一份JDK的原始碼,清清楚楚地看到了在某一個native目錄下,放著用C語言寫的JPG處理程式。
除了Jpg,還有zip壓縮、音訊、影片處理也是用的C語言。
網上幾乎很難找到有用純C#和Java寫的JPG處理程式。光是JPG的圖片格式,都可以寫一本書。不是那麼容易的。就算寫出來了,其效能也遠遠不如C/C++。
你可能會說兩點:一、虛擬機器自帶的JPG足夠用了,那本身就是標準庫,是語言的一部分。第二、用純C#和Java去實現JPG等演算法,似乎效能不會低,無所謂。
第一、JVM和.Net framework自帶的JPG能滿足大部分需求,但是一旦涉及最佳化和修改,就傻眼了。而PS專業處理影象,必定需要反覆最佳化。舉個不一定對的例子,或許虛擬機器只能處理某種最最主流的Jpg標準,遇到非主流就無能為力了。
第二、在底層演算法方面,C#和Java是無法與C/C++比速度的。這得益於後者對記憶體的精確掌控。這個具體原因討論起來可以單獨開一個帖子了,就不再展開。只說結論,現在主流的各類語言,在涉及複雜演算法,特別是運算密集型時都用的C和C++(也有用fortran、go、rust的)。JPG、壓縮、加密、MP3、MP4、機器學習,等等。說到機器學習,有人說指令碼語言python不是大行其道嗎?其實python的大部分優秀演算法底層都是C/C++,比如大名鼎鼎的tensorflow。
至於說現在硬體效能很高了,效能低一點無所謂,這就又回到之前的問題了,就是什麼叫專業軟體。一輛5萬的汽車和50萬的汽車,效能差別也是幾乎可以忽略不計。起步塊?動力足?跑高速能飆到180?這就是二八原理了,人們往往反而喜歡這些不太重要的細節。我哪怕起步比你快0.1秒,我也自豪!你先別管我敢不敢跑不跑180碼……專業軟體也是如此,就是快,你別管我快幾秒能幹啥。要的就是體驗……
上面說的還主要是JPG舉例。如果遇到音訊、影片這類專業adobe軟體,C#和Java將更顯得無力。尤其是影片。JPEG,比MPEG-4,完全不在一個難度係數等級,對效能要求也高很多很多。不信?你看看網上能不能找到相關的MP4原始碼,C語言除外。
其實C#和Java也是可以寫出類似adobe的專業軟體,只不過不是純粹的,是要和C/C++結合使用。前者負責寫上層框架,特別是圖形介面,後者負責其中一部分複雜的演算法實現。
-
5 # 外老師
當然可以!
但是如果是我的話,我會選擇C++結合另外兩種語言之一來做:C++做演算法和渲染,C#或者Java做介面和互動。
很多朋友說Adobe主要核心是演算法!
但是我認為不止演算法,還有渲染和互動等等。
演算法確實,演算法是三者當中最重要,最核心的部分!
程式無非就是演算法加資料結構嘛!所以演算法的重要性毋庸置疑。
雖然說很多底層演算法,已經有開源實現,但是開源演算法,有很多是不成熟的,僅僅是有一個實現而已!穩定性,效率,效果不一定能達到商用的要求。
大部分情況下,需要對開源演算法進行改進加強,甚至有時候需要完全重寫!
這需要大量的投入和打磨,是軟體開發過程中非常耗時耗力的工作。在非常多公司,演算法都是最核心的資產,因為這是最值錢,投入最多的資產。
當然,一般情況下,演算法會採用效率更高的語言來做,比如C++。
計算機視覺Adobe的很多軟體是做影象和影片處理的,比如PS,Pr等等。
處理影象,那麼渲染就是非常重要的一環了!
我覺得Adobe在渲染層面的深入研發,不會比演算法弱,至少Adobe有自己的高效渲染引擎,PS,Pr,Ae等等,都離不開這個渲染引擎。
比如Pr,我們在Pr裡面,對影片進行剪輯,新增各種特效,新增字幕等等。
我們的這些編輯操作最終的預覽效果,就是靠這個渲染引擎來呈現給我們的!如果我沒猜錯的話,這個引擎,Adobe是採用的一個三維引擎來實現了。
同理,最後的影片渲染輸出,也是用這個渲染引擎完成的!
所以,渲染在Adobe的軟體系統裡面,也是非常重要的。
同樣,高效的渲染,也需要用高效的語言來做,C++就是非常好的一個選擇。
介面互動我們使用Adobe系列的軟體,不知道大家有沒有發現,這些軟體的介面佈局,操作邏輯都很像。比如大量的工具欄,選項欄,內容呈現的方式,甚至選單的組織形式,都非常類似。
所以我們上手一款Adobe的新軟體,如果你熟悉其他的某一款軟體,那麼上手會比較快,也比較容易。
這就是互動的魅力,準確的說是介面互動。
Adobe有一套成熟的介面框架,通用的互動邏輯,相似的軟體開發套路等等。
當然,互動這個東西,用上層程式語言來開發,開發效率會更高,呈現的效果也更佳 更豐富。
所以介面互動,這個建議使用C#或者Java來做。當然Java的話,需要使用介面框架,比如Java FX。
軟體生態有了演算法,渲染,還有介面互動,是不是就是Adobe軟體的全部了呢!
當然不是,還有很多非常重要的工作需要去做!
其中的重中之重就是架構,或者叫軟體生態。
一套完善的強大的軟體架構,完善的軟體生態,才能保證Adobe系列軟體的高效開發。降低軟體開發和維護的成本。
總結開發一個PS難嗎?難。
但是開發Adobe系列,就更難。
開發一個系列軟體,比開發一款單獨軟體要難非常多。因為你需要構建自己的軟體生態系統!
普通的工作,要做到極致非常難。那麼軟體開發的極致,就是提高模組程式碼複用性,同時降低軟體維護的成本。這是非常難的!
有朋友說Adobe就是入行早,打磨的多而已!沒錯,任何成熟的軟體,都需要時間去打磨,要不然這個軟體很快就死掉了。
所以大家一般不要動不動就要開發一套Adobe全家桶,來替代Adobe!哪有那麼簡單!
-
6 # 莫爾小組
這個問題問得好!
就像問能用粳米、燦米、香米做出可以賣的米飯一樣。
C生萬物,程式設計之本。C語言的第一個應用就是UNIX作業系統。話說那是上古時代的1970年,貝爾實驗室的兩個天才程式設計師丹尼斯.裡奇和肯.湯普森覺得1954年出品的第一個高階程式語言FORTRAN不是那麼好用,於是在就在B語言的基礎上做了更新,B語言也是肯.湯普森編寫的。
C語言的使用者太多了,於是大家都發揮才智,將自己在專案中遇到的問題彙總,有的程式設計師又將自己在專案中完成的部分原始碼貢獻給社群,於是,越來越多的問題和程式碼都彙總到社群中,更多的程式設計師在這裡幫助別人修改程式碼、提供原始碼、製作教程。C語言的庫函式(就是由程式設計師貢獻,其他程式設計師下載後可以自定引數的程式碼)越來越豐富,節約了大量的開發時間。C語言的特點是執行率高、編譯方便。
C++誕生也非常早,也是出自貝爾實驗室,釋出於1983年。與C語言面向過程(按照順序執行)程式設計不同,C++開啟了面向物件(誰可以做什麼事)的程式設計思維。由於大量相容C語言,又增加了類、標準模板等功能,使程式設計更加簡單。C++的特點是支援物件封裝、更新方便、多型性支援等。
C#釋出於2000年,開始對程式語言進行有組織推廣,畢竟是微軟基於C和C++衍生出來的程式語言。由此,想執行C#,就要先建立環境,而環境,就是由微軟主導的.NET Framework和.NET執行環境。經常有使用ghost安裝Windows作業系統時,再安裝某個軟體,卻被提示“系統找不到指定的檔案”、“.NET Framework初始化錯誤”等警報,就是因為ghost的安裝檔案裡沒有,或者.NET Framework的版本太低導致的。C#的特點是面向元件(功能性)程式設計、兼顧系統開發和應用開發等。
JAVA就像現在的Android作業系統一樣,覺得Linux太大了,裡面好多內容用不上,就做了一個簡化版的Linux,隨著使用者體量的增加,Android也開始變得臃腫。JAVE也差不多的過程,由於發行公司Sun Microsys(太陽微系統公司)是做嵌入式裝置的,就是微波爐、衛星接收器、手機等。1990年代的時候晶片(微控制器)可沒有現在這麼強大的處理能力,所以C++好多的功能就不能在微控制器上執行,其實很多功能也用不到,於是就對C++做了一些精簡。後來又移植到計算機上,許多功能又恢復了回來。但也與C#一樣,需要一個執行環境,叫Jave虛擬機器,其它與C++並沒太大區別。搞笑的是,C#其實是原來叫Visual J++,因為Sun公司認為Visual J++違規,所以對微軟進行了訴訟,於是微軟就將新的程式語言改為C#。
程式設計也從來是不某個語言能不能完成某個功能,而要看代價,這個代價可能是時間,可能是擴充套件性,可能是穩定性,可能是開發成本。一家商業公司,肯定要綜合考慮因素,不管是開發還是維護,肯定越方便越好。
最好點一下題,“用C#、C++、Java能編寫出Adobe等級的行業軟體嗎?”,答案是肯定的,能。
-
7 # 哼哼online
這三個都是流行的程式語言,C#和java差不多,因為C#的誕生就是為了對抗java。C++是最完美的語言之一,但是完美的背後是過於複雜的學習和使用過程。
Adobe在紙媒出版界就是主流的軟體供應商,現在的流媒體他們也沒落下,繼續當領導者。不管是哪個型別的軟體,都需要大量的資料型別的準確描述和高效的字處理、位(bits)處理的能力。就這方面來說,C++更有利,執行效率也是最高的,當然最佳的選擇就是C++。
java,C#更適合商用系統的開發就是省開發的錢,花費更多的執行時間,但是需要執行的東西不難,所以也不算耽誤事。
C/C++用於開發工具類的軟體也就是時髦的詞“生產力”,要知道Adobe軟體的演算法和眾多的資料結構是看家法寶,處理這些資料需要大量的運算,這些運算效率高低直接影響“生產率”,所以java、C#開發adobe的全家桶就不太適合。
但凡是不能絕對,要問能不能,那答案就是“能”,手機的影片軟體不照樣做剪輯嘛,但是做個渲染看看電池夠用不?所以最佳選擇是C/C++,java、C#能用,但是不會去用。
回覆列表
1、首先,開啟一個的Adobe Acrobat的檢視pdf的檔案。
2、開啟的pdf的檔案中,點選左側中的附件的選項。
3、選中了附件的選項之後,選中了一個附件的選項。
4、選中了一個的附件的選項之後,點選刪除按鈕。
5、彈出了一個的Adobe Acrobat的視窗中,點選是按鈕。
6、可以看到是對於當前中的附件被刪除成功了