Một số suy nghĩ bổ sung.
Ngôn ngữ lập trình 'per se' chỉ là một công cụ. Tất cả các ngôn ngữ được thiết kế để làm cho một số loại cấu trúc dễ xây dựng hơn các loại khác. Và kiến thức và sự thành thạo của một ngôn ngữ lập trình là quan trọng và hiệu quả hơn các tính năng của ngôn ngữ đó so với các ngôn ngữ khác.
Theo như tôi có thể thấy có hai chiều của câu hỏi này. Chiều hướng đầu tiên là khả năng khám phá, xây dựng bằng chứng về các khái niệm hoặc mô hình với tốc độ nhanh, cuối cùng có sẵn các công cụ để nghiên cứu những gì đang diễn ra (như kiểm tra thống kê, đồ họa, công cụ đo lường, v.v.). Loại hoạt động này thường được các nhà nghiên cứu và nhà khoa học dữ liệu ưa thích (tôi luôn tự hỏi điều đó có nghĩa là gì, nhưng tôi sử dụng thuật ngữ này cho định nghĩa lỏng lẻo của nó). Họ có xu hướng dựa vào các công cụ nổi tiếng và được xác minh, có thể được sử dụng để chứng minh hoặc lập luận.
Chiều thứ hai là khả năng mở rộng, thay đổi, cải thiện hoặc thậm chí tạo ra các công cụ, thuật toán hoặc mô hình. Để đạt được điều đó bạn cần một ngôn ngữ lập trình thích hợp. Tất cả đều giống nhau. Nếu bạn làm việc cho một công ty, hơn bạn phụ thuộc rất nhiều vào cơ sở hạ tầng của công ty, văn hóa nội bộ và các lựa chọn của bạn giảm đi đáng kể. Ngoài ra, khi bạn muốn thực hiện một thuật toán để sử dụng sản xuất, bạn phải tin tưởng vào việc thực hiện. Và thực hiện bằng ngôn ngữ khác mà bạn không thành thạo sẽ không giúp bạn nhiều.
Tôi có xu hướng ủng hộ loại hoạt động đầu tiên của hệ sinh thái R. Bạn có một cộng đồng tuyệt vời, một bộ công cụ khổng lồ, bằng chứng cho thấy những công cụ này hoạt động như mong đợi. Ngoài ra, bạn có thể xem xét Python, Octave (để đặt tên một vài), là những ứng cử viên đáng tin cậy.
Đối với nhiệm vụ thứ hai, bạn phải suy nghĩ trước về những gì bạn thực sự muốn. Nếu bạn muốn các công cụ sẵn sàng sản xuất mạnh mẽ, thì C / C ++, Java, C # là những ứng cử viên tuyệt vời. Tôi coi Python như một công dân thứ hai trong thể loại này, cùng với Scala và bạn bè. Tôi không muốn bắt đầu một cuộc chiến rực lửa, đó chỉ là ý kiến của tôi. Nhưng sau hơn 17 năm làm nhà phát triển, tôi có xu hướng thích một hợp đồng chặt chẽ và kiến thức của mình hơn là tự do làm bất cứ điều gì bạn có thể nghĩ đến (giống như nó xảy ra với rất nhiều ngôn ngữ động).
Cá nhân, tôi muốn học càng nhiều càng tốt. Tôi quyết định rằng tôi phải chọn một cách khó khăn, có nghĩa là tự mình thực hiện mọi thứ. Tôi sử dụng R như một mô hình và cảm hứng. Nó có kho báu tuyệt vời trong thư viện và rất nhiều kinh nghiệm chắt lọc. Tuy nhiên, R là ngôn ngữ lập trình là một cơn ác mộng đối với tôi. Vì vậy, tôi quyết định sử dụng Java và không sử dụng thêm thư viện. Đó chỉ là vì kinh nghiệm của tôi, và không có gì khác.
Nếu bạn có thời gian, điều tốt nhất bạn có thể làm là dành thời gian cho tất cả những điều này. Bằng cách này, bạn sẽ kiếm được cho mình câu trả lời tốt nhất có thể, phù hợp với bạn. Dijkstra đã từng nói rằng các công cụ ảnh hưởng đến cách bạn nghĩ, vì vậy nên biết các công cụ của bạn trước khi cho phép họ mô hình hóa cách bạn nghĩ. Bạn có thể đọc thêm về điều đó trong bài báo nổi tiếng của mình có tên The Humble Lập trình viên