Đối với những loại ứng dụng nào thì Python là một lựa chọn tồi? [đóng cửa]


21

Tôi mới bắt đầu học Python và tôi muốn có thêm một số ngữ cảnh về ngôn ngữ.

Tôi nhận ra rằng, trong nhiều trường hợp, Python là ngôn ngữ chậm so với C hoặc C ++. Do đó, Python có lẽ không phải là lựa chọn tốt nhất cho các ứng dụng cần chạy càng nhanh càng tốt.

Bên ngoài điều này, có vẻ như Python là một ngôn ngữ có mục đích chung tuyệt vời, dễ đọc và viết. Các thư viện có sẵn cung cấp cho nó một lượng lớn chức năng. Ngoài các ứng dụng quan trọng về hiệu năng, đâu là lựa chọn tồi để sử dụng Python (và tại sao)?


8
Không có thứ gọi là ngôn ngữ có mục đích chung tuyệt vời. Cứ sau 5 năm, một cái mới thay thế cái cũ chỉ tồn tại trong các thị trường ngách. Lisp, Fortran, Pascal, Cơ bản, Ada, Perl ...
mouviciel

3
@mouviciel: Pascal một ngôn ngữ thích hợp? Ok, tên của nó đã được đổi thành Delphi để khớp với Borland / CodeGear / Embarcadero IDE, nhưng Delphi vẫn (dựa trên) Pascal và mặc dù nó đã mất thị trường, tôi không gọi chính xác nó là ngôn ngữ thích hợp. Và không cơ bản cho vấn đề đó. Visual Basic vẫn là Basic. Cả Delphi và Visual Basic đều được sử dụng ở nhiều công ty ...
Marjan Venema

7
"Python là ngôn ngữ chậm so với C hoặc C ++". Bạn nên sao lưu này với điểm chuẩn cụ thể bạn đã sử dụng. Trong một số trường hợp (các chương trình ràng buộc I / O thực hiện nhiều cuộc gọi hệ thống) Python nhanh như C vì nó chỉ là một trình bao bọc xung quanh thư viện C.
S.Lott

@ S.Lott Đúng và PyPy đôi khi có thể cạnh tranh với JVM hoặc thậm chí C / C ++
yati sagade

Pascal từng là ngôn ngữ giảng dạy được lựa chọn khi tôi học đại học. Sau đó vài thập kỷ đã trôi qua và bây giờ nó dường như với Java của cô. Tôi viết mã một số ngôn ngữ chuyên nghiệp (nửa tá hoặc hơn), nhưng vẫn mã Delphi cho vui.
Mawg

Câu trả lời:


22

Phần mềm nhằm vào các mục tiêu nhúng với nguồn lực hạn chế của họ. Hầu hết các bộ xử lý trên hành tinh này đều không thể chạy Python do không đủ tài nguyên hoặc không ai chuyển phiên bản sang kiến ​​trúc đó. Hầu hết các bộ xử lý, ngay cả bây giờ, đi kèm với ít hơn một megabyte bộ nhớ.


Đó là cho đến khi ai đó tạo ra một cổng Python của Arduino. Đợi đã!
Spoike

5
@Spoike liên kết đó là để thực sự chạy python trên máy tính và chỉ giao tiếp ser serent với arduino. Arduino không chạy mã python
basarat 23/11/11

1
@BasaratAli: Tuyên bố miễn trừ trách nhiệm - Tôi đã viết bình luận của mình trong trò đùa. ;-)
Spoike

14

Hai nơi nhảy vào tâm trí là những thứ đòi hỏi nhiều sự đồng thời, mà tôi sẽ sử dụng Erlang. Hoặc tính toán số nặng, mà tôi có thể sẽ cố gắng sử dụng Fortran.


1
Có phải Fortran vẫn đi trước C / C ++ trong tính toán số? ...
Sardathrion - Phục hồi Monica

1
Bạn biết tôi không biết. Nó không phải là một lĩnh vực tôi có nhiều kinh nghiệm. Nhưng tôi biết rằng những người fortran đã dành hơn 30 năm để làm cho các công cụ của họ đi rất nhanh.
Zachary K

@Sardathrion - Thật khó để nói. Chỉ tự nhiên, bạn hiểu. Nhưng, một vài tháng trước, ông Lionel của Intel Fortran nổi tiếng đã tuyên bố rằng dòng fortran của họ vượt trội hơn mọi sản phẩm khác trong dòng phát triển của họ (vốn không quá hẹp).
Rook

@Idigas: Thật vậy, tôi biết rằng Fortran được sử dụng rộng rãi nhưng đó có thể là do mã kế thừa và không phải là các ràng buộc tối ưu hóa. Có lẽ tôi nên hỏi điều đó như một câu hỏi ...
Sardathrion - Tái lập lại

Cũng nên nhớ rằng rất nhiều người làm tính toán số biết Fortran thực sự tốt và đó là công cụ lựa chọn của họ. Vì vậy, khi họ phải thực hiện nhiệm vụ đó, họ sẽ tiếp cận Fortran.
Zachary K

8

Vì Python là ngôn ngữ được gõ động, không cần kiểm tra thời gian biên dịch, nên việc tái cấu trúc một dự án Python lớn không có các bài kiểm tra đơn vị mở rộng sẽ khó khăn.

Vì vậy, nếu bạn có một dự án lớn cần được duy trì và sửa đổi trong một thời gian dài và nhóm của bạn không cam kết tạo các thử nghiệm tự động cho mọi thứ, thì bạn có thể sử dụng Java hoặc C # tốt hơn.


17
Tái cấu trúc bất kỳ dự án lớn nào mà không có bài kiểm tra đơn vị là rất khó.
Sardathrion - Phục hồi Monica

9
Đúng, nhưng khó hơn nhiều mà không có loại an toàn.
Eric Wilson

3
@Eric Wilson - Ngay cả khi đó, gõ mạnh có thể mang lại cho bạn cảm giác an toàn sai lầm ... Nó biên dịch, gửi nó!
Đánh dấu gian hàng

2
Điều này có thể không phải là 100% về chủ đề của câu hỏi nhưng vẫn là một điểm hợp lệ. Việc hỗ trợ công cụ đặc biệt là tái cấu trúc cho các ngôn ngữ được gõ động là thiếu so với các ngôn ngữ như Java hoặc C #. Chỉ cần đổi tên công cụ có thể là một bài tập đầy đủ trong các dự án Python lớn.
OliverS

Python có yêu cầu một thời gian chạy hoặc VM riêng biệt hay nó có thể tạo ra một tệp thực thi độc lập không?
Jim ở Texas

2

Nếu trọng tâm chính là phát triển GUI của windows, thì tôi khuyên bạn nên chống lại CPython vì thiếu nhà thiết kế biểu mẫu tốt (so với sử dụng .Net).

Tuy nhiên, IronPython chạy trên .Net và bạn có hai IDE với các nhà thiết kế Form để lựa chọn: Visual Studio và SharpDevelop. Trên thực tế, Công cụ Python cho Visual Studio có thể được sử dụng cho CPython cũng như IronPython, nó khá gọn gàng mặc dù tôi chưa thử ...


2

Điều này thực sự phụ thuộc vào ý của bạn là "sự lựa chọn tồi".

Nếu bạn có nghĩa là các ứng dụng sử dụng Python rất khó, thì có rất ít: ứng dụng chính xuất hiện và chưa được đề cập đến là mã yêu cầu mức độ chính xác cao trong đó các ngôn ngữ có hệ thống loại phức tạp (Haskell, ngôn ngữ được gõ phụ thuộc ) là những lựa chọn tốt hơn.

Nếu bạn có nghĩa là các ứng dụng trong đó Python là tối ưu phụ (nghĩa là có nhiều lựa chọn tốt hơn) thì có nhiều hơn nhưng chúng cũng chủ quan hơn. Ví dụ, theo kinh nghiệm hạn chế được thừa nhận của tôi, làm việc trên trình biên dịch và trình thông dịch dễ dàng hơn nhiều với các kiểu dữ liệu đại số, khớp mẫu và nhiều tính năng chức năng hơn Python. Tuy nhiên, liệt kê đầy đủ các ứng dụng như thế này là không thể vì chúng khác nhau tùy theo mỗi người.


2

Đó là lý tưởng để viết kịch bản một cái gì đó nhanh chóng vì khả năng biểu cảm của nó và nhiều thư viện hỗ trợ.

Kiểm tra kiểu động và thiếu khai báo biến rõ ràng làm cho nó trở thành một lựa chọn kém cho các dự án lớn liên quan đến hàng trăm ngàn, thậm chí hàng triệu dòng mã. Điều tương tự cũng xảy ra đối với nhiệm vụ quan trọng hoặc hệ thống quan trọng an toàn. Ví dụ, trong một hệ thống điện tử hàng không, việc hệ thống bị lỗi do lỗi có thể bị bắt tại thời điểm biên dịch là hoàn toàn không thể chấp nhận được.


0

Chà, giống như bạn, tôi cũng mới bắt đầu với Python. Nhưng đối với tôi trong bối cảnh học máy và khoa học dữ liệu.

Tôi cũng vừa có được tất cả các kiến ​​thức mới trong Java 8 và các thư viện hướng luồng mới của nó.

Tôi thực sự yêu thích cảm giác trôi chảy của các thư viện luồng Java 8 mới và tôi cảm thấy gần gũi như thế nào khi sử dụng các thư viện tia lửa Apache. Khi tôi đi vào Python, tôi cũng mong đợi như vậy và hơn thế nữa.

Tôi đã nhìn thấy nhiều hơn. Nhưng ít hơn rất nhiều. Tài liệu kém, mặc dù có rất nhiều; không có tính trôi chảy, và như một vấn đề thực tế, tôi đã đoán được liệu một phương pháp đang trị vì một đối tượng mới hay hoạt động dựa trên điều này; không có gì gần với bản đồ / giảm vv Tôi đã ngạc nhiên khi bị thất vọng.

Tuy nhiên, ngay từ đầu, tôi đã không có kỳ vọng lớn về việc học ngôn ngữ sẽ dễ dàng như thế nào. Tôi đã được tìm thấy là đúng: không nhất quán, không trực quan, khó học. Nhưng đó chỉ là kinh nghiệm của tôi về việc khá giỏi mọi thứ Java như thế nào.

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.