假如一個(gè)人java、.net、php同時(shí)都熟悉的話,還有沒(méi)有必要學(xué)習(xí)python?
網(wǎng)友解答: 程序員掌握多門(mén)編程語(yǔ)言是非常正常的事情,因?yàn)槌绦騿T往往要應(yīng)對(duì)不同的開(kāi)發(fā)場(chǎng)景,而不同的開(kāi)發(fā)場(chǎng)景往往需要使用不同的編程語(yǔ)言,所以程序員往往就需要根據(jù)開(kāi)發(fā)場(chǎng)景來(lái)選擇語(yǔ)言,熟悉多門(mén)編
程序員掌握多門(mén)編程語(yǔ)言是非常正常的事情,因?yàn)槌绦騿T往往要應(yīng)對(duì)不同的開(kāi)發(fā)場(chǎng)景,而不同的開(kāi)發(fā)場(chǎng)景往往需要使用不同的編程語(yǔ)言,所以程序員往往就需要根據(jù)開(kāi)發(fā)場(chǎng)景來(lái)選擇語(yǔ)言,熟悉多門(mén)編程語(yǔ)言就變得比較正常了。
Python的應(yīng)用場(chǎng)景主要集中在Web開(kāi)發(fā)、大數(shù)據(jù)和人工智能領(lǐng)域(機(jī)器學(xué)習(xí)、自動(dòng)推理、自然語(yǔ)言處理等)。如果要做Web開(kāi)發(fā),因?yàn)橐呀?jīng)掌握了PHP,就沒(méi)有必要再學(xué)習(xí)Python了,因?yàn)镻HP在Web開(kāi)發(fā)領(lǐng)域的解決方案是非常成熟的。如果做大數(shù)據(jù)開(kāi)發(fā),如果已經(jīng)掌握了Java,也沒(méi)有學(xué)習(xí)Python的必要,因?yàn)槭褂肑ava完全可以應(yīng)對(duì)大數(shù)據(jù)開(kāi)發(fā)場(chǎng)景。
但是,如果要做人工智能方面的開(kāi)發(fā),比如自然語(yǔ)言處理、自動(dòng)推理、機(jī)器學(xué)習(xí)、計(jì)算機(jī)視覺(jué)等方面的開(kāi)發(fā),就需要學(xué)習(xí)Python了,因?yàn)樵谶@些開(kāi)發(fā)場(chǎng)景下,Python有比較明顯的優(yōu)勢(shì)。Python的優(yōu)勢(shì)集中在三點(diǎn),分別是開(kāi)發(fā)方便、調(diào)整方便、整合方便。
由于Python有大量的庫(kù)可以使用,所以在做人工智能方面開(kāi)發(fā)的時(shí)候會(huì)比較方便,比如在機(jī)器學(xué)習(xí)領(lǐng)域比較常見(jiàn)的Numpy、Matplotlib、Scipy,這些庫(kù)使得使用Python做機(jī)器學(xué)習(xí)開(kāi)發(fā)非常方便。
由于Python語(yǔ)法上的簡(jiǎn)單性,以及語(yǔ)言自身的靈活性,使得代碼的調(diào)整也很方便,而使用Java做功能調(diào)整則是一件比較麻煩的事情。另外,Python語(yǔ)言自身的資源整合能力也非常強(qiáng),所以也把Python稱(chēng)作為“膠水語(yǔ)言”。
隨著大數(shù)據(jù)和人工智能的發(fā)展,目前學(xué)習(xí)Python的人越來(lái)越多,很多Java程序員都開(kāi)始學(xué)習(xí)Python,因?yàn)槟壳笆褂脵C(jī)器學(xué)習(xí)的方式來(lái)做數(shù)據(jù)分析是一個(gè)流行趨勢(shì),這時(shí)候掌握Python語(yǔ)言就變得有必要了。
對(duì)于有編程基礎(chǔ)的程序員來(lái)說(shuō),學(xué)習(xí)Python是一個(gè)比較輕松的過(guò)程,我在學(xué)了大概3天之后就開(kāi)始嘗試使用Python做機(jī)器學(xué)習(xí)開(kāi)發(fā)了,然后就一邊用一邊學(xué)。
我在酷米上寫(xiě)了關(guān)于學(xué)習(xí)Python的系列文章,感興趣的朋友可以關(guān)注我的酷米號(hào),并查看相關(guān)文章,如果有Python方面的問(wèn)題,也可以咨詢我。
謝謝!
網(wǎng)友解答:這個(gè)問(wèn)題不用糾結(jié)。因?yàn)椴粫?huì)出現(xiàn)這個(gè)問(wèn)題。
不同的語(yǔ)言平臺(tái),有不同的語(yǔ)法特性,包括構(gòu)建流程等都有部分設(shè)計(jì)理念方面的差異。不過(guò)最終的結(jié)果是:不同語(yǔ)言平臺(tái)有各自的擅長(zhǎng)領(lǐng)域!小部分原因是語(yǔ)言特性,大部分是歷史原因和生態(tài)方面的原因。
假如一個(gè)人java、.net、php同時(shí)都熟悉(請(qǐng)注意我假設(shè)這個(gè)熟悉是有含金量的熟悉,而并非簡(jiǎn)歷上的客套話),那他應(yīng)當(dāng)在這幾門(mén)語(yǔ)言中至少有一門(mén)略有造詣。由此衍生,他應(yīng)當(dāng)知道相關(guān)的核心知識(shí)點(diǎn),包括并不限于運(yùn)行時(shí)、基礎(chǔ)類(lèi)庫(kù)、常用三方庫(kù)、基于語(yǔ)言平臺(tái)的各種應(yīng)用程序模型、語(yǔ)言平臺(tái)在主流應(yīng)用場(chǎng)合的優(yōu)劣勢(shì)。上面描述的語(yǔ)言平臺(tái)特點(diǎn),相信他已經(jīng)有足夠的經(jīng)驗(yàn)水平來(lái)做判斷。所以他不會(huì)提這個(gè)問(wèn)題。
相對(duì)的,如果一個(gè)人只顧掌握多門(mén)語(yǔ)言,然后都只是皮毛程度,那就真有可能提這種問(wèn)題了。我面過(guò)一個(gè)人,簡(jiǎn)歷寫(xiě)了精通十幾門(mén)語(yǔ)言,我被驚艷了!然后問(wèn)他最擅長(zhǎng)的語(yǔ)言,提了一個(gè)我認(rèn)為比較基礎(chǔ)的問(wèn)題,他完全答不上來(lái)。為了不錯(cuò)過(guò)真正的人才,我又問(wèn)了一個(gè)線程方面的基礎(chǔ)問(wèn)題,這次,我果斷結(jié)束了面試。
題主所說(shuō)的java、.net亦或是更多的語(yǔ)言,只要任何一門(mén)到了熟練掌握的程度,在市場(chǎng)方面都是比較搶手的。其它語(yǔ)言更多是根據(jù)需求和興趣來(lái)擴(kuò)展的。在需求方面,大部分情況下,只需要你能閱讀代碼和構(gòu)建項(xiàng)目即可。這種情況,你會(huì)十門(mén)以上的語(yǔ)言也很正常!
個(gè)人建議如果精力有限,可以掌握C(C++)、Java、Python這個(gè)組合,其它的語(yǔ)言,隨你的興趣就行。掌握C或者C++對(duì)于你理解更底層的原理有很大幫助,比如操作系統(tǒng),比如通信協(xié)議。而Python,曾被稱(chēng)作“膠水語(yǔ)言”,目前最大的優(yōu)勢(shì)是大數(shù)據(jù)和人工智能方面的生態(tài),這個(gè)你上Github了解下便知道了。