如果比赛使用“ lingua obscura”促进发展(为什么),我应该担心吗?[关闭]


16

我正在阅读保罗·格雷厄姆(Paul Graham)的文章- 击败平均水平(Beating the Averages,2003),这是他不得不说的:

职位描述所具有的IT风格越多,公司的危险就越小。最安全的一种是想要Oracle经验的。您无需担心这些。如果他们说他们想要C ++或Java开发人员,那么您也很安全。如果他们想要Perl或Python程序员,那将有些吓人-听起来像一家公司,至少在技术方面由真正的黑客经营

现在,这是一篇过时的文章。但是,我看不到使用非通用语言(C / C ++ / Java,C#)如何“不太危险”。如果组织的程序员非常熟练使用开发语言,那么他们应该同样擅长以适当的速度编写代码。实际上,如果您确实使用非通用语言,那么从长远来看,维护/增强问题是否会面对您,因为不会有太多的程序员可用?

我同意,为了制作快速脏的系统,某些语言允许您比其他语言更快地起飞。但是,保罗·格雷厄姆(Paul Graham)的论文/评论在2012年及以后是否有意义?如果一家初创公司要使用典型的IT语言进行开发,那么为什么不那么担心竞争呢?

我看不出语言本身是如何产生变化的。恕我直言,重要的是开发人员对语言的了解以及框架的可用性,因此您可以DRY(不要重复自己)而不仅仅是使用特定语言进行编码。

我想念的是什么?是否意味着初创公司更好地选择非IT风格的语言(即使开发人员可能非常擅长使用它们)?这项主张背后的(程序)经济/市场力量是什么?

PS:“ lingua obscura”并不意味着伤害任何人的感情:)


4
商品语言和力量语言之间的差距仍然很大。例如,Lisp在数量级上仍然有可能跑赢Java或类似的开发步伐。
SK-logic

4
@ SK-logic-有什么数据可以备份吗?
博士

2
@Nupul,几乎没有关于编程语言生产力的正式研究,所以我只能依靠轶事证据和我自己的经验。我只看过几篇论文,稍后我会尝试将其挖掘出来。特别是对于Lisp,它与其他语言的不同之处在于,它可以廉价,轻松地从字面上转换为任何语言。因此,它结合了所有其他语言的所有特性和优点,而非幂次语言是固定且狭窄的。它可以解释生产率差距。
SK-logic

8
@ SK-logic真的吗?尽管LISPers提出相反的观点,但事实是,几乎没有使用Lisp构建有价值的程序(可能排除了Emacs),几乎没有大型网站,几乎没有使用1997年ViaWeb排除的主要网站。因此,尽管声称生产率得到了令人难以置信的提高,但大多数LISP倡导者全都在讲话,没有走路。他们只有学术研究用的东西(更多的是研究,而生产的质量则更少),业余爱好项目以及一些公司内部使用的一些内部东西。
Hejazzman 2012年

2
@ SK-logic问题是尽管您可以在Lisp中实现静态类型的语言,但缺少静态类型。
BenjaminB'2

Answers:


16

工具链是一种症状。

当一家公司选择Oracle时,这表明:

  • 很多钱扔
  • 大公司
  • 深度嵌套的组织结构,具有多层管理
  • 公司由“西装”经营:高管类型,市场营销和销售
  • 使用巨大的代码库制作大型的单片软件产品
  • 一切的正式流程

当公司选择Python时,这表明:

  • 小公司
  • 没有钱可余
  • 扁平层次
  • 公司由程序员经营
  • 用小的代码库生产小型的单用途产品
  • 主要是非正式程序

当这两者相遇时,大公司的策略是规避风险,利用势头并把竞争对手推销出去。小型竞争者的策略是首先击败竞争者进入市场,然后继续保持卓越的产品。如果小公司选择正确的战役,他们可以通过更快,更主动地利用大公司规避风险的趋势,轻松地胜过大公司。


1
使用Oracle的公司可能会在五年后仍在那儿!
詹姆斯·安德森

3
@JamesAnderson:是的,取决于市场。如果他们试图成为下一个脸书,也许不会;如果他们是一家大型保险公司,那么可能是的。但是,如果您是一家大型保险公司,则无需担心车库启动公司。
tdammers

因此,听起来我想在Python / Ruby / Scala / Clojure商店工作……嗯。根据我的经验,已付清回报的地方升级起来往往很慢。不知道为什么。向前移动一个版本的痛苦通常比向前移动多个版本的痛苦更柔和。付费软件“通常”提供迁移,但是在大多数情况下,迁移通常是跨版本的。
钻机2012年

25

选择一种晦涩的语言会在创业公司中表现出不寻常的技术自信。一家愿意放弃常识的公司可能会了解一些大多数公司所不了解的软件开发知识。再说一遍,他们可能只是行者。


1
确实,这就是Graham的意思,“ 听起来像是一家至少在技术方面由真正的黑客经营的公司”-一家至少技术专家可能足够聪明以至于对他来说真正竞争的公司。
罗斯·帕特森

8
但是,如今它主要是手淫者,因为“选择一种晦涩的语言”在手淫者和弱势群体中是当今的时尚。
Hejazzman,2012年

2
这也表明该公司是内向型的,专注于“如何构建”而不是“构建什么”。这样的公司不会吸引很多客户。
詹姆斯·安德森

13

我认为PG的评论更多关于态度而不是语言的细节。具有内部IT思维的人可以安全使用它。他们使用低风险技术,具有使风险最小化的流程并采取低风险策略。他们太忙着担心自己的午餐不能吃你的午餐。

处在最前沿的人们(python 2003)是值得担心的人。他们饿了。他们冒险。他们在智力上很好奇。熬夜学习令人振奋的新语言的同一种人可能会比您先颠覆行业。


4
当然,他们也可能被所承担的风险之一吞没了……
Michael Borgwardt 2012年

3
“”“处于前沿的人们(python 2003)是值得担心的。他们饿了。他们冒险。他们在知识上感到好奇。”“” –或者他们是使用最新流行语言的时尚受害者,并且与发展务实没有关系。
Hejazzman 2012年

2
两者都是对的。这是一个数字游戏。但是要采取极端的对立面。有时异常值会爆炸。有时他们会成功。但是,您是否曾经害怕竞争对手会在您使用COBOL之后出现?
MathAttack 2012年

13

格雷厄姆对他的竞争者而言,意味着的危险要小得多,而不仅仅是危险。他的观点并不是说Java(或2003年的C ++或1980年的COBOL)没有那么危险,而是它很正常,而且很有可能公司在寻找这种技能的公司仅仅是普通竞争对手。但是,正在寻找晦涩(或者更正确地说,是功能强大而鲜为人知)语言的强大人才的公司值得关注。

是的,今天这很有意义。在Graham编写它之前很早就已经很有意义了,那时候我们只是没有谈论Java。


6
如果最近这些天我们不必谈论Java。
DeadMG

8

让我们看看成功的初创公司首先使用哪些语言。一个不科学的清单,不在我的头上。如果有人愿意的话,适当的随机研究会更好。

  • 脸书:PHP
  • Stackexchange:C#
  • Google:Java和Python
  • Twitter:Ruby on Rails

因此,据推测,我们得出的结论是Facebook和Stackexchange对其竞争对手没有构成威胁。不是很令人信服。


让我们看看保罗·格雷厄姆(Paul Graham)现在是否相信这一点。他与他人共同创立为创业公司提供资金的YCominator。该网页列出了他们的一些成功的初创公司。我按顺序检查了它们,非常迅速地尝试研究早期使用的语言。

好吧,有迹象表明,人们倾向于偏僻且功能强大的语言。但是也列出了Flash,PHP和经典ASP。


这是一篇论文。对于他所喜欢的相对晦涩的语言而言,这是一种双曲线的推动,并提出了一些基本建议,即创业公司应该喜欢他们的技术并尽可能快地发展。很公平。


3
Reddit Lisp 开始,但是他们很早就用Python重写了整个内容,因为没人能理解Lisp。
梅森惠勒2012年

Google在许多不同的事物上使用了多种语言。他们用C ++其大部分核心产品,如搜索,铬等
mike30

@Mike问题与创业有关。Google刚起步时,他们使用的第一种语言是Java和Python。
MarkJ

6

普通的开发人员使用普通的工具,因为他看不到功能更强大的工具的价值:

“只要我们假设的Blub程序员低头看待电源连续体,他就知道自己在低头。语言不如Blub强大,显然不那么强大,因为它们缺少了他惯用的某些功能。但是,当我们假想的Blub程序员朝着另一个方向看时,在幂连续性方面,他没有意识到自己在抬头。他所看到的只是奇怪的语言。他可能认为它们的功能与Blub相当,但同时也引入了其他所有毛茸茸的东西。Blub对他来说已经足够好了,因为他思考Blub。” — Paul Graham,击败平均水平

(强调我的。)

语言功能越强大,使用它的开发人员就会越少,并且使用起来也就越少。因此,流行度是衡量语言力量与平均水平之间距离的良好度量。语言越晦涩,使用它的开发人员知道自己在做什么的机会就越大,并且有充分的理由选择它,而不是与众不同的同行。而精明的竞争对手是危险的。


3
这不一定完全正确。工具,广告,现有的图书馆和优质的教学材料,也可以改变一种语言的流行度。
DeadMG

@DeadMG好吧,当然,表达能力并不是唯一的因素。我想我是在默认的情况下做出的假设,即所有常识中的所有语言在营销,工具和文档方面都差不多。否则根本就不会对它们进行合理的比较。地狱,甚至个人喜好也与它有很大关系。如果您知道Haskell可以胜任某些任务,但是您真的很喜欢C,那么您可以纯粹用C编写一些代码。
乔恩·普迪

我想我是在默认的情况下做出的默认假设,即所有常见语言在市场营销,工具和文档方面均大致相同…… -您这样做是错误的。其实是错的。
Jim G.

1
@吉姆 你能提供一个具体的例子吗?考虑到TIOBE指数,在这些领域中所有前10名和大多数前50名似乎都具有可比性。此外,人们可以很好地比较表现力差异很大的语言之间的特征比较,那么为什么不对其他方面做同样的事情呢?
乔恩·普迪

5

语言的选择对于初创企业来说很困难。许多非常好的初创公司选择“通用”语言来加快上市速度,对创始人的熟悉程度和将来的聘用便利。

选择一种较少使用的语言确实发出了好兆头。它表示您准备认真对待开发并努力聘请专业的程序员。尽管这些只是信号,但创业不仅仅是语言选择。

底线是您选择的语言,应根据您的情况正确评估。例如,Facebook使用php做得很好,而php通常不被认为是一种非常可扩展的语言


1
如果仅是轻描淡写地为“ Facebook正常”,则+1。
MarkJ 2012年

5

根据您喜欢的标准,问问您认识的最好和最坏的程序员,他们知道什么其他语言。现在,编写招聘广告以吸引前者,您就可以得到答案。即使您的应用程序是C ++,但如果您雇用的是会在学校里没有教过的语言的程序员,也会获得更好的程序员水平。


2
-1:嗯?对不起,你失去了我。
Jim G.

4

如果竞争对手使用不寻常的语言,您应该担心两种不同的事情:

  • 生产力优势 -语言各有优缺点,但假设竞争对手针对其给定的问题领域选择了不错的产品,那么他们很可能具有真正的生产力优势。例如,Lisps中的元编程功能可能会给您带来真正的实质性优势,而您需要随时进行大量自动代码生成。
  • 文化上的优势 -如果一家公司对杰出的黑客使用一种不寻常的语言,那么他们很可能会吸引并留住杰出的黑客。公司的生存和生存取决于其员工的素质,因此,如果这转化为长期的人才优势,那么它就可能非常重要。

这两个优点可能不适用于任何给定情况。例如,一家初创企业可以很容易地采用一种“因为它很酷”的语言,而无需真正考虑它是否是正确的选择。他们很容易犯招聘错误。他们可以通过滥用“强大”的语言轻松地向自己开枪。

但是,如果竞争对手选择一种不寻常的语言并很好地使用它,那么是的,您很可能会面临很大的威胁。

我认为这个原则是永恒的,并且现在和2003年一样适用-特定的语言和范例可能会来来去去,但是选择一种功能强大的表达性语言的想法比一般,安全,通用的语言更适合您的问题领域可能总是值得认真考虑。


0

如果您的客户没有锁定,则可以。您应该担心竞争对手使用功能强大的语言。

Java,C#,C ++比较冗长,并且编辑/测试周期相对较慢。这限制了即使最快的开发人员也可以交付功能的速度。更具表达能力的语言,内置强大的元编程功能,并且编译时间为零,使专家开发人员能够尽快构建功能。如果您正在争夺市场份额,并为获胜者带来丰厚的回报,那么聘请可以找到的最好的开发人员并使用任何使他们发展最快的语言都是明智的。您稍后可以担心可伸缩性。


1
-1:与Visual Studio,Resharper,LINQ和.NET 4.0库一起编写时,C#与其他语言相比具有较慢的编辑/测试周期?
Jim G.

1
@Jim:不确定您的比较器是什么,但是与我使用过C#的Ruby,Groovy,Clojure和其他现代动态语言相比,就开发风格和迭代速度而言,它们肯定更接近Java和C ++。YMMV,但我认为您不值得特别推荐-OP的描述大致上是公平的。尝试一下“表达性语言”,您可能会感到惊讶,这是可能的..
mikera 2012年

@Jim G.,是的,与Common Lisp相比,C#编辑/测试周期很慢。您不能修改正在运行的系统。而且您必须用C#编写更多的代码,这会使事情变得更加缓慢。
SK-logic

1
不,例如,Erlang允许运行时修改,并且是一种编译语言。
里奇·克拉克森

2
@ JimG。,Common Lisp是一种编译语言(嗯,大多数实现都是纯编译器)。增量编译允许执行与解释器相同的所有技巧,而使用单独的编译则几乎不可能。
SK-logic
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.