當前位置:首頁 » 編程軟體 » 煩人的編程

煩人的編程

發布時間: 2024-05-25 06:21:37

⑴ 我是有多煩改別人代碼.腦子快裂了

前幾天重讀Eric S. Raymond的How to become a hacker,看到他推薦編程入門選用Python,突然覺得很壓抑,有了些想法。我建議編程入門的人學C或者Pascal,如果更進一步的話可以用匯編語言,因為這樣能更清楚的了解底層。

下面針對一些支持選用Java, Python, C++(指用了非C特性的C++)等高級的OO語言入門的人可能的原因作些說明。

1. Pascal, C太老了,過時了,平時用得很少,現在流行Java等等。

標准Pascal的確是比較老了,不過有Delphi後繼呢,說C老恐怕就是無知了,C現在用得很廣泛,似乎sourceforge上的項目還是 C的最多。推薦Pascal不是因為Delphi。選擇Pascal, C是覺得兩個現在很常見,語法很有代表性,簡潔明了。

不要動不動覺得什麼東西過時了,COBOL還有OO版本面世,還有FORTRAN,LISP,好古老的語言吧,現在還用得很廣呢。

2.入門要從OO開始,培養用OO方式思考的習慣。

首先要說明,OO是方法,不是語言,初學者一入門便擺弄Java, Python, Delphi等很容易形成誤解,似乎OO=Java, Python, C++...

其次,過程式語言(或者說結構化方法)的精髓不會消亡,OO裡面也不可能擺脫掉一條條的語句、函數調用,結構化方法還是需要提倡的。OO方法不是那麼容易學會的(OO語言的語法弄得很熟練不代表你懂OO),而結構化那套方法,自個寫個千把行的程序就很能體會了,我是說寫個實用點的東西,比如試著自個實現一些數據結構和演算法,寫幾個小游戲等。寫個一千行Hello world等於沒寫。

我覺得方法是實踐中體會出來的,不是看看書就能學會的,你看Design Patterns等把模式背的滾瓜爛熟很可能會陷入過度設計的泥潭,你寫了幾千行代碼,然後再去讀一讀,改改調試調試,慢慢增加功能,你就會發現自己代碼寫的有多麼臭了,然後看看書聽聽別人意見你就知道什麼叫Best practice了,最好的經驗就是在焦頭爛額之際得到的。

過程式語言的代碼一般比較簡練,我們編程序最終的目的是要解決問題,是要計算,是要獲取信息,不要被OO, pattern, EJB, Web Services等迷糊了(我不是反對這些技術).

強烈建議各位多讀代碼,你去看看萊昂氏的那本UNIX v6源碼,仔細看,慢慢看,你就能體會到什麼叫精緻的代碼了,然後嘗試按照那個風格寫代碼。

3.過程式語言弄久了,很難轉入OO的思維模式

我以前也沒有深想過這個理由,不過時間久了,發覺自己不過是把數據和方法集中在一起而已,看著方便,其實有很多不合理的東西,這里頭就需要OO 的理論指導了,還是需要時間來體會。我相信有很多用OO語言的人也不過是在框架里頭添添代碼,調用來調用去而已,把人類當作數據和操作的打包器。

個人覺得只有在用過程式方法做了十來年,編碼上十萬行後才有思維定勢,難以習慣用OO的眼光看待系統,然而這個轉變,我仍覺得比改變一個人的惡習容易許多。OO方法不是學了個Java, Python, C++等就能掌握的,需要實踐,需要時間。過程式語言也容易培養一個人嚴謹的做事態度,比如用Pascal, C等寫代碼,沒有namespace,沒有function overload, 沒有reference(Pascal有,呵呵,我喜歡),沒有template, 沒有exception, 你要花很多心思處理一些細節,比如警惕數組索引越界,懸掛指針,野指針等等,請不要覺得麻煩,這個就是計算機啊,底層就是這樣的啊。 4.別用C, Pascal了,看我用Java, Python, Delphi, B, C等輕輕鬆鬆就寫了個PP的GUI,NB的分布式應用...

這篇文章是給初學者看的,也可以給一些浮躁的人看看(我也反省,呵呵),初學編程的人精力應該放在數據結構、演算法上面,盡量多看一些底層的東西,數字邏輯,操作系統,編譯原理,計算機組成、體系結構,計算機網路等等基礎知識。編寫GUI拖幾個控制項有什麼好吹的,你懂界面設計的原則么,你知道窗口消息怎麼回事么,你編的界面是把易用放在第一位呢還是把漂亮放在第一位呢,你的GUI程序容易修改嗎?比如我一會要加個button,一會去個 listbox,你會不會改的瘋掉呢?你是不是在OnClick里頭寫了大段大段的代碼,做類似「從edit1.text中去掉不是數字的字元,搜索 xxx再轉成16進制,再到edit2.text」的事?

嗯,你socket弄得熟練,recv來,send去,可是如果你不懂tcp/ip協議那就有點可笑了,除了用別人做好的函數庫你還能搞出什麼新花樣?弄分布式應用的知道「分布式」怎麼回事嗎,

你是否只是在用API堆砌代碼呢?倘若有一天這個函數庫沒人支持了,你是不是就傻眼了?

比如編游戲,沒看過3D圖形學便搞DirectX,也是比較可笑的。

我並不是說你編比較高層的東西就必須先得透徹了解底層怎麼實現的,我只是建議你好歹把底層的東西混個臉熟,遇到問題時心裡有個譜,查查資料,別動不動撲某個求救。以前在BBS上看到某人的話,說BBS不是學習的地方,是開拓眼界的地方。深以為然。

學習還是找紙版的書老實的看比較好,想想你積攢了多少電子書而又看了多少。

底層不了解,僅多也就飄在別人上頭,別人一閃身,你就得摔下來。

初學編程的人一來就IDE, GUI, Network啥的猛搞,能不浮躁么?還是沉下心來研究一下基礎知識吧,我以腦袋你有生之年會覺得他們有用的(呵呵,你轉行我就沒轍了),別看著別人弄JFC, Socket了你還在頭大這個uick sort怎麼就不對呢就心裡惶惶的,你要知道在一批API不被支持後不少人心裡空空的沒個著落:天啊,我除了那個就啥都不會了,郁悶啊,花了我那麼久時間鑽研那套API,嗚嗚。。。。

5. C好難啊,我入門還是從Java,Python開始吧

首先,是自個要做程序員的嗎?是想編程還是想賺錢啊?

其次,我們來比較一下難易:

C: k&r那本書真的不算厚,經典的C的書很少,說C難,大概是傳說中C的指針很難吧,C的語法很簡明的,就是指針,只要你認真看看書,寫幾個程序試一試,那幾個指針的用法不難掌握,另外大家千萬不要去死鑽*++ ++*之類的語法,關於這點在《高手》最後上裘宗燕老師有一篇精彩的文章。大家記住寫代碼是要維護的,別耍弄語法技巧給自己或後人麻煩,你想想自己看別人寫的天書代碼是贊嘆還是咒罵?

Java: 書太多了啊,就說Gosling(沒拼錯吧)那本,相當厚,學Java的人一開始都被classpath和package的問題煩過吧,還有Java的關鍵字,語法,Sun鼓搗出來的一堆堆Java技術名詞,是不是有點暈了?

C++的確有難度,你可以看看C++語言的設計和演化,就可以知道C++怎麼這個德行了,呵呵。有意思的是Java現在加入模版,而且因為偽模版的實現被人詬病,還有那個EJB的轉變,有意思,大家可以思考一下「復雜」、「實用」這些詞。

Python的確比較清爽,不過深入一點後其內部對象模型也不簡單,想想操作一個列表有多少方法,各種功能強大的操作符,而且現在的OO語言逼著你OO, 結果往往是語法OO而已,沒多大新意,我還是欣賞Perl, C++這類語言,你想怎麼就怎麼,重要的是要用合適方法,趁手工具,最少的時間做有價值的東西,把你鑽研語言的語法的時間拿來鍛煉一下身體,泡杯茶看看小說我覺得更好一些。

語言只是表達思想的工具,不要只局限於一種語言,不要狂熱於某一門語言。

學編程時選書最好先看一看書中的代碼,是取自實際應用中的嗎?寫的漂亮嗎?(指代碼自身的精緻,以及排版是否工整)代碼中有語法錯誤嗎?(鄙視某些沒編譯試試就把代碼到書里的作者)

有本Essential C#,取的是.Net類庫的代碼,很棒,講delegate(希望沒拼錯,好久沒弄這個了)時舉的例子很清楚地讓人看到這個東西該怎麼用。

另外推薦Learning Perl,我個人覺得是我看過的最好的關於編程的書,該講么,不該講什麼,按什麼順序講,很好,也許是Perl的精神的感染吧,當初看這本書很有震驚的感覺,原來程序設計語言還可以這么使!爽!

⑵ 涓涓寰堥夯鐑︾殑C璇璦緙栫▼,楂樻墜榪涙潵甯甯蹇

#include <iostream> #include <fstream> #include <process.h> using namespace std; typedef struct INFO { char no[11]; /* 鑱屽伐鍙 */ char name[11]; /* 濮撳悕 */ char sex[3]; /* 鎬у埆 */ int age; /* 騫撮緞 */ float wages; /* 宸ヨ祫 */ } INFO; INFO *data; string filePath = "c:/people.dat"; int length = 0; int maxSize = 50; bool createFile = false; bool ReadFile(); bool WriteFile(); bool AddItem(INFO&, bool); bool InsertItem(INFO&, char *, bool); bool ModifyItem(INFO&, int); bool DeleteItem(int); int InquiryItem(float, char *, int); void displayMenu() { system("cls"); printf("|---------------------------|\n"); printf("| 杈撳叆1 寤虹珛鏂囦歡 |\n"); printf("| 杈撳叆2 榪藉姞璁板綍 |\n"); printf("| 杈撳叆3 鎻掑叆璁板綍 |\n"); printf("| 杈撳叆4 淇鏀硅板綍 |\n"); printf("| 杈撳叆5 鍒犻櫎璁板綍 |\n"); printf("| 杈撳叆6 鏌ヨ㈣板綍 |\n"); printf("| 杈撳叆7 閫鍑 |\n"); printf("|---------------------------|\n"); } /* 鏌ヨ㈠晢鍝佷俊鎮 */ int InquiryItem(float wages, char *no, int flag) { int i; int count = 0; if (flag == 1) { for (i = 0; i < length; i++) { if ((data + i)->wages > wages) { cout << "緙栧彿" << " " << "濮撳悕" << " " << "鎬у埆" << " " << "騫撮緞" << " " << "宸ヨ祫" << " " << endl; cout << (data + i)->no << " " << (data + i)->name << " " << (data + i)->sex << " " << (data + i)->age << " " << (data + i)->wages << endl; count++; } } if (count == 0) { cout << "娌℃湁澶т簬姝ゅ伐璧勭殑浜" << endl; } } else { for (i = 0; i < length; i++) { if (strcmp((data + i)->no, no) == 0) { return i; } } } return -1; } /* 閲嶆柊鍒嗛厤鍐呭瓨 */ bool reAlloc() { int i; INFO *newBase = NULL; newBase = new INFO[maxSize * 2]; if (newBase == NULL) return false; maxSize = maxSize * 2; for (i = 0; i < maxSize/2; i++) { strcpy((newBase + i)->no, (data + i)->no); strcpy((newBase + i)->name, (data + i)->name); strcpy((newBase + i)->sex, (data + i)->sex); (newBase + i)->age = (data + i)->age; (newBase + i)->wages = (data + i)->wages; } delete [] data; data = NULL; data = newBase; return true; } /* 澧炲姞鍟嗗搧淇℃伅 */ bool AddItem(INFO& info, bool isWrite = true) { if (length == maxSize) { reAlloc(); } strcpy((data + length)->no, info.no); strcpy((data + length)->name, info.name); strcpy((data + length)->sex, info.sex); (data + length)->age = info.age; (data + length)->wages = info.wages; length++; if (isWrite) return WriteFile(); else return true; } /* 淇鏀瑰晢鍝佷俊鎮 */ bool ModifyItem(INFO& info, int pos) { strcpy((data + pos)->no, info.no); strcpy((data + pos)->name, info.name); strcpy((data + pos)->sex, info.sex); (data + pos)->age = info.age; (data + pos)->wages = info.wages; return WriteFile(); }

⑶ 突然不想編程了,好煩啊

是啊,有時候我也有這種心情,我煩的時候就捶鍵盤,把寫的代碼全刪了,事後就後悔,不過時間久了,就能慢慢的剋制自己了,當你煩的時候,就想想你在拚命寫代碼,而那些蠢豬都在睡大覺,想想就想笑,慢慢就不煩了,我們花費時間用代碼創造奇跡(對別人來說,不一定是,但對自己來說,我一直堅信這是奇跡),而豬卻花費大好時光睡覺,我開心。

熱點內容
window7怎麼設置密碼 發布:2024-11-08 14:53:23 瀏覽:915
影子密碼是多少 發布:2024-11-08 14:53:16 瀏覽:164
資料庫測試用例 發布:2024-11-08 14:50:15 瀏覽:324
哈爾演算法 發布:2024-11-08 14:36:27 瀏覽:844
內置緩存指 發布:2024-11-08 14:34:31 瀏覽:717
同步cm12源碼 發布:2024-11-08 14:34:21 瀏覽:717
悠悠解壓 發布:2024-11-08 14:06:54 瀏覽:372
低頻訪問存儲 發布:2024-11-08 14:05:31 瀏覽:680
html5坦克大戰源碼 發布:2024-11-08 14:04:35 瀏覽:407
輸錯密碼鎖定什麼意思 發布:2024-11-08 14:02:07 瀏覽:542