Насколько я должен покинуть себя, чтобы выучить новый язык?

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

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

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

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

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

Ответы

Ответ 1

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

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

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

Ответ 2

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

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

Ответ 3

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

Ответ 4

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

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

Ответ 5

Python похож на детскую java, вы поднимете его на ветру.

Ответ 6

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

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

Ответ 7

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

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

В основном это зависит от того, согласны ли вы с этим риском.

Ответ 8

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

Ответ 9

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

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

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

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

Ответ 10

Вы просто программируете, или вы проектируете/архивируете?

Если вы кодируете в соответствии с дизайном, который опытный ресурс Python уложил, я бы дал себе 3-4 раза, так как вы описали это как небольшой, довольно простой проект.

Если вы сами проектируете/архитектируете, вы подвергаетесь большому риску, пытаясь одновременно изучать новый язык. Там слишком много шансов, что вы можете создать что-то в начале, которое является основой вашего дизайна, только позже, чтобы понять, что он не работает, и вам нужно переписать много вещей из-за этого.

Сказав это, я представляю риски и т.д. вашему менеджеру (показывая ваш очевидный энтузиазм по изучению Python) и позвольте ему сделать звонок.

Ответ 11

Чарли, будучи новым наемным и все, вы не должны принимать решение о том, какую технологию кодировать проект. Это управленческое решение.

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

Какая технология хорошо служит вашим целям? Предполагая, что это действительно можно сделать в python и java:

  • Является ли время выхода на рынок действительно важным?
  • Если вам нужно расширить свою команду (т.е. расширить проект), сможете ли вы нанять больше программистов на Python? Являются ли они более или менее дорогими, чем Java-программисты?
  • Существуют ли другие проекты на Python на вашем предприятии (или на ваших предприятиях-клиентах)? Гомогенную среду легче администрировать.
  • Узнайте отличия между Java и Python и посмотрите, какой из них лучше подходит для этой проблемы. Например, Python, вероятно, работает хуже, чем Java... Но программы Python могут быть запрограммированы и протестированы быстрее.

И, конечно, да, вы можете принять во внимание, что есть кривая обучения. Как сказал еще один ответ, Python очень прост, так же как и Java и почти каждый общий язык. Что убивает вас, это изучение API, SDK, средств отладки, различий в среде и т.д.

Другое дело, что я извлекаю из опыта: никогда не верю, что проект делается, когда это делается. Все меняется, поэтому, когда вы доставляете продукт, ваш менеджер или ваш клиент (тот, кто его будет использовать) попросит вас что-то изменить, и как только вы закончите с этим изменением, будет больше. Программное обеспечение - это живые существа... они только перестают меняться, когда они мертвы.

Ответ 12

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

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