Сколько свободы мне нужно оставить, чтобы выучить новый язык? - PullRequest
13 голосов
/ 24 февраля 2010

Я относительно новичок и начинаю небольшой, довольно простой проект. Язык, на котором будет реализован этот проект, еще не определен. Вопрос в основном сводится к - Java или Python?

Вот дилемма: мой менеджер предпочел бы, чтобы это было сделано в Python. Я не возражаю против этого, но у меня нет опыта работы с Python. Я бы очень хотел изучить Python и подумать, что смогу справиться с этим довольно быстро (особенно потому, что это небольшой проект). НО проект должен быть завершен в конце марта и должен быть готов к тому времени. Поэтому они предпочли бы иметь это на Java и вовремя, чем на Python и позже, и они не хотят заставлять меня делать это на Python, если я думаю, что не могу сделать это вовремя.

Извините за предысторию - но мой вопрос в основном состоит в том, сколько времени в среднем требуется для адаптации к новому языку? Я знаю, что это субъективно и персонифицировано, и зависит от того, насколько быстро работает конкретный программист ... но речь идет о среднестатистическом программисте, или даже о достаточно быстром, который быстро улавливает вещи, какой процент увеличения составляет программирование в не- родной язык (но с похожими понятиями) вызывают? Например, если этот проект займет у меня около 2 недель на языке Java или .NET, сколько времени это займет у меня на Python? Могу ли я предположить, что достаточно удвоить количество времени (т. Е. Новый незнакомый язык вызывает увеличение времени программирования на 50%)?

И включен в этот вопрос - из того, что я слышал, переключение с Java на Python кажется довольно простым / интуитивно понятным. Это правда ...?

Спасибо всем за все ответы! Я не осознавал, что в этом вопросе так много сторон ... Я постараюсь в ближайшее время выбрать ответ - каждый ответ заставлял меня смотреть на это по-своему, и трудно выбрать один ответ.

Ответы [ 12 ]

8 голосов
/ 24 февраля 2010

Я думаю, это зависит от площади проекта. В то время как GUI не сложен в Python, любой вид GUI-фреймворка будет иметь немного крутой кривой обучения. Если это веб-приложение, я бы сказал, пойти на Python. Дополнительное время для обучения быстро возвращается благодаря простому использованию многих веб-структур Python.

Большой риск состоит в том, что вы будете писать код на Python так же, как на Java. Многое из того, что верно в Java, не верно в Python и наоборот. Это, вероятно, сделает ваш код Python медленным и многословным.

Если вы решите попробовать Python, ознакомьтесь с распространенными ошибками, связанными с Java, например: http://dirtsimple.org/2004/12/python-is-not-java.html

7 голосов
/ 24 февраля 2010

У вас есть примерно 5 недель, чтобы завершить проект. Если вы уверены, что Java-версия займет 2 недели, это займет 3 недели, пока вы не сдадитесь. Я говорю пойти на это. Python относительно легко подобрать. Я думаю, что трех недель работы достаточно, чтобы определить, сможете ли вы закончить в срок.

ИМХО, это отличный повод для изучения нового языка. Регулярно обновляйте свой менеджер с вашим прогрессом. Я думаю, что правильное решение станет очевидным со временем.

5 голосов
/ 24 февраля 2010

Эмпирическое правило моего босса в любое время, когда есть кривая обучения, это может утроить время, чтобы написать приложение. Итак, если Java займет у вас две недели, то Python может занять около 6.

4 голосов
/ 24 февраля 2010

Это всегда занимает больше времени, чем вы думаете.

Попробуйте написать небольшую программу, делающую только то, что вам нужно. Если вы хотите написать программу с графическим интерфейсом, создайте небольшую программу, показывающую фрейм с Hello World и кнопкой Ok, и посмотрите, насколько это сложно.

3 голосов
/ 24 февраля 2010

Питон похож на детскую яву, вы поднимете ее на одном дыхании.

2 голосов
/ 24 февраля 2010

Я бы сказал, если вы хотите избежать возможных головных болей, делайте это на Java и изучайте Python дома, пытаясь заново создать приложение, подобное тому, которое вы делаете на работе, если вы хотите что-то, что кажется реальным. Вполне вероятно, что если вы не знакомы с Python, вы все равно не будете использовать его возможности. Однажды я посмотрел на первое приложение Python, которое я сделал, и выглядело так, как будто я написал приложение Object Pascal с синтаксисом Python

2 голосов
/ 24 февраля 2010

Если вы Google для «Pythonic», вы найдете много дискуссий о том, как делать вещи способами, которые хорошо вписываются в Python, будет легко понять другим пользователям Python и так далее. Всегда требуется время, чтобы перейти от кода, который просто работает на языке, к хорошему использованию этого языка - и в случае с Python эта кривая обучения немного длиннее, чем обычно.

В конце я бы сказал, что ответ зависит от вашего возраста и личности (и вашего восприятия "личности" вашего работодателя). Условно говоря, Java является консервативным подходом - он снижает риски и, вероятно, дает наилучшие шансы завершить работу вовремя и в рамках бюджета. Использование языка, который вы не знаете, увеличивает риск не доставить то, что вам нужно. Скорее всего, вы в конечном итоге напишите это (по крайней мере) дважды, один раз в форме, которая очень похожа на ту, что вы делали в Java, а затем снова в форму, которая более Pythonic. Это может означать, что некоторые поздние ночи, особенно если у вас есть неделя, чтобы пойти (или что-то в этом порядке) и понять, что вам нужно (или сильно хотите) переписать почти все, что вы сделали до сих пор.

В основном все сводится к вопросу о том, устраивает ли вас этот риск.

2 голосов
/ 24 февраля 2010

Ну, я бы сказал, как быстро вы выбираете Python, также зависит от того, какие другие языки вы знаете (или комфортно), кроме Java. Если единственный язык, который вы знаете, это Java, то я не думаю, что переход с Java на Python будет интуитивным или плавным. Для начала Java является статически типизированным, а Python динамически типизированным, и требуется некоторое время, чтобы привыкнуть к ОО-программированию на Python, даже если вы владеете навыками использования ОО-технологий с использованием Java. Поэтому я бы сказал, соблюдайте сроки и завершите проект вовремя (или раньше :) с использованием Java, поскольку это то, чего требует ваша работа.

Продолжайте изучать Python и автоматизируйте некоторые рутинные действия, которые вы выполняете с помощью Python, так что вы получите достаточный уровень уверенности для работы над новым проектом с использованием Python.

1 голос
/ 24 февраля 2010

Как правило, если я не знаком с языком, я позволю ему хотя бы месяц освоиться с ним. Два или три месяца, если это будет за пределами моей «зоны комфорта» C-подобных языков. Сказав это, я думаю, что Java и Python достаточно похожи, чтобы вы могли немного обрезать их.

Кроме того, насколько хороши ваши оценки, если вы знакомы с языком, исходя из вашей собственной истории? Если вы думаете, что на Java потребуется две недели, насколько хорошо вы можете рассчитывать на эту оценку? Лично я иногда чувствую себя намного хуже, даже когда я думаю, что я настроен пессимистично, но, возможно, вы лучше меня оцениваете.

Часть меня испытывает соблазн сказать: «Пойди на Питон». По крайней мере, отчасти потому, что я фанат Python. Однако, как новый сотрудник, вы, вероятно, должны произвести хорошее впечатление, и я думаю, что вы добьетесь этого лучше, выполняя вовремя (или рано), чем изучая Python.

Однако, если есть части, которые можно четко разделить и выполнить в Python, возможно, вы могли бы выполнить некоторые части в Java и другие части в Python.

0 голосов
/ 15 июля 2010

Мое личное предпочтение - изучать новые языки в личных проектах и ​​использовать инструменты, которые я уже понимаю в профессиональных проектах. Так что если бы это был я, я бы делал проект на Java и делал несколько маленьких проектов на Python дома.

Но, конечно, вы гораздо больше учитесь намного быстрее, когда вы используете новый язык «по-настоящему» сорок часов в неделю, поэтому, если у вас есть адекватная поддержка со стороны руководства и коллег, воспользуйтесь этой возможностью .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...