Tôi thích lập trình bằng các ngôn ngữ dường như hướng đến các lập trình viên khó tính. (Sở thích của tôi là Python và D.) MATLAB hướng đến các kỹ sư và R hướng đến các nhà thống kê, và có vẻ như những ngôn ngữ này được thiết kế cho những người không phải là lập trình viên khó tính và không nghĩ như những lập trình viên khó tính. Tôi luôn thấy chúng hơi khó sử dụng, và ở một mức độ nào đó tôi không thể đặt ngón tay của mình vào lý do. Dưới đây là một số vấn đề tôi đã quản lý để xác định:
- (Cả hai): Sự nhấn mạnh cực độ vào các vectơ và ma trận đến mức không có nguyên thủy thực sự.
- (Cả hai): Khó khăn của thao tác chuỗi cơ bản.
- (Cả hai): Thiếu hoặc lúng túng trong việc hỗ trợ các cấu trúc dữ liệu cơ bản như bảng băm và "thực", tức là kiểu tham số loại và lồng nhau, mảng.
- (Cả hai): Chúng thực sự, thực sự rất chậm ngay cả khi được giải thích các tiêu chuẩn ngôn ngữ, trừ khi bạn cúi xuống để vector hóa mã của mình.
- (Cả hai): Chúng dường như không được thiết kế để tương tác với thế giới bên ngoài. Ví dụ, cả hai đều là những chương trình khá cồng kềnh, phải mất một thời gian để khởi chạy và dường như không được thiết kế để làm cho các chương trình lọc văn bản đơn giản dễ viết. Hơn nữa, việc thiếu xử lý chuỗi tốt làm cho I / O tệp ở bất cứ thứ gì ngoại trừ các dạng rất chuẩn gần như không thể.
- (Cả hai): Hướng đối tượng dường như có cảm giác rất chắc chắn. Có, bạn có thể làm điều đó, nhưng nó không cảm thấy thành ngữ hơn nhiều so với OO trong C.
- (Cả hai): Không có cách rõ ràng, đơn giản để có được một loại tham chiếu. Không có con trỏ hoặc tham chiếu lớp. Ví dụ, tôi không biết làm thế nào bạn cuộn danh sách liên kết của riêng bạn bằng một trong hai ngôn ngữ này.
- (MATLAB): Bạn không thể đặt nhiều hàm cấp cao nhất trong một tệp, khuyến khích các hàm rất dài và mã hóa cắt và dán.
- (MATLAB): Các số nguyên dường như không tồn tại như một loại lớp đầu tiên.
- (R): Các cấu trúc dữ liệu dựng sẵn cơ bản dường như ở mức quá cao và tài liệu kém, và dường như không bao giờ thực hiện được những gì tôi mong đợi với kinh nghiệm của tôi với các cấu trúc dữ liệu tương tự nhưng ở mức thấp hơn.
- (R): Tài liệu được trải rộng khắp nơi và hầu như không thể duyệt hoặc tìm kiếm. Ngay cả D, thường bị đánh gục vì tài liệu tồi và vẫn còn khá alpha-ish, về cơ bản là tốt hơn nhiều như tôi có thể nói.
- (R): Ít nhất là theo như tôi biết, không có IDE tốt cho nó. Một lần nữa, ngay cả D, một ngôn ngữ khá alpha với một cộng đồng nhỏ, sẽ tốt hơn.
Nói chung, tôi cũng cảm thấy như MATLAB và R có thể dễ dàng được thay thế bằng các thư viện cũ đơn giản bằng các ngôn ngữ có mục đích chung hơn, nếu có đủ các thư viện toàn diện. Điều này đặc biệt đúng trong các ngôn ngữ mục đích chung mới hơn bao gồm nhiều tính năng cho các nhà văn thư viện.
Tại sao R và MATLAB có vẻ kỳ lạ với tôi? Có bất kỳ vấn đề lớn nào khác mà bạn nhận thấy có thể khiến những ngôn ngữ này trở nên xa lạ với các lập trình viên khó tính không? Khi việc sử dụng của họ là cần thiết, một số mẹo sống sót tốt là gì?
Chỉnh sửa: Tôi đang thấy một vấn đề từ một số câu trả lời tôi đã nhận được. Tôi có một sở thích cá nhân mạnh mẽ, khi tôi phân tích dữ liệu, để có một tập lệnh kết hợp toàn bộ đường ống dẫn. Điều này ngụ ý rằng một ngôn ngữ mục đích chung cần được sử dụng. Tôi ghét phải viết một tập lệnh để "dọn sạch" dữ liệu và nhổ nó ra, sau đó một tập lệnh khác để đọc lại trong một môi trường hoàn toàn khác, v.v. Tôi thấy ma sát khi sử dụng MATLAB / R cho một số công việc của tôi và hoàn toàn ngôn ngữ khác với không gian địa chỉ hoàn toàn khác biệt và cách suy nghĩ cho phần còn lại là một nguồn ma sát khổng lồ. Hơn nữa, tôi biết có những lớp keo tồn tại, nhưng chúng dường như luôn phức tạp khủng khiếp và là một nguồn ma sát.