App下載

學(xué)編程需要學(xué)linux嗎?linux對編程的影響

馬可波羅包 2021-06-18 11:43:48 瀏覽數(shù) (4773)
反饋

在小編的前面兩篇文章中介紹了學(xué)java和python需不需要學(xué)習(xí)linux。各位細(xì)心的讀者會發(fā)現(xiàn),好像學(xué)習(xí)linux跟編程沒有啥關(guān)系啊,那學(xué)linux有啥用?去做一個(gè)管服務(wù)器的運(yùn)維嗎?非也,小編的這篇文章會讓你發(fā)現(xiàn),部分語言,還真的是需要學(xué)linux的。

首先我們回憶一下java和python不需要學(xué)習(xí)linux的一個(gè)重要的因素:它們都有一個(gè)特性——跨平臺可移植性。這個(gè)特性主要是跟誰區(qū)分的呢。沒錯(cuò),是跟一眾跨平臺需要分別編譯的語言(主要是C/C++這一類語言)。以C++為例,首先不同的操作系統(tǒng)的運(yùn)行時(shí)環(huán)境就有所區(qū)別,代碼也有可能因此產(chǎn)生區(qū)別。因?yàn)槭褂玫木幾g器可能有所不同,所以最后編譯出來的結(jié)果也會有所區(qū)別。一個(gè)很典型的例子,在visual C++6.0版本中允許 ?void main()? 的存在,而且在很多國內(nèi)的c語言的教材中都有所出現(xiàn),但是這樣的代碼不能在GCC編譯器下通過。而且最新的C++語言規(guī)范中也不允許這樣的寫法(微軟的規(guī)范與C++規(guī)范大致方向相同但還是有一定區(qū)別)。而Linux系統(tǒng)使用的是GCC編譯器(也有可能使用別的編譯器,但GCC是linux自家的編譯器(GCC和linux同屬GNU,GCC出現(xiàn)的最初目的就是為linux提供C語言的編譯支持))。所以一個(gè)項(xiàng)目,使用linux和Windows,不僅最后編譯的文件不同,甚至連編譯前的代碼也可能有所不同。這就導(dǎo)致了Windows和linux的代碼之間不能互通。

我們知道,最終項(xiàng)目部署在服務(wù)器上,而服務(wù)器很大可能是linux,所以,最終編譯的代碼,肯定是要能在linux上運(yùn)行的。那么作為開發(fā)而言,最好的解決方式就是使用linux進(jìn)行編程,編譯完代碼后再放到Linux服務(wù)器上,這樣就不會出現(xiàn)不兼容的問題了。

當(dāng)然,針對這個(gè)問題,微軟也作出了很大的努力,visual studio作為地表最強(qiáng)IDE,它其實(shí)是完全支持C++規(guī)范的,之所以會出現(xiàn)略微區(qū)別是因?yàn)槲④洖榱思嫒菀郧耙驗(yàn)闃?biāo)準(zhǔn)不健全而設(shè)計(jì)的產(chǎn)品遺留下來的問題(還是那個(gè)?void main()?,這就是典型的不規(guī)范的c++寫法,但規(guī)范的c++寫法vs也是完全支持的,你會發(fā)現(xiàn)只要GCC能跑的代碼,visual studio都能跑)。不過盡管如此,visual studio也沒有辦法完全抹去Linux的影響,最終還是需要Linux進(jìn)行整合。

以上這種情況如果用一句簡短的話概括,就是,編程語言是跨平臺的,但是它們的系統(tǒng)底層(編譯器和運(yùn)行時(shí)環(huán)境等)并不是跨平臺的,所以這種語言不能跨平臺運(yùn)行,有這種問題的不止c/c++,還有Pascal(Delph) 等語言。

所以,在使用這些不能跨平臺運(yùn)行的語言的時(shí)候,考慮到最終部署的服務(wù)器是linux,最好用linux進(jìn)行編程,而不會使用linux,無疑會對編程產(chǎn)生很大的影響。當(dāng)然了如果使用的是可以跨平臺的語言的話,編程就可以采用Windows編程了。雖然最后部署還是需要linux支持,但是因?yàn)橛袑iT的運(yùn)維負(fù)責(zé)linux的操作,所以使用跨平臺編程語言的小伙伴可以不學(xué)習(xí)使用linux。

以上就是小編對“學(xué)編程需要學(xué)linux嗎”的全部介紹。如果需要學(xué)習(xí)linux,linux微課是一個(gè)不錯(cuò)的選擇,可以幫助各位讀者在較短的時(shí)間內(nèi)掌握linux的基本使用,恰逢618編程獅年中大促,還不抓緊時(shí)間趕緊上車?


0 人點(diǎn)贊