欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java和Python現(xiàn)在都挺火,我應(yīng)該怎么選?

 更新時(shí)間:2020年07月08日 14:23:17   作者:一個(gè)小阿貍  
這篇文章主要介紹了Java和Python現(xiàn)在都挺火,我應(yīng)該怎么選?本文通過(guò)全面分析給大家做個(gè)參考,需要的朋友可以參考下

聲明:這是一篇容易引起撕逼的文章,為了祖國(guó)和諧,人民安康,請(qǐng)各位看官盡量理性討論。同時(shí),這篇文章是面向一些初入行的朋友進(jìn)行一些相對(duì)中肯一點(diǎn)的分析和建議而已,雖然有濃厚的個(gè)人色彩,但我還是盡量以事實(shí)說(shuō)話(huà),以代碼說(shuō)話(huà),大牛們就不要拿自己的牛逼經(jīng)驗(yàn)來(lái)這里裝逼了,當(dāng)然,你如果非得來(lái)跟我撕,哥們兒我奉陪。另外,由于文中以自己所在的機(jī)構(gòu)蝸牛學(xué)院所做的一些事情來(lái)舉例,如果你認(rèn)為這是軟文廣告,請(qǐng)止步于此。強(qiáng)哥打廣告,都是硬的,軟的不來(lái)(做了**還要立**的事哥不屑)。好吧,咱們進(jìn)入正題。

我先問(wèn)大家一個(gè)問(wèn)題,為什么中國(guó)人用刀叉是很容易上手的一件事情,而外國(guó)人用筷子,應(yīng)該是他們?cè)谥袊?guó)吃飯時(shí)最痛苦的一件事情吧。為什么會(huì)這樣呢?

其實(shí)原因非常簡(jiǎn)單,當(dāng)我們學(xué)會(huì)了一門(mén)技術(shù)難度要求更高的技能以后,再去降級(jí)學(xué)習(xí)難度更低的技能是非常容易的一件事情,反之則不然。

這個(gè)道理同樣適用于我們的學(xué)習(xí),對(duì)Java和Python都有較為豐富的使用經(jīng)驗(yàn),當(dāng)然,Java的應(yīng)用經(jīng)驗(yàn)更豐富,代碼量比Python更多一些。

那到底是Python值得學(xué)習(xí)還是Java呢?

這里面有三點(diǎn)我必須說(shuō)破,卻很少有人從這個(gè)角度來(lái)給大家做分析:

如果一個(gè)不懂2-3門(mén)編程語(yǔ)言的人,或者很少使用到Java或者Python,來(lái)告訴你Java好還是Python好,這是赤裸裸的不負(fù)責(zé)任。如果這個(gè)人用Python并且混得還稍微可以,他一定會(huì)告訴你Python好,如果這個(gè)人用Java,他一定會(huì)告訴你用Java好。如果兩個(gè)語(yǔ)言都沒(méi)有用過(guò)的鍵盤(pán)俠,他會(huì)告訴你語(yǔ)言都是相通的,不要糾結(jié)。每一個(gè)人都說(shuō)得好有道理的樣子,于是讓你無(wú)從選擇。強(qiáng)哥熟練使用8種以上的編程語(yǔ)言,所以才稍微感覺(jué)有點(diǎn)資格,來(lái)說(shuō)一說(shuō)這兩門(mén)編程語(yǔ)言。雖然,從我個(gè)人的角度在我心目中,編程語(yǔ)言只有兩種,第一種是Java/C,第二種是其它。但是我不能通過(guò)這種偏激的方式來(lái)誤導(dǎo)大家。我們必須要明白Java和Python的各自定位。Java源自C和C++的技術(shù)體系,于1995年推出,定位于給專(zhuān)門(mén)的程序員設(shè)計(jì)大型的復(fù)雜分布式應(yīng)用而設(shè)計(jì)。

而Python是1991年推出(比Java還早)主要面向于系統(tǒng)管理,科研,教育和非程序員群體等。大家一定要理解清楚一個(gè)現(xiàn)實(shí),這個(gè)世界上并不是只有程序員才需要寫(xiě)程序,還有很多群體需要寫(xiě)程序。比如蝸牛學(xué)院在這方面的定位就很清楚:Java開(kāi)發(fā)全棧方向的學(xué)生學(xué)習(xí)Java編程和JavaScript編程,軟件測(cè)試方向的就業(yè)班學(xué)員學(xué)習(xí)Python(因?yàn)樗麄儾⒎菍?zhuān)業(yè)的程序員群體),而軟件測(cè)試方向下屬的自動(dòng)化測(cè)試開(kāi)發(fā)高級(jí)研修班,是Java/Python兩個(gè)方向同時(shí)存在。那你說(shuō)你覺(jué)得哪個(gè)更好呢?Python比Java早4年出身,但是在國(guó)內(nèi)為什么幾乎到2010年之后,Python才逐漸火起來(lái)呢?原因很簡(jiǎn)單,因?yàn)槲覀兌继F(xiàn)實(shí)了。

由于大數(shù)據(jù)的盛行,由于自動(dòng)化測(cè)試方面的人才需求,以及對(duì)于互聯(lián)網(wǎng)的一些基礎(chǔ)應(yīng)用系統(tǒng)的的開(kāi)發(fā),企業(yè)加大了對(duì)Python人才的招聘力度(當(dāng)然,與Java比還有較大的差距),由于有一門(mén)感覺(jué)很簡(jiǎn)單又能賺大錢(qián)的編程語(yǔ)言出現(xiàn)了,簡(jiǎn)直是人類(lèi)的福音啊,所以火起來(lái)了。這一點(diǎn)與近幾年虛火很旺的Web前端開(kāi)發(fā)很像,其實(shí)絕大部分人沒(méi)什么技術(shù)能力,但是工資卻拿得不錯(cuò)。這不是個(gè)人的原因,企業(yè)也很浮躁,僅此而已,一旦虛火泄了,誰(shuí)能撐到最后?請(qǐng)各位自行腦補(bǔ)。

也不知道大家從哪里得來(lái)的一些“誤導(dǎo)”,覺(jué)得Python簡(jiǎn)單,Java很難,所謂"人生苦短,我用Python"之類(lèi)的。一方面,Python上手的確相對(duì)要快一點(diǎn)而已,僅此而已。解決復(fù)雜問(wèn)題時(shí),沒(méi)有人會(huì)覺(jué)得難點(diǎn)在使用哪門(mén)編程語(yǔ)言上,而是解決這個(gè)具體問(wèn)題的算法思路上。這一點(diǎn)各位務(wù)必要拎清這個(gè)思路。另外一方面,由于Python近幾年的火爆,不排除一些人故意散播一些言論,來(lái)誤導(dǎo)大家使用Python。

這件事情就像這么多年,一直有人覺(jué)得學(xué)習(xí)軟件測(cè)試要容易一些一樣,很多人也是報(bào)著通過(guò)軟件測(cè)試進(jìn)入這個(gè)行業(yè),選擇了一個(gè)自己認(rèn)為沒(méi)有難度的領(lǐng)域進(jìn)入。但是,強(qiáng)哥發(fā)現(xiàn),當(dāng)3,5年過(guò)去了,很多測(cè)試人員目前最焦慮的就是,自己技術(shù)不夠深,在企業(yè)當(dāng)中越來(lái)越?jīng)]有競(jìng)爭(zhēng)力了。所以最終,還是得硬著頭皮研究深層次的測(cè)試技術(shù),無(wú)論是編程,網(wǎng)絡(luò),數(shù)據(jù)庫(kù),協(xié)議,還是自動(dòng)化測(cè)試,性能測(cè)試等。

但是這個(gè)過(guò)程非常痛苦,就像我說(shuō)的那樣,這個(gè)世界上99%的人都會(huì)選擇一條容易走的大路,因?yàn)閼卸?,因?yàn)榭謶帧6晒κ菍儆谀?%的人一樣。這句話(huà)同樣適用于編程語(yǔ)言或者技術(shù)功底的訓(xùn)練上。

其實(shí)大家如果有過(guò)實(shí)際的編程經(jīng)驗(yàn),我們不妨認(rèn)真想想,當(dāng)我們研發(fā)一個(gè)系統(tǒng)的時(shí)候,究竟會(huì)用到哪些技術(shù)?

那些什么需求分析,跟測(cè)試撕逼,跟客戶(hù)撕逼,跟老板撕逼的那些爛事我們就不提了。我們就來(lái)看看純技術(shù)層面的一些基本要求:數(shù)據(jù)庫(kù),Linux命令,網(wǎng)絡(luò)協(xié)議,接口設(shè)計(jì),算法思路,框架,改BUG,編程,前端交互。你應(yīng)該懂我,利用不同的編程語(yǔ)言編寫(xiě)程序只是研發(fā)過(guò)程中眾多你需要掌握的技術(shù)當(dāng)中的一塊而已。

其它,與你用哪們編程語(yǔ)言無(wú)關(guān),這一點(diǎn)如果你都理解不了,覺(jué)得強(qiáng)哥在忽悠你的話(huà),那請(qǐng)自便吧?;蛘邠Q一個(gè)角度,會(huì)一門(mén)編程語(yǔ)言,而不是完整技術(shù)體系,就能當(dāng)技術(shù)大牛的情況,我覺(jué)得可能只有在你們家村里可以行得通,因?yàn)榫湍阋粋€(gè)人懂。

當(dāng)然,以上我們討論是的純粹的基于技術(shù)定位,你也許可以反駁我說(shuō),難道做測(cè)試的都得懂編程,難道做Python的都不行?

這當(dāng)然不是這樣的,任何一個(gè)領(lǐng)域都有大神,隨著經(jīng)驗(yàn)的豐富都能夠解決很多難題。但是,那是很久以后的事了,我們現(xiàn)在討論的是,你還在糾結(jié)Java還是Python的這件事,毫無(wú)疑問(wèn),這個(gè)時(shí)候,你仍然還是一個(gè)菜鳥(niǎo),甚至連門(mén)都沒(méi)入。強(qiáng)哥建議大家,不要因?yàn)槭裁词虑楹?jiǎn)單,所以我要去做,無(wú)論是學(xué)習(xí)編程語(yǔ)言,還是其它,這是最要命的一個(gè)出發(fā)點(diǎn),會(huì)毀了你的未來(lái)。

下面我給大家列出一段我分別使用Java和Python寫(xiě)的發(fā)送一個(gè)HTTP協(xié)議的一段代碼。這段代碼收錄在強(qiáng)哥今年年底即將出版的一本自動(dòng)化測(cè)試開(kāi)發(fā)的高級(jí)教程里面,全書(shū)均采用Java進(jìn)行代碼演示,明年,我會(huì)有一本幾乎一模一樣的但是是使用Python進(jìn)行代碼實(shí)現(xiàn)的書(shū)。之所以能夠這樣,原因很簡(jiǎn)單,Java能解決的基本問(wèn)題,Python也能解決,當(dāng)然,Python能解決的,Java一樣可以。但是在干重活兒方面呢,Java更成熟一些。

Java的代碼,實(shí)現(xiàn)Agileone系統(tǒng)的需求提案新增功能:

// 實(shí)現(xiàn)需求提案的新增
public void doAdd() {
 // 先發(fā)送POST請(qǐng)求實(shí)現(xiàn)登錄
 String postUrl1 = "http://localhost/agileone/index.php/common/login";
 String postData1 = "username=admin&password=admin&savelogin=true";
 String resp1 = hr.sendPost(postUrl1, postData1);
 System.out.println(resp1);
 // 對(duì)sendPost()方法進(jìn)行了額外的封裝,一次封裝,處處使用
 
 // 再發(fā)送POST請(qǐng)求完成新增
 String postUrl2 = "http://localhost/agileone/index.php/proposal/add";
 String postData2 = "type=Enhancement&importance=Medium&"
  + "headline=&"
  + "content=這是用于Java代碼測(cè)試的內(nèi)容-10009&processresult=";
 String resp2 = hr.sendPost(postUrl2, postData2);
 System.out.println(resp2);
}

我們?cè)賮?lái)看看Python實(shí)現(xiàn)同樣功能的代碼:

# 導(dǎo)入urllib和http庫(kù)
 import urllib
 import http.cookiejar
 
# 利用cookiejar自動(dòng)管理整個(gè)過(guò)程中的Cookie
 cj = http.cookiejar.CookieJar()
 opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))
 
 # 利用urllib構(gòu)造POST請(qǐng)求并處理登錄
 logindata = { "username" : 'admin', "password": 'admin', "savelogin" : "true" }
 data_encoded = urllib.parse.urlencode(logindata).encode('utf-8')
 login = opener.open("http://localhost/agileone/index.php/common/login/", data_encoded)
 print(login.read())
 
 # 發(fā)送Post請(qǐng)求提交新增需求提案
 proposaldata = {"type":"Requirement", "importance":"medium",
  "headline":"Headline from Python - 10010",
  "content":"Content from Python - 10010", "scope":"1", 
"processresult":""}
 data_encoded = urllib.parse.urlencode(proposaldata).encode('utf-8')
 proposal = opener.open("http://localhost/agileone/index.php/proposal/add", data_encoded)
 print(proposal.read())

相信大家很難區(qū)分所謂的簡(jiǎn)單與難。因?yàn)榇a幾乎都很類(lèi)似,這種情況發(fā)生在很多場(chǎng)景,解決很多問(wèn)題時(shí)都是一樣的。其實(shí)很多人之所以宣傳Python簡(jiǎn)單易學(xué),我們拋開(kāi)某些可能的商業(yè)目的或者社會(huì)心理的原因之外,Python是最好的編程語(yǔ)言,沒(méi)有之一,Java都是垃圾,都是落伍了的,這種睜眼說(shuō)瞎話(huà)的還少嗎?

因?yàn)槟愫軕校瑧械萌デ笞C真相而已。社會(huì)心理就是我自己是搞Python的,我怎么能說(shuō)自己做的技術(shù)很Low逼呢,我自己是搞Java的,Java必然是最牛的?。?。

讓我們單純從事實(shí)出發(fā),Python簡(jiǎn)單的原因只是因?yàn)?,我們使用Python時(shí),我們可能跟個(gè)傻子一樣,在直接調(diào)用別人給我們寫(xiě)好的代碼接口而已,而Java的很多處理相對(duì)要原生一點(diǎn),我們寫(xiě)的代碼要稍微多一點(diǎn)。

但是只要完成封裝,代碼就很難說(shuō)誰(shuí)更簡(jiǎn)單了。而這個(gè)封裝的過(guò)程,其實(shí)才是編程最重要的部分,如果這一部分我們都不愿意親自參與,也不想知道個(gè)中實(shí)現(xiàn)原理,你想想,你怎么可能成長(zhǎng)為一個(gè)優(yōu)秀的程序員,還有天理嗎?讓那些勤奮的人,情何以堪。

這一點(diǎn)就像C語(yǔ)言,由于C語(yǔ)言更原生,更底層,幾乎沒(méi)有提供太多封裝好的代碼接口,很多問(wèn)題的解決都需要我們自己寫(xiě)代碼,所以這也是為什么很多人覺(jué)得C語(yǔ)言很難,道理是一樣的。但是,牛逼的人,都更喜歡自己創(chuàng)造。相比起C語(yǔ)言來(lái)說(shuō),Java和C#之類(lèi)的,為我們提供的代碼接口要豐富得多,我們使用起來(lái)其實(shí)也要容易得多,結(jié)論就是,在C語(yǔ)言面前,其它高級(jí)語(yǔ)言都太簡(jiǎn)單了,因?yàn)榉庋b了太多可以直接用的類(lèi)庫(kù)和接口。所以,要成長(zhǎng)為一個(gè)高級(jí)程序員,一定不是寫(xiě)寫(xiě)簡(jiǎn)單的應(yīng)用而已,比如Java的源代碼是必須要去學(xué)習(xí)的,我們一定要知道這些封裝好的代碼接口的實(shí)現(xiàn)細(xì)節(jié)。否則,跟使用Python封裝好的東西,又有何本質(zhì)區(qū)別呢?

所以,請(qǐng)不要再糾結(jié)了。如果你把Java作為你的人生的第一門(mén)用心學(xué)習(xí)的語(yǔ)言,那么你只需要花極短的時(shí)間,就可以基本學(xué)會(huì)C++,JavaScript,PHP, Python,R,C#,Objective-C,Swift,Go(是的,每一門(mén)語(yǔ)言都可以在極短的時(shí)間學(xué)會(huì),只是具體的問(wèn)題解決和一些坑需要多積累一些實(shí)戰(zhàn)經(jīng)驗(yàn)而已)。但是反過(guò)來(lái),如果你把Python作為你的第一門(mén)語(yǔ)言,問(wèn)題就回到外國(guó)人使用筷子這件事情上了,答案不言而喻。

所以,你未來(lái)如果要立志成為一個(gè)專(zhuān)業(yè)的程序員,建議先學(xué)習(xí)Java(或者C#也行,兩者有很多原理上很像,實(shí)在不行,C/C++也可以哦),那是給程序員的專(zhuān)屬語(yǔ)言,是有門(mén)檻的,所以你才能夠建立自己的競(jìng)爭(zhēng)力。如果你只是想玩玩,感受一下,或者是把編程語(yǔ)言作為一個(gè)工作中的工具而已,Python是個(gè)不錯(cuò)的選擇。這是面向?qū)W習(xí)的建議,如果是在企業(yè)中真實(shí)做項(xiàng)目,那就不要糾結(jié)了,項(xiàng)目需要什么,咱們就學(xué)什么,不需要那么多理由,干,才是真理。

錘子好用還是榔頭好用?

Java好還是Python好?

為什么非得二選一?

浮躁,一個(gè)吃飯的工具而已,搞技術(shù)的,通吃它們不就完了嗎,你再也不會(huì)糾結(jié)了,這,才是一個(gè)技術(shù)人員該有的狀態(tài)。難道不是嗎?

到此這篇關(guān)于Java和Python現(xiàn)在都挺火,我應(yīng)該怎么選?的文章就介紹到這了,更多相關(guān)Java和Python現(xiàn)在都挺火,我應(yīng)該怎么選??jī)?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JAVA模擬新增順序表及單鏈表

    JAVA模擬新增順序表及單鏈表

    這篇文章主要介紹了JAVA模擬新增順序表及單鏈表,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 基于springboot+jwt實(shí)現(xiàn)刷新token過(guò)程解析

    基于springboot+jwt實(shí)現(xiàn)刷新token過(guò)程解析

    這篇文章主要介紹了基于springboot+jwt實(shí)現(xiàn)刷新token過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • struts2自定義攔截器的示例代碼

    struts2自定義攔截器的示例代碼

    本篇文章主要介紹了struts2自定義攔截器的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • 如何使用Java給您的圖片瘦身之Thumbnailator技術(shù)

    如何使用Java給您的圖片瘦身之Thumbnailator技術(shù)

    在java日常開(kāi)發(fā)中經(jīng)常遇到對(duì)圖片資源的操作需求,如壓縮、縮放、旋轉(zhuǎn),下面這篇文章主要給大家介紹了關(guān)于如何使用Java給您的圖片瘦身之Thumbnailator技術(shù)的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • 一文帶你掌握J(rèn)ava8強(qiáng)大的StreamAPI

    一文帶你掌握J(rèn)ava8強(qiáng)大的StreamAPI

    Java8API添加了一個(gè)新的抽象稱(chēng)為流Stream,可以讓你以一種聲明的方式處理數(shù)據(jù)。Stream 使用一種類(lèi)似用SQL 語(yǔ)句從數(shù)據(jù)庫(kù)查詢(xún)數(shù)據(jù)的直觀方式來(lái)提供一種對(duì) Java 集合運(yùn)算和表達(dá)的高階抽象。Stream API可以極大提高Java程序員的生產(chǎn)力,讓程序員寫(xiě)出高效率、干凈、簡(jiǎn)潔的代碼
    2021-10-10
  • Netty分布式編碼器寫(xiě)buffer隊(duì)列邏輯剖析

    Netty分布式編碼器寫(xiě)buffer隊(duì)列邏輯剖析

    這篇文章主要介紹了Netty分布式編碼器寫(xiě)buffer隊(duì)列邏輯剖析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-03-03
  • SpringBoot項(xiàng)目在IntelliJ IDEA中如何實(shí)現(xiàn)熱部署

    SpringBoot項(xiàng)目在IntelliJ IDEA中如何實(shí)現(xiàn)熱部署

    spring-boot-devtools是一個(gè)為開(kāi)發(fā)者服務(wù)的一個(gè)模塊,其中最重要的功能就是自動(dòng)應(yīng)用代碼更改到最新的App上面去。,這篇文章主要介紹了SpringBoot項(xiàng)目在IntelliJ IDEA中如何實(shí)現(xiàn)熱部署,感興趣的小伙伴們可以參考一下
    2018-07-07
  • java之阻塞隊(duì)列BlockingQueue解析

    java之阻塞隊(duì)列BlockingQueue解析

    這篇文章主要介紹了java之阻塞隊(duì)列BlockingQueue解析,阻塞隊(duì)列是一種線程安全的數(shù)據(jù)結(jié)構(gòu),用于在多線程環(huán)境下進(jìn)行數(shù)據(jù)交換,它提供了一種阻塞的機(jī)制,當(dāng)隊(duì)列為空時(shí),消費(fèi)者線程將被阻塞,直到隊(duì)列中有數(shù)據(jù)可供消費(fèi),需要的朋友可以參考下
    2023-10-10
  • mybatis-plus調(diào)用update方法時(shí),自動(dòng)填充字段不生效問(wèn)題及解決

    mybatis-plus調(diào)用update方法時(shí),自動(dòng)填充字段不生效問(wèn)題及解決

    這篇文章主要介紹了mybatis-plus調(diào)用update方法時(shí),自動(dòng)填充字段不生效問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • myBatis的mapper映射文件之批量處理方式

    myBatis的mapper映射文件之批量處理方式

    這篇文章主要介紹了myBatis的mapper映射文件之批量處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09

最新評(píng)論