Một thước đo tốc độ phát triển


10

Tôi đã thấy rất nhiều bài kiểm tra đo tốc độ thực thi của các ngôn ngữ lập trình, nhưng tôi chưa bao giờ thấy các bài kiểm tra đo tốc độ phát triển.

Tôi đã nghe tốc độ phát triển tăng lên khi làm việc với các ngôn ngữ động, nhưng có bằng chứng nào về điều đó không? Tôi không cố nói ngôn ngữ động không hiệu quả, nhưng tôi muốn thấy kết quả của một nghiên cứu khoa học, nếu điều đó tồn tại.

Thậm chí tốt hơn sẽ là thông tin về cơ sở bảo trì. Là một số ngôn ngữ dễ gỡ lỗi hơn những ngôn ngữ khác?

EDIT: Tôi chủ yếu quan tâm đến sự khác biệt giữa hai ngôn ngữ gần với cú pháp. Ví dụ, tôi đoán lập trình trong C thường sẽ chậm hơn lập trình trong Java; nhưng lập trình trong Java có nhanh hơn lập trình trong C # không?


Xem lập trình viên.stackexchange.com /questions / 10032 (nhưng lưu ý rằng tôi không khẳng định đây là bản sao).
Frank Shearar

Điều này thực sự thú vị, cảm ơn bạn! Một số liên kết thực sự chính xác là những gì tôi đang tìm kiếm.
DistantEcho

Câu trả lời:


6

Hoàn toàn là ngôn ngữ lập trình làm nên sự khác biệt. Tuy nhiên, tôi nghĩ rằng sự khác biệt đó là nhiều hơn về mức độ quen thuộc của lập trình viên với từng ngôn ngữ so với bất kỳ khía cạnh cụ thể nào của ngôn ngữ, đặc biệt là với sự hạn chế của các ngôn ngữ có cú pháp tương tự.


2

Đối với tôi đây là loại tương tự với loại cọ sơn nào cho phép bạn vẽ nhanh hơn.

Nếu bạn xem xét những gì bạn vẽ một mặt hàng, thì bàn chải càng lớn, bạn sẽ vẽ càng nhanh.

Nếu bạn thấy mã tốt là một hình thức nghệ thuật, thì nó sẽ ít hơn kích thước của bàn chải, và chính xác hơn những gì bạn làm với bàn chải của mình.

Xin lỗi, đây là một chút không trả lời cho câu hỏi thực tế.


Trên thực tế, tôi quan tâm nhiều hơn đến sự khác biệt giữa hai bàn chải lớn. Ví dụ, làm thế nào để chúng ta biết liệu Python sẽ có tốc độ phát triển tốt hơn Lua - hay ngược lại?
DistantEcho

1
@Niphra, bạn không biết. Có quá nhiều điều không thể suy nghĩ trong một so sánh như vậy để có được một số liệu hợp lệ cho nó.
Adam Crossland

câu trả lời hay, nhưng chỉ khi bạn bỏ qua kỹ năng của họa sĩ
Steven A. Lowe

1

Tôi không chắc điều này có liên quan, nhưng nó rất thú vị

Trong Tháng huyền thoại, Fred Brooks đề cập đến các nghiên cứu so sánh ngôn ngữ lắp ráp và ngôn ngữ cấp cao hơn. Họ phát hiện ra rằng các lập trình viên đã tạo ra cùng một lượng hướng dẫn mỗi năm trong cả hai, nhưng các hướng dẫn cho một ngôn ngữ cấp cao bằng với nhiều hướng dẫn ngôn ngữ lắp ráp. Vì vậy, bằng cách chuyển sang ngôn ngữ cấp cao, các lập trình viên đã đạt được sự gia tăng bất kể bội số trung bình của hướng dẫn lắp ráp thành hướng dẫn ngôn ngữ trong năng suất.

Điều tương tự cũng đúng với C vs Java / C #, tôi không biết sự khác biệt thực sự giữa C # và Java. Nhưng mỗi khi bạn tăng mức độ trừu tượng, bạn sẽ tăng năng suất. Tuy nhiên tôi cũng nghĩ rằng nó sẽ làm giảm sự kiểm soát đối với những gì máy thực sự đang làm. Bạn phải tin tưởng rằng ngôn ngữ đang làm những gì bạn muốn. Ví dụ, trong phần mềm hiệu suất cao, việc thu gom rác là không thể chấp nhận được, ngoại trừ nếu bạn có toàn quyền kiểm soát khi chạy và thời gian sử dụng.


Sẽ rất thú vị nếu có bất kỳ nghiên cứu nào ngày nay sẽ làm điều này một lần nữa khi so sánh các ngôn ngữ cấp cao như node.js và python.
Một sốGuyOnAComputer

1

Năng suất là gì? Sản phẩm là gì , thậm chí? Không ai biết, nói một cách toán học.

KLoC?

Phức tạp cyclomatic?

Điểm chức năng?

Tôi tin rằng bạn sẽ phải xem xét mức độ kinh doanh và tiến hành so sánh tỷ lệ phần trăm với các lập trình viên khác làm công việc tương tự, sau đó đo các tính năng được phân phối cho mỗi lập trình viên. Đó là những điểm rất tinh vi và tinh tế để có thể đo lường và giữ lại ý nghĩa thống kê.


0

Hãy tưởng tượng điều này sẽ được kiểm tra như thế nào: bạn cần phải có một số dự án trong thế giới thực được phát triển độc lập cả hai lần với cùng một ngôn ngữ (để lấy đi sự thay đổi của kinh nghiệm và kiến ​​thức lập trình viên) và với các ngôn ngữ khác nhau (để có được một số dữ liệu để so sánh các ngôn ngữ). Dường như với tôi rằng thí nghiệm nhanh chóng phát triển đến một kích thước không thể quản lý.

Tôi muốn nghe về các cách để "thu nhỏ" thử nghiệm hoặc về các nỗ lực thực hiện thử nghiệm như đã nêu.


Kinh nghiệm thực sự là một vấn đề, vì vậy tôi sẽ làm việc với người mới bắt đầu, hoặc thậm chí tốt hơn, một người có kiến ​​thức về một ngôn ngữ lập trình hoàn toàn khác. Đối với quy mô dự án, tôi đoán một dự án rất nhỏ sẽ đủ để có kết quả, ngay cả khi chúng không hoàn hảo.
DistantEcho

Đôi khi, câu chuyện xảy ra, "chiến thắng" của một ngôn ngữ chỉ xảy ra trong một kích thước / độ phức tạp nhất định. Đối với các vấn đề nhỏ hơn / đơn giản hơn thế, sự đáng kinh ngạc của ngôn ngữ đó là không rõ ràng. Vì vậy, nó nói.
Frank Shearar

Tôi hy vọng rằng một "chiến thắng" nhất định chỉ vượt qua một mức độ phức tạp và kinh nghiệm nhất định của lập trình viên. Đo lường chỉ với người mới bắt đầu chủ yếu bỏ lỡ điểm. Thực sự sử dụng một ngôn ngữ tốt đòi hỏi kinh nghiệm cụ thể ngôn ngữ.
kasterma
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.