类别归档:译林

外语文献翻译

RSS feed of 译林

怎样实现在家编程谋生[StackOverflow问答]

16年来我辗转3个国家,一直在从事全职程序员的工作。这段经历比较有趣(但并不是那么有趣)。现在,我不想再过每天上下班的上班族生活了,而是想呆在家里养活自己。我的想法是从这个星球上任何地方的一家公司接项目(我现在住在澳大利亚布里斯班,这里远程工作的机会不太多)。雇主会为根本不需要看到我而感到高兴的。

There's the obvious parallel with contributing to open source projects, though I'm specifically looking for paying jobs; this would become my primary source of income, rather than a volunteer effort.

这就像为开源项目贡献代码,但我寻找的是有薪酬的工作;这将作为我收入的主要来源,而不是志愿行为。

我猜测如果是我不认识的人,我必须找到一种方法向我的潜在雇主展示我确实可以写代码。比如说,可以验证的开源代码贡献;一个或者多个引用站点或者项目;只要是可以展现我能力的东西就行。

最近我遇到了几个成功实现在家编程赚钱的人,但他们全部是通过预先建立的关系找到的工作。莫非这是唯一可行的方式吗?

使用“交付时再付款”的方式明智吗?也就是说,接项目时,必须在做完项目以后才能拿到报酬。我知道这存在一定的风险,但是如果雇主的信誉良好,风险或许可以避免。至少在一开始,这似乎是一种与雇主建立信任的方法。

到底有没有支持这种工作方式的值得信赖的雇主?Canonical(http://www.canonical.com/)浮现在我的脑海中,虽然给我的感觉是他们在这方面相当的独一无二。

我是不是在开自己的玩笑,这到底可行吗?这对于大多数需要代码写手的公司来说是不是太过于不寻常了?


我现在就在这么干

在过去的6年里,我的收入都是通过与我从未谋面的客户远程办公得来的。下面是几条我在这方面积累的经验:

首先,从事这样的工作需要花费时间和决心(以及家庭的支持)。你必须确信自己真的想要这样做。 ...

继续阅读

面向对象编程语言的特征比较

Many languages claim to be Object-Oriented. While the exact definition of the term is highly variable depending upon who you ask, there are several qualities that most will agree an Object-Oriented language should have:

许多编程语言声称自己是面向对象的(Object-Oriented)。但当询问“面向对象”的确切定义时,不同的人的答案区别很大,下面列举几条大家公认的,面向对象语言所应具有的性质:

  1. Encapsulation/Information Hiding (封装/信息隐藏)
  2. Inheritance (继承) ...

继续阅读

Java OOP与Python OOP的区别

For a Java guy Python is an anarchic playgound where anyone can grab a club and start mauling your head.

对于Java的忠实粉丝来说,Python就像是一个无政府主义的游乐场,任何人都可以随手拿起一根棍子敲你的头。

For a Python guy Java is a an Orwellian universe where you are constantly shackled to someone else`s diminishing ...

继续阅读

Java容器类LinkedList与ArrayList使用时机对比

  大多数Java初学者在使用动态数组时,会不假思索的选择ArrayList。但实际上,除了ArrayList,还有LinkedList可供选用。

  那么,在使用Java的动态数组时,怎样在ArrayList与LinkedList之间做出选择呢?

  一言以蔽之,在大多数使用场景中,ArrayList与ArrayDeque要优于LinkedList。对于初学者来说,在拿不准用哪个时,不妨使用ArrayList。


  LinkedList与ArrayList是List接口的两种不同的实现。LinkedList使用双向链表实现。ArrayList则使用动态可变长数组实现。

  对于标准的链表和数组运算,不同的方法会有不同的算法运行时间。

  对于LinkedList<E>:

  • get(int index)  O(n)
  • add(E element)  O(1)
  • add(int index, E element)  O(n)
  • remove(int index)  O(n)
  • Iterator.remove()  O(1) <--- LinkedList<E>的主要优势
  • ListIterator.add(E element)  O(1) <--- LinkedList<E>的主要优势

  对于ArrayList<E>:

  • get(int index)  O(1) ...

继续阅读