Linux下學編程用哪個版本的Linux環境好?

初學linux,用什麼入門比較好呢?


裝個Win10,在裡面用WSL或者hyperv里裝ubuntu吧。這樣,在你半途而廢后不用重裝系統就能玩遊戲!


突然覺得 gentoo 不錯啊, 你要是裝上了, 說明對 gcc 各種 flags, 編譯流程, gnu 全家桶有了初步理解, 對 linux 系統的物理和邏輯結構有了總體上的初步認識. 知道 patch 的使用方式. 學會 git, hg 等版本工具的基本操作. 知道了如何 google, 如何閱讀文檔等等核心硬技能.

ps: 本人不對您因各種原因導致裝不上該系統, 並因此造成各種時間和精神上的損失負責.


最近在看生活大爆炸,sheldon已經給出了答案…


Ubuntu和大便是最好的發行版,除了編程以外的事情你什麼都不用管,包括Linux!


NOI Linux

捂臉逃


高中在班裡電腦裝Ubuntu雙系統,大學折騰過Linux Mint、Kali Linux、Fedora,工作後用公司內部定製的tlinux,而現在用CentOS,也推薦CentOS。

真正想學Linux學編程的話,各個發行版的差別真不大,缺失的軟體你總可以裝回來。我認為題主真正的問題不是用哪個發行版入門好,而是怎樣去搭建一個少折騰的學習環境。

許多Linux初學者的一個錯誤想法是,企圖用一個環境去涵蓋生活、學習、工作、開發的所有任務。

一開始你信心滿滿,直接在電腦上裝一個發行版,然後折騰硬體驅動、輸入法、扣扣、Office、炫酷3D桌面,折騰各種發行版,最後重裝回Windows。現在的我覺得,這些折騰並不是在學習,浪費的時間用來真正學習該有多好。

然後你就開始用虛擬機了。結果現在的桌面版Linux越做越臃腫,開個虛擬機卡成翔。

所以,針對這些問題,我的一致解決方案是:伺服器版Linux + 虛擬機 + SSH客戶端

許多Linux發行版都有伺服器版本,或者在配置里默認啟用命令行模式,我用CentOS 7。直接使用純命令行對於初學者可能有點抓狂,但卻是最直接有效的學習編程學習Linux的辦法。命令行模式安裝體積小,佔用系統資源少,我一台4G內存的Mac跑起虛擬機來輕輕鬆鬆。

虛擬機我用VirtualBox,軟體是免費的,跨平台支持Windows、Linux、Mac。

每次用新電腦,我都是直接導入原有的虛擬機鏡像,就可以直接幹活了,不用折騰。而且虛擬機有備份機制,萬一哪次實驗把整個環境搞砸了,直接刪掉導入備份就好了。

虛擬機還有個好處,可以加深對計算機網路的理解。很多程序員沒接觸過實際組網,而虛擬機你隨便搞,網卡隨便加。下面這台虛擬機我用了兩個網卡,一個NAT用於動態訪問外網,一個Host-only用於固定內網訪問。我看評論里對虛擬機網路的理解不夠深。

SSH客戶端是為了擴展命令行。直接在虛擬機里用命令行有點難用,一般都是出故障才用,平時用SSH連接。

我用的是SecureCRT,跨平台不免費(你也可以用其它SSH客戶端),可以保存會話信息、開多窗口、埠轉發、傳文件。用了SSH後,平時學習做實驗連自己的虛擬機,工作的話連公司的開發機,於是就有一個相對統一的環境了。

這裡提一下輸入法問題。在這個方法下是不需要考慮給你的Linux裝中文輸入法的,因為用的是本機的輸入法,不用考慮亂碼,而且商業輸入法更加有效率不是嗎?

該方案優點:

  • 直面Linux和編程,忽略花俏的折騰;
  • 安裝體積小,佔用系統資源少;
  • 軟體都是跨平台,容易備份和遷移虛擬機;
  • 生活和辦公依然用Windows或Mac成熟的軟體;
  • 而SSH為學習和開發提供了統一界面。

//----------------------------------------------------------------------------

很多人在懷疑,純命令行的工作方式,能有效率嗎?實際很可能是最有效率的。知乎學生多,沒接觸過生產環境,所以多說幾句。

首先我是個後端程序猿。

在大部分情況下,連接生產環境的伺服器是沒有GUI的,否則等你連上黃花菜都涼了。為了出故障能到線上排查,純命令行的操作是基本技能要求,環境決定的沒辦法。

至於寫代碼,你喜歡IDE就開個SAMBA服務,映射網路磁碟到本機,就可以在本機寫在linux上編譯運行了;如果你覺得太麻煩就直接vim了。我的話C++、Python、NodeJS直接vim寫,Java用本機的eclipse寫。

那麼其它Linux編程需求,是否需要GUI呢?

我不確定,但沒幾個人會為Linux程序寫GUI吧?至於Android、iOS開發,Windows或Mac下已經有不錯的IDE了。等你從初學者慢慢成為老鳥,發現Linux下每天打開最多的是shell,不是可以嘗試丟棄GUI了嗎?

這個答案不指望初學者能一下子切到純命令行,只是希望分享一些經驗,能幫助你克服對純命令行的心理障礙,減少對GUI的依賴,少走彎路,將折騰的時間回歸到編程這件事來。短期內會痛苦,但長期來看受益良多。


Ubuntu noi特製

手動滑稽


我也折騰過不同的Linux版本,不同的桌面GUI,甚至還搞過平鋪式窗口管理器(awesome),現在想想,自己當初就是個傻逼,24k純金的傻逼!!!浪費了大把的時間研究這些沒用的,好好研究技術,水平肯定能好不少。

對於初學者,我吐血建議,安裝一個不帶圖形界面的Debian就行了。如果剛開始習慣不了,那就安裝一個帶圖形界面的Ubuntu。anyway,不要在版本選擇上浪費太多時間。

另外,有同學問怎麼學,如果是學習Linux的使用,可以看我下面這兩個回答:

知乎用戶:學習 shell 有什麼好書推薦?

知乎用戶:精彩的 Linux 命令有哪些?

如果是學習Linux源碼,我推薦《Linux內核設計與實現(原書第3版) (豆瓣)》。

如果是學習Linux系統編程,可以學習《UNIX環境高級編程 (豆瓣)》。


Linux 和編程無直接關係,「學 Linux 」 和 「學編程語言」 也是兩個東西。

沒人強迫你在 Linux 下學編程語言(注意是編程語言) 。即使你在 Linux 下學編程語言跟你在Windows 下學也沒啥區別。

你應該學好編程語言再來考慮用 Linux 編程。當然到了那種時候以你的經驗和眼光也不至於提出這種問題。

如果你說的學編程指的是學 Unix 編程,那麼肯定在你已經熟練掌握 C/C++ 等語言的前提下。你還能提出這種問題,只能說不是一個有計算機基礎有系統級編程語言功底的人應該糾結的事情,恐怕你應該回去老老實實學好基礎。不要好高騖遠。


更新:

感覺再不放評論的知友就要砍死我了(手動滑稽)

Fedora

Fedora 默認使用 GNOME 桌面環境,同時用戶可以輕鬆的將其切換到 KDE, XFce, MATE 以及 Cinnamon。Fedora 的自定義變體, 被稱作 Fedora 擴展,它們能滿足用戶的一些特殊需求。

———————————————————————————————————————

這一段寫給所有編程初學者:

首先明確一個問題,學編程不一定要用linux。

首先明確一個問題,學編程不一定要用linux。

首先明確一個問題,學編程不一定要用linux。

編程跟Linux沒有必然聯繫,當然,如果你的職業目標是後端工程師、伺服器運維這種,Linux必學。但如果僅僅是入門學習,或者未來的職業環境跟Linux關係很小,那完全可以先把Linux放在一邊,核心技能足夠熟練再來說別的。

一直都有一個很奇怪的論調,在Linux環境下編程效率高。仔細推敲一下就知道,編程效率的最大影響因素永遠是程序員本身,你的工作習慣足夠高效,無論在什麼平台下效率都低不到哪裡去。

——————————————————分割——————————————————

一旦你決定要用Linux來學習編程,那麼請看:

首先,明確你的目標。你在Linux環境下編程的目的是什麼?

Linux有海量的發行版本,各個版本有自己的不同理念,甚至隨著領域細分還有steamOS這種專門用來玩遊戲的版本。

試著想一下你的目的,如果只是為了隨大流或者扮酷這種理由,不如花個兩小時設置一下自己的Windows桌面。

其次,你有沒有耐心去適應不同的操作系統。

如果有信心、有能力hold住命令行,那你的可選範圍會比較大。

如果不想花時間在命令行上,也有很多專註圖形界面的系統供你選擇——當然,這時候的最佳選項當然是Windows。

如果以上兩項都沒能攔住你,那恭喜你,可以嘗試入門Linux了。

比較適合入門級學者的版本:

Ubuntu

Ubuntu是一款基於Debian發行版,以Unity作為默認桌面環境的Linux操作系統。他是世界上最流行的發行版之一,每次發行,它都有提升。最新發行版為桌面、移動及其桌面移動混合版的優化。

現在依然有Ubuntu移動平台,它專用於一些合作的智能手機及少數致力於Ubuntu觸屏手持設備。較新的設備集成了彙集軟體(Convergence software),使你可以通過無線HDMI連接器將你的智能手機轉到PC上。

Kubuntu

Kubuntu是Ubuntu的衍生版,使用KDE而不是Unity作為默認桌面環境. 在此情況下,Kubuntu與Ubuntu大同小異,其發行時間也與Ubuntu保持一致。

Mint

Mint是優雅、現代Linux發行版,它易於使用且功能強大。它基於Ubuntu開發,可靠而安全,是最好用的管理軟體之一。最近,它又成為了最為流行的Linux發行版之一,聲稱為Windows及Mac OS後最為流行的家用操作系統。

Mint有著豐富的桌面選項,默認為Cinnamon桌面, 你還可以使用MATE, KDE或Xfce.。Mint的Debian版也可用,定位為有經驗的Linux用戶。

Deepin

更正: deepin現在基於debian,感謝評論區知友 @AetherL @鄭小信 提醒

Deepin 是一個基於 Ubuntu 的發行版,它帶有時尚美觀的深度桌面環境(Deepin Desktop Environment,DDE), 旨在吸引新的 Linux 用戶。它的界面簡單直觀,系統設置面板的是所有發行版中最好看的一個。 DMusic, DPlayer 和 DTalk 是其專有的應用程序。

有許多的基於 Ubuntu 的衍生版本都在視圖用它們自己的方式來解決一些問題,而其中特別受關注的一個就是 Deepin。

https://pic2.zhimg.com/v2-556302cba62ef43a5e4bdc70c6451a49_b.jpg

Deepin 還具備易於使用的軟體中心,遠勝於其它具備類似功能的發行版。

PCLinuxOS

PCLinuxOS 是專為普通 PC 用戶設計的,它默認使用的是 KDE Plasma 桌面。這個發行版在安裝驅動,獲取辦公軟體,編輯照片,上網以及使用多媒體等操作上使用非常方便,還能快速創建快照備份。

Linux Lite

基於 Ubuntu LTS 發行版, Linux Lite 是一個最小化的省空間型發行版, 它擁有一個乾淨簡單的 Xfce 桌面,而且是 Windows 風格的。

Linux Lite 的目標是將 Windows 用戶引向 Linux。它對資源的節省意味這你可以在一台 CPU 只有 700Mhz 而且內存只有 512M 的 PC 上安裝它。這就是我們所說的輕便(light)!

Zorin OS

Zorin OS 是專門為 Linux 新手設計的,便於人們從Windows 向 Linux 過渡。它擁有 Windows 用戶比較熟悉的基於 Ubuntu 發行版的功能以及應用,也能讓用戶方便的使用他們仍然需要的 Windows 應用。Zorin OS 9 看起來很像 Windows 7,這樣做只是單純為了贏得一些從 Windows 到 Linux 的轉化。

為工作做準備

CentOS

CentOS(社區企業操作系統)是一個由社區重建的Red Hat企業版Linux。它是專為那些想免費使用一個企業標準發行版的人而設計的。

Red Hat Enterprise Linux

紅帽企業版Linux是Fedora的商業衍生產品,專為企業客戶設計。 它提供諸多變體、插件以及認證可供管理員和應用程序使用。

可能是你的終極選擇

Steam OS

Linux上的遊戲變得越來越受歡迎,雖然你可以在Ubuntu上輕鬆的安裝Steam數字版下載服務,但你可能更喜歡一步到位安裝Steam OS。這是一個以遊戲為中心的發行版,針對遊戲性能進行了優化,內置了專有的圖形和聲音驅動程序,以及Steam客戶端。


你想更深入了解學習Linux知識體系,你可以看一下我們花費了一個多月整理了上百小時的幾百個知識點體系內容:

【超全整理】《Linux雲計算從入門到精通》系列實戰筆記全放送


首選git for windows自帶的mingw-w64

次選windows subsystem for linux,一些mingw/msys不能給你的東西wsl可以提供,不過wsl也有一些缺失的功能。

備用選擇msys2。


Ubuntu 不折騰。


當然是ubuntu。失去了apt-get的我形如上岸的鹹魚


有人手把手指導,用什麼都可以,遇到問題能解決。

沒人指導,那用什麼發行版都免不了學習適應的過程。別信什麼不折騰的說法。要真有完美的發行版,拿來就用,一點問題不出,大家都十分滿意,那早就一統江湖了,你也不會問這個問題。

哪個都不好,找一個你能找到人願意指導你的。


我從 1997 年開始用 Linux。從 slackware 開始,比較流行的發行版用過一圈。要我說,還是覺得 ubuntu 最適合入門。ubuntu 有比較大的社區,這對初學者很重要,基本上你能遇到的問題網上很容易找到解答。你花在系統本身的時間比較少,就可以把更多精力放在開發上。


講道理我覺得安安心心用Win沒什麼不好的。。需要鼓搗開發環境?這都是小事,等你在Linux下想用QQ的時候你想死的心都會有的。。


大家都在用ubuntu,你也就去用ubuntu,這樣各種問題都可以一兩次google解決,選系統經不起裝逼。等你ubuntu熟悉了,可以在同一層面上拓展:suse,fedora,然後升華:centOS,redHat,入魔:gentoo,各種BSD,玩兒唄。但真的,性價比最高的,還是ubuntu。到最後你用的不是linux而是docker,nginx,nagios這些東西。


強烈推薦Arch Linux如果你學習能力夠強

基本安裝完就對Linux有了基本的使用基礎和了解

再加上軟體包基本都是最新的且都是默認配置文檔豐富AUR里幾乎啥都找得到

其實現在滾掛不是很容易了,只要常常更新就行

不過還是得注意備份(rsync一條命令就可以了

不過想快速上手且不影響日常使用的話我推薦WSL


Ubuntu就行

但是它的unity桌面環境特別丑

所以Ubuntu-gnome


關鍵是你學什麼編程啊?C++編程嗎?那有個編譯器就行了,你用windows學也行啊。


推薦閱讀:

如何編程求解 100 以內的質數?
為什麼很多C++書籍在講字元串的時候主要使用字元數組而不是string?
如何設計(規劃)一款遊戲戰鬥系統的狀態機?
易語言精通之後是不是能跟C++這些主流的編程語言一樣強大?
Windows 平台下除了 Visual Studio,還有什麼軟體能編譯 C、C++ 文件?

TAG:編程 | Linux | 計算機科學 | CC | Linux入門 |