有人說喬布斯從來沒編寫過程序卻對編程思想有很深的理解,有什麼事情可以證明這一點?

我個人不太相信媒體過度英雄化的說辭,希望大牛能解答一下我這個疑惑~


《喬布斯傳》里有這樣一段話:

「史蒂夫總體上認為與自己相比,比爾稍遜一籌,尤其是在品味和風格上。」安迪·赫茨菲爾德說到「比爾瞧不起史蒂夫是因為史蒂夫不會編程。」

我覺得喬布斯還是會一些編程的,我看過的所有的和喬布斯相關的視頻中,見他演示過兩次簡單的編程,只是不知道他是在一個什麼水平。

下面的回答中那句「喬布斯對編程有很深的理解」是我說的,我看了一下別人的回答,我說錯了。要是當時說「有一些理解」可能會好很多。

原答案:

Quora上有一個贊同數超過10K的回答,很好地解釋了為什麼說喬布斯對編程有很深的理解。

問題是,什麼是面向對象編程?

Amogh Talpallikar的回答:

在喬布斯之前,我還沒有見過有人能對面向對象編程做出這麼恰當的解釋。喬布斯從來沒有接受過正式的工程訓練,但是他對自己所做的事總是有非常清楚的認識,無論是對技術、設計還是藝術。

1994年《Rolling Stone》採訪:

Jeff Goodell:你能用通俗易懂的語言解釋一下,什麼是面向對象編程嗎?

喬布斯:對象像人一樣,也是活生生的生命。他們有儲備的知識,知道怎麼完成任務,他們有記憶,能把發生的事情記下來。而你和他們的互動並不是低層次的,而是在一個高度抽象的層面上互動,就像我們現在的對話一樣。

我給你舉個例子:如果我是你的洗衣對象,你給我你的臟衣服,然後給我一個消息說:「把我的衣服洗乾淨。」我知道舊金山最好的洗衣店在哪裡,而且我說英語,我的口袋裡有錢,所以我出去打計程車,告訴司機帶我去這個地方。我拿著你的衣服去洗乾淨,然後再打車回到這裡,把洗好衣服還給你,說:「這是你的乾淨的衣服。」

你並不知道我是怎麼做到的。你不知道哪個地方洗衣服好,也許你說法語,或者你兜里沒錢,連車都打不了。但是我知道如何去做,而你不需要知道任何細節。所有的這些複雜的流程都隱藏在我的內部,我們在一個高的抽象層次上進行交互,這就是對象。他們把複雜過程封裝在內部,而對外呈現的介面是高層次的,抽象的。

部分翻譯來自網路。

目錄 從喬布斯身上我們可以學到哪些好的精神與品質? - 知乎用戶的回答

參考資料

https://www.quora.com/What-is-object-oriented-programming

Steve Jobs in 1994 (Jeff Goodell)


這個問題基本沒有什麼有價值的答案,原因是大部分答案源於喬粉或喬黑。沒看到真正專業的高水平程序員群體的解答。可恥的是在討論這個編程問題上,碼農的意見居然因身份被鄙視。那麼,如果有人說喬布斯會念阿彌陀佛,那他一定是上帝的時候,跳出來說不的牧師一定會被認為冥頑不化的書獃子的。

{續章}

居然50贊了,莫非寫出了碼農的心聲。不過要解釋下高水平程序員與一般程序員的區別。高水平程序員與一般懂java,c#,c,c+的程序員不同,他們面向的是諸如將複雜的多次元世界轉化為簡單的二次元世界的問題,碰巧手邊有台計算機,碰巧使用了一些編譯器,但還是只關心如何將人類詭異的智商轉換為計算機速度執行的一群人(這類人基本是社交渣)。普通程序員則是面向特定技術和語言的。比如號稱多年經驗的java,php,c#程序員,月入20k,自稱文藝界編程最好的之類的。最大的毛病是他們太容易將面象對象當成編程本身了。沉溺於各種語言特性帶來的技巧式方案,所以一般程序員也是不大容易看出喬的水平的,因為他的言論是沒語法錯誤的:( ??_? ?)

{小段子}

一流做標準,二流鑽方法,三流研語言,文藝界都讀《二十一天精通xxx》。

唯有魔頭不看書,最後成了流浪漢,古語曰:泄天機必遭天譴,曾記當年郵包炸彈客否?


Steve Jobs的college major: physics, literature, poetry, 6個月就退學了,然後旁聽了一年半。除了physics兩個都是文科,那麼基本可以斷定他只上過一兩門理科,目測是calc 1和physics 101,大一是不會要求上工科的課的,而且大一的工科課除了intro to programming幾乎沒有涉及CS或者編碼的。光看教育背景,他最多最多會寫點基本的東西,但都不會比hello world強多少了。這你要願意算會編程我也沒什麼可說的。但這就跟你會說一句how are you就算會英語了差不多,會有人雇你當翻譯嗎?

Engineering和Product management是兩個完全不同的學科。我研究生時候短暫地學過點product management,結果跟我想像的差得實在太遠了。班上幾乎所有學生都是本科讀engineering讀不下去的,於是轉行做點有點相關但是完全沒有技術成分的,而且課上的內容除了案例那個公司是搞技術的,沒有任何跟技術相關的東西,都是market啊selling啊product cycle啊corporate finance啊什麼的。也就是說product manager的培訓根本就不包括技術,你懂不懂技術幾乎沒任何重要性。Steve Jobs確實算是把product management做到極致的人了,但是你要知道product management裡面沒有任何一項工作要求你會develop the product的,你懂點可能有點幫助,不懂也並不致命。所以他管蘋果管得多牛,跟他的編程水平都是兩碼事,而且他在蘋果的工作內容肯定是不包括編程的。

所以其實我覺得Steve Jobs根本都說不上是"對編程理解很深"吧。撐死了說他知道怎麼讓一個技術公司賺錢,知道該帶著工程師往哪方面去創造,一個程序最終應該是什麼樣的功能,一個產品最終應該是什麼樣的結構,做出什麼樣的東西會讓大家喜歡,然後購買,知道該讓自己的碼農做什麼project,這方面他確實很牛,結果也都看得見:大家搶著買ipod,買iphone,買mac book。從技術角度,其實拆開了來看可能每個部件每個程序都並不是多黑科技的事情,但是他想到了怎麼設計會擁有最廣闊的市場和用戶群。這當然很牛。世界上那麼多工程師,絕大多數不知道怎麼設計怎麼寫會賺大錢。Jobs作為一個非工程師,他很難知道what"s possible what"s feasible,但是他做到了利用技術賺錢。就算他會寫點程序,跟他的管理能力比起來也實在是不值一提了。

所以我看這些回答說什麼誰說他沒編程水平,唉... 你們就跟那幫歌星的腦殘粉似的。李宗盛明明是靠寫歌吃飯的,唱功確實就那樣,結果你說一句他沒唱功粉絲要跟你急。一個人不是必須是全才才牛逼。強詞說一個牛人一定是全才真的沒什麼意義。


其實個人感覺很多人認為喬布斯不懂技術,主要是因為喬布斯總和沃茲的名字出現在一起…然後沃茲是負責技術,喬布斯是負責銷售。所以給人一種感覺喬老爺子除了推銷好像完全不懂技術。

其實這就是個參照的問題呀,要知道咱們拿的可是沃茲和喬布斯比,比的還是技術。

但是你要知道,沃茲可是被評為世界十大黑客之一呀……與之併名還有C語言、Unix之父Dennis M Ritchie,Linux、Git之父Linus,GNU創建者、Emacs、GCC之父Richard Stallman等大神。

所以跟這種技術天才比,喬老爺子的編程水平肯定是too young too simple被虐成渣渣了,但是人家也曾是個還算不錯的程序員呀。

你們這些人呀,不要老想搞個大新聞,說什麼喬老爺子不懂技術,然後就把所有的pm批判一番!我今天是作為一個長者的身份跟你們說啊,你們還是要提高自身的姿勢水平呀!


成王敗寇而已,90年代蘋果都是負面教材


我成績不好 但我對高考有很深的理解


eoliver 引用的Quora中提到的喬布斯對面向對象編程的「深刻見解」

恰恰暴露了喬布斯對面向對象理解的並不深刻

那段話僅能說明喬布斯理解了其中兩點:抽象和封裝

面向對象還有兩個很重要的特點:繼承和多態

順著喬布斯的隱喻,來說明一下什麼是繼承和多態。

你是一個洗衣對象,大家叫你洗衣工

你生了個兒子,他不但繼承了你洗衣服的技能,他還學會了修車

後來你又生了個女兒,她同樣繼承了你的洗衣技能,但是她學會了縫紉技能

你們三個都會洗衣服,不同的是,你兒子的洗衣技能同你一模一樣,你女兒改善了這個技能,洗得更乾淨

你們一家人並排站一起(組成一個列表),我拿來一堆衣服,我不管你們是老子還是兒子,洗的乾淨還是不幹凈,也不管你們怎麼洗,我只知道你們都是洗衣工,我只會告訴你們,洗!洗!洗!你們就把衣服給我洗好了。

這就是繼承和多態。

你兒子和你女兒的其他兩個技能,體現了面向對象的多重繼承

你兒子的技能同你一模一樣,說明這是個實現繼承

你女兒的技能有所改善,說明這是個介面繼承

==============================

另外,喬布斯的那個所謂理解,是個聰明人都可以做到,只是喬布斯更擅長表達而已。

從遺失的訪談里可以看出來,喬布斯的表達慾望極其強烈,基本是一個人的脫口秀,如果他真的對編程有很深的理解,那麼他會說出面向對象思想的全部,而不是部分。

另外,抽象和封裝特性是普通編程語言共有的特點,難道c語言和lisp不能抽象封裝?

而所謂「面向對象語言」的最大的特點就是強調了繼承和多態,這點他竟然沒提

所以,我推測喬布斯不是很擅長編程,思想上的理解的也是比較膚淺、片面

只能說,沒吃過豬肉,還沒見過豬跑嗎


喬布斯沒寫過程序,但他知道為什麼絕大多數自以為懂程序的程序員都是傻子。


哈哈


喬布斯寫過代碼,不過是用來學習編程思想的。編程思想如果用於商業估計比孫子兵法牛逼。就比如面向對象,一輛地鐵造價30億,兩塊錢便可以調用,這就是介面啊!用的好叫做運營,世界萬物皆是對象,你都能調用啊。有人說人生就是智慧與資源的博弈,這話說的好無聊,但是順著往下曲解他們所謂的人生不過是對有限的資源進行編程再去獲得更多資源。所以如果做運營有了編程思想指揮起來就會非常牛逼,因為是以架構師的方式在設計運用,以項目經理方式管理運營。產品就更不用說了,什麼是產品,產品是用來解決問題的,是解決方案。那麼編程思想來做產品首選就會挑選解決哪些問題,劃定邊界,就不會像業餘一樣把產品做的假大空。更知道產品實現的工藝是什麼?就像一個牛逼的機械設計師,不光可以設計還了解工藝,牛逼的設計師一定會發明新的工藝來滿足自己的設計需要。

如果再上升到互聯網思維那就更牛逼了,互聯網思維是對編程思想的立體擴展,資源和效率呈幾何級增長。首選現在所有人類都接入互聯網,也就是說邪惡的人可以控制所有的人,對人類思維進行入侵,比如所謂的粉絲經濟,說到底就是造神,然後套現,這就是對人腦入侵,看看大家稱喬布斯為教主,這把粉絲經濟玩到極致。這裡面的信息量太大三言兩語說不清楚,凡是說喬布斯和馬雲都不會寫代碼就能幹互聯網公司ceo的腦袋想問題過渡簡單。

21世紀商界最牛逼的思維是 面向對象思想,軟體思想,互聯網思維的意義絕對不是網上吹的那些,什麼風口豬!如果你不懂面向對象思想對於互聯網思維你也只能停留在豬的階段!

傳統行業的老闆搞互聯網就屬於業餘,自己都七老八十了,還做著成為馬雲的春夢,妄想自己成為下一個馬雲和喬布斯,哇咔咔!所以他們都去搞020了!

專業人士只玩互聯網,一般玩電影特效,比如magic leap!


這不是扯嗎?能打個比方就是深入理解了?


…原來不是程序大牛,連做程序員的資格都沒有了。

喬布斯本身就是極客出身,人生第一份工作就是程序員,甚至他還是一個很不錯的程序員。

他傳記里描述第一次認識老沃是這麼說的,那是他第一次遇見技術比他強的人。


先問是不是,再問。。


看看這本書:黑客

你就知道問題的答案了。

還有那個對對象的理解我想大多數的書裡面都有說過類似的話吧,不要神話喬布斯。從喬布斯嘴裡說出來和從譚浩強嘴裡說出來就不一樣了?你當閱讀理解啊


不問自取即為盜 == 屬性和方法被封裝到類中,須通過方法訪問屬性

青出於藍而青於藍 == 子類可以繼承父類方法也有自己的方法,也可以覆蓋父類的方法

一娘生九子,九子各不同 == 父類不同子類的對象對同一方法有不同的實現

隨便舉的例子說了面向對象思想的封裝、繼承、多態三個重要特性。面向對象的思想在生活中都可以找到對應說法。其設計初衷就是讓程序能更方便的描述現實世界。本就源自於實際生活。對面向對象思想有很深理解也可以說是對客觀事物有很深的理解。個人認為,喬布斯是個生活高手和處世高手,這是他成大事的重要因素。程序員技術精湛,可如果會熟練調用類中的方法資源,不會熟練調用現實世界中的資源,會在程序中寫方法,不會在生活中謀事,要成事是不容易的。

支持題主不相信媒體過度英雄化喬布斯的觀點。介面,誰都可以去實現,但實現的如何就看個人本事了,好了事半功倍,不好 BUG 一堆。喬布斯作為一個成功的例子,帶給有志之士啟示和方向,誰都可以照這個方向走,但走的如何就看個人能力了,好了造福社會,不好自己吃虧。

總而言之,不管做哪一行,不管處在社會的哪個層次,

人都要熱愛生活,留意生活,用心生活。


這句話就是給喬布斯招黑的,鑒定完畢。

PS:據我了解,喬布斯生前一直保持著對計算機科學的濃厚興趣,也很樂於去了解一些前沿成果和思想。但除了早年有少許編程經歷以外,他幾乎沒寫過什麼程序,難說有什麼很深的理解。

比方說,不能因為我平時也打打籃球,觀看並分析了上百場NBA比賽,我就比喬丹、菲爾傑克遜對籃球有更深的理解。或許我對籃球的理解甚至比不過孫悅~

他之所以能給人留下這種印象,一是因為他對編程有一番「哲學思考」,二是他在一些場合用生動形象的語言給編程小白科普了一些計算機科學的思想,在小白眼中顯得很厲害,三是「喬幫主」的光環加成(逃


這就和偉大的元帥並不需要是一個優秀的射手和格鬥專家一個道理!


對象那章只看了半天不到,我就有這種理解了,可以去街邊買蘋果耳機嗎


喬:我不會實現,但我懂實現的邏輯


所有的傳記裡面都沒有寫喬布斯不會寫代碼啊?這都哪看來的消息。人家本來就很懂的。當然可能不如沃茲尼亞克。


推薦閱讀:

喬布斯不害怕失敗嗎?
喬布斯最初是如何說服各音樂公司在iTunes上銷售音樂的?
喬布斯去世,中國媒體和民眾對此事的反應和討論,和國外媒體/民眾相比,不同之處何在?
對於像喬布斯這樣性格的人,你的態度是怎樣的?
喬布斯為什麼認為用手寫筆的產品就是爛貨?

TAG:史蒂夫·喬布斯SteveJobs |