Làm thế nào để tôi tiếp nhận một ngôn ngữ mới một cách nhanh chóng, cho tôi biết một số ngôn ngữ khác? [đóng cửa]


14

Một loại câu hỏi liên tục xuất hiện trên Lập trình viên. Đó là cách học một ngôn ngữ cụ thể, cho bạn biết một số ngôn ngữ khác (thường thông qua nhiều kinh nghiệm hoặc giáo dục).

Tuy nhiên, trong một số trường hợp, người ta có thể cần phải tăng tốc nhanh chóng cho một công việc, hoặc để phát triển cá nhân, hoặc thậm chí để kiểm tra một nền tảng mới nóng hổi.

Theo kinh nghiệm của bạn, những chiến lược chung nào bạn đã sử dụng để tiếp thu một ngôn ngữ mới một cách nhanh chóng? Có những khía cạnh cụ thể của một ngôn ngữ bạn cố gắng tập trung vào khi bắt đầu lạnh? Những loại tài nguyên nào bạn thấy hữu ích trong quá trình này?


6
Tôi sẽ nói chỉ cần làm điều đó. Tài liệu chính thức và Google là tài nguyên duy nhất bạn cần.
Fosco

@Rein Một số câu trả lời trùng lặp, nhưng mục tiêu của câu hỏi này là xây dựng một câu trả lời chính tắc để học một ngôn ngữ (bất kỳ ngôn ngữ nào) càng nhanh và hiệu quả càng tốt. Câu hỏi còn lại là một hỗn hợp các khuyến nghị về sách, các câu trả lời tương tự với các câu hỏi được đưa ra ở đây và lời khuyên chung về việc học không vội vàng (đọc ngay trước khi đi ngủ, đọc đặc tả ngôn ngữ, mất vài tuần để làm quen ở cấp độ cơ bản với một vài khác biệt ngôn ngữ).

Tôi không chắc câu hỏi hữu ích như thế nào. Nếu tôi biết một số ngôn ngữ lập trình, có lẽ tôi đã học được cách chọn một ngôn ngữ mới và có thể hiệu quả. Nếu tôi không, tôi sẽ được lợi gì từ câu hỏi này?
David Thornley

1
@David Tôi biết một nửa tá ngôn ngữ, nhưng tôi đã học chúng thường sau khi tham gia các lớp học về chúng hoặc sau vài tháng làm việc. Nhưng nếu tôi phải nhanh chóng chọn một ngôn ngữ cho một công việc mới, điều đó không giúp tôi. Tôi không nghi ngờ những người đã học một số ngôn ngữ đã chọn cách để học chúng một cách nhanh chóng: đó sẽ là những gì tôi hy vọng câu trả lời có.

@Mark Trapp: Cảm ơn, điều đó làm rõ mọi thứ cho tôi.
David Thornley

Câu trả lời:


18

Tôi đã tìm ra cách tốt nhất để học một ngôn ngữ mới là làm chứ không chỉ đọc. Và vì vậy, khi tôi muốn (hoặc cần) học một ngôn ngữ mới, tôi thường đọc một vài chương của một cuốn sách tham khảo về cú pháp, nhưng sau đó tôi đi sâu vào và tạo ra một cái gì đó, thay vì đọc và đọc sách sau cuốn sách.

Tôi thấy rằng khi có vấn đề và câu hỏi phát sinh, câu trả lời được tìm thấy (thường là trên internet). Tôi cũng nghĩ rằng đây là lý do tại sao việc đào tạo nghề rất có giá trị, bởi vì bạn đang sản xuất một sản phẩm công việc hầu hết thời gian, ngay cả khi đó là phiên bản nháp - và vì vậy bạn đang học bằng cách thực hiện.

Tôi khuyến khích mọi người chỉ nghĩ về những gì họ quan tâm, và đi sâu vào viết mã hoặc tạo biểu mẫu, v.v.

Sau này, sau khi bạn đã tạo dự án sau dự án, một cuốn sách tham khảo tốt sẽ dạy cho bạn các chi tiết tốt mà tại thời điểm này, bạn dễ dàng nắm bắt hơn.

Ngoài ra, các dự án thường bắt đầu nhỏ hơn và phát triển phức tạp - từ ứng dụng "Hello World" đơn giản đến một dự án nhỏ và không hữu ích, từ đó trở thành một ứng dụng đầy đủ. Về khía cạnh của ngôn ngữ mà tôi tập trung vào, nó phụ thuộc vào việc sử dụng ngôn ngữ được áp dụng - tôi không bao giờ học mọi API hoặc khung để bắt đầu (ví dụ như với .NET). Điều đó sẽ mất quá nhiều thời gian. Tôi học cú pháp cốt lõi, sau đó phân nhánh từ đó, nghiên cứu từng phần mở rộng khi cần. Với ngôn ngữ ít mô-đun, như CSS hoặc XSLT, trước tiên tôi chỉ cần tìm hiểu các cấu trúc phổ biến nhất và thêm các cấu trúc khác khi cần.


Khi bạn nói "cứ làm đi", có những khía cạnh cụ thể của ngôn ngữ mà bạn tập trung vào khi lặn vào để đảm bảo bạn tiếp thu nó hiệu quả nhất có thể không? Hay bạn chỉ tiếp tục thực hiện các dự án mẫu ngẫu nhiên cho đến khi nó "nhấp chuột"?

Chà, các dự án thường bắt đầu nhỏ hơn và phát triển phức tạp - từ ứng dụng "Hello World" đơn giản đến một dự án nhỏ và không hữu ích, từ đó trở thành một ứng dụng đầy đủ. Về khía cạnh của ngôn ngữ mà tôi tập trung vào, nó phụ thuộc vào việc sử dụng ngôn ngữ được áp dụng - tôi không bao giờ học mọi API hoặc khung để bắt đầu (ví dụ như với .NET). Điều đó sẽ mất quá nhiều thời gian. Tôi học cú pháp cốt lõi, sau đó phân nhánh từ đó, nghiên cứu từng phần mở rộng khi cần. Với ngôn ngữ ít mô-đun, như CSS hoặc XSLT, trước tiên tôi chỉ cần tìm hiểu các cấu trúc phổ biến nhất và thêm các cấu trúc khác khi cần.
jqueryrocks

2
bạn có thể thêm nó trở lại câu trả lời của bạn? Đó là một số thông tin tuyệt vời.

5

Điều này làm việc cho tôi:

  1. Đọc về nó.
  2. Sử dụng nó.
  3. GOTO 1.

Để đọc về bước này, tôi cố gắng chọn "tham chiếu" cho ngôn ngữ. Ví dụ: "Ngôn ngữ lập trình C". Nó cần phải được cô đọng, đến mức, và xây dựng kiến ​​thức của bạn tăng dần. Sau đó tôi đọc nó để che. Tôi là một người đọc nhanh và tôi không ở trong lần đọc đầu tiên này. Sau đó, tôi sẽ quay lại và tham khảo các điểm cụ thể khi tôi đang cố gắng sử dụng ngôn ngữ. Những gì tôi có thể sẽ dành nhiều thời gian hơn là các ví dụ mã bên trong cuốn sách.

Điều đầu tiên bạn cần là cú pháp. Không biết đó là BEGIN hay {hoặc chặn thụt lề, hoặc cách bạn khai báo các biến, bạn không thể viết bất cứ điều gì. Tác giả thường sẽ giới thiệu các phần quan trọng hơn trước hoặc sẽ có một hướng dẫn bao gồm việc sử dụng ngôn ngữ cơ bản. Thật khó để đưa ra các hướng dẫn chung hơn vì một số ngôn ngữ rất khác so với các ngôn ngữ khác. Điều tiếp theo là cảm nhận chung về ngôn ngữ, triết lý chung là gì, cách bạn tiếp cận giải quyết vấn đề trong bối cảnh ngôn ngữ.

Một điều khác cần ghi nhớ là khái niệm "sử dụng hoặc đánh mất nó". Nếu bạn không sử dụng ngôn ngữ trong một thời gian, bạn sẽ mất một thời gian để quay lại tốc độ (mặc dù thời gian đó sẽ ngắn hơn với kinh nghiệm). Khi bạn đã có cú pháp của ngôn ngữ, bạn sẽ cần tìm hiểu về các thư viện, v.v.

Vì vậy, đó là một quá trình lặp đi lặp lại. Đi sâu hơn ở mỗi lần lặp. Không bao giờ kết thúc. Ngay cả sau khi sử dụng một ngôn ngữ trong 20 năm, vẫn có một cái gì đó để học.


Bạn có thể nói rõ hơn về ý của bạn bằng cách "đọc về nó" không? Cụ thể, bạn tập trung vào điều gì khi bạn bắt đầu đọc về một ngôn ngữ mới mà bạn muốn chọn?

@Mark - xem các chỉnh sửa của tôi ... Đây có phải là thứ bạn đang tìm kiếm không?
Guy Sirton

5

Lấy một dự án thế giới thực

Theo cách tôi nhìn thấy, việc học một cái gì đó dễ dàng hơn khi bạn thực sự cần học nó. Đối với tôi đó là với javascript, nơi tôi đã mạo hiểm bằng cách chấp nhận một dự án lớn với khung thời gian hai tháng. Đó là tôi ở đó mỗi ngày và mỗi đêm cố gắng đạt được kết quả cho dự án tự do này, và sau 1 tháng rưỡi dự án đã hoàn thành.

Tôi cũng vô tình học được một số SQL ở đó, sau đó tôi học xong nó ở trường đại học, và đoán xem, tôi cũng có một thời gian dễ dàng hơn.

Nếu bạn không muốn mạo hiểm ...

Chìa khóa thực tế cho điểm trước là giải quyết các vấn đề trong thế giới thực ... nhưng tôi làm việc tốt hơn khi bị căng thẳng (tôi thích căng thẳng, tôi nghĩ đó là niềm vui và tôi có thể bị tổn thương, vì vậy ...). Nếu bạn không, chỉ cần theo đuổi một dự án nguồn mở mà bạn quan tâm và sử dụng ngôn ngữ bạn muốn học và cố gắng đóng góp. Nếu mã của bạn tệ, bạn có thể nhận được một số phản hồi tùy thuộc vào cộng đồng.

Rất có thể là bạn sẽ đạt được tiến bộ chỉ bằng cách nghiên cứu mã.

Nhận tất cả các tài liệu tham khảo mà bạn có thể

Điều đó bao gồm một số cuốn sách, tài liệu chính thức và tất cả các tài liệu tham khảo mà bạn có thể nhận được. Chaces là vậy, theo cách đó, bạn sẽ biết làm thế nào để làm điều tương tự theo những cách khác nhau.

Các cộng đồng khác Các diễn đàn giống như, các danh sách gửi thư, và ở đây, cũng được coi là tài liệu tham khảo.


Tôi sẽ thêm "lấy một vấn đề thực tế khó khăn ". Chọn một cái gì đó đòi hỏi bạn phải có được cổ sâu vào ngày đầu tiên. Ngày đầu tiên của tôi với C # i đã tìm ra cách tải động các dll, sử dụng sự phản chiếu để có được các lớp và từ đó một danh sách các mehods. Tôi đã học được một ngày tha, chưa bao giờ sử dụng bất kỳ công nghệ .net nào trước đây.
Bryan Oakley

2

Có rất nhiều cách để học một ngôn ngữ mới, nhưng không phải tất cả đều hiệu quả như nhau. Tôi thấy ba hướng dẫn này hoạt động tốt nhất cho tôi:

Tạo một bản đồ về những gì bạn không biết

Tìm hiểu trước, những gì bạn sẽ cần phải học. Tìm một tổng quan hoặc nguồn tài liệu chung mô tả ngôn ngữ theo thuật ngữ trừu tượng. Từ đó, bạn thường có thể có được một cái nhìn tổng quan khá đầy đủ về những gì ngôn ngữ nói về. Sử dụng tổng quan đó để làm nổi bật các khu vực mà bạn không biết, nhưng được coi là cốt lõi của ngôn ngữ. Có phải đệ quy đuôi là một khái niệm bạn cần học để thực sự mò mẫm ngôn ngữ? Có lẽ bạn sẽ cần biết regex của mình tốt hơn nhiều, vì ngôn ngữ chuyên về thao tác chuỗi. Hoặc, có thể bạn sẽ thực sự phải lấy Đại số của mình, vì nhiều khái niệm trong bản đồ ngôn ngữ trực tiếp từ các khái niệm đại số.

Nhận tài nguyên tốt để giúp bạn tìm hiểu những gì bạn không biết

Bạn có thể muốn có được một tài liệu tham khảo tốt về các công thức Đại số, hoặc có thể bạn sẽ chỉ muốn mua " Javascript, những phần hay ". Đối với một số đường cong học tập, công việc này đã được thực hiện một phần. Nếu bạn đang cố gắng học C # từ nền Java (và ngược lại), có một loạt các bài đăng trên blog và trang web để tìm ra sự khác biệt và chứa các tài liệu tham khảo / tài nguyên để giúp bạn tìm hiểu.

Đảm bảo rằng các tài nguyên không chỉ là tài liệu tham khảo - đảm bảo chúng bao gồm các bài kiểm tra hoặc bài tập để giúp bạn đánh giá xem bạn đã học đúng một khái niệm chưa. Đọc về đệ quy đuôi là một điều, tìm hiểu cách nó được thực hiện trong ngôn ngữ bạn chọn là một điều khác.

Xây dựng một cái gì đó thực sự

Hầu như không thể thực hiện bất kỳ loại học tập thực sự nào mà không có mục tiêu hữu hình trong tâm trí. Điều này đặc biệt đúng với nghệ thuật ứng dụng - đó là những gì ngôn ngữ lập trình sử dụng. Hãy chắc chắn rằng bạn có một mục tiêu thực sự để nhắm đến - xây dựng một cái gì đó thường là sự lựa chọn tốt nhất.


1

Xác định mô hình lập trình

Tôi thường xác định các mô hình chính cho ngôn ngữ là gì. Tôi nghĩ về các vấn đề khác nhau tùy thuộc vào mô hình.

Xác định thành ngữ

Tất cả các ngôn ngữ đều có thành ngữ. Thành ngữ khác nhau về kích thước và phạm vi từ cách bạn cấu trúc mã, tất cả các cách cho đến các đoạn mã cụ thể. Bạn nên luôn luôn cố gắng và sử dụng một thành ngữ ngôn ngữ.

Viết mã

Tôi thường viết một số mã chức năng. Bất cứ điều gì từ Sàng lọc đến các ứng dụng web đồ chơi. Các vấn đề tôi chọn thường cụ thể cho những gì tôi dự định sử dụng ngôn ngữ.


1

Chỉ cần lặn xuống !!

Xem xét bạn đã biết cách lập trình và biết một số ngôn ngữ, ngoại trừ nếu ngôn ngữ đó giới thiệu một sự thay đổi mô hình rất sâu sắc, tôi sẽ nói (đồng thời):

  • tìm một dự án thú cưng để lái xe cho bạn
  • và trên chương trình phụ một số câu đố

Học, thực hành, áp dụng (cho đến khi hài lòng)

99 câu đố Prolog cổ điển (ở đây, 99 Câu đố trong Scala ) hoặc Project Euler thường là những nơi tốt để tìm kiếm những người đánh đố nhỏ để thực hiện lại. Hoặc ẩn xung quanh StackOverflow và viết lại một số câu trả lời hay bằng ngôn ngữ mục tiêu của bạn, cố gắng không viết lại từng dòng một nhưng một cái gì đó nắm bắt được bản chất của ngôn ngữ mới của bạn.

Học với những người đánh đố, đọc blog và tiểu luận ở bên cạnh để hiểu sâu hơn về ngôn ngữ và cảm nhận về công cụ và cuộc chiến thần thánh của cộng đồng mới của bạn, và viết dự án thử nghiệm của bạn để áp dụng kiến ​​thức và kỹ năng mới của bạn và xem những gì bạn gặp phải.

Nói về cộng đồng ...

Chia sẻ và phơi bày bản thân. (Tuy nhiên, không quá nhiều.)

Có thể bạn cũng muốn ghé thăm một nhóm người dùng địa phương, tìm bạn bè để viết mã (để nhận được một số lời chỉ trích mang tính xây dựng và không tự nhốt mình trong một suy nghĩ cụ thể) và đăng ký kênh IRC đáng sợ hoặc danh sách gửi thư nơi họ bỏ những từ lạ về AST cây và viết các bài thơ triết học về cách các đơn vị không phải là đơn vị và làm thế nào một khi bạn gặp một cô gái lạ, bạn không thể quay lại .


0

Tôi biết điều này nghe có vẻ khập khiễng, nhưng bắt đầu mã hóa thứ gì đó, ngay cả khi nó ngớ ngẩn và sử dụng nhiều Google cho những thứ theo mô hình này:

Làm thế nào để tôi làm [một cái gì đó từ một ngôn ngữ] trong [ngôn ngữ khác]

Nếu các từ được sử dụng phổ biến trích dẫn bằng chữ.

Đó là một câu hỏi đủ phổ biến mà gần như rất nhiều lần tôi không tìm thấy câu trả lời nữa là khi tôi tìm thấy một trang giải thích tại sao nó không thể được thực hiện.


0

Là một gợi ý cụ thể cho việc chỉ sử dụng ngôn ngữ:

Sữa lỗi

  1. Tìm một dự án nguồn mở thú vị bằng ngôn ngữ đích, tốt nhất là một dự án có trình theo dõi lỗi công khai, phát triển hoạt động vừa phải và một bộ kiểm tra hợp lý.
  2. Chọn một lỗi để sửa, tốt nhất là một lỗi làm bạn khó chịu khi bạn thực sự sử dụng chương trình.
  3. Tìm hiểu tại sao chương trình thể hiện hành vi lỗi.
  4. Viết bài kiểm tra và mã để khắc phục vấn đề.
  5. Gửi một bản vá ngược dòng.
  6. Sửa đổi bản vá của bạn cho đến khi các nhà phát triển ngược dòng hài lòng.
  7. Quay trở lại bước 1 hoặc 2.

Quá trình này có xu hướng hoàn thành hơn là viết một chương trình đồ chơi khác, nhưng dễ dàng hơn nhiều so với việc bắt đầu dự án đầy đủ của riêng bạn từ đầu. Bạn được tiếp xúc với một số thành ngữ ngôn ngữ trong ngữ cảnh tự nhiên của chúng và (với bất kỳ may mắn nào) ý tưởng của ai đó về mã tốt trông như thế nào.

Mặt khác, nó cũng có thể cực kỳ bực bội, đặc biệt nếu bạn chọn một lỗi khó chịu hoặc nếu các nhà phát triển từ chối bản vá của bạn mà không giải thích chính xác lý do.

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.