Nếu cạnh tranh đang sử dụng 'lingua obscura' để phát triển (tại sao) thì tôi có nên lo lắng không? [đóng cửa]


16

Tôi đã đọc bài tiểu luận của Paul Graham - Beating The A Average (2003) và đây là những gì anh ấy đã nói:

Càng nhiều hương vị CNTT mô tả công việc, công ty càng ít nguy hiểm. Loại an toàn nhất là những người muốn trải nghiệm Oracle. Bạn không bao giờ phải lo lắng về những điều đó. Bạn cũng an toàn nếu họ nói rằng họ muốn các nhà phát triển C ++ hoặc Java. Nếu họ muốn lập trình viên Perl hoặc Python, điều đó sẽ hơi đáng sợ-- điều đó bắt đầu giống như một công ty nơi ít nhất là phía kỹ thuật được điều hành bởi các tin tặc thực sự

Bây giờ, đây là một bài luận ngày. Tuy nhiên, tôi không thấy cách sử dụng ngôn ngữ không phổ biến (C / C ++ / Java, C #) sẽ 'ít nguy hiểm hơn' . Nếu các lập trình viên của một tổ chức rất thông thạo ngôn ngữ phát triển thì họ cũng phải thành thạo trong việc tạo ra mã với tốc độ tốt. Trong thực tế, nếu bạn sử dụng một ngôn ngữ không phổ biến thì sẽ không có vấn đề gì về bảo trì / nâng cao đối mặt với bạn vì về lâu dài sẽ không có quá nhiều lập trình viên?

Để làm cho các hệ thống nhanh chóng bẩn tôi đồng ý, rằng một số ngôn ngữ cho phép bạn cất cánh tương đối sớm hơn các ngôn ngữ khác. Nhưng bài luận / bình luận của Paul Graham có ý nghĩa trong năm 2012 và hơn thế nữa không? Nếu một startup sử dụng các ngôn ngữ CNTT điển hình để phát triển, tại sao cạnh tranh lại bớt lo lắng?

Tôi không thấy cách ngôn ngữ tạo ra sự khác biệt. IMHO đó là trải nghiệm của các nhà phát triển với ngôn ngữ quan trọng và sự sẵn có của các khung để bạn DRY (không lặp lại chính mình) không chỉ mã hóa bằng một ngôn ngữ cụ thể.

Tôi đang thiếu cái gì vậy? Có phải nó ngụ ý rằng các công ty khởi nghiệp tốt hơn nên chọn các ngôn ngữ không có hương vị CNTT (ngay cả khi các nhà phát triển có thể cực kỳ lão luyện với họ)? Các lực lượng kinh tế / thị trường (lập trình) đằng sau tuyên bố này là gì?

PS: 'lingua obscura' không có nghĩa là làm tổn thương cảm xúc của bất cứ ai :)


4
Khoảng cách giữa ngôn ngữ hàng hóa và ngôn ngữ quyền lực vẫn còn rất lớn. Vẫn có thể vượt trội so với tốc độ phát triển của Java hoặc tương tự với, ví dụ, Lisp theo thứ tự độ lớn.
SK-logic

4
@ SK-logic - có dữ liệu nào để sao lưu không?
Tiến sĩ

2
@Nupul, hầu như không có nghiên cứu chính thức nào về năng suất ngôn ngữ lập trình, vì vậy tôi chỉ có thể dựa vào bằng chứng giai thoại và kinh nghiệm của riêng tôi. Tôi chỉ thấy một vài tờ giấy, tôi sẽ thử đào chúng ra sau. Đối với Lisp cụ thể, nó khác với các ngôn ngữ khác theo cách nó có thể được chuyển thành nghĩa đen thành bất kỳ ngôn ngữ nào với giá rẻ và dễ dàng. Vì vậy, nó kết hợp tất cả các thuộc tính và lợi thế của tất cả các ngôn ngữ khác, trong khi các ngôn ngữ không có quyền lực là cố định và hẹp. Nó có thể giải thích khoảng cách năng suất.
SK-logic

8
@ SK-logic thật sao? Bất chấp các lập luận của LISPers ngược lại, thực tế là có rất ít chương trình giá trị được xây dựng bằng Lisp - với việc loại trừ Emacs có thể-- và hầu như không có trang web lớn nào - loại trừ ViaWeb vào khoảng năm 1997. Vì vậy, mặc dù tuyên bố tăng năng suất đáng kinh ngạc, hầu hết những người ủng hộ LISP đều nói và không đi bộ. Họ chỉ có công cụ nghiên cứu học thuật (nhiều hơn về nghiên cứu và ít hơn về chất lượng sản xuất), các dự án sở thích và một số công cụ nội bộ được sử dụng trong một vài công ty.
Hejazzman

2
@ SK-logic Vấn đề là thiếu gõ tĩnh, mặc dù khả năng của bạn để thực hiện một ngôn ngữ gõ tĩnh trong lisp.
BenjaminB

Câu trả lời:


16

Các toolchain là một triệu chứng.

Khi một công ty chọn Oracle, đây là một dấu hiệu của:

  • Rất nhiều tiền để ném
  • Tập đoàn lớn
  • Cơ cấu tổ chức lồng nhau sâu sắc với nhiều lớp quản lý
  • Công ty được điều hành bởi 'phù hợp': hoặc là loại điều hành, hoặc tiếp thị và bán hàng
  • Làm cho các sản phẩm phần mềm nguyên khối lớn với các cơ sở mã khổng lồ
  • Quy trình chính thức cho mọi thứ

Khi một công ty chọn Python, đây là dấu hiệu của:

  • Công ty nhỏ
  • Không có tiền
  • Phân cấp phẳng
  • Công ty được điều hành bởi các lập trình viên
  • Làm cho các sản phẩm đơn mục đích nhỏ với các cơ sở nhỏ
  • Chủ yếu là quá trình không chính thức

Khi hai điều này gặp nhau, chiến lược của tập đoàn lớn là tránh rủi ro, sử dụng động lực của họ và vượt mặt đối thủ cạnh tranh. Chiến lược của đối thủ cạnh tranh nhỏ là trước tiên đánh bại đối thủ cạnh tranh với thị trường, và sau đó tiếp tục là sản phẩm ưu việt. Nếu công ty nhỏ chọn những trận chiến phù hợp, họ có thể dễ dàng vượt qua công ty lớn chỉ bằng cách nhanh hơn và phản ứng nhanh hơn và tận dụng xu hướng của công ty lớn để tránh rủi ro.


1
Công ty sử dụng Oracle có thể vẫn sẽ ở đó trong năm năm nữa!
James Anderson

3
@JamesAnderson: tùy theo thị trường, vâng. Nếu họ đang cố gắng trở thành facebook tiếp theo, có lẽ là không; nếu họ là một công ty bảo hiểm lớn, thì có lẽ là có. Nhưng sau đó, nếu bạn là một công ty bảo hiểm lớn, một nhà để xe khởi nghiệp hầu như không phải là điều bạn cần phải lo sợ.
tdammers

Vì vậy, có vẻ như tôi muốn làm việc cho một cửa hàng Python / Ruby / Scala / Clojure ... mmm. Theo kinh nghiệm của tôi, những nơi đã trả lại kết thúc có xu hướng rất chậm để nâng cấp. Không chắc chắn lý do tại sao. Nỗi đau của việc di chuyển một phiên bản về phía trước thường nhẹ nhàng hơn so với việc di chuyển một số phiên bản về phía trước. Phần mềm trả phí "thường" cung cấp di chuyển nhưng di chuyển đó thường là phiên bản cho phiên bản kéo dài trong hầu hết các trường hợp.
Giàn

25

Việc lựa chọn một ngôn ngữ tối nghĩa sẽ cho thấy sự tự tin về kỹ thuật không phổ biến trong một công ty khởi nghiệp. Một công ty sẵn sàng từ bỏ trí tuệ thông thường có thể biết điều gì đó về phát triển phần mềm mà hầu hết các công ty không làm được. Sau đó, một lần nữa, họ có thể chỉ là những kẻ lang thang.


1
Thật vậy, đó chính xác là những gì Graham muốn nói bởi " điều đó bắt đầu giống như một công ty, nơi ít nhất là về mặt kỹ thuật được điều hành bởi các tin tặc thực sự " - một công ty mà ít nhất các nhà công nghệ thể đủ thông minh để cạnh tranh thực sự với anh ta.
Ross Patterson

8
Tuy nhiên, ngày nay, chủ yếu là những người đi lang thang, bởi vì "việc chọn một ngôn ngữ tối nghĩa" là mốt nhất thời trong số những người đi lang thang và những kẻ lang thang.
Hejazzman

2
Nó cũng là một dấu hiệu cho thấy công ty đang hướng nội và tập trung vào "cách xây dựng" hơn là "xây dựng cái gì". Những công ty như vậy không thu hút được nhiều khách hàng.
James Anderson

13

Tôi xem ý kiến ​​của PG nhiều hơn về thái độ hơn là chi tiết cụ thể của ngôn ngữ. Những người có tư duy CNTT nội bộ chơi nó an toàn. Họ sử dụng các công nghệ rủi ro thấp, có các quy trình để giảm thiểu rủi ro và thực hiện chiến lược rủi ro thấp. Họ quá bận rộn lo lắng về bữa trưa của mình để ăn của bạn.

Những người ở rìa chảy máu (python 2003) là những người phải lo lắng. Họ đang đói. Họ chấp nhận rủi ro. Họ tò mò về trí tuệ. Cùng một kiểu người thức khuya học một ngôn ngữ mới thú vị là kiểu người có thể nâng đỡ ngành của bạn trước khi bạn làm.


4
Tất nhiên họ cũng có thể bị nuốt chửng bởi một trong những rủi ro mà họ đã mắc phải ...
Michael Borgwardt

3
"" "Những người trên bờ vực chảy máu (python 2003) là những người phải lo lắng. Họ đói. Họ chấp nhận rủi ro. Họ tò mò về trí tuệ." "- hoặc họ là nạn nhân thời trang sử dụng ngôn ngữ hợp thời trang mới nhất, và có không liên lạc với thực dụng phát triển.
Hejazzman

2
Cả hai đều đúng. Đây là một trò chơi số. Nhưng đi ngược lại. Đôi khi ngoại lệ nổ tung. Đôi khi họ thành công. Nhưng bạn có bao giờ sợ một đối thủ đến sau bạn với COBOL không?
MathAttack

13

Graham có nghĩa là ít nguy hiểm hơn với anh ta như một đối thủ cạnh tranh, không chỉ đơn giản là ít nguy hiểm hơn. Quan điểm của ông không phải là Java (hay C ++ năm 2003, hay COBOL năm 1980) ít nguy hiểm hơn, mà là điều đó là bình thường và có một khả năng tốt là các công ty tìm kiếm các kỹ năng như vậy chỉ là đối thủ cạnh tranh trung bình. Nhưng các công ty đang tìm kiếm tài năng mạnh mẽ trong các ngôn ngữ tối nghĩa (hay chính xác hơn là các ngôn ngữ có năng lực cao hơn và ít được biết đến hơn) là các công ty nên theo dõi.

Và vâng, nó có ý nghĩa hoàn hảo ngày hôm nay. Nó có ý nghĩa hoàn hảo từ lâu trước khi Graham viết nó, chúng ta chỉ không nói về Java trong những ngày đó.


6
Giá như chúng ta không phải nói về Java những ngày này.
DeadMG

8

Hãy xem những ngôn ngữ nào được sử dụng đầu tiên bởi những người khởi nghiệp thành công. Một danh sách không khoa học, ra khỏi đỉnh đầu của tôi. Nghiên cứu ngẫu nhiên thích hợp sẽ tốt hơn, nếu bất cứ ai có năng lượng.

  • Facebook: PHP
  • Stackexchange: C #
  • Google: Java và Python
  • Twitter: Ruby on Rails

Vì vậy, có lẽ, chúng tôi kết luận rằng Facebook và Stackexchange không có mối đe dọa nào đối với các đối thủ cạnh tranh của họ. Không thuyết phục lắm.


Hãy xem liệu Paul Graham có tin điều đó ngày nay không. Ông đồng sáng lập YCominator tài trợ cho các công ty khởi nghiệp. Các trang web liệt kê một số các phần khởi động thành công của họ. Tôi đã trải qua chúng theo thứ tự, rất nhanh chóng cố gắng nghiên cứu ngôn ngữ mà chúng sử dụng trong những ngày đầu.

Vâng, có một số dấu hiệu của một ưu tiên cho các ngôn ngữ tương đối khó hiểu và mạnh mẽ. Nhưng Flash, PHP và ASP cổ điển cũng được liệt kê.


Đó là một bài luận . Đó là một sự thúc đẩy mạnh mẽ cho một ngôn ngữ tương đối khó hiểu mà anh ấy yêu thích, với lời khuyên cơ bản rằng các công ty khởi nghiệp nên yêu thích công nghệ của họ và di chuyển nhanh nhất có thể. Đủ công bằng.


3
Reddit bắt đầu ở Lisp, nhưng họ đã đi và viết lại toàn bộ điều trong Python từ khá sớm vì không ai có thể hiểu được Lisp.
Mason Wheeler

Google sử dụng rất nhiều ngôn ngữ cho rất nhiều thứ khác nhau. Họ sử dụng C ++ cho hầu hết các sản phẩm cốt lõi của họ như tìm kiếm, chrome, v.v.
mike30

@Mike Câu hỏi là về khởi nghiệp. Khi Google là một công ty khởi nghiệp, ngôn ngữ đầu tiên họ sử dụng là Java & Python.
MarkJ

6

Một nhà phát triển trung bình sử dụng các công cụ trung bình, bởi vì anh ta không thấy giá trị của những công cụ mạnh hơn:

Ngay khi lập trình viên Blub giả định của chúng ta đang nhìn xuống sự liên tục sức mạnh, anh ta biết mình đang nhìn xuống. Ngôn ngữ kém mạnh mẽ hơn Blub rõ ràng là kém mạnh mẽ hơn, vì chúng thiếu một số tính năng mà anh ấy đã từng sử dụng. Nhưng khi lập trình viên Blub giả định của chúng tôi nhìn theo hướng khác, tiếp tục sức mạnh, anh ấy không nhận ra mình đang nhìn lên. Những gì anh ta nhìn thấy chỉ là những ngôn ngữ kỳ lạ. Anh ta có lẽ coi họ có sức mạnh tương đương với Blub, nhưng với tất cả những thứ lông lá khác cũng bị ném vào. Blub là đủ tốt cho anh ta, bởi vì anh ta nghĩ trong Blub. Khăn - Paul Graham, Đánh bại mức trung bình .

(Nhấn mạnh của tôi.)

Ngôn ngữ càng mạnh, càng ít nhà phát triển sẽ sử dụng nó và càng ít phổ biến hơn. Do đó, mức độ phổ biến là một thước đo tốt về mức độ sức mạnh của ngôn ngữ so với mức trung bình. Ngôn ngữ càng mơ hồ, càng có nhiều cơ hội để nhà phát triển sử dụng nó biết những gì anh ta đang làm và đã chọn nó vì một lý do chính đáng so với các đồng nghiệp chạy ngang hàng của mình và một đối thủ cạnh tranh hiểu biết là một điều nguy hiểm.


3
Điều đó không nhất thiết đúng cả. Công cụ, quảng cáo, thư viện hiện có và tài liệu giảng dạy chất lượng, cũng có thể thay đổi mức độ phổ biến của ngôn ngữ.
DeadMG

@DeadMG Vâng, vâng, tất nhiên sức mạnh biểu cảm không phải là yếu tố duy nhất. Tôi đoán rằng tôi đã đưa ra giả định ngầm rằng tất cả các ngôn ngữ trong nhận thức chung gần như ngang bằng về tiếp thị, công cụ và tài liệu; mặt khác họ sẽ không được so sánh hợp lý cả. Địa ngục, thậm chí sở thích cá nhân có rất nhiều để làm với nó. Nếu bạn biết Haskell tốt hơn cho một số nhiệm vụ nhưng bạn thực sự thích C, thì bạn có thể mã hóa một cái gì đó trong C cho sự tinh quái của nó.
Jon Purdy

Tôi đoán rằng tôi đã đưa ra giả định ngầm rằng tất cả các ngôn ngữ trong nhận thức chung gần như ngang bằng về tiếp thị, công cụ và tài liệu ... - Và bạn đã sai khi làm như vậy. Cách sai, trên thực tế.
Jim G.

1
@JimG. Bạn có thể đưa ra một ví dụ cụ thể? Xem xét chỉ số TIOBE, tất cả top 10 và hầu hết top 50 dường như có thể so sánh trong các lĩnh vực đó. Bên cạnh đó, mọi người đang tạo ra sự so sánh đặc trưng giữa các ngôn ngữ có sự khác biệt lớn về sức mạnh biểu cảm, vậy tại sao không làm điều tương tự cho các khía cạnh khác?
Jon Purdy

5

Sự lựa chọn ngôn ngữ là khó khăn cho một khởi nghiệp. Rất nhiều công ty khởi nghiệp rất giỏi chọn ngôn ngữ "phổ biến" để tăng tốc độ tiếp cận thị trường, sự quen thuộc của người sáng lập và dễ dàng tuyển dụng trong tương lai.

Chọn một ngôn ngữ ít sử dụng sẽ gửi ra những dấu hiệu tốt. Nó nói rằng bạn đã sẵn sàng để phát triển nghiêm túc và cố gắng hết sức để thuê các lập trình viên chuyên ngành. Tuy nhiên, đó chỉ là những tín hiệu, một startup không chỉ là ngôn ngữ.

Điểm mấu chốt là sự lựa chọn của bạn trong ngôn ngữ nên được đánh giá đúng trong ngữ cảnh của bạn. Ví dụ, Facebook đã sử dụng php, thường không được coi là ngôn ngữ rất có thể mở rộng


1
+1 nếu chỉ dành cho phần dưới "Facebook đã làm được".
MarkJ

5

Hãy hỏi những lập trình viên giỏi nhất và tệ nhất mà bạn biết, theo bất kỳ tiêu chí nào bạn thích, những ngôn ngữ khác mà họ biết. Bây giờ viết một quảng cáo việc làm để thu hút người trước, và bạn có câu trả lời của bạn. Ngay cả khi ứng dụng của bạn ở C ++, bạn sẽ có được một lớp lập trình viên tốt hơn nếu bạn thuê những người biết ngôn ngữ không được dạy ở trường.


2
-1: Hả? Xin lỗi, bạn đã mất tôi.
Jim G.

4

Có hai điều khác nhau mà bạn nên lo lắng nếu đối thủ cạnh tranh sử dụng ngôn ngữ bất thường:

  • Lợi thế về năng suất - Có những ưu và nhược điểm của các ngôn ngữ khác thường, nhưng giả sử đối thủ cạnh tranh đã chọn tốt cho miền vấn đề nhất định thì họ có thể có lợi thế năng suất thực sự. Chẳng hạn, khả năng lập trình meta trong Lisps có thể sẽ mang lại cho bạn một lợi thế thực sự và đáng kể ở bất cứ nơi nào bạn cần để thực hiện một số lượng đáng kể việc tạo mã tự động khi đang di chuyển.
  • Lợi thế về văn hóa - nếu một công ty sử dụng ngôn ngữ khác thường gây hứng thú cho các tin tặc vĩ đại, thì có lẽ họ đang ở vị trí để thu hút và giữ chân các tin tặc tuyệt vời. Các công ty sống và chết bởi chất lượng con người của họ, vì vậy nếu điều này chuyển thành lợi thế tài năng lâu dài thì nó có thể thực sự có ý nghĩa.

Cả hai lợi thế này có thể không áp dụng trong bất kỳ tình huống nào. Ví dụ, một người khởi nghiệp có thể dễ dàng chấp nhận một ngôn ngữ "bởi vì nó tuyệt vời" mà không thực sự suy nghĩ xem liệu đó có phải là lựa chọn đúng đắn hay không. Họ có thể dễ dàng phạm sai lầm tuyển dụng. Họ có thể dễ dàng tự bắn vào chân mình bằng cách lạm dụng một ngôn ngữ "mạnh mẽ".

Nhưng nếu một đối thủ cạnh tranh chọn một ngôn ngữ khác thường và sử dụng nó tốt thì có, bạn cũng có thể có một mối đe dọa đáng kể trên tay.

Tôi nghĩ nguyên tắc này khá vượt thời gian và cũng đúng như năm 2003 - các ngôn ngữ và mô thức cụ thể có thể đến và đi nhưng ý tưởng chọn một ngôn ngữ mạnh mẽ, biểu cảm phù hợp với lĩnh vực vấn đề của bạn qua ngôn ngữ chung, an toàn, chung chung có lẽ sẽ luôn luôn cân nhắc một số nghiêm túc.


0

Nếu khách hàng của bạn không bị khóa, thì . Bạn nên lo lắng về các đối thủ sử dụng các ngôn ngữ mạnh mẽ.

Java, C #, C ++, tương đối dài dòng và có chu kỳ kiểm tra / chỉnh sửa tương đối chậm. Điều này giới hạn tốc độ mà ngay cả những nhà phát triển nhanh nhất cũng có thể cung cấp các tính năng. Nhiều ngôn ngữ biểu cảm hơn, với tích hợp lập trình meta mạnh mẽ và thời gian biên dịch bằng 0, cho phép các nhà phát triển chuyên gia xây dựng các tính năng nhanh nhất có thể. Nếu bạn đang trong một cuộc đua giành thị phần, với phần thưởng lớn cho người chiến thắng, việc thuê những nhà phát triển tốt nhất bạn có thể tìm thấy và sử dụng bất kỳ ngôn ngữ nào sẽ giúp họ đi nhanh nhất. Bạn có thể lo lắng về khả năng mở rộng sau này.


1
-1: C #, khi được viết bằng thư viện Visual Studio, Resharper, LINQ và .NET 4.0 có chu kỳ chỉnh sửa / kiểm tra chậm so với các ngôn ngữ khác không?
Jim G.

1
@Jim: không chắc chắn so sánh của bạn là gì nhưng so với Ruby, Groovy, Clojure và các ngôn ngữ động hiện đại khác mà tôi đã sử dụng C # chắc chắn gần với Java và C ++ hơn về cả phong cách phát triển và tốc độ lặp. YMMV nhưng tôi không nghĩ rằng downvote của bạn đặc biệt xứng đáng - đặc tính của OP là công bằng. Hãy thử "ngôn ngữ biểu cảm", bạn có thể ngạc nhiên về những gì có thể .....
mikera

@Jim G., vâng, so với Common Lisp, chu trình chỉnh sửa / kiểm tra C # chậm. Bạn không thể sửa đổi một hệ thống đang chạy. Và bạn phải viết một cách nhiều mã hơn trong C #, điều này làm mọi thứ chậm hơn nữa.
SK-logic

1
Không, ví dụ Erlang cho phép sửa đổi thời gian chạy và là ngôn ngữ được biên dịch.
Ricky Clarkson

2
@JimG., Lisp thông thường là một ngôn ngữ được biên dịch (tốt, hầu hết các triển khai là trình biên dịch thuần túy). Biên dịch tăng dần cho phép thực hiện tất cả các thủ thuật giống như trình thông dịch, trong khi với một trình biên dịch riêng biệt thì hầu như không thể.
SK-logic
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.