❶ 要成為一名專業的程序員,從零開始需要怎麼一步步來比較好,要把最底層的先學精通嗎(個人認為)求學長
前言
你是否覺得自己從學校畢業的時候只做過小玩具一樣的程序?走入職場後哪怕沒有什麼經驗也可以把以下這些課外練習走一遍(朋友的抱怨:學校課程總是從理論出發,作業項目都看不出有什麼實際作用,不如從工作中的需求出發)
建議:
不要亂買書,不要亂追新技術新名詞,基礎的東西經過很長時間積累而且還會在未來至少10年通用。
回顧一下歷史,看看歷史上時間線上技術的發展,你才能明白明天會是什麼樣。
一定要動手,例子不管多麼簡單,建議至少自己手敲一遍看看是否理解了里頭的細枝末節。
一定要學會思考,思考為什麼要這樣,而不是那樣。還要舉一反三地思考。
註:你也許會很奇怪為什麼下面的東西很偏Unix/linux,這是因為我覺得Windows下的編程可能會在未來很沒有前途,原因如下:
現在的用戶界面幾乎被兩個東西主宰了,1)Web,2)移動設備iOS或Android。Windows的圖形界面不吃香了。
越來越多的企業在用成本低性能高的Linux和各種開源技術來構架其系統,Windows的成本太高了。
微軟的東西變得太快了,很不持久,他們完全是在玩弄程序員。詳情參見《Windows編程革命史》
所以,我個人認為以後的趨勢是前端是Web+移動,後端是Linux+開源。開發這邊基本上沒Windows什麼事。
啟蒙入門
1、 學習一門腳本語言,例如python/Ruby
可以讓你擺脫對底層語言的恐懼感,腳本語言可以讓你很快開發出能用得上的小程序。實踐項目:
處理文本文件,或者csv (關鍵詞 python csv, python open, python sys) 讀一個本地文件,逐行處理(例如 word count,或者處理log)
遍歷本地文件系統 (sys, os, path),例如寫一個程序統計一個目錄下所有文件大小並按各種條件排序並保存結果
跟資料庫打交道 (python sqlite),寫一個小腳本統計資料庫里條目數量
學會用各種print之類簡單粗暴的方式進行調試
學會用Google (phrase, domain, use reader to follow tech blogs)
為什麼要學腳本語言,因為他們實在是太方便了,很多時候我們需要寫點小工具或是腳本來幫我們解決問題,你就會發現正規的編程語言太難用了。
2、 用熟一種程序員的編輯器(不是IDE) 和一些基本工具
Vim / Emacs / Notepad++,學會如何配置代碼補全,外觀,外部命令等。
Source Insight (或 ctag)
使用這些東西不是為了Cool,而是這些編輯器在查看、修改代碼/配置文章/日誌會更快更有效率。
3、 熟悉Unix/Linux Shell和常見的命令行
如果你用windows,至少學會用虛擬機里的linux, vmware player是免費的,裝個Ubuntu吧
一定要少用少用圖形界面。
學會使用man來查看幫助
文件系統結構和基本操作 ls/chmod/chown/rm/find/ln/cat/mount/mkdir/tar/gzip …
學會使用一些文本操作命令 sed/awk/grep/tail/less/more …
學會使用一些管理命令 ps/top/lsof/netstat/kill/tcpmp/iptables/dd…
了解/etc目錄下的各種配置文章,學會查看/var/log下的系統日誌,以及/proc下的系統運行信息
了解正則表達式,使用正則表達式來查找文件。
對於程序員來說Unix/Linux比Windows簡單多了。(參看我四年前CSDN的博文《其實Unix很簡單》)學會使用Unix/Linux你會發現圖形界面在某些時候實在是太難用了,相當地相當地降低工作效率。
4、 學習Web基礎(HTML/CSS/JS) + 伺服器端技術 (LAMP)
未來必然是Web的世界,學習WEB基礎的最佳網站是W3School。
學習HTML基本語法
學習CSS如何選中HTML元素並應用一些基本樣式(關鍵詞:box model)
學會用 Firefox + Firebug 或 chrome 查看你覺得很炫的網頁結構,並動態修改。
學習使用javascript操縱HTML元件。理解DOM和動態網頁(Dynamic HTML: The Definitive Reference, 3rd Edition - O'Reilly Media) 網上有免費的章節,足夠用了。或參看 DOM 。
學會用 Firefox + Firebug 或 chrome 調試Javascript代碼(設置斷點,查看變數,性能,控制台等)
在一台機器上配置Apache 或 Nginx
學習php,讓後台PHP和前台HTML進行數據交互,對伺服器相應瀏覽器請求形成初步認識。實現一個表單提交和反顯的功能。
把PHP連接本地或者遠程資料庫 MySQL(MySQL 和 SQL現學現用夠了)
跟完一個名校的網路編程課程(例如:http://www.stanford.e/~ouster/cgi-bin/cs142-fall10/index.php ) 不要覺得需要多於一學期時間,大學生是全職一學期選3-5門課,你業余時間一定可以跟上
學習一個javascript庫(例如jQuery 或 ExtJS)+ Ajax (非同步讀入一個伺服器端圖片或者資料庫內容)+JSON數據格式。
HTTP: The Definitive Guide 讀完前4章你就明白你每天上網用瀏覽器的時候發生的事情了(proxy, gateway, browsers)
做個小網站(例如:一個小的留言板,支持用戶登錄,Cookie/Session,增、刪、改、查,上傳圖片附件,分頁顯示)
買個域名,租個空間,做個自己的網站。
進階加深
1、 C語言和操作系統調用
重新學C語言,理解指針和內存模型,用C語言實現一下各種經典的演算法和數據結構。推薦《計算機程序設計藝術》、《演算法導論》和《編程珠璣》。
學習(麻省理工免費課程)計算機科學和編程導論
學習(麻省理工免費課程)C語言內存管理
學習Unix/Linux系統調用(Unix高級環境編程),,了解系統層面的東西。
用這些系統知識操作一下文件系統,用戶(實現一個可以拷貝目錄樹的小程序)
用fork/wait/waitpid寫一個多進程的程序,用pthread寫一個多線程帶同步或互斥的程序。多進程多進程購票的程序。
用signal/kill/raise/alarm/pause/sigprocmask實現一個多進程間的信號量通信的程序。
學會使用gcc和gdb來編程和調試程序(參看我的《用gdb調試程序》)
學會使用makefile來編譯程序。(參看我的《跟我一起寫makefile》)
IPC和Socket的東西可以放到高級中來實踐。
學習Windows SDK編程(Windows 程序設計 ,MFC程序設計)
寫一個窗口,了解WinMain/WinProcere,以及Windows的消息機制。
寫一些程序來操作Windows SDK中的資源文件或是各種圖形控制項,以及作圖的編程。
學習如何使用MSDN查看相關的SDK函數,各種WM_消息以及一些常式。
這本書中有很多常式,在實踐中請不要照抄,試著自己寫一個自己的常式。
不用太多於精通這些東西,因為GUI正在被Web取代,主要是了解一下Windows 圖形界面的編程。@virushuo 說:「 我覺得GUI確實不那麼熱門了,但充分理解GUI工作原理是很重要的。包括移動設備開發,如果沒有基礎知識仍然很吃力。或者說移動設備開發必須理解GUI工作,或者在win那邊學,或者在mac/iOS上學」。
2、學習Java
Java 的學習主要是看經典的Core Java 《Java 核心技術編程》和《Java編程思想》(有兩卷,我僅鏈了第一卷,足夠了,因為Java的圖形界面了解就可以了)
學習JDK,學會查閱Java API Doc Java Platform SE 6
了解一下Java這種虛擬機語言和C和Python語言在編譯和執行上的差別。從C、Java、Python思考一下「跨平台」這種技術。
學會使用IDE Eclipse,使用Eclipse 編譯,調試和開發Java程序。
建一個Tomcat的網站,嘗試一下JSP/Servlet/JDBC/MySQL的Web開發。把前面所說的那個PHP的小項目試著用JSP和Servlet實現一下。
3、Web的安全與架構
學習HTML5,網上有很多很多教程,以前酷殼也介紹過很多,我在這里就不羅列了。
學習Web開發的安全問題(參考新浪微博被攻擊的這個事,以及Ruby的這篇文章)
學習HTTP Server的rewrite機制,Nginx的反向代理機制,fast-cgi(如:PHP-FPM)
學習Web的靜態頁面緩存技術。
學習Web的非同步工作流處理,數據Cache,數據分區,負載均衡,水平擴展的構架。
實踐任務:
使用HTML5的canvas 製作一些Web動畫。
嘗試在前面開發過的那個Web應用中進行SQL注入,JS注入,以及XSS攻擊。
把前面開發過的那個Web應用改成構造在Nginx + PHP-FPM + 靜態頁面緩存的網站
4、學習關系型資料庫
你可以安裝MSSQLServer或MySQL來學習資料庫。
學習教科書里資料庫設計的那幾個範式,1NF,2NF,3NF,……
學習資料庫的存過,觸發器,視圖,建索引,游標等。
學習SQL語句,明白表連接的各種概念(參看《SQL Join的圖示》)
學習如何優化資料庫查詢(參看《MySQL的優化》)
實踐任務:設計一個論壇的資料庫,至少滿足3NF,使用SQL語句查詢本周,本月的最新文章,評論最多的文章,最活躍用戶。
5、一些開發工具
學會使用SVN或Git來管理程序版本。
學會使用JUnit來對Java進行單元測試。
學習C語言和Java語言的coding standard 或 coding guideline。(我N年前寫過一篇關C語言非常簡單的文章——《編程修養》,這樣的東西你可以上網查一下,一大堆)。
推薦閱讀《代碼大全》《重構》《代碼整潔之道》
高級深入
1、C++ / Java 和面向對象
我個人以為學好C++,Java也就是舉手之勞。但是C++的學習曲線相當的陡。不過,我覺得C++是最需要學好的語言了。參看兩篇趣文「C++學習信心圖」 和「21天學好C++」
學習(麻省理工免費課程)C++面向對象編程
讀我的 「如何學好C++」中所推薦的那些書至少兩遍以上(如果你對C++的理解能夠深入到像我所寫的《C++虛函數表解析》或是《C++對象內存存局(上)(下)》,或是《C/C++返回內部靜態成員的陷阱》那就非常不錯了)
然後反思為什麼C++要干成這樣,Java則不是?你一定要學會對比C++和Java的不同。比如,Java中的初始化,垃圾回收,介面,異常,虛函數,等等。
實踐任務:
用C++實現一個BigInt,支持128位的整形的加減乘除的操作。
用C++封裝一個數據結構的容量,比如hash table。
用C++封裝並實現一個智能指針(一定要使用模板)。
《設計模式》必需一讀,兩遍以上,思考一下,這23個模式的應用場景。主要是兩點:1)鍾愛組合而不是繼承,2)鍾愛介面而不是實現。(也推薦《深入淺出設計模式》)
實踐任務:
使用工廠模式實現一個內存池。
使用策略模式製做一個類其可以把文本文件進行左對齊,右對齊和中對齊。
使用命令模式實現一個命令行計算器,並支持undo和redo。
使用修飾模式實現一個酒店的房間價格訂價策略——旺季,服務,VIP、旅行團、等影響價格的因素。
學習STL的用法和其設計概念 - 容器,演算法,迭代器,函數子。如果可能,請讀一下其源碼。
實踐任務:嘗試使用面向對象、STL,設計模式、和WindowsSDK圖形編程的各種技能
做一個貪吃蛇或是俄羅斯方塊的游戲。支持不同的級別和難度。
做一個文件瀏覽器,可以瀏覽目錄下的文件,並可以對不同的文件有不同的操作,文本文件可以打開編輯,執行文件則執行之,mp3或avi文件可以播放,圖片文件可以展示圖片。
學習C++的一些類庫的設計,如: MFC(看看候捷老師的《深入淺出MFC》) ,Boost, ACE, CPPUnit,STL (STL可能會太難了,但是如果你能了解其中的設計模式和設計那就太好了,如果你能深入到我寫的《STL string類的寫時拷貝技術》那就非常不錯了,ACE需要很強在的系統知識,參見後面的「加強對系統的了解」)
Java是真正的面向對象的語言,Java的設計模式多得不能再多,也是用來學習面向對象的設計模式的最佳語言了(參看Java中的設計模式)。
推薦閱讀《Effective Java》 and 《Java解惑》
學習Java的框架,Java的框架也是多,如Spring, Hibernate,Struts 等等,主要是學習Java的設計,如IoC等。
Java的技術也是爛多,重點學習J2EE架構以及JMS, RMI, 等消息傳遞和遠程調用的技術。
學習使用Java做Web Service (官方教程在這里)
實踐任務: 嘗試在Spring或Hibernate框架下構建一個有網路的Web Service的遠程調用程序,並可以在兩個Service中通過JMS傳遞消息。
C++和Java都不是能在短時間內能學好的,C++玩是的深,Java玩的是廣,我建議兩者選一個。我個人的學習經歷是:
深究C++(我深究C/C++了十來年了)
學習Java的各種設計模式。
2、加強系統了解
重要閱讀下面的幾本書:
《Unix編程藝術》了解Unix系統領域中的設計和開發哲學、思想文化體系、原則與經驗。你一定會有一種醍醐灌頂的感覺。
《Unix網路編程卷1,套接字》這是一本看完你就明白網路編程的書。重要注意TCP、UDP,以及多路復用的系統調用select/poll/epoll的差別。
《TCP/IP詳解 卷1:協議》- 這是一本看完後你就可以當網路黑客的書。了解乙太網的的運作原理,了解TCP/IP的協議,運作原理以及如何TCP的調優。
實踐任務:
理解什麼是阻塞(同步IO),非阻塞(非同步IO),多路復用(select, poll, epoll)的IO技術。
寫一個網路聊天程序,有聊天伺服器和多個聊天客戶端(服務端用UDP對部分或所有的的聊天客戶端進Multicast或Broadcast)。
寫一個簡易的HTTP伺服器。
《Unix網路編程卷2,進程間通信》信號量,管道,共享內存,消息等各種IPC…… 這些技術好像有點老掉牙了,不過還是值得了解。
實踐任務:
主要實踐各種IPC進程序通信的方法。
嘗試寫一個管道程序,父子進程通過管道交換數據。
嘗試寫一個共享內存的程序,兩個進程通過共享內存交換一個C的結構體數組。
學習《Windows核心編程》一書。把CreateProcess,Windows線程、線程調度、線程同步(Event, 信號量,互斥量)、非同步I/O,內存管理,DLL,這幾大塊搞精通。
實踐任務:使用CreateProcess啟動一個記事本或IE,並監控該程序的運行。把前面寫過的那個簡易的HTTP服務用線程池實現一下。寫一個DLL的鉤子程序監控指定窗口的關閉事件,或是記錄某個窗口的按鍵。
有了多線程、多進程通信,TCP/IP,套接字,C++和設計模式的基本,你可以研究一下ACE了。使用ACE重寫上述的聊天程序和HTTP伺服器(帶線程池)
實踐任務:通過以上的所有知識,嘗試
寫一個服務端給客戶端傳大文件,要求把100M的帶寬用到80%以上。(注意,磁碟I/O和網路I/O可能會很有問題,想一想怎麼解決,另外,請注意網路傳輸最大單元MTU)
了解BT下載的工作原理,用多進程的方式模擬BT下載的原理。
3、系統架構
負載均衡。HASH式的,純動態式的。(可以到Google學術里搜一些關於負載均衡的文章讀讀)
多層分布式系統 – 客戶端服務結點層、計算結點層、數據cache層,數據層。J2EE是經典的多層結構。
CDN系統 – 就近訪問,內容邊緣化。
P2P式系統,研究一下BT和電驢的演算法。比如:DHT演算法。
伺服器備份,雙機備份系統(Live-Standby和Live-Live系統),兩台機器如何通過心跳監測對方?集群主結點備份。
虛擬化技術,使用這個技術,可以把操作系統當應用程序一下切換或重新配置和部署。
學習Thrift,二進制的高性能的通訊中間件,支持數據(對象)序列化和多種類型的RPC服務。
學習Hadoop。Hadoop框架中最核心的設計就是:MapRece和HDFS。MapRece的思想是由Google的一篇論文所提及而被廣為流傳的,簡單的一句話解釋MapRece就是「任務的分解與結果的匯總」。HDFS是Hadoop分布式文件系統(Hadoop Distributed File System)的縮寫,為分布式計算存儲提供了底層支持。
了解NoSQL資料庫(有人說可能是一個過渡炒作的技術),不過因為超大規模以及高並發的純動態型網站日漸成為主流,而SNS類網站在數據存取過程中有著實時性等剛性需求,這使得目前NoSQL資料庫慢慢成了人們所關注的焦點,並大有成為取代關系型資料庫而成為未來主流數據存儲模式的趨勢。當前NoSQL資料庫很多,大部分都是開源的,其中比較知名的有:MemcacheDB、Redis、Tokyo Cabinet(升級版為Kyoto Cabinet)、Flare、MongoDB、CouchDB、Cassandra、Voldemort等。
❷ 程序員吃什麼好
程序員在很長的一段時間里,是吃青春飯的。
程序員的一日三餐應該與正常人一樣,需補充足夠營養的食物,不偏食。需補充大量白開水、肉乾類、堅果類、奶類、水果、燕麥、黑巧克力。忌食:濃茶、咖啡、酒、膨化食品。
程序員吃什麼都不如累了適當休息來得好。保持睡眠充足,身體健康,程序員工作效率自然提升。
燒腦的活,自動化越難取代,越需要清晰的頭腦,充沛的精神。加班只會越做越錯。當你很累的時候,不如去喝喝咖啡,走一走。當你沒思路時,還不如去上上廁所,也許茅塞頓開。
❸ 話說外企的研發類的程序員需要喝酒應酬么
謹慎喝酒的場合
在戒酒的初期, 與從前的酒肉朋友保持適當距離,或者找個合理的借口來避開以喝酒為主要活動的宴會是明智的做法。但是遲早我們必須出席一些喝酒的聚會,因此如何面對酒局很重要。
如果主人是老朋友,可以事先告知自己現在已經戒酒; 或至少有一位同伴知道我們正在戒酒 ,並了解到它對我們的重要性——他能聲援你並減少你將承受的壓力。
另外如果在出席宴會之前在胃裡先補充一些營養東西對於你穩定情緒是有益的, 你也可以隨身帶著一小包你最喜歡的糖果或是替代食品 。有時候如果在吃完晚餐後,晚上還有很長的喝酒時間時,我們也可以提前離開。大多數的人幾乎完全不在意我們的離去, 他們太忙著喝酒或是諸如此類的事 。
總體而言我們不要過於緊張,因為(1) 別人喝酒並不像我們原先所以為的那樣 (2) 非常 、非常少人注意到或在乎我們是否喝酒 (3)愛護我們的朋友或親戚,他們樂於見到我們不喝酒。
聚會時也許會有喝酒的親戚朋友詢問 :
「 你喝什麼? 「
「 只喝一杯沒關系 「
「 你為何不喝? 「 … 等等 諸如此類的話。
我們盡量採取不說謊同時也讓其它人能夠比較快了解和接受的方式進行說明。 例如」 健康因素」和 「 醫生的吩咐 「 「 我發現自己不適合喝酒 「。一般人都能接受我們現在已經不喝酒的事實,同時停止詢問我相關問題。
當然越早向我們熟識的人坦白事實的真相對自己越好。大部分友善的人會贊賞我們的誠實並鼓勵我們為擺脫酒癮所付出的努力。對別人大聲說出我們不喝酒可以給我們自己很大的幫助, 強化我們保持清醒的決心,同時可能會有一項附帶作用 : 有時候當我們做出如此的聲明後,會鼓勵其它有些想要或需要喝酒的人不喝,別人並不會看低你。
當我們被問到想喝點什麼時,我們大部分人可以接受汽水或其他飲料,如此一來可以讓自己更自在。
很正常的,我們並不希望別人過於關注我們戒酒的事,而是希望能夠以謹慎和隱密的方式而非公開的方式昭示眾人。但有時候一位好心、出於善意的朋友或家人,無意中過度關心我們酒癮疾病的康復情況 。這可能會使我們感到相當為難,這時最好試著忍耐,通常不會超過2分鍾 ,等到我們感覺較為冷靜時, 我們能平靜的解釋我們真誠的感激他們的關心。
有時候一個喝了很多酒的人或者原來的酒友,對於你突然不喝酒不滿意,你碰到這種強迫的情況並心情不愉快時,請記住有千上萬正在戒酒的吧友支持你,即使我們不在現場,但我們的心與你同在 。你要學習避開這一類的人,有時候完全可以找個借口直接離開,即便得罪這類人也不是什麼大不了的事。 畢竟我們不過是採取必要的措施以維護自己的健康。
記住最後一次喝醉的經驗
一如字面上所示,我們指的是「喝醉」酒而非「喝酒」。
對於大多數人而言,長久以來「喝一杯酒」意味著三五好友把盞言笑的歡樂時光。基於我們每個人不同的年齡以及第一次喝酒時周圍的環境,我們都有過各種回憶和期待(有時是焦慮) 使我們可能回想起一杯沁涼的啤酒、一杯雞尾酒、杜松子酒加奎寧水、威士忌加啤酒、一口紅酒或諸如此類的事物等等。
周而復始,在多數人早期喝酒的過程中,對於酒精的期待總是能夠符合實際需要喝下的酒量。
如果剛好每次都能恰如其分,我們自然認為「喝杯酒」是一件令人愉快的經驗,不僅滿足自己的需求,也不會逾越宗教習俗的規范。同時滿足渴望、迎合社交場合的禮儀,並有助於我們放鬆心情、振奮精神,達到我們各種不同的追求目標。例如以一位55歲的芬蘭人而言,當有人找他喝一杯時,不禁立即使他聯想到年輕時,在寒冷的天氣下喝下一兩杯白蘭地或伏特加烈酒後,所帶來的陣陣暖意。
若是一名年輕的女性,她腦海里可能立即浮現,華麗水晶杯裝著香檳、衣香鬢影、耳鬢廝磨、情意綿綿羅曼蒂克的氣氛,或是搖滾音樂會中蓄鬍、長發牛仔裝裝扮的年輕人,從滿袋瓶裝酒中取出一瓶豪飲,閃光燈不停閃爍,四處煙霧迷漫,每個人都尖聲狂叫,令人興奮不已的景象。有一位A.A.會員說:「喝一杯」幾乎等於是吃比薩、喝啤酒的代名詞。
還有一位78歲的寡婦說,她時常會不由自主地想起在療養院時,很喜歡在就寢時來杯雪利酒的習慣。雖說我們腦海中這種對於喝酒的印象極為自然,然而就我們現在的情況而言,卻是一種誤導,這也是我們有些人開始喝酒的方式。
如果我們喝酒的過程僅僅是這樣,那麼我們後來就不太可能會惡化成為嗜酒的問題。然而如果我們毫無畏懼的檢視從前喝酒的過程,就可以看出在我們最後幾年或幾個月的嗜酒期間,不論我們再如何努力的嘗試,未曾再出現如此完美、神奇的時光。
取而代之的是我們一再的發現自己的實際的酒量遠大於此,最後總是導致某種程度的麻煩。也許我們對自己飲酒過度單單只有私下感到些許內疚。
但有時卻會演變為劇烈的爭吵,影響本身工作,甚至導致嚴重的疾病、意外,或法律和財務問題。所以,當一個「喝一杯」的建議出現時,現在我們嘗試著回想從開始喝酒到最後一次可憐的醉酒和宿醉的整個過程。
一般朋友對我們提議喝一杯酒的邀約,一般而言純粹指的是社交應酬、一兩杯淺嘗即止的方式。
但是如果我們認真仔細的回想上次喝醉所給我們帶來的痛苦的全部細節,我們就不會再被長久以來盤據在我們心頭對「喝一杯酒」的印象所蒙蔽。
如今我們可以坦白地承認,就我們生理上的真實反應而言,我們相當確定一杯黃湯下肚,意味著我們遲早又會再喝醉酒,而帶來一連串的麻煩。
喝酒對我們來說已不再意味著音樂、歡樂,而是病痛和悔恨的記憶。有位A.A.會員曾經如此表示:「我知道現在如果去酒吧喝一杯酒,將絕不可能再像以前一樣,只是用一點時間、花一些金錢而已。
這一杯酒將會耗盡我的銀行賬戶、我的家庭、我的房屋、汽車、工作、我的理智,甚至於我的人生。這實在是太大的代價太高的風險。」
他記住了他最後一次喝醉的情況,而不是第一次喝酒的經驗。
舍棄陳舊的觀念
在過去嗜酒期間我們從生活當中累積下來一些根深蒂固的想法,即使在我們停止喝酒之後,卻無法像變魔術一般,轉瞬間就消失無蹤。
雖然我們已經遠離了醉生夢死的日子,但是酒癮疾病依舊徘徊不去。所以我們已經發覺到,如果能夠設法去除許多開始又再度萌芽發根的舊觀念,將有助於我們康復的療程。
而這些老舊的思想,也確實一再地重復發生。我們所努力想要達成的目標就是希望能夠從過去陳舊觀念的束縛中,重新獲得一種放鬆而自由的感覺。很多我們過去思考方式的習慣及
其所形成的概念限制了我們的自主權。
當我們以全新眼光仔細檢視時,原來它們只會壓垮我們而一無是處。我們沒必要再繼續緊抓著不放,除非經過確實的檢驗證明有用,而且真正仍然可以發揮效果。
我們現在可以使用非常具體的標准用來衡量一個想法目前的實用和真實性。我們能夠對自己說「那正是我在喝酒時經常有的想法,這種思考模式現在是否有助於我保持清醒?今天這種思想對我而言是否有益?」我們過去很多陳舊的觀念——特別是那些關於酒精、喝酒、醉酒、以及酒依賴方面的想法(或是嗜酒的問題,如果你比較認同此一措辭)——對我們而言不是毫無價值,就是實際上在自我毀滅,去除掉那些想法將會是極大的解脫。
也許舉幾個例子就足以說明我們拋棄這些陳舊而無用的觀念之益處。當我們在十幾歲的青少年時期,對很多人而言,喝酒是一種宣誓證明,用來表示我們已經不再是小孩子,或者我們已經長大成人,而且聰明老練、見過世面或者足夠強大可以違抗父母和其它權威。
在很多人的觀念中喝酒總是與浪漫、性、音樂、功成名就及優越感、奢華享受密不可分。如果學校有傳授任何關於喝酒的事情,通常只是對於健康的危害和可能被吊銷駕照等——其餘的事並不多。
同時有許多人仍然相當確信任何喝酒行為完全都是不道德,直接導致犯罪、痛苦、恥辱和死亡。無論我們對喝酒的感覺曾經是什麼,正面或負面,通常是強烈而又情緒化遠多於理性。或許我們對於喝酒的態度僅僅只是無意識的,不假思索的全盤接收他人的意見。
對於許多人而言,喝酒是社交場合中,必要而無傷大雅的一部分,在某些地方、朋友之間在特定時間內所進行的令人愉快的休閑活動。
其他人也許視喝酒為佐餐必備物品。但現在我們問自己: 如果不喝酒,是不是就實際上無法盡情享受友情或美食?我們喝酒的方式是否
有助於改善自己的社交關系? 這樣是否能提高我們對食物美味的享受能力?對於想喝醉酒的想法,無論是贊成還是反對,其所衍生的反應甚至更加極端。不勝酒力可能被視為只是好玩或者只是丟臉。
基於各種理由,想喝醉酒的想法常令許多人都覺得反感。可是對我們有些人而言,這是一種渴望的狀態,喝醉酒不僅僅只是為了迎合他人的期待,同時我們自己也喜歡這一感覺。但是同時另外還有一個影響因素,就是由於受到社會知名人士的公然輕忽。
有些人完全無法容忍從未喝醉的人,其他人則是鄙視喝得太醉的人。就現今醫療保健所發現的結論,目前對改變這些態度所能發揮的影響力仍然相當有限。當我們第一次聽到「嗜酒者」這個名詞時,我們大多數人都會聯想到是專門指那些年邁、衣衫襤褸、渾身顫抖或是在行乞令人討厭的人,或是在貧民窟里喝醉酒的人。
現在對此問題有充分了解的人都知道這全都是廢話。然而盡管如此,我們過去所殘留的那些模糊不清的概念,在我們剛開始試著保持清醒之際,依舊縈繞在我們心中。
蒙弊了我們的視線,使我們難以察覺到事情的真相。但直到最後,我們總算變得有意願去接受,轉變過去的那些觀念——只是可能——部分也許有點錯誤,或至少不完全能夠再准確的反映我們個人的親身經驗。當我們能夠說服自己,以誠實的態度看待過去的經驗、並仔細聆聽其它不同於我們自己的想法時,我們就可以用開放的胸懷來面對一長串過去我們所未曾詳細檢視過的信息。
例如,我們可以察看科學專業的敘述:酒精不僅是美味解渴的飲料,而且也是一種能夠改變意識形態的葯劑。我們學習到不但可以在飲料中發現到葯劑,同時也存在於食物和各種葯品之中。而且現在幾乎每一天,我們都可以讀到或聽到一些特定的葯劑對於人體所造成多重的危
害(包括對於心臟、血管、胃、肺部、口腔、腦部等等)這是我們從前所未曾懷疑過的狀況。葯理學家以及其他的成癮治療專家,現在都已經認為酒精無論是使用作為飲料、興奮劑、鎮靜葯、補葯或是安定劑,不能完全視之為安全無虞。但就每個單一個案而言,其本身並未必會直接導致身體傷害或精神惡耗。
顯然大部分人都能夠優雅的使用,而不致對自己或他人造成傷害。我們發現,可將喝酒視為醫學上的服用葯物,酒醉就像是服葯過量。濫用葯物能夠直接或間接的導致各種身體健康、精神、家庭、社會、財務、工作上的問題。
我們能夠開始看到酒精對有些人所造成的後果,而不是大部分只想到喝酒給我們帶來什麼。我們也已經發覺到,任何人,只要是有發生過關於喝酒方面任何型態的麻煩,也許就是處於我們稱之為「嗜酒」的狀況。
此一疾病侵襲的對象不分其年齡、信仰、種族、性別、智力、背景、情緒、健康、職業、家庭狀況、體質好壞、飲食習慣、社會或經濟地位或其它一般的個性。問題不在於你喝多少或怎麼喝、何時喝、為什麼喝,而是喝酒如何影響到你的生活——當你喝酒時發生過什麼事。
在我們能夠意識到自己有這個疾病之前,我們必須先走出一個老舊而又令人厭倦的誤區:承認我們自己已經無法控制酒量是一可恥、懦弱的表現(如果我們曾經如此)。
軟弱?事實上我們需要相當大的勇氣才能正視這一殘酷的現實、毫無保留、沒有掩飾、無需借口,同時我們不用再自欺欺人。(雖然似乎不是在自吹自擂,但坦白說我們很多人都幻想自己是世界冠軍)在我們從酒癮疾病康復的過程中,同樣也會因為一些錯誤的想法而蒙上陰影。就好像其他數以百萬計的人,親眼見到一個人因為喝酒而導致死亡,對於這個嗜酒者為何無法以自己的意志力停止喝酒會非常的驚訝。
這是另一個過時的觀念,我們之所以會將這種想法一直銘記在心,主要是因為我們很多人在早年時期接觸到一些典型、超強意志力的案例,或許是有過家族或鄰里中的傳奇人物。經過多年放盪不羈的生活後聲名狼藉,但突然間改弦易轍放棄酒精、女人,到了50歲的時候,洗心革面、重新作人,從此滴酒不沾,成為舉止得體、誠實正直的模範。
這種當我們准備好時也能夠依樣劃葫蘆的幼稚想法,是一項危險的錯覺。我們不是其他任何人。我們就只是我們自己(我們也不是每天喝一大瓶,一直活到90歲的老祖父。)現在我們非常確定的結論是,僅憑個人本身意志力來克服酒癮問題,其效果就像是治療癌症一般。從我們自己的經驗中已經一再重復的證實此事。
我們多數人曾經嘗試獨自解決,不論是希望控制酒量或是停止喝酒,但無論如何努力嘗試我們就是無法得到持久的成功。即使如此,要使我們坦白承認需要幫助仍然很不容易。因為此種作法,看來似乎也是一種懦弱的表現。
沒錯,我們正深陷於另一種迷失當中。但是我們最後終於問自己:如果我們能夠獲取並運用更強大的力量,是否比自己徒然無益的孤軍奮戰會更有智慧,尤其是在我們自己經過一段時間反復證實無法奏效之後? 如果按一下開關,就能開啟燈光,我們不認為持續在黑暗中嘗試摸索是明智之舉。我們無法完全靠自己獲得清醒。這並非我們所學習到可以保持清醒的方式。
同時充分享受清醒的生活也不是一個人獨自可以完成的工作。只要我們能夠考慮少數幾個有別於我們原本陳舊想法的觀點,即使是暫時性的,我們就已經作了一個正確的決定,邁入快樂、健康的新生活。
原本我們深信絕無可能會發生此事,但這種變化此時此刻正出現於我們成千上萬的會員之中。
❹ 普通程序員的工作生活是怎樣的
通常我們進入公司以後,不會是重頭開始一個項目,而是在已有代碼的基礎上進行維護或新功能的開發,所以必須「讀代碼」。
讀有「泛讀」,了解系統架構、功能模塊,對系統有一個大致的認識,各個功能能找到相應代碼實現的位置。
還有「精讀」,通常就是調試了,在fix bug的時候使用。此外還包括審核:一些規范一點的公司,都會有code review,也是精讀,但不用debug。
對於一個成熟的項目來說,讀代碼——而不是寫代碼——可能是最耗時間的工作了。
寫注釋文檔
為了減少「讀代碼」的時間,我們不得不花時間「寫注釋」「寫文檔」——這個程序員最深惡痛絕的工作。所以現在「爛代碼才需要注釋」的聲音變得越來越強,但無論如何,文檔還是要寫的。(注意:要能區分注釋和文檔)
了解需求
好了,終於到了「寫代碼」的時間了。
然而,在動手開始寫代碼之前,你必須花時間「了解需求」。和自己寫個小程序玩玩不同,在公司,你是為別人寫代碼,所以你一定要了解別人究竟想實現什麼功能。通常,這並沒有你想像的那麼簡單,需要反復的溝通。
當然,也有一些團隊和個人,不願意在這上面「浪費時間」,通常他們的下場就是不斷的寫代碼,然後不斷的改代碼,加班加點的做大量的無用功,整個公司怨氣沖天一地雞毛。
❺ 青島外賣小哥幫崩潰程序員寫代碼的視頻走紅網路,此事件的原委是什麼樣的
作為成年人,我們每一個人都要肩負著許多壓力,負重前行,為了自己和家人更美好的生活。青島外賣小哥幫崩潰程序員寫代碼的視頻走紅網路,此事件的原委是什麼樣的?關於這個話題,讓我們一起來討論一下吧!
關於“青島外賣小哥幫崩潰程序員寫代碼的視頻走紅網路,此事件的原委是什麼樣的?”這個話題,以上就是我的觀點,各位有何想法?歡迎到評論區積極留言。
❻ 看程序員是怎麼喝酒的
程序員喝酒樣子如下圖所示:
請採納!