`
ejacky
  • 浏览: 32111 次
  • 性别: Icon_minigender_1
  • 来自: 抚顺
社区版块
存档分类
最新评论

试翻译《An open letter to those who want to start programming》

阅读更多
First off, welcome to the fraternity. There aren’t too many people who want to create stuff and solve problems. You are a hacker. You are one of those who wants to do something interesting.
首先,欢迎你,兄弟。不会有太多的想创造新事物和解决问题的人。你是一名骇客,一群想做一些有趣的事情的人之一。

“When you don’t create things, you become defined by your tastes rather than ability."
– WhyTheLuckyStiff
“当你不能创造新事物时,你是用感觉而不是能力来判别事物“
-_why先生

Take the words below with a pinch of salt. All these come from me – a bag-and-tag programmer. I love to get things working, rather than sit at something and over-optimize it.
姑且相信下面这些话,它们都是来自我-一个长相猥琐的程序员。我喜欢让事物有效的运转,而不是吃现成,盲目乐观。

Start creating something just for fun. That’s a great start! There’s no way you will start if you say you “need to learn before doing”. Everybody’s got to start somewhere. Fire up your editor and start writing code.
只是为了乐趣而创造一些东西。那将是一个伟大的开始。如果你认为你需要学点东西,那你永远都不会开始。每一个人都需要在某处启航。 现在就打开你的编辑器,开始你的编程。

Here’s something important which people might call bad advice, but I’m sure you’ll stand by me when I’m finished saying why. Initially, screw the algorithms and data structures. They do not have generic use-cases in most simple applications. You can learn them later when you need them. Over a period of time, you’ll know what to apply in situations. Knowing their names and what they do would suffice to be able to pick some paper, dust it and implement it. And that is… if no library (other programmers' re-usable code) is available, to do it in the programming language of your choice.
这里是一些其他人可能称作坏的建议。但是我相信说完原因之后,你会站在我的一边。最初时,让算法和数据结构滚一边吧。在大部分小应用里,他们派不上用场。你可以稍后,等需要他们时学习。一段时间后,你将会知道在各种情况下该怎么去应用,知道他们的名字和他们可以很有效的做什么。这时,你就可以挑几片纸,弹去灰尘,实现他们。也就是说...如果没有合适的库(其他程序员称之为可重用的代码),用你选择的编程语言来实现它。


Choose a good language. One that you think you can produce something useful in short time.
选择一种好的语言。一种你认为可以在短时间内产生有用东西的语言。
So let C not be your first language. That might give you the satisfaction of doing things the really old-n-geeky way. C was the solution to the problem Assembly Language was. It offers better syntactic sugar than it’s prominent predecessor – Assemble Language. But today, C (or C++) is not a language that you can produce something very quickly. I would suggest that you use a dynamic language – I won’t sideline any options. Choose a language whose syntax (and documentation) you think you might be comfortable with. For this, you might want to spend some time trying out different languages for a few hours. The purpose of choosing such a language is not to make you feel better and that programming is easy. Completing stuff faster and being able to see the output keeps you motivated. Don’t choose a language that requires a special heavy-weight IDE (tool that helps you write code and run it) to program better in the language. All you should need is a text editor.

所以不要让c成为你的第一门语言。 那可能给你有老极客作风的满足感。C 解决了汇编语言留下来的问题。它提供了比他卓越的前辈—汇编语言更好的语法结构。但是,目前,C(或者是C++)不是一种你可以很快产生事物的语言。我会建议你用一种动态语言--我不设置一些范围选择。选择一门你认为语法(和文档)让你感到舒服的。对于这些,你可能想花费几个小时的时间去尝试不同的语言。选择这样一种语言的目的不是你感觉好,编程起来容易。完成作品更快且可以看见成果可以持续激励你。不要选择一种需要重IDE(帮助你写和运行代码的工具)编程的语言。所有你需要的只是一个文本编辑器。


Choose a good editor.
选择一个好的编辑器
An editor is to a programmer, like how a bow is to an archer. Here are some editors to get started with…
SublimeText 2 – recommended if you are just starting.
Emacs – huge learning curve. Complex key shortcuts. And to be able to customize it, you’ll need to learn Emacs Lisp.
Vim – used by many for it’s simplicity and the fact that it comes with linux distros by default. I used Emacs for 2yrs and then switched to Vim to run away from emacs’s complex key strokes and when my little finger on both hands started hurting. Knowing vim keystrokes is a must. When you work remotely and try to type out code on some server from your computer, you’ll know that the only editor available from the command line without any installs, is Vim.
Watchout! Emacs and Vim might be really old. But they both have some features which even most modern editors don’t have.

一个编辑器之与程序员,就像弓之与弓箭手。下面是一些可以开始用的编辑器...
sublimeText 2 -被推荐,如果你只是刚开始
Emacs -陡峭的学习曲线。更多的快捷键。可以定制它,你需要学习Emacs Lisp.
Vim- 因为它的简易被很多人用。事实上,它随linux发行版默认出现。我用了Emacs两年然后转向了vim逃离了复杂的键盘敲击,这发生在我两边的小手指都开始受伤时。了解vim的击键是必须的。当你远程工作,试着向服务器输入代码时,你将会知道唯一合适不用安装来自与命令行的编辑器 就是vim。
注意! Emacs和vim可能真的很老。但是他们都有一些甚至最现代的编辑器都没有的特色。


Use an operating system that’ll teach you something.
用一种能教你东西的操作系统
Windows won’t teach you anything. The only thing you learn using Windows is to click the .exe file to install the software and use it. It may seem cool in the beginning, but in the long run when you have to deploy applications, especially if you are aspiring to be a web developer, you’ll need atleast basic knowledge of linux. Linux also allows you to customize stuff the way you need them to be. Macs are cool too, but I assume that you cannot afford one of those now.

windows系统不会教给你任何事情。唯一能学到的从windows 是点击.exe文件来安装软件和使用它。它在刚开始时可能很酷,但是运行一段时间之后,当你不得不部署应用时,尤其是你渴望成为一个web开发者时,你将需要对linux至少有基本的了解。linux也允许你想要他们成为什么样的方式去定制。Macs也很酷,但我现在假定你是买不起它中的一员。


Don’t copy-paste files to backup stuff.
不要拷贝粘贴文件去备份东西
It’s usual among amateur programmers to copy-paste files to some temporary directory in order to backup them. That’s the only way they seem to know. Stop that! Use a version control software. I strongly suggest Git, since it’s popular and easy to use. It has nice community and resources to support new-comers. (Apart from Git, There’s mercurial, darcs, fossil, etc. But just start with Git. I’m not going to bother you with the reasons for suggesting Git).

通常在业余的程序员中拷贝粘贴文件到一些临时目录为了备份他们。那好像是他们唯一知道的方式。停止那样!用一个版本控制软件。我强烈建议Git,因为它是流行的且很容易用。它有很好的社区和源代码提供给新来者。(除了git,还有 mercurial, darcs, fossil等)。但是,就从Git开始吧。我不会在列举些建议你用Git的原因来烦你)。

Know where to get help.
知道哪里去寻求帮助
Join a community that you can relate to (with the tools you use). StackOverflow is Facebook for programmers. There are no status messages and comments. Instead there are questions and answers. Also learn to use the IRC. It’s an old form of chatrooms and is now being used by mostly developers to share information and helping each other.
加入一个你可以交谈的社区(用你使用工具有关的)。StackOverflow i是一个程序员的社交网络。没有信息和评论状态。代替的有问题和回答。也学习用IRC。它是一种老的聊天室形式,现在被大部分的开发者用来分享信息和互相帮助。

Develop your netiquette.
培养你的礼仪
Know when to ask questions. Most problems you face might have been stumbled upon by others who might have already posted on the internet for answers. Before asking on IRC or any forums, google first (or should I say blekko first) to see if there’s already a solution to your problem. IRC needs patience. Remember people are helping you for free out of goodwill. Sometimes it might take hours, for someone in the chatroom to respond to you. So wait until they do. Besides, be polite. It's a small world. Karma, good or bad, comes back.

知道什么时候去问问题。你面对的大部分问题可能已经被其他人偶遇到,他们可能已经在网络上贴出了问题的答案。在IRC或者是其他的论坛发问前,首先google一下(或者我应该说首先blekko一下)去看看是否你的问题已经有了解决。在IRC中发问需要耐心。记得别人正处于好意,免费的帮助你。有某个人在聊天室里回复你,需要花费几个小时,所以耐心等。除此之外,要有礼貌。程序员的圈子很小,因果轮回。

Meet people, because books only teach you routine stuff (oh and the "book" is dead they say).
多与人沟通,因为书只教会你规定的事情(或者说书是死的)
There are some street smarts that you’ll learn when you tinker with stuff or learn from those who do it. Roam, meet people and say hello. You are not the only programmer in your place. Make friends and do stuff with them. If you've noticed, when a couple geeks get together, whatever the starting point of the conversation be, it always ends up getting technical. It's bound to happen. Enjoy it. Programming for a good number of years, I can tell you that I learnt nothing more than what the books and articles said, until I starting meeting people and getting technical with them 6yrs back. So I always say that I’ve been programming for 6yrs, because that’s when I started meeting people and feel I really started to learn.

有一些内行经验你将要学到当你开始鼓捣东西或从某人身上学习时。漫步,遇到一些人,说你好。在你所在的地方,你不会是仅有的程序员。交朋友,和他们一起做一些事情。是否你已经注意到,当一对极客在一起时,无论交谈开始时是什么,它总是以获取技术来结束。这是捆绑发生的。享受它吧。
编程了一些年,我可以告诉你除了书上和文章上说的,我什么也没有学到,直到我开始遇到一些人,和他们分享技术在六年前。所以我总是说,我已经从事编程六年了。因为那是我遇见一些人和感到我真的开始学习编程的时候。


Write opensource code.
写开源代码
Writing opensource code is giving back. It’s much more than charity. You are leaving code that others can use and improve on (maybe) for years to come. It also helps you refine your skills when someone else adds to your code or suggests changes. Code that you opensource doesn't have to be big. It can even be a useful little program that downloads youtube videos. Moreover, you’ll be surprised, that your code will often help you start and have interesting conversations with people.

写开源代码是有回报的,且比慈善要多很多。你将留下其他人可以几年来使用和改进的代码。当其他人增加你的代码或者建议你改变代码时,也将提升你的技术。你开源的代码不用很大,它很可能只是下载youtube视频的小程序。令你吃惊的,意外的收获会是,你的代码将帮你开始一段有趣的交谈。

Lastly, when years pass, return this favour, by writing a similar letter to someone else who asks you for such help. And possibily correct me.
最后,很多年过去后,回头看看,写一个相似的信给请你这样帮助的人。可能你会更正我的一些观点。
For a hacker, by a hacker 
Akash Manohar
P.S: Wise men say, it takes 10 years or 10000 hours to get good at something. So don’t hurry.
注:有聪明的人说,擅长一件事需要花费10年或10000小时。所以不用太着急。


新手翻译,不准确请海涵    划线均为有意见之处,希望不吝赐教
0
2
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics