Không ai ở đây đã giải quyết các vấn đề thực tế tại sao một người học TCS nên học lập trình.
Nếu bạn dự định làm tiến sĩ về TCS trong khoa Khoa học máy tính, rất có thể bạn sẽ cần tham gia một số khóa học không phải là Lý thuyết, và những khóa học này gần như chắc chắn sẽ rất chuyên sâu về lập trình. Tùy thuộc vào chương trình bạn tham gia, bạn cũng có thể cần kiến thức về các môn học không phải là Lý thuyết để vượt qua các bài kiểm tra trình độ của bạn.
Khi bạn hoàn thành bằng tiến sĩ, hầu hết các cơ hội việc làm cho TCS đều ở trong học viện. Nếu bạn làm việc trong học viện, bạn sẽ được dạy, và bạn có thể được yêu cầu dạy một lớp CS cấp dưới giới thiệu sẽ được lập trình nhiều hơn lý thuyết. Ngay cả khi bạn đang dạy một lớp lý thuyết cho sinh viên đại học, như nói về Thuật toán, bạn có thể mong đợi rằng sinh viên của bạn sẽ biết nhiều về lập trình hơn lý thuyết, và nếu không biết những gì sinh viên của bạn biết, bạn sẽ khó có thể thu hẹp khoảng cách trong sự hiểu biết của họ . Tôi rùng mình khi nghĩ về những sinh viên CS đang được dạy bởi một người không biết lập trình!
Nếu bạn không quan tâm đến những mối quan tâm thực tế này, thì có lẽ bạn có thể nhận được bằng cách nghiên cứu mà không thực sự biết gì về lập trình. Chắc chắn bạn có rất nhiều công ty trong cộng đồng TCS, nhưng số dặm sẽ thay đổi tùy thuộc vào khu vực chính xác của Lý thuyết bạn đang làm việc. Ví dụ, nếu bạn đang thực hiện lý thuyết phức tạp tính toán thuần túy, chứng minh giới hạn thấp hơn trong các lớp mà không ai có đã từng nghe nói, thì có khả năng lập trình sẽ không có ích gì với bạn. Nhưng nếu bạn đang làm một cái gì đó có thuật toán hơn, thì tôi cảm thấy rằng việc có thể viết mã làm việc sạch sẽ tốt sẽ tăng cường trực giác của bạn nếu không có gì khác.
Tôi khuyên bạn nên học C (không phải C ++). Nhặt một bản sao của K & R và đọc nó từ trước ra sau. C không có nhiều tính năng ưa thích của các ngôn ngữ hiện đại, nhưng nó có cú pháp và ngữ nghĩa đơn giản nhưng thanh lịch, mà bạn sẽ có thể học toàn bộ. Tuy nhiên, ngay cả khi bạn hiểu toàn bộ ngôn ngữ, vẫn cần thực hành để thành thạo viết mã không có lỗi thanh lịch tốt trong C. Tuy nhiên, nếu bạn có thể thành thạo mã hóa bằng C, bạn sẽ có thể thành thạo bất kỳ ngôn ngữ lập trình nào bạn gặp phải. Hơn nữa, kỷ luật đó sẽ giúp bạn nghĩ cách phần cứng nghĩ, sẽ có ích khi thiết kế các thuật toán.
Các ý tưởng như con trỏ rất quan trọng đối với bất kỳ ai thiết kế thuật toán, nhưng thật không may, các ngôn ngữ như Java và Python che khuất chúng khỏi bạn, vì vậy đó là lý do tại sao tôi không giới thiệu chúng như ngôn ngữ đầu tiên cho người có nền tảng toán học. OOP quan trọng hơn đối với những người phải duy trì các dự án phần mềm khổng lồ, chứ không phải ai đó đang thiết kế thuật toán.