Làm thế nào để bắt đầu lập trình cạnh tranh? [đóng cửa]


17

Tôi đã thực hành mã hóa được một thời gian, nhưng vấn đề là tôi mất rất nhiều thời gian để viết một giải pháp cho các vấn đề. Tôi muốn hỏi liệu lập trình cạnh tranh có thể giúp tôi cải thiện điều này không.

Nếu có, thì tôi nên bắt đầu như thế nào và tôi có thể sử dụng trang web nào (như TopCoder )? Bây giờ tôi rõ ràng sẽ không thể giải quyết các vấn đề rất khó khăn. Tôi nên làm gì?

Nếu không, tôi nên làm gì khác?

Tôi cũng có một vấn đề khác là tôi muốn học viết mã nhưng điều tôi cảm thấy là tôi không giỏi lắm. Tôi nên làm gì? Nó giống như làm phiền tôi từ bên trong.

Tôi biết một số người có thể không tìm thấy câu hỏi này nhiều thông tin nhưng ít nhất xin vui lòng cho phép tôi nhận được câu trả lời.


1
Đừng đánh giá thấp giá trị của lập trình hợp tác. Chúng tôi đã thấy một số vấn đề trong nhóm của chúng tôi do khả năng cạnh tranh quá mức - về các vấn đề kỹ thuật / liên cá nhân. Vì vậy, lập trình cạnh tranh có thể giúp bạn, nhưng vì vậy có thể tham gia vào một dự án nguồn mở hoặc phát triển một dự án với những người bạn có cùng chí hướng.
Gavin Howden

Câu trả lời:


19

[có thể] lập trình cạnh tranh giúp tôi cải thiện [tốc độ]?

Vâng, nó có thể, và cho đủ thời gian, nó chắc chắn sẽ. Tuy nhiên, tốc độ không phải là kỹ năng quan trọng nhất mà bạn sẽ cải thiện. Từ kinh nghiệm tham gia TopCoder của tôi trong hơn 10 năm, kỹ năng quan trọng nhất mà bạn sẽ có được từ lập trình cạnh tranh là khả năng viết đoạn mã đơn giản chính xác ngay lần đầu tiên mà không cần sử dụng trình gỡ lỗi.

Tôi nên bắt đầu như thế nào và từ trang web nào như TopCoder?

Sử dụng phòng thực hành cho Phân khu 2. Cấp 1 của Div 2 thường là "các cuộc thi đánh máy", theo nghĩa là bạn tìm ra giải pháp ngay lập tức, vì vậy nhiệm vụ của bạn sẽ được mã hóa nhanh nhất có thể. Hầu hết các bài tập thực tế là như thế. Bạn sẽ nhanh chóng nhận ra rằng trình gỡ lỗi là "thời gian" lớn nhất, vì vậy bạn sẽ tự nhiên cố gắng hoàn thành mã của mình mà không cần gỡ lỗi. Điều này sẽ gây khó chịu ngay từ đầu, nhưng nó sẽ cải thiện theo thời gian. Sẽ mất vài trăm vấn đề cấp 1 để có thể làm tốt nó, vì vậy đừng bỏ cuộc.

Gỡ lỗi trong đầu là kỹ năng sẽ giúp bạn trong công việc thực tế của mình: trong khi tốc độ mã hóa không quan trọng, khả năng viết đoạn mã chính xác mà không cần gỡ lỗi sẽ giúp bạn chuyển từ tốt sang xuất sắc.


Thanx rất nhiều @dasblinkenlight!
Vaibhav Agarwal

10

Là một lập trình viên mới bắt đầu, bạn nên quan tâm nhiều hơn đến chất lượng mã của mình sau đó là tốc độ viết mã. Bạn nên tự mình làm việc trên các dự án để mở rộng các kỹ năng của bạn. Bạn có thể theo dõi điều đó bằng cách xem xét các dự án nguồn mở để xem cách người khác viết mã và có thể bắt đầu đóng góp cho dự án nguồn mở.

Trong hơn 25 năm phát triển mã trên các nền tảng và lĩnh vực kinh doanh khác nhau, tôi chưa bao giờ thấy trường hợp nào tốc độ viết mã của tôi quan trọng hơn chất lượng và tính ổn định của mã.


Nhưng khi bạn đang tham gia một cuộc thi, hãy nói một số cuộc thi mã hóa hoặc quá trình phỏng vấn, sau đó tốc độ có vấn đề phải không? Và điều đó quá nhiều tôi cảm thấy.
Vaibhav Agarwal

@cdkMoose điều đó tốt nhưng bạn cũng có thể gợi ý cho tôi cách bắt đầu lập trình cạnh tranh nghĩa là bắt đầu từ đâu không?
Vaibhav Agarwal

@VaibhavAgarwal Project Euler có vấn đề từ 1 đến 50: trong khi nó không cạnh tranh (trừ khi bạn đang cố gắng trở thành một trong những người đầu tiên giải quyết vấn đề gần đây nhất), đây là một thách thức và là loại câu hỏi mà người ta có thể mong đợi trong một cuộc thi mã hóa hoặc quá trình phỏng vấn.

@Vaibhav, tôi sẽ bắt đầu lập trình cạnh tranh theo cách tôi sẽ bắt đầu bất kỳ cuộc thi nào khác: Thực hành, Thực hành, Thực hành.
cdkMoose

1
@Vaibhav: Bạn đã đăng bài mà bạn muốn học lập trình. Nếu đó là giai đoạn bạn đang ở, cá nhân tôi không nghĩ bạn nên quan tâm đến chương trình cạnh tranh nào cả. Điều đó có thể đến sau khi bạn đã phát triển kỹ năng của mình. Theo như phỏng vấn, tôi không yêu cầu các ứng viên phỏng vấn của mình viết các chương trình hoàn chỉnh. Tôi quan tâm nhiều hơn đến quá trình hiểu biết và suy nghĩ của họ. Tôi đang cố gắng phát triển sự tự tin rằng họ có thể giải quyết vấn đề chứ không phải họ sẽ giải quyết nó trong thời gian kỷ lục.
cdkMoose
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.