Có bao giờ là quá sớm để học một ngôn ngữ mới? [đóng cửa]


11

Bối cảnh cá nhân: Tôi đã học C ++ chính thức trong 6 tháng qua tại trường đại học. Trước đó, tôi đã học JavaScript được một năm. Bây giờ tôi đang xem xét việc học Python trong một tháng nghỉ học.

Bằng cách phân tách sự tập trung của tôi sớm trong quá trình học tập, tôi có làm giảm hiệu quả học tập không? Tôi có nên dành tháng nghỉ tiếp tục trong C ++? Hay không bao giờ là quá sớm để học một ngôn ngữ mới?


6
Nếu bạn hiểu lập trình nói chung thì học ngôn ngữ mới sẽ giúp bạn trở thành một lập trình viên tốt hơn. Nếu bạn chưa quen với lập trình và chưa nắm bắt được những thứ như điều khiển luồng, kiểu dữ liệu, hàm / phương thức, v.v. thì tôi sẽ chờ để học các ngôn ngữ khác.
Người đàn ông Muffin

Tôi khá thoải mái trong C ++ với mọi thứ bạn đề cập.
Dự đoán

1
Tôi sẽ đặt câu hỏi của bạn vào quan điểm. Trong 6 tháng đầu tiên ở trường đại học, tôi đã được giới thiệu 5 ngôn ngữ lập trình khác nhau. Hội (Tôi quên chính xác nền tảng Moto), C, C ++, Visual Basic 6 và Java. Sau này tôi tiếp tục học Basic, C #, Visual Basic .NET, x86 hội. Sau đại học, tôi đã học được ít nhất 5 ngôn ngữ lập trình bổ sung trong vòng 2 năm đầu tiên.
Ramhound

2
Nếu bạn có thể đa nhiệm và ưu tiên và có cách tiếp cận kỷ luật trong học tập, thì bằng mọi cách hãy tiếp tục và học một ngôn ngữ thứ hai. Thông thường tốt nhất của nó để tập trung vào và làm chủ ngôn ngữ đầu tiên. Tuy nhiên, nó cũng quan trọng để tìm hiểu các mô hình lập trình khác nhau. Đọc phần lập trình của các liên kết sau để biết ý tôi là : Điều mà mọi chuyên gia khoa học máy tính nên biếtMa trận năng lực của lập trình viên
Anthony

Câu trả lời:


8

Trải nghiệm của tôi với Python chỉ giới hạn ở một số mã chơi chỉ phức tạp hơn một chút so với thế giới xin chào, vì vậy đây sẽ không phải là một câu trả lời sâu sắc cho python, nhưng tôi có thể nói với bạn điều này:

Sự khác biệt giữa các ngôn ngữ nằm ở các chi tiết như cú pháp và một số ngôn ngữ cụ thể sẽ khác nhau (như cách xử lý lỗi khác nhau, khả năng I / O và cách trình biên dịch chuyển đổi đầu vào của bạn thành thứ gì đó có thể thực thi được), nhưng cả C ++ và Python đều cung cấp giống nhau mô hình, vì vậy việc giải quyết vấn đề có thể được thực hiện theo nhiều cách giống nhau với cả hai ngôn ngữ. Cả C ++ và Python đều là Bắt buộc và Hướng đối tượng, vì vậy bạn có thể sẽ bắt kịp python khá nhanh nếu bạn cảm thấy thoải mái với C ++ khi bạn đã thành thạo cú pháp mới bằng cách sử dụng các kỹ thuật giải quyết vấn đề bạn đã chọn với C ++. Nếu bạn muốn, bạn cũng có thể sử dụng Python để lập trình chức năng, nhưng tôi chưa bao giờ chạm vào phần đó, vì vậy tôi không thể nói cho bạn biết nhiều về nó.

Có quá sớm không? Tôi thực sự không thể kể từ câu chuyện của bạn một cách dứt khoát có hay không. Bạn đã đủ tự tin để viết các ứng dụng (GUI) đầy đủ với C ++ chưa? (tức là sử dụng các thư viện, các tính năng ngôn ngữ phức tạp hơn như khái quát và / hoặc tạo khuôn mẫu, v.v.) Tôi nghĩ rằng học một mô hình ngôn ngữ mới khó hơn nhiều so với học một ngôn ngữ mới trong cùng một mô hình. Khi bạn bước ra lãnh thổ mô hình mới, bạn sẽ phải dành nhiều thời gian hơn để có được ý tưởng hay về cách giải quyết vấn đề với mô hình đó. Giữa các ngôn ngữ OO có sự khác biệt về cách xử lý sự kế thừa và cách dữ liệu được truyền vào bộ nhớ khi bạn truyền tham số / đối số cho hàm ảnh hưởng đến hiệu suất. Nhưng để đi được những thứ này thường là mối quan tâm nhỏ lúc đầu.

Tôi đoán là nếu bạn đủ tự tin với C ++ để làm điều gì đó hơn là chào thế giới một cách lạ mắt, bạn sẽ ổn khi ra mắt. Học nhiều ngôn ngữ một cách hời hợt sẽ giúp bạn hiểu các mẫu mã bất kể ngôn ngữ được sử dụng, nhưng việc tạo mã của riêng bạn đòi hỏi một chút hiểu biết hơn về cách ngôn ngữ hoạt động và cách chúng khác nhau.

PS Khi tôi muốn học cách sử dụng một ngôn ngữ mới một cách hời hợt, tôi thường sẽ thử những điều sau đây để cảm nhận về cú pháp ngôn ngữ và hoạt động hời hợt:

  • Xin chào thế giới (Văn bản trên màn hình)
  • Xin chào thế giới được ghi vào một tệp (dạy cho bạn những điều cơ bản về tệp I / O cho ngôn ngữ đó và cũng thường là các loại I / O khác)
  • Thực hiện một số tính toán tiêu chuẩn với các cơ sở khác nhau (10, hex, bát phân), cả số nguyên và dấu phẩy động. (dạy bạn về cắt ngắn và ký hiệu số)
  • Cố gắng sử dụng một số thư viện đồ họa để hiển thị thế giới xin chào trong một hộp thoại ưa thích. (dạy bạn cách sử dụng thư viện và mã bên ngoài)

Các nhận xét kết luận trong đoạn cuối là tuyệt vời. Mặc dù tôi không hoàn toàn sử dụng các ứng dụng đầy đủ trong C ++, tôi đánh giá cao lập luận của bạn về việc mở rộng phạm vi của những gì tôi quen thuộc, ngay cả khi nó chỉ là bề ngoài.
Dự đoán

6

Vâng, tất nhiên nó được.

Không nghi ngờ gì về điều đó, đôi khi còn quá sớm để học một ngôn ngữ lập trình mới.

Trường hợp đơn giản nhất là nếu một ngôn ngữ el-stinko xuất hiện và trước khi bất cứ ai chỉ ra sự không phù hợp của nó, bằng cách học nó, bạn sẽ làm hỏng bộ não của mình. Một cặp đôi xuất hiện trong tâm trí bao gồm BASIC, FORTH và APL.

Đối với một trường hợp phức tạp hơn, một trong những nhà khoa học máy tính vĩ đại đã mô tả vấn đề này, trong đó nói ngắn gọn là thực tiễn là vĩnh viễn, và có nhiều ngành học nên học trước khi học ngôn ngữ máy tính để ngôn ngữ không làm sai lệch sự hiểu biết cơ bản hơn . Theo lời của anh ấy:

Các công cụ chúng ta sử dụng có ảnh hưởng sâu sắc và lệch lạc đến thói quen suy nghĩ của chúng ta, và do đó đến khả năng tư duy của chúng ta.

Đối thủ của việc chỉ đi sâu vào lập trình được đặt tên là Edsger Dijkstra và anh ta đã có một sự nghiệp rất nổi bật. Ông đã được trao giải thưởng ACM Turing với trích dẫn sau:

Đối với những đóng góp cơ bản để lập trình như một thách thức cao, trí tuệ; cho sự nhấn mạnh hùng hồn và chứng minh thực tế rằng các chương trình nên được sáng tác chính xác, không chỉ được sửa lỗi thành chính xác; để chiếu sáng nhận thức về các vấn đề tại các nền tảng của thiết kế chương trình.

Bài báo mà anh ấy học về ngôn ngữ lập trình sớm là:

"Về sự tàn khốc của việc dạy khoa học máy tính thực sự" http://www.cs.utexas.edu/users/EWD/ewd10xx/EWD1036.PDF

Ngoài ra, xin đừng châm chọc tôi, tôi chỉ là người đưa tin.


"Tôi bắt đầu với BASIC và đã bị sẹo suốt đời" - đó không phải là loại từ chối quan điểm của bạn sao? Nếu bạn đã sớm được giới thiệu các ngôn ngữ lập trình khác, BASIC sẽ không gây ảnh hưởng mạnh như vậy?
tdammers

Tôi đoán tôi cần một biểu tượng cảm xúc. Nếu nó giúp, tôi đã xóa câu đó.
Nhà phát

3

Có bao giờ là quá sớm để học một ngôn ngữ mới?

Tôi sẽ nói có. Nếu bạn vẫn đang xoay quanh khái niệm rằng máy tính thực sự có thể làm những gì bạn nói với nó, thì việc học một ngôn ngữ thứ hai có thể sẽ khiến bạn bối rối.

Nhưng nếu bạn đã qua thời điểm bạn nhận ra rằng máy tính thực hiện chính xác những gì bạn nói với nó, cho dù nó ngu ngốc đến mức nào, thì rất có thể bạn đã nắm bắt được ngôn ngữ đầu tiên của mình khi nhìn vào một giây (và thứ ba) !) ngôn ngữ không phá vỡ sự tập trung của bạn.


2

Bạn không thể làm cả hai ?? Tôi sẽ thực hiện một dự án trong C ++ và tìm hiểu các bit của Python (chỉ vì nó rất tuyệt vời), bạn có thể giải quyết các vấn đề tại ProjectEuler.net bằng Python

Nói chung, tôi nghĩ rằng đó là một ý tưởng tồi để học một ngôn ngữ, bỏ nó và bắt đầu học một ngôn ngữ mới. Một người nên linh hoạt làm việc với các mô hình khác nhau ở giai đoạn đầu. Nhưng đó chỉ là những gì tôi nghĩ.


ProjectEuler.net trông tuyệt vời! Cảm ơn vì lời giới thiệu.
Dự kiến

2

Đối với một lập trình viên thực hành, tôi sẽ vô tình nói rằng học một ngôn ngữ mới gần như không bao giờ là một ý tưởng tồi. Đối với một sinh viên đại học, tôi sẽ thúc giục một chút, tùy thuộc vào những lớp học sắp tới. Lý do là, trong một kỳ thi ở trường, bạn thường phải đọc thuộc chi tiết ngôn ngữ mà không có lợi ích của môi trường biên dịch / thực thi sẽ dễ dàng chỉ ra những sai lầm của bạn.

Đặc biệt là khi bạn chỉ có một vài tháng kinh nghiệm, thật dễ dàng để trộn lẫn các chi tiết trong tâm trí của bạn. Nếu bạn quan tâm đến điểm số của bạn và đang tham gia một lớp học với các kỳ thi như thế, tôi sẽ cẩn thận. Trong thế giới thực, đó không phải là một mối quan tâm.

chỉnh sửa : Ban đầu tôi đã nói cú pháp, nhưng các chi tiết phi cú pháp cũng quan trọng như các giáo sư, và có rất nhiều trong số đó.


Nếu là sinh viên, bạn không thể nhớ sự khác biệt giữa cú pháp giữa các ngôn ngữ mà bạn gặp vấn đề. Bạn sẽ không luôn có trình biên dịch để kiểm tra cú pháp của mình, có một số tình huống rất thực trong trường này, nơi bạn cần có thể nhớ lại cú pháp tại chỗ.
Ramhound

Tôi không nói là không thể nhớ được, chỉ là nó khiến người mới bắt đầu khó khăn hơn rất nhiều. Sự khác biệt cú pháp lớn khá dễ dàng, nhưng các giáo sư có thể rất khó chọn về các chi tiết như append()so push_back()với danh sách, đó là điều mà ngay cả các lập trình viên có kinh nghiệm cũng phải tìm kiếm nếu họ không sử dụng một tính năng nhất định trong một ngôn ngữ nhất định. Có thể nhớ lại cú pháp tại chỗ chắc chắn sẽ giúp ích, nhưng đối với phần lớn các công việc thì không bao giờ cần thiết .
Karl Bielefeldt
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.