2010-02-24 61 views
13

Tôi là một người thuê tương đối mới, và tôi bắt đầu một dự án nhỏ, khá đơn giản. Ngôn ngữ mà dự án này sẽ được triển khai vẫn đang được xác định. Câu hỏi về cơ bản là - Java hay Python?Tôi mất bao nhiêu thời gian để học một ngôn ngữ mới?

Đây là tình thế tiến thoái lưỡng nan: Người quản lý của tôi muốn nó được thực hiện bằng Python. Tôi không phản đối điều đó, nhưng tôi không có kinh nghiệm trong Python. Tôi thực sự thích học Python và nghĩ rằng tôi có thể quản lý nó khá nhanh (đặc biệt là nó là một dự án nhỏ). NHƯNG dự án đến hạn vào cuối tháng 3 và phải sẵn sàng sau đó. Vì vậy, họ muốn có nó trong Java và đúng thời gian hơn trong Python và muộn, và họ không muốn ép tôi làm điều đó bằng Python nếu tôi nghĩ rằng tôi không thể làm cho nó về thời gian.

Xin lỗi về nền - nhưng câu hỏi của tôi về cơ bản là, trung bình, phải mất bao lâu để thích nghi với một ngôn ngữ mới? Tôi biết điều này là chủ quan và được cá nhân hóa, và phụ thuộc vào tốc độ của lập trình viên cụ thể ... nhưng nói về một lập trình viên trung bình, hoặc thậm chí là một lập trình viên nhanh chóng chọn nhanh mọi thứ. ngôn ngữ mẹ đẻ (nhưng với khái niệm tương tự) gây ra? Như trong, nếu dự án này sẽ đưa tôi khoảng 2 tuần trong Java hoặc một ngôn ngữ .NET, tôi có thể mất bao lâu nữa trong Python? Tôi có thể giả định rằng có gấp đôi lượng thời gian (tức là một ngôn ngữ mới, không quen thuộc gây ra tăng 50% thời gian lập trình) là đủ?

Và được bao gồm trong câu hỏi này - từ những gì tôi đã nghe, có vẻ như khá dễ dàng/trực quan để chuyển đổi từ Java sang Python. Điều này có đúng không ...?

Cảm ơn mọi người cho tất cả các câu trả lời! Tôi đã không nhận ra có quá nhiều mặt cho câu hỏi này ... Tôi sẽ cố gắng chọn một câu trả lời sớm - mỗi câu trả lời làm tôi nhìn nó theo một cách khác và thật khó để chọn một câu trả lời.

Trả lời

8

Tôi nghĩ điều đó phụ thuộc vào khu vực của dự án. Trong khi GUI không phải là khó trong Python, bất kỳ loại GUI-framework sẽ có một đường cong học tập hơi dốc. Nếu nó là một webapp, tôi muốn nói đi cho Python. Thời gian học tập tăng thêm nhanh chóng trở lại bằng cách dễ dàng sử dụng nhiều webframeworks Python.

Rủi ro lớn là bạn sẽ mã Python giống như bạn mã Java. Nhiều điều trong Java đúng là không đúng trong Python và ngược lại. Nó có thể sẽ làm cho mã Python của bạn chậm và tiết.

Nếu bạn quyết định thử Python, đọc lên trên cạm bẫy phổ biến đến từ Java, ví dụ: http://dirtsimple.org/2004/12/python-is-not-java.html

+0

Chi tiết có, chậm sẽ khó nhận thấy. –

+0

Mô hình. Tôi đã từng làm chính xác điều này, python được mã hóa khi tôi mã C# hoặc C++. Và giờ tôi đang mã hóa COBOL ... một số lập trình viên khác không thể giết tôi khi tôi làm những việc nhất định ... –

5

Quy tắc ngón tay cái của ông chủ của tôi là bất kỳ lúc nào có đường cong học tập, nó có thể tăng gấp ba lần thời gian viết ứng dụng. Vì vậy, nếu Java sẽ đưa bạn hai tuần, sau đó Python có thể mất khoảng 6.

+2

Tuy nhiên, bạn sẽ không bao giờ tìm hiểu bất kỳ điều gì mới nếu bạn không bắt đầu ngay bây giờ. Nó sẽ mất nhiều thời gian hơn. Nó sẽ rất khó. Sếp của bạn muốn bạn học Python. Học Python. –

+0

Yêu cầu của anh ta là phải thực hiện vào cuối tháng 3, Python chỉ là một sở thích không phải là yêu cầu. – Robin

+2

@Robin: Trên thực tế, dự án chỉ là "do". Đó cũng có thể là một sở thích. Nó không phải là một "thời hạn khó" như trong "tất cả chúng ta sẽ bị sa thải nếu bạn không làm được điều này". Nó chỉ là "do". –

3

Python giống như em bé java, bạn sẽ nhặt nó lên một cách dễ dàng.

+0

Tôi đồng ý rằng Python sẽ dễ học hơn nhưng sẽ nói rằng nó giống như đã lớn lên Java! :-) – GreenMatt

+1

Nếu bạn viết các chương trình Java bằng cú pháp Python, bạn sẽ làm tốt. Python làm tất cả mọi thứ Java, và nhiều hơn nữa. Bạn thậm chí có thể tiếp tục sử dụng ';' nếu điều đó làm bạn vui. –

+0

@ S.Lott: nhưng bạn vẫn sẽ cần phải thụt lề * chính xác * mã của bạn ... :) –

4

Luôn mất nhiều thời gian hơn bạn nghĩ.

Hãy thử viết một chương trình nhỏ chỉ làm một chút những gì bạn cần. Nếu bạn muốn viết một chương trình với GUI thì hãy làm cho chương trình nhỏ hiển thị một khung với Hello World và nút Ok và xem nó cứng như thế nào.

0

Bạn chỉ đang lập trình hay bạn đang thiết kế/kiến ​​trúc sư?

Nếu bạn đang mã hóa theo thiết kế mà tài nguyên Python có kinh nghiệm đã được sắp xếp, tôi sẽ tự cho mình 3-4 lần kể từ khi bạn mô tả đây là một dự án nhỏ, đơn giản.

Nếu bạn đang thiết kế/kiến ​​trúc bản thân mình thì bạn đang chấp nhận rủi ro lớn bằng cách cố gắng học một ngôn ngữ mới cùng một lúc. Có quá nhiều cơ hội mà bạn có thể thiết kế một cái gì đó lúc khởi đầu đó là cốt lõi cho thiết kế của bạn, chỉ để tìm ra sau đó rằng nó không hoạt động và bạn cần phải viết lại rất nhiều thứ vì nó.

Điều đó đang được nói rằng tôi sẽ trình bày những rủi ro và như vậy cho người quản lý của bạn (thể hiện sự nhiệt tình rõ ràng của bạn cho việc học Python) và để anh ta thực hiện cuộc gọi.

+0

Vấn đề là anh ấy để nó cho tôi. Anh ấy biết tất cả những rủi ro và mọi thứ và muốn tôi đưa ra quyết định của riêng tôi. – charlie

+1

@charlie - Hmmmm ..... Trong trường hợp đó, tôi đích thân đi tìm Python. Tôi thích học những điều mới và không có gì khoan những ngôi nhà như có một dự án. Hãy chắc chắn rằng bạn thiết lập một dòng thời gian tốt để bắt đầu với mặc dù để bạn có thể theo dõi sự tiến bộ của bạn và chắc chắn rằng bạn vẫn còn ontrack. Chúc may mắn :-) –

2

Tôi cũng nói tốc độ bạn nhận Python cũng phụ thuộc vào những ngôn ngữ khác mà bạn biết (hoặc thoải mái) ngoài Java.Nếu ngôn ngữ duy nhất bạn biết là Java thì tôi không nghĩ rằng việc chuyển đổi từ Java sang Python sẽ trực quan hoặc trơn tru. Để bắt đầu với Java được gõ tĩnh và Python được gõ động, và phải mất một thời gian để làm quen với lập trình OO bằng Python ngay cả khi bạn có kỹ năng sử dụng các kỹ thuật OO bằng cách sử dụng Java. Vì vậy, tôi sẽ nói vinh dự thời gian và hoàn thành dự án trong thời gian (hoặc sớm hơn :) bằng cách sử dụng Java vì đây là những gì công việc của bạn yêu cầu.

Tiếp tục học Python và tự động hóa một số hoạt động thường lệ bạn sử dụng Python để bạn có được mức độ tin cậy hợp lý để làm việc với dự án mới bằng cách sử dụng Python.

7

Bạn có khoảng 5 tuần để hoàn thành dự án. Nếu bạn tự tin rằng phiên bản Java sẽ mất 2 tuần, điều đó sẽ mất 3 tuần để chạy xung quanh với phiên bản Python cho đến khi bạn phải từ bỏ. Tôi nói đi. Python là tương đối dễ dàng để chọn lên. Tôi nghĩ rằng ba tuần làm việc là đủ để thời gian để biết liệu bạn có thể hoàn thành trước thời hạn.

IMHO, đây là lý do tuyệt vời để bạn học một ngôn ngữ mới. Tiếp tục cập nhật trình quản lý của bạn thường xuyên với tiến trình của bạn. Tôi nghĩ quyết định đúng đắn sẽ trở nên rõ ràng khi thời gian trôi qua.

+0

Whoa, whoa, whoa. Trong khi tôi đồng ý với ý kiến ​​của bạn 100%, chúng ta không đặt những lời trong miệng của người quản lý của mình rằng đây là một "cơ hội lớn" cho bất cứ điều gì. Anh ta nói, "Quản lý của tôi muốn nó được thực hiện bằng Python." Trong hầu hết các văn phòng, ý nghĩa sẽ nằm dọc theo dòng: "Nhiều người có kiến ​​thức cốt lõi về Python ở đây (dễ bảo trì hơn)", Python ít tiết hơn, do đó dễ dàng hơn cho người khác thêm/sửa/sửa/duy trì. " Thực hiện, và Gets Những điều thông minh :) –

+0

Đó là một "Tôi muốn bạn học Python cuối cùng và đây là một dự án tốt để bắt đầu." Hầu hết các công cụ của họ được thực hiện bằng Java, nhưng rất nhiều thứ bên/mã throwaway, vv được thực hiện bằng Python. – charlie

+0

@Marc Bollinger, bạn nói đúng, anh ấy không nói ở đâu cả. Tôi phải suy ra nó từ những bình luận và điều gì đó. Tôi đã chỉnh sửa câu trả lời của mình cho phù hợp. Phần quan trọng nhất là OP không nên ngồi trong một lỗ trong ba tuần học một ngôn ngữ mới mà không cần cập nhật bất cứ ai về sự tiến bộ của anh ta. –

2

Nếu bạn sử dụng Google cho "Pythonic", bạn sẽ thấy rất nhiều cuộc thảo luận về cách thực hiện mọi thứ theo cách phù hợp với Python, sẽ dễ hiểu bởi người dùng Python khác, v.v. Nó luôn luôn mất một lúc để tiến bộ từ mã mà chỉ đơn giản là làm việc trong một ngôn ngữ để sử dụng ngôn ngữ đó tốt - và trong trường hợp của Python, rằng đường cong học tập là một chút dài hơn bình thường.

Cuối cùng, tôi muốn nói câu trả lời phụ thuộc vào tuổi tác và cá tính của bạn (và nhận thức của bạn về "tính cách" của chủ lao động của bạn). Nói một cách tương đối, Java là cách tiếp cận bảo thủ - nó làm giảm rủi ro và có thể tạo cơ hội tốt nhất để hoàn thành công việc đúng hạn và trong ngân sách. Sử dụng một ngôn ngữ bạn không biết làm tăng nguy cơ không cung cấp những gì cần thiết. Rất có thể là bạn sẽ phải viết nó (ít nhất) hai lần, một lần trong một hình thức khá giống với những gì bạn đã làm trong Java, và sau đó một lần nữa trong một hình thức đó là nhiều hơn Pythonic. Điều đó có thể có nghĩa là một số đêm muộn, đặc biệt nếu bạn xuống đến một tuần để đi (hoặc thứ gì đó theo thứ tự đó) và nhận ra bạn cần (hoặc muốn) để viết lại gần như tất cả mọi thứ bạn đã làm cho đến nay.

Chủ yếu là câu hỏi liệu bạn có thoải mái với giả định rủi ro đó không.

2

Tôi muốn nói nếu bạn muốn tránh những cơn đau đầu có thể xảy ra, hãy thực hiện trong Java và học Python tại nhà, bằng cách cố gắng tạo lại một ứng dụng tương tự với ứng dụng bạn đang làm việc, nếu bạn muốn . Có khả năng là nếu bạn không quen với Python, bạn sẽ không tận dụng được các khả năng của nó. Khi tôi đã xem xét ứng dụng Python đầu tiên mà tôi đã tạo và có vẻ như tôi đã viết một ứng dụng Object Pascal theo cú pháp Python

1

Nói chung, nếu tôi không quen với ngôn ngữ, tôi cho phép ít nhất một tháng để có được phần nào thoải mái với nó. Hai hoặc ba tháng nếu nó nằm ngoài "vùng thoải mái" của tôi về các ngôn ngữ giống như C.Có nói rằng, tôi nghĩ rằng Java và Python là đủ tương tự mà bạn có thể cắt một chút.

Ngoài ra, dựa trên lịch sử của riêng bạn, ước tính của bạn tốt đến mức nào khi bạn quen với một ngôn ngữ? Nếu bạn nghĩ rằng nó sẽ mất hai tuần để làm điều đó trong Java, bạn có thể dựa vào ước tính đó như thế nào? Cá nhân, tôi đôi khi theo cách, ngay cả khi tôi nghĩ rằng tôi đang bi quan, nhưng có lẽ bạn đang ước tính tốt hơn so với tôi.

Một phần của tôi bị cám dỗ để nói "Đi cho Python". Đó là ít nhất một phần vì tôi là một fan hâm mộ Python. Tuy nhiên, với tư cách là một người thuê mới, bạn có lẽ nên tạo ấn tượng tốt, và tôi nghĩ bạn sẽ làm điều đó tốt hơn bằng cách cung cấp đúng thời gian (hoặc sớm) hơn là học Python.

Tuy nhiên, nếu có các phần có thể được phân tách rõ ràng và được thực hiện bằng Python, có thể bạn có thể thực hiện một số phần trong Java và các phần khác bằng Python.

0

Charlie, là người thuê mới và tất cả, bạn không nên thực sự quyết định công nghệ mã hóa dự án. Đây là một quyết định quản lý.

Thực tế, mặc dù kỹ năng của nhóm có thể được sử dụng để xác định công nghệ lựa chọn cho một hoặc một dự án khác, nhưng có rất nhiều điều quan trọng khác cần lưu ý.

Công nghệ nào phục vụ mục đích của bạn?Giả sử nó thực sự có thể được thực hiện trong python và java:

  • là thời gian đưa ra thị trường thực sự quan trọng?
  • Nếu bạn cần mở rộng nhóm của mình (ví dụ: mở rộng dự án), bạn có thể thuê thêm lập trình viên Python không? Chúng có đắt hơn nhiều so với các lập trình viên Java không?
  • Có dự án nào khác bằng Python tại doanh nghiệp của bạn (hoặc doanh nghiệp khách hàng của bạn) không? Một môi trường đồng nhất dễ quản trị hơn.
  • Tìm hiểu sự khác biệt giữa Java và Python và xem cái nào áp dụng tốt hơn cho vấn đề. Ví dụ, Python có thể hoạt động kém hơn Java ... Nhưng các chương trình Python có thể được lập trình và thử nghiệm một cách nhanh chóng hơn.

Và, tất nhiên, có bạn có thể xem xét rằng có một đường cong học tập. Như một câu trả lời khác đặt nó, Python là rất đơn giản, và như vậy là Java và hầu như tất cả các ngôn ngữ phổ biến ra khỏi đó. Điều gì khiến bạn chết là học API, các công cụ gỡ lỗi, SDK, sự khác biệt về môi trường, v.v.

Một điều nữa, tôi rút ra từ kinh nghiệm: không bao giờ tin rằng một dự án được thực hiện khi hoàn thành. Mọi thứ thay đổi, vì vậy khi bạn phân phối sản phẩm, người quản lý hoặc khách hàng của bạn (bất kỳ ai sẽ sử dụng nó) sẽ yêu cầu bạn thay đổi thứ gì đó và khi bạn đã hoàn tất thay đổi đó, sẽ có nhiều hơn. Phần mềm là sinh vật sống ... chúng chỉ ngừng thay đổi khi chúng chết.

0

Sở thích cá nhân của tôi là học ngôn ngữ mới về các dự án cá nhân và sử dụng các công cụ tôi đã hiểu về các dự án chuyên nghiệp. Vì vậy, nếu đó là tôi, tôi sẽ làm dự án trong Java, và làm một vài dự án Python nhỏ ở nhà. Nhưng tất nhiên, bạn học nhanh hơn rất nhiều khi bạn sử dụng một ngôn ngữ mới "thực" bốn mươi giờ một tuần, vì vậy nếu bạn có sự hỗ trợ đầy đủ từ quản lý và đồng nghiệp, thì hãy tận dụng lợi thế của cơ hội.

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