Làm thế nào bạn có cơ hội học nhiều ngôn ngữ? [đóng cửa]


9

Tôi đọc Một lập trình viên nên tập trung vào ít nhất bao nhiêu ngôn ngữ? và tôi phát hiện ra rằng tôi không biết ngôn ngữ ở số 2, 3 của câu trả lời đầu tiên. Tôi muốn học nhiều ngôn ngữ hơn để tăng kiến ​​thức và kỹ năng lập trình. Tuy nhiên, thông thường trong các công ty họ sử dụng khung và ngôn ngữ cố định và thay đổi hiếm khi. Vì vậy, tôi không chắc mình có thể có cơ hội học những ngôn ngữ đó không và tôi nghĩ nó sẽ giống với các lập trình viên khác.

Tuy nhiên, tôi đã thấy nhiều nhà phát triển biết nhiều ngôn ngữ ở đây. Làm thế nào để bạn có cơ hội học nhiều ngôn ngữ?

Cập nhật

Tôi nghĩ rằng, có nhiều người cảm thấy không thoải mái vì dường như tôi không muốn học trong thời gian rảnh rỗi. Trên thực tế, điều đó không đúng. :) Tôi là một lập trình viên đam mê và đó là lý do tại sao tôi đăng loại câu hỏi này ở đây. Tôi học trong thời gian rảnh rỗi nhưng tôi chỉ nghĩ nó sẽ không đủ để thành thạo ngôn ngữ. Dù sao, cảm ơn cho tất cả các câu trả lời!


7
Đơn giản, học những thứ mới trong thời gian của bạn.
Jonas

1
Anh bạn, câu trả lời đó đã được đăng bởi một lập trình viên 39 yo. Tôi nghĩ rằng đó là một danh sách tốt, nhưng đừng tự giết mình vì nó.
Công việc

7
Bạn không "có" cơ hội. Bạn có cơ hội. Nếu bạn muốn học nhiều ngôn ngữ hơn, hãy ra ngoài và làm điều đó. Đừng chờ đợi một số trách nhiệm công việc huyền thoại đến với bạn.
Joel Etherton

Câu trả lời:


10

Tôi tìm thấy cách tốt nhất để học một ngôn ngữ là sử dụng nó ngay lập tức để làm cho thứ gì đó hữu ích hoặc bạn cần .

Ví dụ, tôi thấy mình cần tự động hóa nhiều thao tác tôi phải thực hiện thủ công mỗi lần. Các tác vụ lặp đi lặp lại, tạo tệp và thư mục, v.v ... vì vậy tôi chỉ cần chọn một ngôn ngữ kịch bản để tạo ra một số công cụ hữu ích. Tôi đã đi tìm Perl, và bắt đầu tìm hiểu cú pháp và các chức năng tôi cần để tạo kịch bản của mình, nhờ các hướng dẫn và sách trực tuyến.

Trong một vài ngày, tôi đã có công cụ của mình và chạy, sau đó khi rảnh rỗi, tôi tiếp tục học những điều mới về ngôn ngữ và thêm nhiều chức năng hơn cho nó.


Một lựa chọn tuyệt vời khác xuất hiện trong đầu bạn là: nếu bạn không tìm thấy một ngôn ngữ bạn thích hoặc bạn nghĩ rằng nó không phù hợp hoàn toàn với nhu cầu của bạn, bạn vẫn có thể tạo ngôn ngữ của riêng mình .

Bây giờ tôi đang làm điều đó với Perl, tôi đã chọn một cú pháp giúp tôi giải quyết tốt nhất các vấn đề cụ thể của mình (vì bạn đang viết ngôn ngữ của riêng mình, bạn có thể muốn chọn đúng cú pháp cho công việc, một cú pháp mô tả và giải quyết tốt nhất vấn đề tên miền cụ thể của bạn).

Kết quả? Phát triển bây giờ nhanh hơn nhiều và bản thân mã mô tả nhiều hơn vì đó là ngôn ngữ cụ thể của miền. Tôi đã hỏi một câu hỏi liên quan đến chủ đề này vài tuần trước với nhiều liên kết hữu ích.

Bạn có thể sử dụng bất kỳ ngôn ngữ kịch bản lệnh nào để tạo một ngôn ngữ mới, ngay cả với PHP.


Tôi không biết rằng tôi có thể tạo ngôn ngữ của riêng mình với Perl. Bạn có thể xây dựng nó hoặc cho tôi một số tài liệu tham khảo?
Sanghyun Lee

Tôi yêu cầu điều này ở đây . Về cơ bản, bạn phải tạo một tập lệnh sẽ hiểu (phân tích) các đầu vào của bạn và thực hiện các tác vụ khác nhau dựa trên nội dung bạn nhập. Nó có thể là một tập hợp các hàm đơn thuần hoặc một cú pháp ngôn ngữ hoàn toàn mới. Sau đó, bạn có thể tự động hóa tất cả nếu cần. Không chỉ với Perl, bạn có thể sử dụng bất kỳ ngôn ngữ kịch bản nào để tạo một ngôn ngữ mới.
Jose Faeti

8

Những loại câu hỏi luôn gây trở ngại cho tôi. Tôi đã sử dụng 7 ngôn ngữ một cách chuyên nghiệp, đã viết mã bằng khoảng 5 ngôn ngữ khác trong môi trường học tập và sở thích và có thể đọc mã bằng nhiều ngôn ngữ khác. Chưa một lần tôi học một ngôn ngữ chỉ vì lợi ích của nó. Luôn có một số mục tiêu cụ thể và ngay lập tức trong tâm trí. Ví dụ, cuối tuần này tôi đã học đủ các thư viện Android để bắt đầu làm việc trên một ứng dụng cho gia đình tôi. Nếu chúng ta có iPhone, tôi đã học được Objective-C.

Cảm giác của tôi là biết nhiều ngôn ngữ là một triệu chứng của việc trở thành một người giỏi, hoặc ít nhất là nhiệt tình, lập trình viên, không phải là nguyên nhân của nó. Nếu bạn không thể nghĩ ra một lý do thuyết phục để học một ngôn ngữ mới, tôi không biết nó sẽ mang lại lợi ích cho bạn đến mức nào.


3

Cách tốt nhất để học một ngôn ngữ mới khi bạn có một vấn đề cần giải quyết. Thay vì chỉ sử dụng những gì bạn cảm thấy thoải mái, hãy dành thời gian để xem những công cụ nào (ngôn ngữ, khung, thư viện) có thể hữu ích trong việc giúp bạn giải quyết vấn đề. Nếu bạn có thời gian để tìm hiểu công cụ mới, hãy tìm nó. Bạn có thể không thể làm điều này tại nơi làm việc, khi bạn có áp lực về lịch trình và giới hạn công nghệ do các yếu tố bên ngoài, nhưng không có lý do gì bạn không thể áp dụng phương pháp này cho các dự án cá nhân.


2

Bạn chỉ cần làm cho thời gian để làm điều đó. Hãy xem cuốn sách "Bảy ngôn ngữ trong bảy tuần" từ các nhà thực dụng. Nó sẽ cung cấp cho bạn một giới thiệu đến bảy ngôn ngữ rất thú vị và từ đó bạn có thể đi đến tất cả các nơi.


1

Chỉ cần bắt đầu sử dụng nó. Rõ ràng, xây dựng một hệ thống sản xuất từ ​​đầu bằng ngôn ngữ mà bạn chưa từng tiếp xúc là một ý tưởng tồi, nhưng đây là một vài gợi ý:

  • Học trong thời gian của riêng bạn. Chọn một dự án bạn thấy thú vị, nơi bạn tự tin bạn có thể tự mình hoàn thành nó. Tốt nhất nên đọc một số lời giới thiệu về ngôn ngữ mới của bạn để đánh giá xem nó có phù hợp không - mỗi ngôn ngữ đều có điểm mạnh và điểm yếu, và tốt nhất là bắt đầu với một vấn đề mà ngôn ngữ được thiết kế để vượt trội.
  • Bắt đầu thực hiện các nhiệm vụ bảo trì trên một dự án hiện có. Bằng cách này, bạn có thể chọn một phần lớn ngôn ngữ mà không cần đọc tài liệu: rất nhiều điều có thể được suy ra từ mã ví dụ và đối với những phần bạn cần đọc tài liệu, nó sẽ rõ ràng hơn vì bạn đã thấy mã rồi. Cũng dễ dàng tìm kiếm "mã này làm gì" hơn "làm thế nào tôi có thể viết mã làm X".
  • Sử dụng ngôn ngữ mới của bạn cho các công cụ nhỏ và trình trợ giúp bạn cần: tập lệnh shell, mã bỏ đi cho các tác vụ cụ thể, tính toán nhanh (ví dụ: trình thông dịch tương tác của nhiều ngôn ngữ động - python, lisp, haskell, v.v. - tạo cho các máy tính xuất sắc). Không phải tất cả các ngôn ngữ đều phù hợp cho việc này.

1

Chọn một cái gì đó tương đối nhỏ mà bạn đã thực hiện bằng một ngôn ngữ và phát triển thay thế thả trong ngôn ngữ khác. Làm điều này chỉ để thử thách bản thân. Để hoàn thành nó, bạn sẽ học được rất nhiều về ngôn ngữ khác.

Chỉ trong tuần vừa qua, tôi đã quyết định tìm hiểu và viết lại một back-end dịch vụ web trong NodeJS (trước đây là dịch vụ JSP.) Chỉ mất khoảng một ngày để dịch vụ cơ bản hoạt động và vài ngày sau Tôi đã mở rộng cơ sở hạ tầng, xử lý lỗi, ghi nhật ký và thêm giám sát trực tiếp. Bây giờ nó là vượt trội so với bản gốc. Dù quản lý có chấp nhận hay không là không quan trọng, vì tôi đã học được điều gì đó và rất hài lòng với nó.


1
  • Tôi coi rằng một số phần của công việc của tôi là "nghiên cứu". Năm 1998 nghiên cứu có nghĩa là sửa lỗi Y2K. Tháng trước reserch có nghĩa là học Subversion. Tôi đã làm nghiên cứu trong 40 năm. Khi tôi liệt kê các ngôn ngữ tôi phải liệt kê chúng theo thứ tự bảng chữ cái.

  • Khi tôi học một ngôn ngữ, tôi đọc bìa hướng dẫn tham khảo để che. Sau đó tôi thực sự sử dụng nó trong một vài tháng. Sau đó tôi đọc hướng dẫn tham khảo một lần nữa. Bài đọc thứ hai cho thấy rất nhiều mánh khóe và hàm ý mà tôi đã bỏ qua lần đầu tiên.

  • Nghiên cứu thực tiễn bao gồm các ngôn ngữ bình thường, như C # và Pascal. Nghiên cứu nâng cao bao gồm các ngôn ngữ kỳ lạ, như LISP và FORTH. Bạn có thể sẽ không bao giờ sử dụng LISP một cách chuyên nghiệp, nhưng học nó sẽ mở rộng tâm trí của bạn một cách đáng kể.

  • Tất nhiên, trong môi trường của tôi, tôi không được trả tiền cho thời gian, tôi được trả tiền để giao hàng. Nếu tôi có thể giao hàng trong hai tuần, sử dụng sáu giờ một ngày, tôi có thể sử dụng ba người kia để nghiên cứu. Nếu nó mất mười hai giờ một ngày, tốt, không có nghiên cứu sau đó.

  • Tất cả các nghiên cứu, tất nhiên, nên có một số tiện ích tiềm năng cho người trả tiền cho tôi. Tiện ích nhỏ là tốt; lần tới khi bạn muốn xử lý mã nguồn C của mình, hãy thử nó trong Python. (Không, tôi không biết Python, nhưng tôi đã nghe nói nó tốt cho thao tác chuỗi.)


0

Đôi khi cơ hội đến từ việc làm của bạn. Thường có một trong ba trình điều khiển cho loại cơ hội này.

  1. Đó là một công nghệ hoàn toàn mới. Chẳng hạn, nhiều công ty đã trả tiền cho việc đào tạo C # cho các nhà phát triển của họ trong hai hoặc ba năm đầu tiên sau khi .NET được phát hành.

  2. Nó rất dễ học Chẳng hạn, trong một cửa hàng linux, bạn sẽ thấy bạn cần phải viết các tập lệnh .bash. Nếu bạn đã sử dụng các phiên cuối, v.v. và có những nhà phát triển khác có kinh nghiệm viết chúng, bạn sẽ có thể có được kỹ năng này, nếu chỉ để tự động hóa một số nhiệm vụ của riêng bạn.

  3. Đó là kỹ năng kỹ thuật được sử dụng không phổ biến và công ty của bạn không muốn mất thời gian và chi phí để tìm một nhà tư vấn để thực hiện công việc. Chẳng hạn, tôi đã học cách viết XSLT vì chúng tôi cần một cách dễ dàng để chuyển đổi một số tệp XML (nhật ký) để hiển thị.

Những cơ hội khác bạn cần thực hiện cho bản thân ngoài công việc. Chọn một cách cẩn thận - những công nghệ nào bạn thấy hữu ích trong tương lai? Trong những trường hợp này, bạn phải bỏ thời gian và công sức vào việc học và áp dụng công nghệ. Đây phải là một phần của kế hoạch nghề nghiệp tổng thể, và bạn có thể phải trả tiền cho các lớp học. (Tôi đã may mắn - khi tôi học Java, họ đã dạy nó vào buổi tối tại một trường cao đẳng cộng đồng địa phương).


0

Trả lời câu hỏi của bạn, từ kinh nghiệm của bản thân (tôi khá mới trong ngành nên không có nhiều về nó) Tôi có thể học các ngôn ngữ mới bằng cách thực hiện một số nghiên cứu để xem ngôn ngữ nào phù hợp nhất với nhu cầu của tôi. Ở trường đại học, tôi đã có một projet về mật mã cần sử dụng các số nguyên lớn. Nó đã trở nên khá hài hước trong C ++ vì vậy tôi đã chuyển sang Java khi nó cung cấp lớp BigInteger. Trong công việc hiện tại của tôi, tôi có thể thấy rằng kịch bản shell không thể giải quyết hoàn toàn vấn đề của mình mà không trở nên quá phức tạp nên tôi đã học Perl. Học nhanh là lời khuyên của tôi. Tất nhiên, nếu bạn thấy mình buồn chán, có cả một thế giới ngôn ngữ sẽ được khám phá.

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.