Tôi nên bận tâm học về ngôn ngữ nhỏ hay thích hợp? [đóng cửa]


22

Nếu bạn duyệt các câu hỏi golf mã trên StackExchange , bạn sẽ nhận thấy rất nhiều ngôn ngữ không chuẩn nhưng thế giới thực (Ví dụ: không phải não-f * ck) như F # , Scala , R , JClojure . Truy cập trang web của họ, một số ngôn ngữ có vẻ giải quyết vấn đề thú vị bằng bất kỳ ngôn ngữ nào bạn đã sử dụng.

Tuy nhiên, có mã hóa trong thời gian rảnh rỗi và mã hóa tiền. Điều gần nhất mà chúng ta có với sự thật về người sử dụng ngôn ngữ là Chỉ số TIOBE , danh sách này không liệt kê bất kỳ ngôn ngữ nào ở trên trong top 10-15. Điều này làm tôi tự hỏi nếu tôi từng sử dụng chúng.

Tôi thậm chí có nên bận tâm học một số ngôn ngữ thích hợp nhỏ? Có vẻ như tôi sẽ không kiếm được tiền, và một số có thể sẽ thất bại.


4
Nếu tất cả những gì bạn quan tâm là kiếm tiền tại sao bạn lại hỏi câu hỏi này?
ChaosPandion

4
F # là ngôn ngữ hạng nhất kể từ VS2010. Tôi sẽ không nói nó không chuẩn và tôi nghĩ rằng nó sẽ sớm được áp dụng rộng rãi.
Brian R. Bondy

8
Nếu tất cả những gì bạn muốn chỉ là kiếm tiền, tốt hơn hết bạn nên tránh lập trình. Làm thế nào về việc trở thành một nữ diễn viên nổi tiếng?
P Shved

2
@TheLQ: Bạn muốn trở thành chủ đạo? Bạn sợ thực hiện bất kỳ bước nào bạn không biết nó sẽ mang lại bao nhiêu tiền trước khi bạn làm điều đó? Sau đó, xin vui lòng, cũng được nội dung với trả tiền chính. Đây là tất cả những gì bạn sẽ nhận được với tâm lý của bạn, nếu có.
Ingo

1
Một số ngôn ngữ thích hợp có thể giúp bạn làm việc hiệu quả hơn, do đó cho phép bạn kiếm được nhiều tiền hơn so với các ngôn ngữ chính.
Giorgio

Câu trả lời:


25

Giả thuyết Sapir-Whorf . Nó tuyên bố, ít nhiều, rằng những gì bạn có thể nghĩ bị giới hạn bởi những gì bạn có ngôn ngữ để mô tả. Hậu quả của điều này là những người đa ngôn ngữ có thể suy nghĩ theo những cách mà những người nói ngôn ngữ đơn lẻ có thể không thể.

Nhiều người (bao gồm cả tôi) nghĩ rằng điều này cũng đúng với lập trình. Học Lisp, ví dụ, dạy cho bạn một cách suy nghĩ hoàn toàn mới về các vấn đề mà bạn có thể áp dụng cho C # hoặc Java hoặc Python. Càng nhiều mô hình ngôn ngữ bạn đã học, sẽ có càng nhiều công cụ trong hộp công cụ tinh thần của bạn, bất kể bạn đang sử dụng ngôn ngữ nào.


1
Chính xác. Ví dụ, tôi thấy rằng trong một số tình huống, một ngôn ngữ hoàn toàn chức năng đơn giản là không đủ. Tuy nhiên, tôi liên tục thấy mình có các khái niệm chức năng trong các ngôn ngữ hỗ trợ lập trình chức năng (ví dụ: javascript, c ++ 0x, v.v.).
Cam

4
Tôi thích thú rằng mọi người tiếp tục sử dụng giả thuyết Sapir-Whorf (phần lớn, mặc dù không hoàn toàn mất uy tín trong Ngôn ngữ học) như một sự tương tự. Tôi chắc chắn đồng ý với tình cảm liên quan đến lập trình, nhưng tôi nghĩ rằng một sự tương tự khác sẽ tốt hơn nếu chúng ta muốn mọi người coi trọng chúng ta.
Jonathan Sterling

1
Tôi không tin giả thuyết này, nếu không chúng tôi sẽ không bao giờ vượt ra ngoài những tiếng lẩm bẩm. Tương tự như vậy đối với lập trình, đừng nghĩ mọi người bị giới hạn bởi ngôn ngữ.
John Smith

24

Tôi sẽ học bất kỳ ngôn ngữ nào giới thiệu cho tôi các khái niệm và mô thức mà tôi chưa từng thấy trước đây. Đó là lý do tại sao tôi học haskell và chương trình - họ giới thiệu cho tôi lập trình chức năng và lập trình chủ yếu là chức năng tương ứng. Tôi sẽ không quan tâm đến việc chương trình và haskell có được sử dụng rộng rãi hay không, ngoài việc điều đó sẽ ảnh hưởng đến tài liệu và tài nguyên sẵn có như thế nào.

Vì vậy, về cơ bản, nếu một ngôn ngữ thích hợp nhỏ giới thiệu cho bạn các khái niệm và mô hình mới (đặc biệt là các ngôn ngữ bạn có thể áp dụng cho các ngôn ngữ khác), thì hãy học đi!

Các lý do khác mà bạn có thể muốn học một ngôn ngữ 'nhỏ / thích hợp':

  • Ngôn ngữ cho phép bạn giải quyết một vấn đề (loại) cụ thể 'tốt hơn' (nhanh hơn, với giải pháp tốt hơn, có tính di động hơn, v.v.) so với bất kỳ ngôn ngữ nào khác

  • Ngôn ngữ cho phép bạn giải quyết các vấn đề cũng như ngôn ngữ phổ biến, nhưng nó có một số tính năng thú vị mà bạn thích (ví dụ: clojure)

  • Bạn muốn giúp phát triển ngôn ngữ

7

Vâng, tôi đang sử dụng Clojure (một trong những "ngôn ngữ thích hợp" mà bạn đề cập) và thấy rằng đó là một trải nghiệm rất đáng giá.

  • Nó làm cho tôi hiệu quả hơn nhiều (so với Java và C # mà tôi chủ yếu sử dụng trước đây). Khi tôi điều hành doanh nghiệp của riêng mình, năng suất bằng tiền :-) vì vậy theo nghĩa đó, Clojure đã thành công, ít nhất là theo quan điểm của tôi.
  • Tôi đã học được các kỹ thuật mới giúp tôi trở thành một nhà phát triển tốt hơn (đặc biệt là về đồng thời, lập trình chức năng, trừu tượng hóa, siêu lập trình, v.v.). Ngay cả khi tôi quay lại viết Java, tôi vẫn có thể sử dụng tốt kiến ​​thức này
  • Thật sự rất thú vị khi học một ngôn ngữ mới rất khác so với bất kỳ điều gì tôi đã làm trước đây. Nếu bạn thực sự thích những gì bạn làm, nó có giá trị theo đúng nghĩa của nó.
  • Vì nó là ngôn ngữ JVM, nên không có vấn đề gì nếu bộ thư viện tương đối nhỏ vì bạn vẫn có quyền truy cập vào toàn bộ bộ thư viện trong hệ sinh thái Java / JVM. Đây là một lợi thế lớn cho các ngôn ngữ chạy trên JVM (tương tự sẽ áp dụng cho Scala)

Cá nhân tôi rất chú ý đến những thứ như TIOBE - họ thực sự không nói cho bạn biết nhiều hơn những gì đã phổ biến trong quá khứ. Có lẽ hữu ích nếu bạn muốn một công việc duy trì các hệ thống cũ, ít hơn nếu bạn muốn tìm hiểu và mở rộng tầm nhìn của mình.


4

Lý do để nghiên cứu một ngôn ngữ thích hợp hiếm khi là kỳ vọng rằng bạn sẽ sử dụng nó trực tiếp (vì tiền hoặc cách khác). Đó thường là để tìm hiểu một số khía cạnh hoặc phong cách lập trình mới. Làm như vậy có khả năng làm cho bạn trở thành một lập trình viên tốt hơn (và có, có lẽ có giá trị hơn), ngay cả khi bạn không bao giờ sử dụng ngôn ngữ đó để tạo mã "sản xuất".


4

Nói như một nhà phát triển chuyên nghiệp trong một ngôn ngữ thích hợp , có thể kiếm sống. Có những mặt thăng trầm, mặc dù.

Những điều khó hơn:

  • Tìm việc mất nhiều thời gian hơn
  • Công việc có nhiều khả năng yêu cầu bạn di chuyển
  • Bạn sẽ nhận được ít sự tôn trọng từ các lập trình viên chính thống (và do đó, nhiều sức đề kháng hơn).

Những điều dễ dàng hơn:

  • Nhóm lập trình viên nhỏ giúp cạnh tranh việc làm dễ dàng hơn
  • Bạn có thể biết mọi lập trình viên có ý nghĩa trong lĩnh vực của bạn
  • Phát triển danh tiếng dễ dàng hơn trong dòng chính

Những thứ chỉ :

  • Trả tiền có xu hướng thay đổi nhiều hơn, vì có ít tiêu chuẩn
  • Dành nhiều thời gian cho việc giáo dục người khác về điểm mạnh và điểm yếu của thị trường ngách của bạn

Nhìn chung, nếu nghề nghiệp là mối quan tâm của bạn, bạn không bao giờ nên là một con ngựa một mánh, chủ đạo hay thích hợp.


2

Tôi hiện đang học Ruby bằng cách sử dụng nó để giải quyết các vấn đề của Project Euler , chỉ vì tôi dành phần lớn thời gian trong ngày để lập trình bằng C hoặc PHP (và đôi khi là C #) và tôi muốn mở rộng tầm nhìn của mình. Cho đến nay nó đã thực sự mở mắt cho tôi những gì có thể được thực hiện. Ngay cả khi tôi không bao giờ sử dụng nó cho bất kỳ công việc "thực sự" nào, tôi tin rằng thời gian dành cho việc tìm hiểu về nó sẽ có giá trị.


+1 cho euler dự án. Tôi cũng làm như vậy khi tôi đang học python

1

Đồng ý với tất cả các điểm được đề cập. Một động lực khác để học một ngôn ngữ thích hợp là khả năng ngôn ngữ một ngày nào đó sẽ trở nên rất phổ biến. Trong tình huống này, việc đầu tư sớm vào ngôn ngữ của bạn có thể giúp bạn dẫn đầu vào các khuôn khổ có ảnh hưởng và các yếu tố của ngôn ngữ có thể có nhu cầu cao trong tương lai.

Nếu ngôn ngữ trở nên phổ biến, bạn sẽ có kỹ năng về ngôn ngữ đó, và do đó bạn sẽ có nhu cầu cao.

Xác suất thấp, khả năng thưởng cao.


2
Cá nhân tôi sẽ luôn cố gắng học các khái niệm hơn là ngôn ngữ ... không gian não bị giới hạn nếu bạn hiểu ý tôi.
ChaosPandion

1

Như những người khác gần như đã nói, học một ngôn ngữ thích hợp chỉ vì đó là ngôn ngữ thích hợp không có nhiều ý nghĩa. Tuy nhiên, thông thường, các ngôn ngữ thích hợp khám phá một khái niệm sâu hơn / sâu hơn các ngôn ngữ chính có thể đủ khả năng hoặc muốn.

Và đôi khi các ngôn ngữ thích hợp đã tồn tại rất xa, lâu hơn bất kỳ ngôn ngữ chính nào - Smalltalk, Prolog và các ngôn ngữ Lisp nhảy vọt. Chúng có thể không phổ biến, nhưng chúng cũng không biến mất.

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.