Có đáng là ngôn ngữ máy tính polyglot? [đóng cửa]


14

Bạn thường có thể nghe rằng các lập trình viên nên học nhiều ngôn ngữ khác nhau để cải thiện bản thân. Tôi vẫn đi học và không có kinh nghiệm lập trình lớn (hơn một chút so với năm trước). Nhưng ý định cao cả để cải thiện kỹ năng lập trình đã biến thành một loại OCD nào đó: Tôi cảm thấy rằng tôi sẽ không bình tĩnh cho đến khi tôi học được tất cả các ngôn ngữ lập trình tương đối nổi tiếng.

Và đây là câu hỏi của bản thân: Will ngôn ngữ lập trình là Polyglot thực sự giúp bạn (và tôi không bình thường "Lập trình viên nên biết ít nhất tất cả các mô hình", ý tôi là thực sự tất cả các ngôn ngữ bạn thường nghe về)? Có ai có kinh nghiệm tương tự? Nó có giúp gì với công việc / kỹ năng / nghề nghiệp không? Bao lâu thì bạn có thể áp dụng những kỹ năng đó?


3
Tôi nghĩ rằng khi mọi người đề nghị người khác học về các ngôn ngữ mới, đó là việc học ngôn ngữ ít hơn và nhiều hơn về việc học các mô hình mới. Hai ngôn ngữ chính của tôi là Python và C ++, học Haskell là một trải nghiệm tuyệt vời đối với tôi, bởi vì nó buộc tôi phải suy nghĩ theo một cách khác so với cách khác.
Vitor Py

4
Biết tất cả các mô hình chính thực sự giúp ích rất nhiều . Được tiếp xúc ít nhất một chút với tất cả các ngôn ngữ thú vị có thể giúp ích phần nào nếu bạn thiết kế ngôn ngữ của riêng mình (và ngay khi bạn tham gia vào mô hình Lập trình hướng ngôn ngữ, bạn có thể sẽ làm như vậy).
SK-logic

4
"Một ngôn ngữ không ảnh hưởng đến cách bạn nghĩ về lập trình, không đáng để biết." (Alan Perlis). Amen.

2
@Job, biết 10 ngôn ngữ lập trình chỉ mất một phần nhỏ nỗ lực cần thiết để học những điều cơ bản của một ngôn ngữ nói.
SK-logic

2
@ SK-logic phụ thuộc. Tôi cá là tôi có thể dạy một đứa trẻ 6 tuổi nói tiếng Tây Ban Nha nhanh hơn sau đó tôi có thể dạy nó con trăn.
Raynos

Câu trả lời:


10

"Lập trình viên nên biết ít nhất là tất cả các mô hình"

Những sự giúp đỡ đó

Ý tôi là tất cả các ngôn ngữ bạn thường nghe về

Điều đó không có ích. Mặc dù một khi bạn biết tất cả các mô hình, bạn có thể học một ngôn ngữ một tuần.

Đơn giản là tối ưu hơn để dành một tuần để học ngôn ngữ đó khi bạn cần ngôn ngữ đó.

Một lập trình viên giỏi là một lập trình viên lười biếng

Lưu ý phụ:

Học các ngôn ngữ phổ biến / phổ biến không hữu ích như học "tất cả các mô hình". Cái trước không bao gồm cái sau. Ví dụ, tự học là vô cùng hữu ích để hiểu OO nguyên mẫu. Nó không phải là ngôn ngữ phổ biến cũng không phải là ngôn ngữ phổ biến nhưng nó hữu ích hơn rất nhiều khi học trăn khi bạn đã biết ruby.

Thiết kế ngôn ngữ:

Biết hầu hết các ngôn ngữ là hữu ích nếu bạn viết / thiết kế một ngôn ngữ mới. Vì vậy, có một trường hợp sử dụng chắc chắn cho nó, nhưng nó khá thích hợp.

Thay vào đó, những gì tôi khuyên bạn nên làm:

Đọc mã hoàn thành 2 ít nhất 3 lần

Ngôn ngữ đến và đi sang trái và phải tùy thuộc vào "những gì phổ biến". Công nghệ trở nên không còn sử dụng sau nhiều tháng hoặc nhiều năm tùy thuộc vào đường cong công nghệ. (Web không dùng công nghệ với tốc độ 6 tháng một lần).

Kỹ thuật lập trình và lý thuyết Khoa học máy tính luôn giữ nguyên.


Nhưng có nhiều tính năng nhỏ thú vị trong ngôn ngữ và thậm chí học ngôn ngữ mới từ mô hình đã biết có thể thổi bay tâm trí của bạn (ví dụ với tôi đó là Smalltalk)
Anton Barkovsky

@AntoBarkowski đó là một tuyên bố sai, đừng so sánh SmallTalk với các ngôn ngữ OO khác. Java / C ++ / C # / v.v. không phải là ngôn ngữ OO thực sự . Tất nhiên SmallTalk đáng để học hỏi, nhưng nó không giống như mô hình;)
Raynos

6
Mọi người cứ nói "bạn có thể học một ngôn ngữ một tuần", nhưng điều đó không đúng. Chắc chắn, bạn sẽ có thể viết mã chính xác về mặt cú pháp bằng ngôn ngữ đó, nhưng có nhiều điều hơn thế. Ví dụ, C # và Java rất giống nhau về mặt cú pháp và đều là ngôn ngữ OO. Tuy nhiên, viết mã Java bằng C # không giúp bạn trở thành lập trình viên C #.
R0MANARMY

3
@ R0MANARMY "<lập trình viên giỏi> có thể học một ngôn ngữ trong một tuần". Một ngôn ngữ không bao gồm thư viện, khung và API. Định nghĩa của tôi về lập trình viên tốt có thể rất cao mặc dù.
Raynos

1
@ R0MANARMY, trong số các bit ngữ nghĩa nhỏ bé, không quan trọng mà bạn đã đề cập có thể mất hơn một giờ để hiểu?
SK-logic

4

Đó không phải là việc biết cách viết mã trong vô số ngôn ngữ, như bạn nói, về các mô hình. Càng nhiều lựa chọn bạn biết về càng tốt. Biết nhiều ngôn ngữ chắc chắn có ích, nhưng nếu bạn tiếp tục học cùng loại ngôn ngữ, bạn sẽ nhanh chóng đi vào ngõ cụt.

Điều quan trọng là biết ngôn ngữ / hệ thống nào là tốt nhất để thực hiện một phần của dự án của bạn. Ngay cả khi bạn đã quyết định chọn một ngôn ngữ chính (như hầu hết các dự án làm), bạn vẫn sẽ có tất cả các loại công cụ, tập lệnh, tự động hóa và hỗ trợ xây dựng phải được viết. Thông thường một loạt các ngôn ngữ hoặc công cụ khác, tốt hơn ngôn ngữ chính của bạn.

Chỉ cần làm rõ, tôi thấy thật ngớ ngẩn khi thử và học tất cả các ngôn ngữ bạn thực sự nghe về: có hàng trăm ngôn ngữ này và thường chúng chỉ là những biến thể nhẹ của các ngôn ngữ khác.


3

IMHO, nó không. Thứ nhất bởi vì bạn không thể học một ngôn ngữ trong vòng chưa đầy một năm. Phải mất 2 ngày để có thể viết mã trong đó, nhưng phải mất rất nhiều kinh nghiệm để viết thành thạo và mã được hình thành tốt cho ngôn ngữ đã cho. Tại sao GC hoạt động như vậy, phân bổ bộ nhớ ở đâu, cấu trúc nào nhanh hơn, làm thế nào để nối chuỗi chính xác, các góc nguy hiểm của ngôn ngữ, v.v.

Tôi viết mã Java / .NET khủng là nhà phát triển C ++, vì rất nhiều nhà phát triển Java viết mã C ++ khủng.

Phần tốt nhất về việc học các ngôn ngữ khác là bạn học các mô hình mới, và có thể có một công cụ tốt hơn cho một số vấn đề cụ thể. Nói - bạn cần rất nhanh, ứng dụng GUI không công khai, .NET không thể thay thế ở đó.

Nhưng việc học một ngôn ngữ để bạn không sử dụng cấu trúc trong .NET hoặc không rò rỉ mọi đối tượng trong C ++, sẽ mất rất nhiều thời gian. Tôi nghĩ sẽ tốt hơn nếu dành nó cho việc học các nguyên tắc thiết kế, nền tảng và ngôn ngữ bạn chọn.

Nhưng đây chỉ là ý kiến ​​của tôi.


2
"bởi vì bạn không thể học một ngôn ngữ trong vòng chưa đầy một năm" Sai. Đừng nhầm lẫn việc học một ngôn ngữ với việc học các khung phổ biến mà nó thể hiện. Đồng thời thêm "kỹ thuật lập trình chung" vào danh sách ở cuối.
Raynos

@Raynos: Tôi đoán đó là những gì anh ấy đang đề cập đến.
Steven Jeuris

1
Cách ưa thích của tôi để chơi với một ngôn ngữ mới là triển khai trình biên dịch cho một tập hợp con của nó. Tổng cộng phải mất 2-4 giờ để hiểu ngôn ngữ và có thể xác định và đánh cắp các tính năng tốt nhất từ ​​nó. Không gần một năm, thậm chí không một ngày.
SK-logic

1
Chà, nếu bạn đang tham gia dự án C ++ lớn và tham gia một cuộc phỏng vấn với những từ như "Tôi đã lập trình bằng Java được 10 năm, nhưng tôi đã dành 6 tháng qua cho C ++, vì vậy tôi biết ngôn ngữ". Tôi nghi ngờ bạn sẽ nhận được vị trí dev cao cấp được trả lương cao cho công việc đó. Vì vậy, không, tôi vẫn nghĩ rằng bạn không thể học một ngôn ngữ trong một tháng hoặc lâu hơn.
Coder

2
@Coder, nếu bạn đang tham gia một dự án C ++ lớn và đến một cuộc phỏng vấn với những từ như "Tôi đã lập trình 20 ngôn ngữ trong 10 năm, bao gồm cả C ++", bạn có thể có một công việc.
SK-logic

2

Đó là không thực tế để biết họ, nhưng nó có thể rất hữu ích để biết về họ. Ý tôi là khi bạn gặp vấn đề mới, bạn có thể nói, "Tôi mơ hồ nhớ [ngôn ngữ khác] có một cách vượt trội để giải quyết vấn đề như thế này. Tôi nên tìm hiểu thêm."


Tôi thấy các podcast như SE Radio là tốt cho điều đó. Chúng thường có độ dài phù hợp để nghe trên đường đi làm và bạn có thể học được rất nhiều theo cách đó. Nhưng nó có dạng Tại sao là <X> Thú vị.
Zachary K

1

Bạn sẽ giúp sự nghiệp của mình nhiều hơn bằng cách xây dựng kiến ​​thức tên miền sau đó học nhiều ngôn ngữ lập trình. Chưa kể bạn sẽ cần học các công cụ bổ sung để đi kèm như cách sử dụng trình lược tả trong ngôn ngữ của bạn, tương tự cho trình gỡ lỗi, khung GUI tốt nhất và cách lập trình nhanh với nó, những thư viện phổ biến của bên thứ 3 tồn tại với sự đánh đổi và thành ngữ ngôn ngữ cụ thể.

Nó cũng khôn ngoan hơn để học cách làm nhiều thứ hơn là nhiều cách để làm điều tương tự.


1

Tôi đã làm việc trên một số hệ thống trong đó các thành phần được viết bằng nhiều ngôn ngữ (người phạm tội tồi tệ nhất yêu cầu tôi cung cấp mã được viết bằng Ada 83, C, Fortran 77, SQL và DCL, trong khi công việc cuối cùng của tôi yêu cầu tôi cung cấp mã C ++ và Java ). Vì vậy, vâng, có những trường hợp trong thế giới thực mà bạn cần biết nhiều ngôn ngữ đủ để có hiệu quả trong đó (hiệu quả! = Thành thạo; bạn sẽ không trở thành chuyên gia sâu về C ++ Java ... trừ khi bạn 'lại là một kẻ lập dị).

Ngoài ra, quan điểm cần có thời gian để học nhiều ngôn ngữ là giúp tách biệt các khái niệm khỏi việc thực hiện . Đối với tôi, OOP đã không bắt đầu có ý nghĩa cho đến khi tôi làm việc với nhiều OOPL. Ngoài ra, tại một số thời điểm trong sự nghiệp của bạn, bạn sẽ phải nhanh chóng chuyển đổi bánh răng và bắt đầu làm việc trên một cái gì đó hoàn toàn mới và lạ lẫm; dành một chút thời gian để vượt ra ngoài những gì bạn cần biết sẽ giúp việc chuyển đổi đó dễ dàng hơn khi nó xảy ra.


1

Tôi nghĩ rằng bạn sẽ được phục vụ tốt hơn khi học một vài ngôn ngữ khác nhau và sau đó ít nhất một ngôn ngữ chuyên sâu trước khi bắt đầu nhu cầu học mọi ngôn ngữ có thể. Khi bạn có số lượng tối thiểu, độ sâu trở nên thực sự quan trọng đối với tiến trình của bạn với tư cách là nhà phát triển. Tôi sẽ thấy một người có chiều sâu trong một hoặc hai ngôn ngữ và một vài người khác nói xấu hơn ai đó với tất cả mọi thứ. Tìm hiểu sâu cũng giống như học một mô hình khác, nó sẽ thay đổi cách bạn nghĩ về lập trình và nó sẽ mở ra cánh cửa cho các dự án thú vị thực sự phức tạp.


0

Nó giống như học nói nhiều ngôn ngữ. Học tất cả chúng đến mức có ích là gần như không thể. Bám sát những thứ bạn có khả năng sử dụng và bạn sẽ khá hơn. Bạn có thể học C ++, C # và Java khá tốt, nhưng cố gắng siết chặt Perl, Python, VB (không phải VB.NET), Ruby và JavaScript ở mức độ chuyên nghiệp đồng thời chỉ là ngu ngốc. Không có đủ thời gian trong ngày để nâng cao kỹ năng của bạn trong tất cả chúng cùng một lúc.

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.