Làm thế nào để bạn chọn sử dụng một ngôn ngữ lập trình cụ thể? [đóng cửa]


8

Tôi đã có một cuộc nói chuyện nhỏ giữa các đồng đội về cách bạn chọn ngôn ngữ lập trình để sử dụng trong một dự án khiến tôi nghĩ rằng có nhiều tiêu chí để chọn một trong khi bắt đầu một dự án nhưng không có tiêu chuẩn thực sự.

Bạn có chọn một ngôn ngữ lập trình cho cú pháp và ngữ nghĩa không? Hay bạn chọn một vì nó có sự hỗ trợ tốt nhất để làm một số việc nhất định? Hay bởi vì bạn có thư viện tốt hơn? Hay bạn chọn nó cho mô hình?

Tiêu chí nào bạn sử dụng để chọn một ngôn ngữ khi bạn chuẩn bị thực hiện một dự án?


1
Tôi thực sự bắt gặp suy nghĩ của mình const Haskell :: [Constraint] -> ProgrammingLanguage.
dan_waterworth

Câu trả lời:


15

Tiêu chí của tôi, theo thứ tự:

  1. Nó có phải là công cụ phù hợp cho công việc? Ví dụ: nếu bạn đang xây dựng một máy khách máy tính để bàn được nối mạng, bạn muốn sử dụng một ngôn ngữ hỗ trợ loại thứ đó ra khỏi hộp như Java hoặc C #. OTOH, nếu bạn đang làm việc trên một hệ thống thời gian thực, bạn sẽ muốn thứ gì đó mang lại cho bạn khả năng dự đoán cao hơn và kiểm soát mức độ thấp (như C).

  2. Có phù hợp với môi trường không? Trình biên dịch / thông dịch viên có sẵn cho nền tảng đích không?

  3. Đó có phải là thứ tôi đã quen thuộc hay là ngôn ngữ tôi có thể tiếp thu nhanh chóng? Ví dụ, vì phần lớn trải nghiệm của tôi là với C và C ++, tôi có thể nhanh chóng chọn các ngôn ngữ có cú pháp tương tự (một lần nữa, Java hoặc C #) một cách dễ dàng. Một cái gì đó trong một gia đình hoàn toàn khác (như Haskell) sẽ khiến tôi mất nhiều thời gian hơn để thoải mái.

  4. Đây có phải là thứ gì đó được hỗ trợ tốt, với nhiều tài liệu tham khảo cả trực tuyến và trên giấy không?


1
Để thêm vào # 1: Điều này đang được triển khai ở đâu? Là cập nhật tự động quan trọng? Nếu nó không dựa trên web Có cần phải đa nền tảng không? Nếu nó dựa trên web, bạn đang sử dụng kiến ​​trúc máy chủ nào? Tôi nêu lên câu trả lời của bạn vì tôi nghĩ việc thực hiện là câu hỏi đầu tiên cần đặt ra. Nó giống như hỏi 'cái gì' trước khi hỏi 'làm thế nào', đặc biệt là trong một dự án đối mặt với khách hàng.
MetaGuru

5

Tôi đoán rất nhiều yếu tố

  1. Ngôn ngữ có cho vay chính nó với loại ứng dụng bạn sắp viết không?

  2. Bạn thành thạo ngôn ngữ lập trình đến mức nào? (Trở nên quan trọng hơn khi thời hạn trở nên nhỏ hơn)

  3. Thư viện và các tính năng ngôn ngữ cho một khu vực nhất định trong ứng dụng của bạn.

  4. Nó có phải là một ngôn ngữ mới? Nó đã được thử nghiệm và chứng minh trong lĩnh vực hiện tại?

  5. Có bao nhiêu người thực sự viết mã trong đó? Quan trọng nếu bạn cần giúp đỡ và có một cộng đồng lớn và tích cực


1

Tiêu chí quan trọng đối với tôi là:

  • kinh nghiệm trước với ngôn ngữ.
  • công cụ / nhà cung cấp hỗ trợ cho ngôn ngữ.
  • thư viện / hệ sinh thái hỗ trợ cho nhiệm vụ và ngôn ngữ.

Tôi muốn nói rằng cú pháp và mô hình không quan trọng.

Tôi sẽ không chọn một ngôn ngữ mới vì tôi thích cú pháp hoặc mô hình nhưng có các công cụ hoạt động kém và một thư viện tối thiểu không thể làm hầu hết những gì tôi cần nó để làm.


1

Ngôn ngữ là công cụ. Như với bất kỳ công cụ nào, bạn phải tính đến một số điều:

1) Bạn có quyền truy cập vào công cụ?
2) Bạn có biết cách sử dụng công cụ này không?
3) Trong số các công cụ đáp ứng tiêu chí 1 & 2, công cụ nào là tốt nhất cho công việc của bạn?

Nếu bạn chỉ có một công cụ, câu trả lời rất đơn giản. Nếu bạn có một tá công cụ, thì bạn cần xem xét lưu trữ, chi phí bảo trì và các vấn đề ngoại vi khác.


1

Điều này có thể sẽ khiến tôi bị hạ thấp, nhưng điều quan trọng nhất với tôi là cú pháp. Với các chương trình dành nhiều thời gian và công sức để bảo trì hơn so với viết ban đầu ngày nay, khả năng nhận một đoạn mã lạ (của người khác hoặc của chính tôi nếu tôi đã viết nó hơn 6 tháng trước) và nhanh chóng xác định ý định của nó là một trong những kỹ năng quan trọng nhất mà một lập trình viên hiện đại có thể có. Một ngôn ngữ sạch sẽ, dễ đọc sẽ giúp ích rất nhiều cho việc này.

Sau đó, không theo thứ tự cụ thể,

  • Thư viện chuẩn
  • IDE và công cụ tốt
  • Cộng đồng mạnh mẽ, đặc biệt là hệ sinh thái nguồn mở
  • Khả năng tạo ra một sản phẩm cuối cùng nhanh chóng, hiệu quả

2
Vì vậy, theo lập luận đó, đối với bạn, Ada là lựa chọn đầu tiên của bạn và PERL là một phát minh của Quỷ, tôi có đúng không?
John R. Strohm

@ John: Ngôn ngữ tôi chọn thực sự là Delphi, một người anh em họ xa của Ada. Cú pháp bắt nguồn từ Pascal là tốt, nhưng Ada không bao giờ thực sự phát triển một cộng đồng mạnh mẽ. Đối với Perl, tôi sẽ để Alan Kay trả lời câu hỏi đó. "Perl là một ví dụ khác về việc đáp ứng một nhu cầu nhỏ, ngắn hạn, và sau đó trở thành một vấn đề thực sự trong dài hạn." Khi bạn xem xét cách phần mềm được sử dụng trong mọi khía cạnh của cuộc sống hiện nay, không khó để nói rằng thế giới sẽ tốt hơn rất nhiều nếu Perl và C chưa bao giờ bị ngành công nghiệp điện toán coi trọng. Nhưng muộn hơn 20/20, như họ nói ...
Mason Wheeler

1

Tôi chỉ sử dụng ngôn ngữ tôi biết tốt nhất:

  • Java cho mọi thứ khá nhiều
  • SQL cho cơ sở dữ liệu
  • Kịch bản shell nhỏ & kịch bản dòng lệnh
  • HTML, CSS và JavaScript cho Web front-end

Tôi không cố gắng học một ngôn ngữ mới khi tôi bắt đầu một dự án mới nghiêm túc. Tôi sử dụng những gì tôi biết.


-1 i) Làm thế nào mà trả lời câu hỏi OP? ii) Xin lỗi, với rất nhiều DSL mới được tạo ra mỗi ngày, tôi thực sự không nghĩ đó là một hành vi đáng tự hào. iii) Lập trình viên thực dụng đưa ra một lời khuyên rất phổ biến (và hữu ích): học một ngôn ngữ mới mỗi năm.
rsenna

1
@rsenna: chơi Devil's Avocado, tôi nghĩ đôi khi chúng ta có thể có một chút trượng phu về khả năng học ngôn ngữ mới. Có điều gì đó để nói về việc bắt đầu làm việc với các ngôn ngữ mà bạn biết rõ trước tiên, xác định điểm đau của bạn ở đâu và sau đó tìm kiếm các ngôn ngữ thực sự sẽ giúp bạn giải quyết chúng.
Paul D. Chờ

1
+1 để hủy bỏ -1 đó, bởi vì trong hầu hết mọi tình huống trong thế giới thực, bạn sẽ làm tốt hơn với ngôn ngữ bạn biết rõ nhất, so với ngôn ngữ khác phù hợp hơn với vấn đề, nhưng bạn Tôi ít quen thuộc hoặc không quen thuộc.
Carson63000

0

Chi phí để xây dựng một ứng dụng gần như tỷ lệ thuận với kích thước mã, vì vậy để giảm thiểu chi phí, tôi chọn ngôn ngữ mạnh nhất đã được sử dụng để giải quyết các vấn đề tương tự. Tôi không lo lắng về số lượng lập trình viên biết ngôn ngữ vì tôi sẽ không cần nhiều. Tôi cũng cố gắng tránh nhà cung cấp khóa, vì vậy tôi thích các giải pháp mở.

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.