開源是否會讓程序員丟掉工作?

正在全世界範圍內進行的如火如荼的軟體開源計劃,如果開展的時間足夠長,足夠深入,造出的輪

子已經足夠多,在可以預見的未來,是否會讓眾多為之付出的programmer丟掉工作,或者直接讓

Programmer這個工作本身消失?

幾個問題:

1,以後會不會出現中文編程呢?(這裡說的肯定不是說易語言了,而是另一個層面的中文,第三層shell,在現在的基礎上再裹上一層,而且大部分是中文)

2,各種IDE會不會再給自己套上一層翻譯環境,以至於以後HR,文員就可以像寫word一樣,直接寫出一個工程,或者更形象點說就像寫現在代碼的注釋一樣寫未來的代碼呢?然後由框架或者IDE直接後台翻譯出來?已經有一些苗頭出現在曾經的Dreamware和現在的Visual Studio,以及未來的所有IDE上。

由此引申出來一個問題:是不是所有與機器打交道的工作,都會在未來被現在正在與機器人打交道的人自己幹掉呢?

3,覺得大家還是保守,還有的童鞋在以當下的眼光來看待上面提的問題,我黑體白寫了,額。

4,@黃兢成說的很好 「 編程中,重複性的工作肯定會被淘汰。社會中,重複性的工作都會被被淘汰。」,但在未來」重複「的界限會被已經產生的無數 」 輪子 「 碾壓、拓寬到何種地步呢?

5,我自己是相信 『輪子』數量級的量變 是一定能夠產生一些質變的。


編程的工作不會消失,名字或者會變,但不會消失。

編程困難之處,是需要精確無歧義地描述一件事物。只要你做到這個,就很容易學會編程。編程的語言、工具都不難,但需要你長期動手實踐、熟悉。編程包含兩部分,想清楚,動手做。

很多人沒有覺察到,日常語言是很含糊的。因此編程才需要發明更精確的語言,就如同數學需要一些符號公式。這並非是想為難普通人,讓普通人看不懂,而真的是實際需要。普通人讓程序員說人話,總想將代碼翻譯成日常語言。而對於程序員,代碼更容易看懂,更需要將日常語言翻譯成代碼。Talk is cheap. Show me the code.

日常語言約定俗成,創作出新辭彙,我們基於這些辭彙更好地說話。而開源的庫,就讓程序員,有更好的辭彙,描述更抽象、更高級、更好的東西。

除了辭彙,我更喜歡將編程比喻成拼積木。最開始只有一些簡單基本的積木,用這些小積木拼出更大的積木。積木一旦拼好,就可以無限複製。之後再用拼好的積木拼更大的積木。這樣可用的積木就會越來越多,越來越高級,就可以拼得越來越快。開源就是向其它人分享這些積木。

為什麼編程不會消失?因為人們基於舊東西會創作出新東西,永遠有想拼的更複雜的積木。比如資料庫,前輩程序員耗了心力去拼這個積木。之後的程序員有了這個資料庫這個積木,就可以直接用來做網站。一代代程序員薪火相傳,向前進。這個過程沒有盡頭。或者有一天沒有現在的人類了,也會有新人類重複這過程。假如有天機器會思考,會創造,它還會是機器嗎?它應該改成他,他就是新人類。

編程中,重複性的工作肯定會被淘汰。社會中,重複性的工作都會被淘汰。

現在的編程工具還比較落後,但放到十年前,簡直是夢幻般存在。而今天的軟體,比十年前要複雜得多。今天我們用更好的工具創作出更複雜更好的軟體,十年後也是。

拋開程序員,讓普通人動手做產品,這個念想從計算機被發明開始,就一直沒有停息過。實際上已經實現了部分。今天的大部分程序員,放到十多二十年前,也就是普通人。程序員並沒有被拋開,反而越來越多,因為越來越多的普通人也可以編程,成為程序員了。

1,以後會不會出現中文編程呢?

我不清楚這裡說的中文編程是什麼意思。假如只是將英文的 "if", "else" 換成中文的 "如果", "否則"。這早就有了。程序員是很務實的,總會選擇有用而非花俏的工具。敲中文去編程,總需要切換輸入法,不方便跟別人溝通,看起來也累,註定流行不了。

但如果是用中文去描述,就自動出現一個軟體。這種要求,首先需要說中文的人描述得精確並無歧義。你可以做個實驗,你是 A, 先在紙上畫一些最基本的三角形和正方形。給另外一個人 B 一張相同尺寸的紙,你用中文去描述你紙上的圖形,讓 B 畫出來。B 不能看你的圖形,而你只能用中文去描述,不能動手畫。最終對比 A 畫的圖形和 B 畫的圖形。這個實驗中,A 相當於用中文這種高級語言去編程,B 是可以理解中文的計算機。

想精確無歧義地傳達意圖,是很難很難的。

2. IDE 是否可以自動翻譯人們意圖?以後 HR,文員就可以像寫 word 一樣,直接寫出一個工程,然後由框架或者IDE直接後台翻譯出來呢?

這個問題見上文。HR,文員用 word 來描述意圖,假如可以描述得很精確無歧義,實際就相當用 word 編程。你沒有意識到,日常的 hr、文員、產品經理用文檔去描述需求,是多麼的含糊。假如文員能夠精確無歧義地描述意圖,他實際上可以改行當程序員,還會是很厲害的程序員。

3. 是不是所有與機器打交道的工作,都會在未來被現在正在與機器人打交道的人自己幹掉呢?

這個問題的關注點錯了。不應該太過於關注跟機器打交道,還是跟人類打交道。而更應關注你的工作是重複,還是有創作性。跟機器打交道,可以有創造性。跟人打交道,也可以是重複。人們普遍認為機器就是死板重複的,這只是誤區。重複性的工作必定被淘汰,有創造性的工作就不會被淘汰。比如商場收銀員,她的工作跟人打交道,但是重複的,這種工作就容易被淘汰。基於同樣道理,銀行櫃員,一些中介(並非全部),汽車司機,大部分農民,也很容易被淘汰。

程序員對著計算機,假如是很重複性地去拼湊代碼,也容易被新人淘汰取代,拼體力是肯定不夠年輕人的。需要思考如何更有創作性,讓工作價值快速增長,讓自己不可被替代。這個問題我沒有完全想好,以後怎麼做要靠自己思考行動,別人幫不了。不要等被淘汰就就說程序只是青春飯。事實上很多人是不適合當程序員的,只不小心混進來的,過幾年被淘汰也應該。被淘汰也好,可以去干更有前途的工作,比如賣賣牛雜,加盟 7.11。

而我自己會繼續編程,但需要更厲害,可以持續養家糊口。我這樣笨,這樣懶,除了編程我想不出可以做什麼。而想在編程達到頂尖,到一定程度,就不能整天埋頭於編程。就需要接觸額外的領域,比如設計,推廣,規劃,審美,文學,工程等等。


先來回答你強調的黑體字吧:

時間和深入度不說,單獨說「造了足夠多的輪子」。請問,我們現在造的這些「輪子」,有多少是給「非程序員」使用的?這些「輪子」只是程序員自己給自己做的工具,因此如果你對「輪子」的定義和現在出現的「輪子」一樣,那麼有多少「輪子」都不會讓程序員這個職業消亡,因為「輪子」的產生是為程序員服務的,而非替代程序員。

幾十年前,當「程序員」們在tape上打孔的時候肯定在想,我要是能寫點能更容易看懂的字來代替這些毫無意義的孔就好了,比如「MOV r1, r2」代表把r2放到r1。

再後來,「程序員」們寫彙編的時候想,我要是能發明一種更接近人類的更簡潔語言,然後用一個工具把這種語言翻譯成彙編就好了。比如a=b就讓他把b的內存賦值到a。

再後來,「程序員」們想,要是我直接把常見的函數集成到我的編程語言里就好了,比如sort比如reverse比如append。

輪子在不斷的產生著,但是這個過程本身只是降低了「程序員」的門檻,並沒有代替「程序員」。或者說它做了以前「程序員」們做的一些工作,而新的「程序員」們做了新的工作。從這個角度說,是的,有一些程序員被替代了,但是更多的程序員又加入了進來,所以「程序員」這個集體實際是增大了。

只要我們還用電腦,並且把「讓電腦按照我的想法做事」的人叫做programmer,那再多的輪子和開源代碼也不會讓programmer消失,只會讓成為programmer更容易而已。

因此我對你問題的答案是,不,足夠多的輪子並不會讓programmer消失,但是或許會讓programmer的門檻過低,導致這個詞的意思被淡化。

然後來回答你下面的問題。

會不會出現中文編程呢?我需要先問你,你認為現在是「英文編程」么?如果你認為是,那麼請問你為什麼認為現在是「英文」編程?是因為if和else是英文?還是ASCII碼裡面是英文字母?如果因為這個就認為是「英文」編程,那「中文」編程早就出現了。

實際上,我根本不認為現在是「英文」編程,「中文」編程也就無從談起。現在的程序語言只是借用了一些英文單詞和字母,本質上是完全獨立的語言。因此你可以把這些單詞和字母完全換掉,它依然是它自己。你換成俄文法文西班牙文,C都是C。所以「中文」編程這個概念根本就沒有意義。

第二個問題我其實上面已經回答了,程序員的門檻已經變得越來越低,從當時無比接近機器,到現在python之類的語言已經蠻接近自然語言。很多時候你雖然不知道有沒有這個函數,但是你用英文猜一下沒準他就工作了。所以編程語言向自然語言發展是趨勢。

但是自然語言本身有其局限性,自然語言是不嚴謹,充滿歧義的。而編程語言在往自然語言發展的過程中,由於計算機的需求,要求其無歧義,在這之間自然有一個不小的鴻溝。所以「文員」們寫程序絕對是可以預見的,但是一個「會說話的人」在不經過任何訓練的情況下「寫程序」中間還有很多很多問題要解決。

最後要談談時間線了,儘管現在科技發展飛速,但是你想到的黑科技絕非朝夕之功。有些事情是技術上有差距,我們可以加速趕上,有些事情是理論上有差距,在理論問題解決之前,技術的進步是不本質的


0: 輪子是給程序員用的,車是給最終用戶用的。沒有程序員就沒人組裝輪子,於是就做不成車。

1: 在現有編程範式下引入中文沒意義,中文和英文對於編譯器解釋器都是標識符,會一視同仁。況且輸入中文還浪費時間。

2: 假設以後出了更高級的語言,使用這些語言編程的人仍然叫程序員。只不過勞動簡化之後,程序員就有時間去學寫作、設計、產品、銷售,把文職人員擠下去了。你覺得做excel做幻燈片簡單,寫比它們難100倍代碼的程序員理應就能勝任啊,你怎麼知道程序員做文職工作就一定做不好呢?你這是歧視知道嘛?現在程序員做不好是因為一心不能二用,假設編程真的極大簡化之後,你怎麼知道是文職人員干開發而不是技術人員干文職???

你覺得程序員是具有編程思維並擅長跟機器打交道的一群人對吧?我就告訴你,程序員同時也具有創造思維,如果沒有創造之樂,程序員也不會樂於去學習編程。假設有一天編程思維不再重要了,程序員就可以把自己的創造力發揮到各種領域,到時候才是文職人員的噩夢

p.s. 看來你根本不知道抽象的代價是什麼,你用高級語言編程是比彙編簡單了,但總得有人維護高級語言到指令集之間的工具鏈。抽象級別越高就意味著工具鏈越龐大。到時候編程的門檻低了又何妨,我只要去做給面向最終用戶的程序員用的程序就好了。


只要看看不需要寫程序的excel 有多少HR和文員會用就好了,鎚子砸釘子這麼簡單的事情都有人要砸到自己手指頭。

沒那個腦子就做不了那個事。

拖拽就能做出高端大氣的網站,甚至從word和ppt生成企業網站還帶工作流的技術叫sharepoint,做這事的人工資不比程序員低。

的確HR和文員都能做,但是前提是去參加一個大概5000多歐元的培訓手把手教,而且拖出來的東西只是個界面,業務邏輯還是要寫代碼。


正是由於開程中國才有可能有大量的程序員

C語言上手能力三年左右

java語言上手能力一年左右

php語言上手能力半年左右

windows 環境布署 學習時間半年-5年

liunx 環境布署 學習時間3年

Oracle 布署 學習時間4年

mysql 布署 學習時間1年

開源前框架從開始到發布1.0 時間五年

從發布到流行三年

現在框架從開始到發布 0.1 時間三個月

從 0.1 到流流行 2年

開源越多工作機會越多

信息資源與物質資源的區別

越用越多

---------------------------為了三多說幾句-----------------------------------

1. 中文編程已經存在了,只是你沒發現,

實用方向 如:聊天機器人

語法方向 如:lisp

2. HR使用excle來計算工資, 加班, 之前需要學習財務知識3年左右.

如果你想說的是眾包平台+開源社區 也很接近你說的樣子了.

我見過幾十個非程序員在向我詢問js的一些寫法.造工具

3. 對於足夠長的時間之後,程序開發量會以另一種巨大 的表現在大家面前

正如打鐵的鐵匠, 當工具足夠多之後就沒了鐵匠了么?

人類分工方式總是向著細分方向進行下去.

就現在的軟體來說

UI設計的美學基礎要求會更高

UE設計的人類行為學基礎要求會更高

演算法工程師的數學基礎線性代數要求會更高

(窮舉是現代軟體自動化開發的主要途徑)

api介面工程師了解的語言與硬體的要求會更高

性能工程師的材料科學基礎要求會更高

測試工程師的神秘學基礎要求會更高.

輪子越多,約束越少,約束越少,接觸的未知越多,未知越多,需要的輪子越多.

信息資源與物質資源的區別

越用越多

4. 就光我用過被廢掉輪子記念一下

coblo ,struts1X , CUBRID,ext3,

----------------------------------------------

5. 想起第一次寫E 文 email了

格式, 格式, 格式, 重要的事要說三遍

從老子那年代大家就在用中文字程序了.


謝邀,不會,所描述的場景早晚是會發生的,這也是計算機專業努力的方向,應該也是很多其他專業努力的方向,程序員在這裡扮演了一個最底層的勞動者角色。但是那要在人工智慧可以通過圖靈測試之後了,還遠的很。當前活著的程序員恐怕都看不到那一天,說起來也挺悲哀的。這樣的一天將是人類發展史最重要的一天。

1、中文編程早就有了,叫做易語言,實際意義不大;

2、目前也有這樣的東西,編程環境已經很友好了,但是一分友好的環境就要程序員十分的工作才能支持住,所以仍然需要程序員,而且還遠遠不夠友好;

3、是的,這應該是第三次工業革命的主題吧。


中文語言?現在就行啊,很多現代語言都支持中文變數名函數名類名之類的了,幾乎只剩下關鍵字必須是英文了。

程序員會失業?放心好了,這是必然的,所以,還是抓緊時間成為技術大牛吧,將來可能就沒機會了。


題主要搞清楚,現在有兩類世界,一類是物理世界,也就是physical空間,一類是信息世界,也就是Cyber空間,程序員就是來溝通這兩類世界的,其職責是將模糊的物理世界需求轉換成確定的信息世界實現。換句話說,編代碼只是程序員工作中的一小部分,大部分工作是都是這個需求轉換,而恰恰這個需求轉換,是計算機代替不了的,所以程序員這個職業在可以預見的將來,是不會消失的,當然像那種底層代碼民工,我們一般不認為他們是程序員。

舉個例子,當年我們做個網站,其中某個網頁上要顯示領導們的名字並排好序,這個排序的演算法有很多現成的,我們引入一個包,幾行代碼就排好了序,結果領導們一看就不滿意,說應該是按姓氏筆畫數排序而不是拼音排序,但當時沒有這個漢字的筆畫數API,只好拿本新華字典把百家姓的筆畫數給數好寫在程序里,還因為「上官雲」這樣的領導是應該按「上」字算筆畫還是按「上官」算筆畫折騰了好一陣,最後還有領導按姓氏筆畫排,技術人員先按職稱排然後再按筆畫等奇葩的要求,所以在這樣的情況下,你輪子再多,也還是得跪。


→_→拉倒吧,把需求轉化成應用程序的那個人就是程序員

不論這個人用的工具是vim、Eclipse、Visual Studio

還是Word、PowerPoint、Excel

更或者是腦機界面、魔法、超能力


源碼和軟體之間有巨大的鴻溝 給很多人源碼自己編譯其實挺難的

哦對了 linux有個包管理器 這東西看起來不錯 哈哈哈 還是很多人用不好

用戶就是用戶 用戶沒必要會編譯源代碼 甚至可以不知道這個過程 現實如此

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

有異議的可以試試自己搭建gentoo 或者LFS

這都有完善的文檔


不開源,很多程序員沒飯碗


能讓,AI足夠了之後,就可以。


這樣說吧,把汽車引擎的圖紙,輪子的圖紙,全部給你看,你是不是就能把寶馬弄出來呢?

顯然不是嘛……你要看懂圖紙、懂製造、懂設計,最終,你會選擇去經銷商那裡買一輛車,而不管這車是不是開源……

你只看到了我寫下一行代碼,卻看不到我寫下這行代碼的背後有多少積累。


不用說編程。你就說畫畫吧。畫畫誰不會?一張紙一支筆就可以開始,簡直low到爆的入門門檻。可是敢說自己「會畫畫「的人又有多少呢?

你說開源,不就是源代碼分享給別人隨意學習隨意用嗎。這有什麼稀奇的,你看過達芬奇的蒙娜麗莎嗎?你不可能看不懂吧,但你能畫得出來嗎?學會使用開源框架是很簡單的,但是真正能理解並寫出來的人卻遠比你想像的少。

開源這玩意兒,就是拉低入門門檻而已。但是你卻把它理解為消滅了這個行業,我就理解不能了。


整得開源的東西拿過來直接就能用似的

能把開源的東西結合具體的業務用好,也是一種水平


恰恰相反,沒有開源會有很多程序員失業的。


如果有一天抄襲不犯法,並且人們也能清楚地知道原作者,那麼作家這個職業會消失嗎。

開源計劃已經進行得足夠深入了,現在最前沿的技術幾乎全部是開源,所以如果有一天程序員這個職業消失了,也不是開源的鍋,而是已經沒有更多的需求,如果人類沒有被技術鎖死的話不太可能出現這種情況。


魔獸爭霸的地圖編輯器人人都能玩一把,但是Dota卻不是普通人能做得出來的。

很早前有流行過自己在模板上拖拉控制項組成一個公司網站,然而因為無法控制大量的細節效果,也都成為了雞肋。


開源都好幾十年了,你看程序員數量是多了還是少了?

人工智慧沒出現,程序員就會繼續存在。人工智慧出現了,那人類所有工作估計都會消失。。。


?開源的意義

?開源代碼實現的是通用模型結構。針對特定場景需要進行定製修改。

?工作不會消失,只會隨著開源,工作效率提高,定製服務細化。


推薦閱讀:

Gentoo 做桌面的話,有什麼優勢?
如何看待 GitHub 項目刷 Star 行為?
免費的Linux server如此優秀,為什麼還會有人買昂貴的windows server?
BI數據可視化工具應該如何選擇?
有什麼好的開源自動化測試框架可以推薦?

TAG:程序員 | 軟體開發 | 開源軟體 | 開源 | 開源社區 |