程序員為什麼會喜歡一些語言,討厭一些語言?

thanks


最後。。白板一張,供大家自由hack。。。

送張趣圖,很多人都看過的「一張圖讓你理解java垃圾回收」

http://ww4.sinaimg.cn/bmiddle/7cc829d3jw1ecebfzbqnwg209q06o7wh.gif

+++認真一點

人會偏愛用於工作和第一次接觸的語言

而各語言現狀和公司支持息息相關,IBM、SUN、ORACLE等搞企業單的大型公司都支持java,故干這行的人偏愛java較多。你西裝革履花頭狗臉的,張口結果是php ruby怎麼行?一點都不高大上

互聯網企業,活多以粗糙能用為主,故爾是php第一,python ruby等一干小弟在後面跟著,所以這個行業喜歡這些的人多

微軟扶持c#和c++,遊戲行業以cpp為事實上的工業標準,所以微軟陣營和圖形圖像方向的程序員偏好cpp的人多

unix陣營的人喜歡c語言偏多

web前端用js,所以喜歡js不奇怪

剩下的異端很少,你很難見到,我們就不討論了。

所以語言什麼的,大部分程序員不過是被行業和資本家牽著鼻子走,公司讓你用你不喜歡也得用,用著用著你就喜歡了,這個現象叫「斯德哥爾摩綜合症」


這跟審美有關係。譬如說我奉行DRY(Don"t Repeat Yourself)原則,我就不喜歡那些到處要你重複信息的語言。

我舉個例子,在C++11出現以前,遍歷一個鏈表都是這樣的:

for(list&::iterator i = xs.begin(); i != xs.end(); i++)
{
Fuck fuck = *i;
DoSomethingInTheMemoryOf(fuck);
fuck = AnotherFuck();
}

多醜啊,直到C++11出現了之後

for(auto fuck : xs)
{
DoSomethingInTheMemoryOf(fuck);
fuck = AnotherFuck();
}

完全不一樣了是不是。

你們不要趁機說什麼別的語言早就支持foreach,在foreach裡面直接修改element本身這種事情,你們喜歡的幾乎所有語言都是不支持的,這個時候只能苦逼的用下標、用引用、還有很多奇怪的東西。foreach這種統一的抽象完全就沒有用了。我就知道你們會這麼講,啊哈哈哈。

不過我並不是在貶低C++,因為C++在其他方面對DRY的支持,要遠高於很多別的語言。不過即便如此,為什麼每一個不同的項目都會有不同的最適合的語言,就是因為不同的語言使用的概念是不一樣的。同一個問題,在這組概念下面描述起來很簡單,在另一組概念下面描述起來就很Repeat Yourself了。

所以一個我認為好的語言,一定要在語法和類型上支持足夠多的複雜的計算,以便於就算你語言沒有提供這些概念,我也可以通過寫庫的方法來使得最終搞起東西仍然很DRY。而且庫是我寫的,我為了寫這個庫需要學習很多東西,但是用戶完全不需要懂我明白的東西,也可以用我的庫。能做到這一點的語言是很少的。Boost::Spirit就是一個典型的例子(雖然他做的不好)。整個Spirit是用模板元編程的超級複雜的技巧搞起來的,但是如果你真是為了用它,你是不需要懂這些的,只要好好看文檔就行了。

因此我就很喜歡C++17、Haskell、F#這樣子的語言,不喜歡C語言、Go語言等。對於C#,用起來是挺順手,不過我對他持中間態度。


被坑過


情懷


從第一眼,我就討厭XML


一方面因為程序員有自己的審美。有人喜歡簡潔易讀,有人喜歡精巧複雜,有人喜歡規範,有人喜歡散漫,有人喜歡急速,有人喜歡偷懶。

另一方面因為程序員懂的都有限。懂的語言越多,對喜歡語言的理解就越深入,對不喜歡的語言的厭惡感就越淡。

我個人偏好於節省人力的語言,比如python,如果能節省人力的同時還提供很高的生產力就更好了,比如Go。處於對系統維護和業務傳宗接代的考慮,小眾語言即使很精巧,也不會優先考慮——那Go怎麼辦?就以一己之力讓它在部門內普及起來。


這樣是不對的 好的程序員應該見一個愛一個


和習慣有很大的關係,之前做c++開發,其他什麼語言都看不順眼。。。現在,android開發,java和xml看起來太順眼了,許久沒碰得c++,越看越丑。。。


代碼就像女孩的裙子,越短越好。

一個小功能寫一堆,很煩


直觀

我喜歡C,是喜歡C直觀的時候,它是操作系統的腳本語言,它可以直接使用系統調用,它在內存上的布局我瞭然於心,它的指針就是虛擬內存的地址,它知道寄存器,它能嵌入彙編

我喜歡Python,是喜歡Python直觀的時候,它簡練的形式和我腦中邏輯幾乎能夠對應,它的數字範圍是幾近無窮大的,它的內置類型和操作不多不少,它的動態類型讓我免于歸類,它的屬性查找完善有效

我喜歡Scala,是喜歡Scala直觀的時候,它擁有強大的類型推導系統,它讓匿名函數和函數式編程美得像數學公式,它的actor似乎是唯一正確的並行解決之道,它復用了java唯一做對了的事(jvm)

讓不直觀去shi,讓虛偽的面向對象去shi,讓弔詭的設計模式去shi

想不到又參加了編程語言大戰,還是匿了吧


和兵器差不多,拿順手的怎麼用怎麼舒服。拿不順手的沒事總傷著自己。


男人為什麼喜歡這種女人,討厭另一種女人?女生為什麼喜歡這件衣服,討厭那件衣服?題主這麼閑,來來繼續補充。


自從開始研究 模板引擎後就沒有對語言有偏見了

實在是蛋疼 要考慮如何優雅的設計符號而且還要如何保證優雅的使用還要儘可能避免設計語言上的坑


實在是感覺php這種語言寫起來特別丑有木有,各種各樣的符號,寫過一段時間,難受得不行


哈哈 是因為學不會


手動擋開的好省油,自動擋開起來省心。

計程車司機,貨車司機基本是手動擋。上下班開車的喜歡自動擋。


1. 半吊子

2. 秀優越感

3. 被某個語言傷過。


來源:第一章:簡介 &<&&>等等,左邊那語言的括弧怎麼辣么多?!


C#不敢說喜歡,但是看慣了,也感覺很舒服了,但是最討厭的是JS,沒有之一,誇張一點說10個人寫JS代碼, 可能產生11種寫法。


用C++,玩弄pointer,自己控制內存,有一種運籌帷幄的錯覺。


推薦閱讀:

怎樣理解Haskell中的High Order Function?
如何理解 C++11 的六種 memory order?
怎樣設計一套程序設計語言?
近十年來編譯器有哪些關鍵的技術進步?
微軟的 C# 難學嗎?和 Python 比起來

TAG:編程語言 | 編程 |