10 ways to improve your programming skills

原文:http://rudyn.is-programmer.com/

1. Learn a new programming language 學(xué)習(xí)一門新的編程語言

Learning new programming languages will expose you to new ways of thinking; especially if the new language uses a paradigm which you aren’t yet familiar with. Many of the ways of thinking that you will learn can be applied to languages that you already know, and you might even want to start using the new language for serious projects as well.
學(xué)習(xí)新的編程語言將使你接觸到新的思維方式;特別是如果新語言使用了一種你還不熟悉的范例。你將學(xué)到的許多思考方法都可以應(yīng)用到你已經(jīng)知道的語言中,你甚至可能想要開始使用新的語言來開發(fā)項(xiàng)目。
Good languages providing a great educational experience (but not necessarily limited to that) include any Lisp (Scheme is good), Forth, PostScript or Factor (stack-oriented programming languages), J (wonderful array programming language), Haskell (strongly typed purely functional programming language), Prolog (logic programming) and Erlang (concurrent programminggoodness).
良好的語言提供了良好的教育體驗(yàn)(但不一定僅限于此)包括任何Lisp(Scheme是想到那個(gè)出色)、Forth、PostScript或Factor (基于堆棧的編程語言)、J(出色的數(shù)組編程語言)、Haskell(強(qiáng)類型的函數(shù)式編程語言)、Prolog (邏輯編程)和Erlang (并行編程)。

2. Read a good, challenging programming book閱讀一本優(yōu)秀的、具有挑戰(zhàn)性的編程書籍

A lot can be learnt from books. While practice is important, reading one of the really good andchallenging programming books can be a great way to challenge your thinking and even move it up by a level. Such challenging books would include The Art of Computer Programming (if you want areal challenge), Structure and Interpretation of Computer Programs (SICP), A Discipline of Programming or the famous dragon book.
從書中可以學(xué)到很多東西。練習(xí)是很重要的,閱讀一本真正好的、有挑戰(zhàn)性的編程書籍是一個(gè)挑戰(zhàn)你思維的好方法,甚至可以把它提升到一個(gè)水平。這些具有挑戰(zhàn)性的書將包括《計(jì)算機(jī)程序設(shè)計(jì)藝術(shù)》(如果你想要挑戰(zhàn)的話),《計(jì)算機(jī)程序的結(jié)構(gòu)和解釋》(SICP),《編程的修煉》或者其他著名的書。
You can go with less challenging books as well, but avoid books that are “for Dummies” and will teach you something “in 24 hours” or “in 21 days”; you will get very little out of such books in terms of improving programming skills.
你也可以選擇不那么有挑戰(zhàn)性的書,但要避免那些“傻瓜”的書,并且會(huì)在“24小時(shí)”或“21天”里教你一些東西;在提高編程技能方面,你將會(huì)從這些書中獲得很少的經(jīng)驗(yàn)。

3. Join an open source project加入一個(gè)開源項(xiàng)目

What are the advantages of joining an open source project? You will work with others (good thing in case you have only worked on personal projects before), and you will have to dig into, and learn to understand, an unfamiliar code base (which can be challenging).
加入一個(gè)開放源碼項(xiàng)目的好處是什么?你會(huì)和其他人一起工作(如果你以前只在個(gè)人項(xiàng)目上工作過的話),你將不得不深入挖掘,并學(xué)會(huì)理解,一個(gè)不熟悉的代碼庫(這可能是一個(gè)挑戰(zhàn))。
You can find different projects on sites such as GitHub, Sourceforge, gitorious, BitBucket orOhloh.
你可以在網(wǎng)站上找到不同的項(xiàng)目,比如GitHub, Sourceforge, gitorious, BitBucket orOhloh。

4. Solve programming puzzles解決編程難題

You can always solve programming puzzles, and many such exist. Math oriented problems can be found at Project Euler, which is, probably, the most popular site for coding puzzles.
你總是可以解決編程難題,有很多這樣的問題。在Project Euler中可以找到數(shù)學(xué)問題,它可能是最流行的編碼謎題。
You should also try out code golf; a programming puzzle where programmers attempt to solve a given programming problem with the least amount of keystrokes. It can teach you many of the more esoteric and special features of the language, and you will have to think creatively about coding (and it is fun!).
你也應(yīng)該試試去code golf;程序員試圖用最少的步驟來解決一個(gè)給定的編程問題的編程難題。它可以教會(huì)你許多更深?yuàn)W和特別的語言特性,你將不得不創(chuàng)造性地思考編碼(這是很有趣的!)
Programming puzzles, mainly code golf, is found at codegolf.stackexchange.com.
代碼編程難題,主要是code golf,在codegolf.stackexchange.com上找到。

5. Program編程

Start writing a program, from scratch. Design all of the architecture and implement it. Repeat.
開始編寫一個(gè)程序,從頭開始。設(shè)計(jì)所有的體系結(jié)構(gòu)并實(shí)現(xiàn)它。重復(fù)
Coding is best learned by coding. You will learn from your own mistakes, and finishing a project is motivating and much more fun than reading a book is.
編碼是最好的學(xué)習(xí)方法。你會(huì)從自己的錯(cuò)誤中學(xué)習(xí),完成一個(gè)項(xiàng)目比讀一本書更有趣。

6. Read and study code閱讀并學(xué)習(xí)代碼

Study famous software programs, such as the Linux kernel (be warned, it is huge). A good operating system for educational purposes is MINIX3. You can learn many new language idioms, and a thing or two about software architecture. Reading unfamiliar source code is daunting at first, but rewarding.
研究一些著名的軟件程序,比如Linux內(nèi)核(請(qǐng)注意,它是巨大的)。一個(gè)良好的教育目的的操作系統(tǒng)是MINIX3。您可以學(xué)習(xí)許多新的語言習(xí)慣,以及關(guān)于軟件架構(gòu)的一些方面。一開始閱讀不熟悉的源代碼令人生畏的,但值得一讀。
You can also increase your understanding of some API you use, or a programming language, by reading its implementation.
你還可以通過閱讀它的實(shí)現(xiàn)來增加你對(duì)某些API的理解,或者編程語言。

7. Hang out at programming sites and read blogs在編程網(wǎng)站上閑逛,閱讀博客

Hanging out at different programming sites (such as forums and StackOverflow) will expose you to other programmers and at the same time, their knowledge.
在不同的編程網(wǎng)站(如論壇和StackOverflow)上閑逛會(huì)讓你接觸到其他程序員,同時(shí),同時(shí)也會(huì)讓你了解他們的知識(shí)。
Also, read blogs, maybe this (if you want) and preferably more. Good blogs are Joel on Software(although he doesn’t blog any more, jewels exist in the archives), <a name="OLE_LINK2"></a> <a name="OLE_LINK1">Coding Horror</a> and Lambda the Ultimate.
另外,閱讀博客(如果你想的話)或者是其他更多的東西。好的博客是在Joel
軟件(盡管現(xiàn)在不寫博客,在歷史記錄中是能發(fā)現(xiàn)好的博文),Coding Horror和Lambda。
You should also follow news.ycombinator.com.
你也應(yīng)該遵循news.ycombinator.com。

8. Write about coding寫代碼

Start writing about coding on a blog, even if it is just for yourself. You can also write answers on different Q&A sites, forums or you can write tutorials at some sites (e.g. DreamInCode). When you write about coding, you want to make sure that use the correct terminology and know the why in order to explain problems and techniques. It also lets you reflect on your own programming knowledge and improve your English language skills, which is important in programming.
開始在博客上寫代碼,即使只是為了你自己。你也可以在不同的問答網(wǎng)站、論壇或者你可以在一些網(wǎng)站上寫教程(例如:DreamInCode)。當(dāng)您編寫代碼時(shí),您需要確保使用正確的術(shù)語,并了解原因,以便解釋問題和技術(shù)。它還能讓你反思自己的編程知識(shí),提高你的英語語言技能,這在編程中很重要。

9. Learn low-level programming學(xué)習(xí)基礎(chǔ)的編程語言

Learning low-level programming and such languages is also useful for achieving a better understanding of the underlying machine. Check out C, and maybe even learn some processor’sAssembly language.
學(xué)習(xí)底層的編程語言,這對(duì)于更好地理解底層機(jī)器也是很有幫助的??纯碈,甚至可以學(xué)習(xí)一些處理器的匯編語言。
Learn how a computer executes a program and how an operating system works (at a high-level, at least). If you really want to go serious about low-level programming, you can read books on computer organization, operating systems, embedded systems, operating system driver development and so on (I’m reading such books at the moment).
學(xué)習(xí)計(jì)算機(jī)如何執(zhí)行程序以及操作系統(tǒng)是如何工作的(至少在高層次上是這樣的)。如果你真的想要嚴(yán)肅地對(duì)待底層編程,您可以閱讀有關(guān)計(jì)算機(jī)組織、操作系統(tǒng)、嵌入式系統(tǒng)、操作系統(tǒng)驅(qū)動(dòng)程序開發(fā)等方面的書籍(目前我正在閱讀這些書籍)。

10. Don’t rush to StackOverflow. Think!不要急于去StackOverflow。要思考!

So you have a problem with your code and you have been trying to solve it for half a minute. What do you (hopefully not) do? Run over to StackOveflow. Don’t. Spend a good deal of time trying to solve the problem on your own, instead. Take a paper and a pencil, start sketching a solution. If that doesn’t work, take a short break to keep your mind fresh and then try again.
當(dāng)你的代碼有問題,你試著解決它半分鐘了。你希望做什么(不希望做什么)?不要去StackOveflow。試著花時(shí)間自己解決這個(gè)問題。拿一張紙和一支鉛筆,開始畫一個(gè)解。如果這不起作用,休息一下,保持頭腦清醒,然后再試一次
If after spending an hour (or some other considerable amount of time, depending on the size of the problem) of trying to solve the problem, then you might go over to StackOverflow, but think on your own first.
如果花了一個(gè)小時(shí)(或者其他相當(dāng)長的時(shí)間,取決于問題的大小)試圖解決這個(gè)問題,那么您可能會(huì)轉(zhuǎn)到StackOverflow,但是請(qǐng)先考慮自己的第一個(gè)問題。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容