경쟁이 개발을 위해 'lingua obscura'를 사용하는 경우 (왜) 걱정해야합니까? [닫은]


16

나는 Paul Graham의 에세이 -Beating The Averages (2003)를 읽고 있었고 다음과 같이 말했습니다.

작업 설명에 IT 풍미가 많을수록 회사의 위험은 줄어 듭니다. 가장 안전한 종류는 오라클 경험을 원하는 사람들이었습니다. 당신은 그것에 대해 걱정할 필요가 없었습니다. 그들이 C ++ 또는 Java 개발자를 원한다고 말하면 안전했습니다. 만약 그들이 Perl이나 Python 프로그래머를 원한다면 그것은 약간 무섭다. 최소한 기술적 인 측면이 실제 해커들에 의해 운영되는 회사처럼 들리기 시작했다.

자, 이것은 오래된 에세이입니다. 그러나 평범하지 않은 언어 (C / C ++ / Java, C #)를 사용하는 것이 어떻게 '위험하지 않은'지 알 수 없습니다 . 조직의 프로그래머가 개발 언어에 매우 능숙하다면 적절한 속도로 코드를 작성하는 데 능숙해야합니다. 실제로 평범하지 않은 언어를 사용하는 경우 장기적으로 너무 많은 프로그래머를 사용할 수 없기 때문에 유지 관리 / 향상 문제가 직면하지 않습니다.

빠른 n- 더러운 시스템을 만들기 위해 일부 언어에서는 다른 언어보다 비교적 빨리 이륙 할 수 있습니다. 그러나 Paul Graham의 에세이 / 코멘트는 2012 년 이후에도 의미가 있습니까? 스타트 업이 일반적인 IT 언어를 개발 에 사용한다면 경쟁이 덜 걱정되는 이유는 무엇입니까?

언어 자체가 어떻게 다른지 잘 모르겠습니다. IMHO는 개발자가 중요한 언어와 프레임 워크의 가용성을 경험하므로 특정 언어로 코딩하는 것만이 아니라 DRY (반복하지 말 것)입니다.

내가 놓친 것은 무엇입니까? 신생 기업이 IT에 익숙하지 않은 언어를 선택하는 것이 더 낫다는 것을 의미합니까 (개발자가 극도로 능숙하더라도)? 이 주장의 뒤에 (프로그래밍) 경제 / 시장 힘은 무엇입니까?

추신 : 'lingua obscura'는 다른 사람의 감정을 상하게하지 않습니다 :)


4
상용 언어와 강력한 언어 사이의 격차는 여전히 거대합니다. 예를 들어 Lisp를 사용하여 Java 또는 유사한 개발 속도를 능가하는 것은 여전히 ​​가능합니다.
SK-logic

4
@ SK-logic-백업 할 데이터가 있습니까?
PhD

2
@Nupul, 프로그래밍 언어 생산성에 대한 공식적인 연구는 거의 없으므로 일화적인 증거와 내 경험에만 의존 할 수 있습니다. 나는 단지 두 개의 논문을 보았습니다. 나중에 그들을 파 내려고 노력할 것입니다. Lisp에 관해서는 다른 언어와는 달리 문자 그대로 저렴하고 쉽게 어떤 언어 로든 변환 할 수 있다는 점에서 다릅니다 . 그것은 결합 그래서 모든 비 전력 언어를 고정 축소되는 반면, 속성 및 다른 모든 언어의 장점을. 생산성 격차를 설명 할 수 있습니다.
SK-logic

8
@ SK-logic 정말? LISPers의 반대 주장에도 불구하고, 사실은 Emacs를 제외하고 Lisp를 사용하여 구축 된 가치있는 프로그램은 거의 없으며 1997 년경 ViaWeb을 제외하고는 주요 웹 사이트는 거의 없습니다. 놀라운 생산성 향상에 대한 주장에도 불구하고, 대부분의 LISP 옹호자들은 모두 대화를하고 걸을 수 없습니다. 학문적 인 연구 자료 (연구에 관한 것이 많고 생산 품질에 관한 것은 적음), 취미 프로젝트 및 일부 회사에서 사용되는 내부 자료 만 있습니다.
Hejazzman

2
@ SK-logic 문제는 정적 형식의 언어를 lisp로 구현할 수 있지만 정적 형식이 부족하다는 것입니다.
BenjaminB

답변:


16

툴체인은 증상입니다.

회사가 Oracle을 선택하면 이는 다음을 나타냅니다.

  • 버릴 많은 돈
  • 대기업
  • 여러 계층의 관리가 포함 된 깊게 중첩 된 조직 구조
  • 회사는 경영진 유형 또는 마케팅 및 판매와 같은 '슈트'에 의해 운영됩니다.
  • 거대한 코드베이스로 대형 모 놀리 식 소프트웨어 제품 제작
  • 모든 것을위한 공식적인 프로세스

회사가 Python을 선택하면 다음과 같은 신호가 나타납니다.

  • 소규모 젊은 회사
  • 여분의 돈이 없다
  • 평평한 계층
  • 회사는 프로그래머에 의해 운영
  • 작은 코드베이스로 작은 단일 목적 제품을 만듭니다.
  • 대부분 비공식 프로세스

이 두 가지가 만나면 대기업의 전략은 위험을 피하고 모멘텀을 사용하며 경쟁사보다 마케팅 담당자를 능가하는 것입니다. 소규모 경쟁의 전략은 먼저 시장 경쟁을 이기고 우수한 제품을 유지하는 것입니다. 소규모 회사가 올바른 전투를 선택하면 더 빠르고 반응이 빠르고 대기업의 위험을 피하려는 경향을 이용하여 대기업보다 쉽게 ​​성과를 올릴 수 있습니다.


1
Oracle을 사용하는 회사는 아마도 5 년 후에도 계속 존재할 것입니다!
James Anderson

3
@JamesAnderson : 시장에 따라 다릅니다. 그들이 다음 페이스 북이 되고자한다면 아마 아닐 것이다. 그들이 큰 보험 회사라면 아마 그렇습니다. 그러나, 당신이 큰 보험 회사라면, 차고 스타트 업은 당신이 두려워해야 할 것이 아닙니다.
tdammers

그래서 파이썬 / 루비 / 스칼라 / 클로저 상점에서 일하고 싶은 것 같습니다 ... 음. 내 경험에 비추어 보답을받은 장소는 업그레이드 속도가 매우 느린 경향이 있습니다. 이유가 확실하지 않습니다. 한 버전을 앞으로 이동시키는 고통은 종종 여러 버전을 앞으로 이동하는 것보다 더 온화합니다. 유료 소프트웨어는 "일반적으로"마이그레이션을 제공하지만 일반적으로 대부분의 경우 해당 마이그레이션은 버전 간 버전입니다.
Rig

25

모호한 언어를 선택하면 스타트 업에서 드문 기술적 자신감을 나타냅니다. 일반적인 지혜를 기꺼이 포기하려는 회사는 대부분의 회사가하지 않는 소프트웨어 개발에 대해 알고있을 것입니다. 다시, 그들은 단지 흔들 리기일지도 모른다.


1
실제로 Graham은 " 적어도 기술 측면이 실제 해커에 의해 운영되는 회사처럼 들리기 시작 했습니다." 라는 말이 바로 그 의미입니다 . 최소한 기술 전문가 자신과 경쟁하기에 충분히 똑똑 할 있는 회사 입니다.
로스 패터슨

8
요즘에는 "모호한 언어를 선택하는 것"이 ​​wanker와 dilettantes 사이의 유행이기 때문에 오늘날에는 대부분 wanker입니다.
Hejazzman

2
또한 회사가 "무엇을 만들 것인가"보다는 "만드는 법"을 내면으로보고 집중하고 있음을 나타냅니다. 이러한 회사는 많은 고객을 유치하지 않습니다.
James Anderson

13

나는 언어의 특성보다는 태도에 대한 PG의 의견을 더 많이 본다. 내부 IT 마인드를 가진 사람들이 안전하게 게임을합니다. 저 위험 기술을 사용하고 위험을 최소화하고 저 위험 전략을 수립하는 프로세스를 갖추고 있습니다. 그들은 당신의 음식을 먹을 자신의 점심에 대해 너무 바쁘다.

최첨단의 사람들 (python 2003)은 걱정해야 할 사람들입니다. 그들은 굶주리고 있습니다. 그들은 위험을 감수합니다. 그들은 지적 궁금합니다. 흥미 진진한 새로운 언어를 배우기 위해 늦게까지 똑같은 유형의 사람이 당신의 업종을 망치기 전에 당신을 방해 할 수있는 유형입니다.


4
물론 그들은 또한 그들이
겪은

3
"" "최첨단의 사람들 (python 2003)은 걱정해야 할 사람들입니다. 배가 고프다. 위험을 감수해야합니다. 그들은 지적으로 호기심이 많습니다." ""-또는 최신 유행 언어를 사용하는 패션 희생자이며 개발 실용주의와 접촉하지 않습니다.
Hejazzman

2
둘 다 사실입니다. 숫자 게임입니다. 그러나 정반대입니다. 때때로 특이 치가 폭발합니다. 때때로 그들은 성공합니다. 그러나 COBOL을 사용하여 경쟁자가 뒤 따르는 것을 두려워합니까?
MathAttack

13

그레이엄은 경쟁자로서 그에게 덜 위험한 것을 의미합니다. 그의 요점은 Java (또는 2003 년 C ++ 또는 1980 년 COBOL)가 덜 위험하지는 않지만 정상적 이며 그러한 기술을 검색하는 회사가 단순히 평균 경쟁자 일 가능성이 높다는 것입니다. 그러나 모호한 (또는보다 정확하게, 더 강력하고 잘 알려지지 않은) 언어에서 강력한 인재를 찾고있는 회사는 지켜봐야 할 회사입니다.

그렇습니다. 오늘날에는 완벽합니다. Graham이 작성하기 오래 전에는 완벽하게 이해가되었습니다. 당시에는 Java에 대해 이야기하지 않았습니다.


6
우리가 요즘 자바에 대해 이야기 할 필요가 없다면.
DeadMG

8

성공적인 스타트 업에서 어떤 언어를 처음 사용했는지 봅시다. 내 머리 꼭대기에있는 비과학적인 목록. 누군가 에너지가 있다면 적절한 무작위 연구가 더 나을 것입니다.

  • 페이스 북 : PHP
  • 스택 교환 : C #
  • 구글 : 자바와 파이썬
  • 트위터 : 루비 온 레일즈

따라서 Facebook과 Stackexchange는 경쟁 업체에 위협을주지 않는다고 결론 지을 수 있습니다. 설득력이 없습니다.


Paul Graham 이 오늘날 그것을 믿고 있는지 보자 . 그는 스타트 업에 자금을 지원하는 YCominator 를 공동 설립 했습니다 . 홈페이지는 자신의 성공적인 신생 기업의 일부를 보여줍니다. 나는 그것들을 순서대로 살펴 보았으며 초기에 그들이 사용했던 언어를 매우 빨리 연구하려고 노력했습니다.

글쎄, 비교적 모호하고 논란의 여지가없는 언어에 대한 선호의 징후가 있습니다. 그러나 플래시, PHP 및 클래식 ASP도 나와 있습니다.


에세이 입니다. 신생 기업이 기술을 사랑하고 최대한 빨리 움직여야한다는 기본 조언과 함께, 그가 애용하는 비교적 모호한 언어에 대한 과장된 향상입니다. 그럴 수 있지.


3
Reddit 은 Lisp에서 시작 했지만 Lisp를 이해할 수 없었기 때문에 Python에서 모든 것을 꽤 일찍 작성했습니다.
메이슨 휠러

Google은 다양한 언어로 많은 언어를 사용합니다. 검색, 크롬 등과 같은 대부분의 핵심 제품에 C ++을 사용합니다.
mike30

@ 마이크 문제는 스타트 업에 관한 것입니다. 구글이 스타트 업이었을 때 그들이 사용한 첫 번째 언어는 자바와 파이썬이었다.
MarkJ

6

일반 개발자는보다 강력한 도구의 가치를 알지 못하기 때문에 평균 도구를 사용합니다.

“가설의 Blub 프로그래머가 전력 연속체를 내려다보고있는 한, 그는 아래를 내려다 본다는 것을 알고 있습니다. Blub보다 덜 강력한 언어는 그가 사용했던 일부 기능이 없기 때문에 분명히 덜 강력합니다. 그러나 우리의 가상 Blub 프로그래머가 힘의 연속체를 다른 방향으로 바라 볼 때, 그가 찾고 있다는 것을 깨닫지 못합니다. 그가 보는 것은 단지 이상한 언어 일뿐입니다. 그는 아마도 그것들을 Blub과 동등한 능력에 대해 고려할 것이지만, 다른 모든 털이 많은 것들도 마찬가지입니다. 그가 Blub를 생각하기 때문에 Blub는 그에게 충분합니다.”— Paul Graham, Beats the Averages .

(Emphasis mine.)

언어가 강력할수록 더 적은 수의 개발자가 사용하게되며 일반적으로 사용되는 언어는 줄어 듭니다. 따라서 인기는 언어의 힘이 평균에서 얼마나 멀리 떨어져 있는지에 대한 좋은 지표입니다. 언어가 모호할수록 개발자가 언어를 사용하는 것이 자신이하는 일을 알고 기회가 많은 동료보다 좋은 이유를 선택했을 가능성이 높아지고 정통한 경쟁자는 위험한 언어입니다.


3
그것은 반드시 사실이 아닙니다. 툴링, 광고, 기존 라이브러리 및 양질의 교재도 언어의 인기를 바꿀 수 있습니다.
DeadMG

물론, 표현력이 유일한 요소는 아닙니다. 나는 일반적인 인식에있는 모든 언어가 마케팅, 도구 및 문서화 측면에서 대략 동등한 수준이라고 암묵적인 가정을했다고 생각합니다. 그렇지 않으면 그들은 합리적으로 비교되지 않을 것입니다. 심지어 개인적인 취향조차도 그것과 관련이 있습니다. Haskell이 일부 작업에는 더 좋지만 C를 정말 좋아한다면 C로 무언가를 코딩하여 순수하게 코딩 할 수 있습니다.
Jon Purdy 2012

나는 일반적인 인식의 모든 언어가 마케팅, 도구 및 문서화 측면에서 대략 동등하다고 가정합니다 . 실제로 잘못되었습니다.
Jim G.

1
@JimG. 구체적인 예를 제시해 주시겠습니까? TIOBE 지수를 고려할 때 상위 10 위와 상위 50 위는 모두 해당 영역에서 비교 가능한 것으로 보입니다. 게다가, 사람들은 표현력이 크게 다른 언어들 사이에서 기능 비교를 잘하고 있습니다. 그렇다면 다른 측면에서도 같은 기능을 사용하지 않겠습니까?
Jon Purdy 2012

5

언어 선택은 시작하기가 어렵습니다. 많은 우수한 신생 기업이 시장 출시 속도, 창립자 친숙성 및 향후 채용 용이성을 위해 "공통"언어를 선택합니다.

덜 사용되는 언어를 선택하면 좋은 신호를 보냈습니다. 개발을 진지하게 받아들이고 전문 프로그래머를 고용하기 위해 열심히 노력하고 있습니다. 그것은 단지 신호일 뿐이며, 창업은 단순히 언어로 선택하는 것 이상입니다.

결론은 언어를 선택하는 것이 상황에 따라 적절하게 평가되어야한다는 것입니다. 예를 들어 페이스 북은 일반적으로 매우 확장 가능한 언어로 간주되지 않는 PHP를 사용하여 확인했습니다.


1
"Facebook did OK"라는 문구 만있는 경우 +1입니다.
MarkJ

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

@ Jim G., 예. Common Lisp와 비교할 때 C # 편집 / 테스트주기가 느립니다. 실행중인 시스템을 수정할 수 없습니다. 그리고 C #에서 훨씬 더 많은 코드를 작성해야하므로 속도가 훨씬 느려집니다.
SK-logic

1
예를 들어, Erlang은 런타임 수정을 허용하며 컴파일 된 언어입니다.
Ricky Clarkson

2
@JimG., Common Lisp는 컴파일 된 언어입니다 (대부분의 구현은 순수한 컴파일러입니다). 증분 컴파일을 사용하면 인터프리터와 동일한 트릭을 모두 수행 할 수 있지만 별도의 컴파일을 사용하면 거의 불가능합니다.
SK-logic
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.