2009-08-03 32 views
12

Gần đây tôi quyết định mở rộng tầm nhìn lập trình của mình và học ngôn ngữ lập trình python. Trong khi tôi đã sử dụng python một chút cho các lớp học ở trường đại học và cho một hoặc hai dự án tại nơi làm việc, tôi không phải là một chuyên gia. Câu hỏi của tôi là như sau: Tôi có nên bận tâm với bản phát hành 2.x hay tôi nên chuyển thẳng đến 3.0? Tôi nghiêng về phía 3.0 vì tôi sẽ là ứng dụng lập trình nhiều hơn cho việc sử dụng cá nhân/học tập, nhưng tôi muốn xem liệu có bất kỳ lý lẽ nào chống lại nó trước khi tôi bắt đầu hay không.Tôi có nên bắt đầu với Python 3.0 không?

+1

Xem thêm http://stackoverflow.com/questions/533510/whos-using-python-3-0/533529 –

Trả lời

20

Tuyệt đối không phải 3,0 - 3,1 đã hết và nhanh hơn, tốt hơn, nhanh hơn ở mọi khía cạnh; nó làm cho hoàn toàn không có ý nghĩa để bắt đầu với 3,0 tại thời điểm này, nếu bạn muốn mất 3 series nó nên trên tất cả các tài khoản được 3.1.

Đối với phiên bản 2.6 và 3.1, 3.1 là ngôn ngữ tốt hơn (đặc biệt là vì một số tàu bị loại bỏ đã tích lũy qua nhiều năm nhưng phải ở mức 2. * để tương thích ngược) nhưng tất cả phần còn lại của hệ sinh thái (từ phần mở rộng) với các công cụ, từ sách đến tri thức tập thể) vẫn còn nhiều ưu tiên 2.6 - nếu bạn không quan tâm đến việc có thể sử dụng (ví dụ) một số GUI hoặc mở rộng khoa học, triển khai trên App Engine, kịch bản Windows với COM, một IDE bên thứ ba, và vân vân, 3.1 được khuyến khích, nhưng nếu bạn quan tâm đến những thứ như vậy, vẫn còn 2. * cho bây giờ.

+0

Rất tiếc là tôi không thể tìm thấy Python 3.1 trong kho lưu trữ Ubuntu. – riza

+0

Sau đó lấy nó từ python.org –

+3

Nhiều thư viện hơn GUI, khoa học, vv vẫn chỉ hỗ trợ 2.6. – aehlke

4

Tôi nghĩ rằng bạn sẽ được phục vụ tốt hơn đi thẳng vào 3.0. Trừ khi bạn có một codebase cũ để tranh luận, có rất ít lợi thế để học cách 2.xx làm việc.

Trong thế giới Python (như trong hầu hết những người khác, thực sự), bản phát hành có xu hướng mất một thời gian để di chuyển xuống tất cả các tiểu dự án, nhưng nếu bạn thấy cần phải chuyển đổi về 2.xx, tôi không Đừng nghĩ rằng bạn sẽ tìm thấy những thứ cần thiết để trở nên đặc biệt đau đớn.

+3

Vấn đề là nó hoạt động tốt hơn theo một hướng khác. Bắt đầu với 2.6, sau đó khi 3.x có hỗ trợ bên thứ ba tốt hơn, v.v., nó sẽ dễ dàng di chuyển đến nó. Và sẽ không còn nhiều điều nữa để học, vì 2.6 có các tính năng 3.x được chuyển đổi ngược lại. – aehlke

2

Sử dụng trăn 3.1, Luke.

+0

Tại sao? -1. – aehlke

+1

Nhiều người sử dụng cổng py3.x => nhanh hơn lib. Tôi không quan tâm đến - + 1. –

+0

Điều đó khá không thực tế và không hữu ích cho câu hỏi này. – aehlke

3

Bạn nên sử dụng bản phát hành mới nhất của bất kỳ ngôn ngữ lập trình nào bạn học trừ khi bạn có lý do cụ thể không phải. Vì bạn không có dự án hiện tại không hoạt động với Python 3.0, bạn nên sử dụng phiên bản mới nhất.

+4

-1. Lời khuyên không hợp lý, đáng thương: "Bạn nên đi với bản phát hành mới nhất của bất kỳ ngôn ngữ lập trình nào" - mọi thứ có nhiều sắc thái hơn thế này. Ngoài ra, bản phát hành mới nhất là gì? Phiên bản ổn định? – aehlke

+1

"... trừ khi bạn có lý do cụ thể." Đừng chỉ trích dẫn một phần câu và nói với tôi rằng tôi sai. Hãy toàn bộ điều trong bối cảnh. Có, bản phát hành ổn định mới nhất. –

+2

Đó vẫn là lời khuyên sai lầm. Anh ấy không có lý do cụ thể để không, đó là lý do anh ta hỏi - nhưng tôi có thể cho anh ta một ít. – aehlke

2

Không nên sử dụng Python 3.1 cho đến khi các thư viện khác bắt kịp hỗ trợ cho nó.

Bạn nên sử dụng 2.6 ngay bây giờ. Nó có một số tính năng 3.x back-ported với nó, để di chuyển đến 3.x sẽ không được khó khăn sau này, và bạn sẽ không tìm hiểu thực hành lỗi thời.

+0

Bạn có thực sự phụ thuộc vào thư viện của bên thứ ba không? – riza

+0

Nó khá phổ biến. Học Python là càng nhiều về việc học các API vì nó là 'ngôn ngữ' chính nó - và tại sao tránh các phần mở rộng hữu ích cho API? – aehlke

+0

Bên cạnh đó, một khi anh ấy biết và muốn làm điều gì đó với nó, tôi nghi ngờ nó sẽ đủ dài để hỗ trợ thư viện của bên thứ ba tốt - ít nhất một vài năm. – aehlke

2

Tin vui là không khó để học cả Python 2.x và 3.x. Bạn có thể cài đặt phiên bản 2.x mới nhất làm phiên bản đã đăng ký với hệ thống để chạy tập lệnh Python theo mặc định, nhưng cũng cài đặt phiên bản 3.x mới nhất để khởi động rõ ràng khi bạn muốn. Đó là những gì tôi có trên hệ thống Windows Vista của mình.

Sau đó, các tài liệu quan trọng cho việc học sự khác nhau giữa các phiên bản 2.x và 3.x là:

http://docs.python.org/3.1/whatsnew/3.0.html

Nếu bạn đọc Python vật liệu ra khỏi đó mà được dựa trên 2.x học tập và cũng đề cập đến liên kết "Có gì mới trong Python 3.0" ở trên, bạn sẽ hiểu được mọi thứ đã thay đổi như thế nào. Ngoài ra xem các tài liệu mới khác của whats, như cho sự khác biệt giữa 3.0 và 3.1, nhưng liên kết ở trên là một trong những chính để hiểu các thay đổi 2.x so với 3.x.

+0

Câu trả lời này có lẽ là mục tiêu lớn nhất của tất cả những người thân thiện với Py3. Nếu bạn chỉ muốn "học Python" - sau đó tìm hiểu cả hai, cài đặt chúng cạnh nhau và WET (viết tất cả mọi thứ hai lần). Với một số cảnh báo, các chương trình cơ bản nhất sẽ được di chuyển giữa hai ngôn ngữ * này. Nếu bạn đang đối mặt với một nhiệm vụ thực dụng, tôi muốn cẩn thận hơn với Py3. Tôi không biết tại sao một số người đang khao khát một Py2.8 - tôi muốn nói một Py4 không tương thích Py3 (giữ một số thứ tốt từ Py3: conflate str và unicode, để lại BOTH keywords). Py4 của tôi sẽ tương thích ngược với Py2 và (ít quan trọng hơn) Py3. –

7

Câu trả lời ngắn: Bắt đầu với Python 2.6.

Lý do: Lập trình thú vị và hữu ích hơn khi bạn có thể tận dụng công việc của người khác.Điều này có nghĩa là sử dụng thư viện của bên thứ ba thường xuyên. Nhiều thư viện phổ biến cho Python không có hỗ trợ 3.x. PIL và NumPy/SciPy đến với tâm trí. Trình thông dịch yêu thích của tôi, ipython, cũng không hoạt động với 3.0. Nhiều đơn vị kiểm tra khuôn khổ và khuôn khổ web cũng không phải trên 3.0 được nêu ra.

Vì vậy, nếu bạn bắt đầu ở 3.x nhiều cửa sẽ đóng lại cho bạn, ít nhất là cho đến khi 3.x việc chuyển sẽ mất hơi. Có rất nhiều tính năng tốt đẹp trong Python 3.x, nhưng một số trong số chúng đã được backported thành 2.6 và một số khác sẽ làm cho nó thành 2.7. Vì vậy, gắn bó với 2.6 cho bây giờ, và tái đánh giá 3.x trong một năm của thời gian hoặc lâu hơn.

8

Sử dụng 3.1

Tại sao?

1) Vì miễn là mọi người vẫn đang sử dụng 2.6, các thư viện sẽ có ít lý do để chuyển sang 3.1. Miễn là các thư viện đó không được chuyển sang 3.1, bạn bị mắc kẹt với sự lựa chọn hoặc không sử dụng điểm mạnh của 3.1, hoặc chỉ thực hiện các công việc một nửa bằng cách sử dụng giải pháp hackish bằng cách sử dụng một bộ tính năng được chuyển đổi ngược. Hãy là một nhà tư tưởng tiến bộ và giúp đẩy Python về phía trước.

2) Nếu bạn học và sử dụng 3.1 ngay bây giờ, bạn sẽ không phải học lại sau khi cổng khối lượng hoàn tất. Tôi biết một số người nói rằng bạn sẽ không phải học nhiều, nhưng tại sao lại học cái crap cũ? Bản thân Python đang di chuyển về phía 3.1, các thư viện sẽ di chuyển về phía 3.1, và nó hút để phải bắt kịp và học lại một ngôn ngữ bạn đang sử dụng.

3) 3.1 là tất cả xung quanh một ngôn ngữ tốt hơn, ổn định hơn và phù hợp hơn 2.6 ... điều này là bình thường. Các bài học rút ra từ 2,6 đều được đổ vào 3.1 để làm cho nó tốt hơn. Đây là một quá trình được gọi là PROGRESS. Đây là lý do tại sao không ai vẫn sử dụng Windows 3.1. Đó là cách mọi thứ di chuyển FORWARD. Tại sao bạn lại nghĩ rằng họ đã gặp rắc rối khi quay lại một tập hợp tính năng ngay từ đầu?

4) Nếu bạn đang học Python, và học 2.6, khi bạn thực sự cảm thấy thoải mái với ngôn ngữ, các cổng sẽ bị tắt và bạn sẽ phải học lại các thư viện và ngôn ngữ. Nếu bạn bắt đầu với 3.1, thì khi bạn cảm thấy thoải mái với ngôn ngữ, các cổng sẽ bị tắt, và sau đó bạn có thể tìm hiểu các thư viện mà bạn quan tâm. Đó là một quá trình mượt mà hơn.

5) Để trở thành nhà phát triển tốt hơn. Nếu bạn phải học và học lại những điều tương tự, sự hiểu biết của bạn sẽ không sâu sắc. Bằng cách học ngôn ngữ này, và các thư viện của nó chỉ một lần, bạn sẽ có nhiều thời gian hơn để làm việc với chúng hơn là thay đổi cú pháp. Điều này cho phép bạn hiểu chúng tốt hơn. Nếu bạn đang thực sự thiếu một số phần bằng cách gửi đi trên các thư viện? VIẾT CHÚNG. Có thể bạn sẽ không cần toàn bộ thư viện, và thường chỉ có thể viết những phần mà bạn cần, và phát triển các công cụ cho chính bạn. Điều này, một lần nữa, giúp bạn hiểu ngôn ngữ tốt hơn và sâu sắc hơn.

+1

Hãy để tôi dịch câu trả lời ở trên sang ngôn ngữ của con người: "Có, hy sinh bản thân vì lợi ích của Python 3.x và sử dụng nó. Thiếu thư viện? Đừng lo lắng, khi nhiều suckers như bạn chuyển sang Python 3.x, cuối cùng là những người bảo trì thư viện sẽ bị xúc động bởi sự đáng tiếc và cũng là cổng tới 3.x - sử dụng 'sáu' hoặc như vậy. Đó là một ngôn ngữ tốt hơn, và chậm gấp đôi 2.7 (chậm, GIL tâm trí) chỉ là vấn đề triển khai trong CPython." Lời khuyên của tôi: đừng nghe người khác. Đưa ra quyết định của riêng bạn và chịu hậu quả. Kiểm tra những gì hoạt động, không phải những gì fanboys nói với bạn là "đúng". –

Các vấn đề liên quan