Tôi nên làm gì để không biết ngôn ngữ?


52

Đến bây giờ tôi làm việc với asp.net và C #. Tôi cũng đã làm một công việc tốt trong Java. Tôi đang lên kế hoạch cho sự nghiệp của mình theo cách mà tôi nên trở thành người không biết ngôn ngữ vào một ngày nào đó. Những điều mà tôi cần phải học là gì?

Đầu tiên, các mô hình OOP sẽ nói về thiết kế Class. Có ai khác không?


2
Bạn đang cố gắng: tránh bị dán nhãn, có sự linh hoạt trong công việc, hoặc trong một số nhiệm vụ tầm nhìn?
JeffO

2
@Jeff Vâng! để tránh bị dán nhãn và không đấu tranh rằng ngôn ngữ của tôi là TỐT NHẤT;)
Gopi

Tôi có nhiều khả năng thuê một anh chàng có quan điểm mạnh mẽ mà không đồng ý với tôi. Bởi vì sau đó anh ta có thể viết Java.
Erik Reppen

Nếu bạn đã làm điều đó các nhà tuyển dụng sẽ bỏ qua sơ yếu lý lịch của bạn.
gonzobrains

Câu trả lời:


67

Để trở thành bất khả tri về ngôn ngữ, bạn cần có kinh nghiệm trong tất cả các phong cách và loại ngôn ngữ phổ biến.

  • Một ngôn ngữ bắt buộc (Bạn bảo nó phải làm gì, từng bước một. Ví dụ - C)
  • Một ngôn ngữ khai báo (Bạn nói với nó mục tiêu của bạn, nó chỉ ra những việc cần làm. Ví dụ: SQL / HTML / Prolog)

Cũng thế:

  • Một ngôn ngữ chức năng (Chức năng là chính, tránh các tác dụng phụ và trạng thái là mục tiêu. Ví dụ: Haskell / OCaml / Lisp / F #)
  • Một ngôn ngữ hướng đối tượng (Kiến trúc nơi các đối tượng gói gọn dữ liệu liên quan và các phương thức tác động lên chúng). Ví dụ: Java / C #)

Một số kiểu gõ:

  • Một ngôn ngữ được nhập tĩnh (Các kiểu dữ liệu được xác định và kiểm tra tại thời điểm biên dịch. Ví dụ: C #)
  • Một ngôn ngữ được gõ động (Các kiểu dữ liệu được kiểm tra trong thời gian chạy. Ví dụ: Python / Javascript)
    Trải nghiệm gõ mạnh so với gõ yếu cũng hữu ích.

Một số kiểu thời gian chạy khác nhau:

Thứ cấp thấp hơn:

  • Một cái gì đó khá thấp (Ví dụ - C)
  • Một số phương ngữ của lắp ráp (Ví dụ - NASM)

Trên hết, tôi muốn nói rằng bạn cần có kinh nghiệm về một số chương trình đồng thời và một cái gì đó hướng sự kiện . Có lẽ bạn cũng nên đảm bảo rằng bạn biết một số thứ về các lĩnh vực khác nhau như lập trình web (máy khách & máy chủ), phát triển ứng dụng khách / máy tính để bàn phong phú, trò chơi. Bạn cũng có thể muốn tìm hiểu về lập trình nhúng hoặc phần cứng chuyên dụng (như bảng điều khiển trò chơi) và phát triển di động đang trở thành một lĩnh vực ngày càng phù hợp.

Những người khác cũng đã đề cập rằng đáng để có được một số kinh nghiệm về phương pháp lập trình chung và phương pháp lập trình Meta .

Khi bạn học những mô thức này, hãy tránh học cú pháp và viết theo kiểu cũ. Tôi đã thấy nhiều nhà phát triển C # viết JavaScript như thể nó được nhập tĩnh. Đừng làm điều này, hãy cố gắng học các mô hình ngôn ngữ và nắm lấy chúng.

Nếu bạn đã thực hiện tất cả những điều này, sự khác biệt giữa các ngôn ngữ sẽ phần lớn mang tính cú pháp nên việc chuyển đổi sẽ trở thành một bài tập khá đơn giản để học một số cú pháp mới.

Đừng quên rằng lập trình hiện đại hầu như luôn phụ thuộc vào một khung, do đó, việc tự làm quen với các khung phổ biến và phổ biến cho mỗi ngôn ngữ bạn học cũng rất quan trọng. Biết C # là không liên quan mà không có .net.


9
Khai báo HTML theo nghĩa đã cho như thế nào? "Mục tiêu -> Hành động"? Nó không làm gì thực sự.
Felix Dombek

3
Một ngôn ngữ khai báo tuyệt vời mà tôi chỉ có thể khuyên bạn nên tìm hiểu là Prolog. Nó khác với mọi thứ khác - không có chức năng (nhưng quan hệ hoạt động cả hai chiều), không có luồng kiểm soát rõ ràng (trình thông dịch giải quyết mọi thứ cho bạn), chỉ là một cấu trúc dữ liệu tuyệt vời (thuật ngữ, không có gì khác là cần thiết.) những gì nó làm, thực hiện hàng triệu thống nhất và suy luận mỗi giây - và thời gian cần thiết để phát triển một thứ gì đó ngắn như trong Python so với C / C ++.
Felix Dombek

3
@Felix: HTML, Goal = "Tôi muốn nhãn và hộp văn bản". Hành động = Bố cục & công cụ đồ họa tìm ra cách vẽ chúng. Các chi tiết được xuống cho các trình duyệt cá nhân. Bạn chỉ xác định những gì bạn muốn không làm thế nào để làm điều đó. Xem tại đây . Mặc dù vậy, tôi đồng ý, Nó không thực sự là một "ngôn ngữ" như vậy. Prolog là một ví dụ tốt hơn, tôi sẽ cập nhật.
Simon P Stevens

1
+1 Đối với một danh sách tốt các loại, các lựa chọn ngôn ngữ hơi khác so với mô hình ở những nơi, nhưng nói chung là tuyệt vời.
Orble

2
Nhân tiện, bạn nên thêm "Các miền / mức độ trừu tượng khác nhau": web, web tương tác, công cụ máy tính để bàn, trò chơi trên máy tính để bàn, trò chơi liên tục không được xây dựng giống như cách ràng buộc và khoảng cách với phần cứng là khác nhau, làm cho lựa chọn ngôn ngữ ( hoặc thậm chí tồn tại) rõ ràng hơn đối với người muốn hiểu nó là bất khả tri.
Klaim

4

Tôi không nghĩ bạn có thể trở thành bất khả tri ngôn ngữ. Tôi thấy rằng tôi "nghĩ" bằng ngôn ngữ hiện tại của mình (tại thời điểm C #).

Tuy nhiên, đã nói rằng, tôi nghĩ rằng bạn có thể tách thiết kế khỏi mã bằng cách cố gắng suy nghĩ bằng mã giả thay vì một ngôn ngữ cụ thể và thực sự viết nó theo định dạng này. Điều này có thể giúp bạn tập trung vào các quyết định thiết kế và kiến ​​trúc hơn là việc thực hiện bằng ngôn ngữ hiện tại của bạn. Hạn chế với điều đó - như Simon chỉ ra - là ngôn ngữ và khuôn khổ mà bạn sử dụng cuối cùng chắc chắn sẽ ảnh hưởng đến thiết kế. Vì vậy, khi thiết kế của bạn phát triển, nó sẽ ngày càng gắn liền với ngôn ngữ & khung.


+1 cho "Bạn không thể thực sự là bất khả tri ngôn ngữ". Nhưng tôi không hoàn toàn đồng ý với đoạn thứ hai của bạn. Tôi nghĩ điều quan trọng là thiết kế ngôn ngữ và khung bạn sẽ sử dụng.
Simon P Stevens

@Simon - bạn đã có một điểm tốt về thiết kế cho khung. Tôi sẽ cập nhật câu trả lời.
ChrisF

3

Đọc câu hỏi của bạn và một số câu trả lời người ta có thể có ấn tượng rằng bạn bằng "thuyết bất khả tri ngôn ngữ" với "biết mọi mô thức trên trái đất".

Tôi không chắc liệu việc biết mọi mô hình tồn tại hay biết một loạt các ngôn ngữ, trải rộng trên một số mô hình và loại ngôn ngữ khiến bạn "không biết ngôn ngữ".

Nó giống như nói rằng việc thực hành tất cả các tôn giáo làm cho bạn không theo tôn giáo.

Tôi nghĩ rằng một người không biết ngôn ngữ liên quan đến ngôn ngữ lập trình nên là người không biết cách lập trình bằng bất kỳ ngôn ngữ nào hoặc không quan tâm đến ngôn ngữ mà anh ấy / cô ấy được yêu cầu lập trình.

Điều đó nói rằng, một số người nói rằng một lập trình viên thực thụ có thể lập trình bằng bất kỳ ngôn ngữ nào được cấp quyền truy cập vào tài liệu của ngôn ngữ đó.

Nếu đó là ý của bạn bởi "bất khả tri ngôn ngữ" thì hầu như bất kỳ lập trình viên có kinh nghiệm nào cũng có thể lập trình bằng bất kỳ ngôn ngữ nào mà anh ấy / cô ấy bị buộc phải làm việc, được cấp quyền truy cập vào tài liệu ngôn ngữ.

Có lẽ bạn muốn trở thành "đa thần ngôn ngữ".

Bản thân tôi có khả năng trong một số mô hình ngôn ngữ nhưng tôi thích OOP hơn khi nó xuất hiện. Vì vậy, tôi đoán tôi không phải là bất khả tri.

Bạn sẽ khó tìm thấy bất cứ ai không thích một mô hình hoặc ngôn ngữ nhất định được tự do lựa chọn.


0

Không chỉ là ngôn ngữ, bản thân Java có rất nhiều chế độ khác nhau mà bạn có thể dành nhiều năm chỉ để học tất cả. Bạn có thể học:

  • Các tính năng của J2EE như Nhắn tin và Kiên trì và các máy chủ khác nhau
  • jsp và bộ công cụ định hướng Apache
  • ant, maven và các hệ thống xây dựng khác (Ngôn ngữ tự).
  • Toàn bộ thế giới Groovy / Grails
  • tất cả các API chung của apache
  • hệ thống thử nghiệm (Mocking, JUnit)
  • Các nhà xây dựng GUI như Swing, GWT ...

Và một trăm điều tôi đang thiếu - CHỈ trong java.

Nếu bạn dành nhiều năm để trải rộng (học mọi ngôn ngữ), bạn sẽ gặp khó khăn để đạt được chiều sâu để làm việc hiệu quả trong bất kỳ một trong số họ.

Tôi không nói rằng việc học một ngôn ngữ mới là một vấn đề, bạn nên tích cực làm như vậy! Tôi cố gắng chọn công việc tiếp theo dựa trên những gì tôi có thể học (những gì tôi chưa làm), nhưng tôi không thường chọn một ngôn ngữ ngẫu nhiên và học nó nữa - Lần trước tôi đã thử với Scala và tôi còn lại hơi khiêm tốn ...


Đến "toàn bộ thế giới Groovy / Grails" bạn có thể thêm ", toàn bộ thế giới Scala / Play! 2, toàn bộ thế giới JRuby / Rails và toàn bộ thế giới Clojure / Noir".
Vorg van Geir

1
Tôi đồng ý, đã viết rằng cách đây một thời gian và chỉ cần kéo mọi thứ ra khỏi đỉnh đầu của tôi - mặc dù tôi có lẽ chỉ cần chọn một trong các khung web và đi với nó.
Bill K
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.