-
1 # 程式設計師小陶
-
2 # 京京肚肚擼程式碼
1. 對Java技術一知半解.
2. 鄙視鏈.
總有數量可觀的一部分人,他們會不自覺抱團、站隊,然後理所當然得鄙夷、貶低另一個群體。然而,被鄙視的那個群體,卻又有著另一群鄙視的物件,這就是鄙視鏈。
開發語言的鄙視鏈如下:lisp的瞧不起python,用python的瞧不起perl和c,c瞧不起c++,c++瞧不起java和c#,java和c#瞧不起js和php,js和php瞧不起html和css。
這種怪現象幾乎滲透每個領域,何況是IT開發領域呢。
3. 人怕出名豬怕壯.
4. 以己之長比及之短.
拿一種開發語言的長處和Java的短處相比,片面的比較某方面。C語言開發一些底層的東西確實高效,就因此Java就一無是處了?這種片面的黑Java也是沒什麼意義的。
5. Java自身不足.
-
3 # 架構風清揚
這是好事,一個東西有人黑說明有一定的影響力,就好比一個跑龍套的很少人黑,但是一個當紅的明星被黑的機率是大大提升。
Java發展至今已經二十多年,我印象最深刻的2009年,當時Oracle收購了sun公司,網上一片哀鴻遍野,大家都說Java快完蛋,但事實呢,Java到現在依舊堅挺。當然作為一個技術人員,不要讓自己的語言侷限在一個上,這是題外話。
說回Java,判斷一個技術是否發展得好,主要看幾個方面
1,是否有好的社群
2,是否有工業標準
3,是否有大公司支撐
你會發現Java三者都具備了
-
4 # Codeing進行時
因為Java是近20多年最流行的程式語言,用的人多了,程式設計水平就參差不齊。
黑Java的方向很多歷史遺留問題:語法不夠現代,相比於Kotlin寫起來有點囉嗦,語法糖少,函數語言程式設計語法比較醜,不過從Java10開始已經開始浪起來了。
-
5 # 慕課網
國際黑啊,被黑不是一天兩天了。國外有Java Sucks(一個專門黑Java的網頁),不知道知乎有沒有反Java聯盟啊(捂臉)。
(圖片來自網頁Java Sucks頁面截圖)
這些程式設計師們說了很多諸如“我是如何愛(tu)著(cao)Java的話”,隨便摘錄幾句讓大家感受一下:
l Java has been a boon to the publishing industry. – Rob Pike(Java一直是出版社的福音– Rob Pike)
為了證明這一點,小慕以Java為關鍵詞在亞馬遜搜了一下,結果……
80357個結果……
還沒完,然後小慕又以python作為關鍵詞搜了一下:42013個搜尋結果,幾乎只有java的一半。
l If Java had true garbage collection, most programs would delete themselves upon execution. – Robert Sewell(如果Java有真正垃圾整理(注:確實有類似這個功能)的話,幾乎所有的基於Java的程式將在執行時刪除自己 – Robert Sewell)
l Whenever I write code in Java I feel like I’m filling out endless forms in triplicate. – Joe Marshall (aka jrm)(每當我在Java中寫程式碼時,我都覺得我在填寫一式三份的表格 – Joe Marshall)l Java is the SUV of programming tools. A project done in Java will cost 5 times as much, take twice as long, and be harder to maintain than a project done in a scripting language such as PHP or Perl. … But the programmers and managers using Java will feel good about themselves because they are using a tool that, in theory, has a lot of power for handling problems of tremendous complexity. Just like the suburbanite who drives his SUV to the 7-11 on a paved road but feels good because in theory he could climb a 45-degree dirt slope. – Greenspun, Philip(Java是程式語言裡的SUV,一個專案如果用Java的話會花費5倍的成本,兩倍的時間,而且比PHP或者Perl更難維護…但是用Java的程式設計師和經理們都自我感覺良好,理論上有很多能力處理複雜的問題,就像郊區的人們開著SUV去7-11便利店的鋪裝路面上一樣感覺良好,因為SUV理論上可以爬上一個45度的斜土坡 – Greenpun Philip)(注:這段可能在借“城市”SUV諷刺Java理論上很強但實際應用有時並不能如願)l JAVA truly is the great equalizing software. It has reduced all computers to mediocrity and buggyness. - NASA’s J-Track web site(Java是一個真正注重平等權的軟體,它將所有的電腦(不管配置有多好)統統變成平庸的以及有bug的電腦。- NASA’s J-Track web site)諸如此類各種黑……小慕歸納一下原因,大概有這幾類:0)一定是遇到了假程式設計師
有的程式設計師,其實根本不是一個合格的程式設計師,但卻不自知(嚴肅臉)。這樣的程式設計師很喜歡黑它所使用的程式語言。比如有的程式設計師會說:C/C++會有訪問陣列越界的危險,我以為用了Java就沒有了,但問題還是有啊,Java真垃圾……像這種完全胡扯的言論,對於這種假程式設計師,小慕覺得就不必去花時間去討論了。
1)設計者的心思你得猜
首先,Java是一種靜態強型別語言,如果讓一個喜歡動態和(/或)弱型別語言的人去評價Java,毫無疑問Java會被黑啊。
其次,任何一種程式語言在被設計的時候,總會被設計者注入他的某些設計理念,說白了,就是設計者會引導使用這門語言的人如何程式設計。因此,作為使用Java的一些使用者,如果他們不能和Java語言的設計者的那些感受契合起來,他們就免不了會黑Java。比如Java的讀寫流,部分朋友認為它們太複雜,但如果這些程式設計師能夠明白設計Java的人這樣做的初衷,小慕認為黑Java讀寫流的行為一定會減少很多。
(圖片來自Java Sucks頁面截圖)
簡單翻譯下:除錯JVM常常讓你覺得你在操控一架飛機,但是你並不在那架飛機裡,你坐在另外一架飛機的後座裡尾隨你操縱的這架飛機一起在飛(不可描述的糾結……)。
2)好鋼用在刀刃上
任何一種語言的誕生,一定都是針對相關的使用場景,不可能要求所有人的需求都完全一致。換句話說,你得對得上號啊!例如對“web開發”這個場景,大家覺得Java對這個場景契合得好嗎?說實話,不是足夠好,否則PHP恐怕早就死亡了,也不會有後來的Python和Go語言的出現。
為什麼呢?其實原因很簡單:web開發這種需求最核心的是什麼?其實就是開發速度。web沒什麼複雜詭異高大上的黑科技、也不是什麼非常繁重的開發工作,任何一個web要想複製都是一件非常簡單的事情。因此面對這種需求,最關鍵的就是開發速度。誠然,Java有很不錯的web框架,例如ssh,但是Java這門語言的設計理念從一開始就註定了,Java對web開發的需求不會契合得非常完美。如今前端技術日新月異、微服務等設計理念悄然出現,Java這樣的語言是很難迎合這些“新東西”的。
因此,在面對Java不能很好地契合的需求時,黑Java現象就難以避免了。
3)關乎哲學
當我們從更高的哲♂學層面去審視Java的時候,就會發現,黑Java的行為的存在是必然的。
有個段子:
這兩句話哪個一定對哪個一定錯呢?每句話都可以找來n多場景去證明,無法徹底判定對錯。
C++給了程式設計師更多的自由,但自由越多,用起來越爽,但危險行為也更多;Java對程式設計師的束縛較多,也許某些時候用得不那麼爽,但至少危險行為相對少。有的人就喜歡自由,哪怕有風險也要自由;而有的人就是追求安穩,哪怕犧牲一點自由也可以接受。
這種矛盾,其實是兩種價值觀的矛盾,本質上是哲♂學層面的矛盾,是沒有對錯的、是無法調和的。此時,黑Java的現象就必然會出現。
其實說了這麼多,Java被黑如此常見,還是因為它有廣泛的使用範圍,換句話說,沒人用肯定不會被人黑啦(廢話……)。從它的發展史來看,1995年,SUN公司釋出了Java程式語言,距今已經22年了,作為一門比較老的語言,母公司輾轉被收購,新公司又以此打官司敗訴,也確實有點命運多舛,客觀上被限制了發展。在程式語言越來越新,越來越有效率的今天,Java被黑算是一種正常現象。
話說回來,吐槽一種語言工具,不是程式猿們不可多得的娛樂方式之一麼,不然生活還有繩麼樂趣……(畢竟沒有烏黑濃密的秀髮,也沒有漂亮女朋友……)
小慕覺得在Quora上這個人說的就挺理性:
(注:Joshua Engel的備註裡面說他從Java還是beta版本的時候就已經是使用者了)
(圖片來自Quora頁面截圖)
Joshua的中心思想是:吐槽自己用的工具集,以及它們如何明顯地超越另外一個人用的工具集,已經成為程式設計師們一種流行的消遣方式…(Emmm……)
當然,最後的總結Joshua Engel也輕鬆昇華了自己回答的深度:
(圖片來自Quora回答頁面)
翻譯:真正的程式設計師,當然懂所有的語言,但更喜歡程式設計而不是抱怨程式設計。
最後,關於題主問的Java和C++的區別,一點小小的見解——Java跟C++確實很像,也確實有相當大的關聯性。Java是一門跟平臺沒有太大關係的語言,只要有JVM哪都能執行(注:JVM是整個Java實現跨平臺最核心的部分),而C++是一門與平臺關聯性很大的語言。
有種非常形象的說法是Java和C++的區別很像是漢語(Java)和英語(C++)的區別:兩者都是傳達資訊的有用工具,漢語在全世界使用的時候通常要配個同聲傳譯,而Java需要配個JRE。英語通常在世界各地被廣泛使用,C++在全世界確實像是英語一樣算是個古老而通用的語言。英語的音節比漢語小(以前想把漢字錄入電腦著實花了不少心思),而C++具有比Java小的內建庫。學英語似乎更快更簡單,學C++好像也是。(當然這些比方見仁見智,還有點拗口,不一定對,還請輕拍哈)
也有一種說法是Java是自動擋,而C++是手動擋(這個比喻某種程度上可以說是很恰當了,當然該說法小慕也是在知乎大牛那學到的)。
在IEEE spectrum所評選的2017的TOP10程式語言類目裡:
(圖片來自IEEE spectrum網站截圖)
Java在所有的4個領域裡都排在C++的前面
(圖片來自IEEE spectrum官網截圖)
所以看了這張圖,小慕覺得……最後好像反而Python變成了主角~(……)
回覆列表
程式界的"黑",一是自黑,二是鄙視鏈式的黑。
簡單來說,程式設計師自嘲和自黑都是業界常有的事情。
鄙視鏈就像玩data的看不起玩lol的,玩lol看不起玩王者榮耀的。。
每一種語言都有自己的擁護者和唱衰者,很正常。Java發展20多年,肯定有自己的對立面,被黑是正常的。