2009-12-03 5 views
8

Я чувствую, что возвращаюсь к каменному веку.как перейти с C# на python?

Как разучиться, чтобы развиваться без intellisense (pydev intellisense не учитывается) .. В общем, как можно успешно покинуть визуальную студию?

+0

Я не могу стоять, делая что-либо без intellisense сейчас lol – Cyclone

+5

Ничего себе, вы действительно полагаетесь на intellisense так много? Это плохой знак ... –

+10

Не будьте так тяжелы на billy r. Если вы всегда работаете в визуальной студии (как и многие другие), где intellisense всегда доступен, вы привыкнете к ней. Вы могли бы просто использовать блокнот и быть «лучшим» разработчиком, но вы этого не выиграли. Не стесняйтесь использовать доступные функции. «Пристрастие» к intellisense редко бывает добровольным. Теперь я полностью согласен с тем, что вы сможете справиться без него. Это дело только в том, чтобы делать это. : D –

ответ

8

Недавно я изучил питон с сильным фоном C#.

Советую: Просто сделайте это. Извините, не мог удержаться, но я тоже серьезно. Установите python и прочитайте: Python.org documentation (v2.6). Книга тоже может помочь - мне нравится the Python PhraseBook. Оттуда я начал использовать python для реализации решений для разных вещей. В частности, вопросы ProjectEuler.net.

Это заставило меня рассмотреть языки и встроенные структуры данных.

Python действительно прост в использовании и интуитивно понятен. Чтобы узнать основы, занял у меня около часа. Чтобы справиться с этим, прошло около 5 часов. Конечно, всегда есть чему поучиться.

Кроме того, я хочу отметить, что я буду препятствовать использованию IronPython или Jython, потому что я чувствую, что участвую в ядре, обычный python - это первый шаг.

+0

Изучение всех инструментов в стандартной библиотеке: это может занять несколько дней или недель, в зависимости от того, что вам нужно сделать. –

+0

Довольно хорошо в течение 5 часов? Jeez Я иду на пару лет, и я только признаю, что это «нормально». –

0

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

Вам также придется использовать немного более «трудную» отладку (не уверен, как это работает с python)

Хотя вы учитесь, вы должны наслаждаться добротой (по крайней мере, по сравнению с C#) Python, даже если у вас нет intellisense .. надеюсь, это будет мотивировать вас!

5

Один шаг за шагом?

Начните с простых программ (вещи, которые вы можете написать, закрыв глаза на C#) и продолжайте ... Вы в конце концов узнаете API.

+0

Отличный оператор! Да, чем больше вы узнаете о Python, просмотрев документацию стандартной библиотеки, тем больше вы будете передавать на память. Вы узнаете это наизусть с достаточной практикой на этом языке. –

0

Я только использовал IDLE для разработки python, и это нисколько не забавляет. Я бы порекомендовал вам получить ваш любимый текстовый редактор, мой блокнот ++, и молюсь за приличный плагин для него. Мне только приходилось переходить от Eclipse к Visual Studio, поэтому мои мнения, как правило, недействительны в этих контекстах.

+0

Если вы думаете на языке и в стандартной библиотеке, которую вы запомнили, нетрудно, по крайней мере, запрограммировать (IDLE). –

+0

Я не сказал, что это было тяжело, я просто сказал, что это не весело :) – Woot4Moo

2

Вы всегда можете начать с IronPython и продолжить разработку в Visual Studio.

+0

до тех пор, пока вы в конце концов выходите и отправляетесь в Cpython. –

+1

Visual Studio ужасно для IronPython :( – orip

2

Идея python от крыла довольно хороша. Это то, что я закончил, используя переход от Visual Studio C++ /. Net к выполнению python.

1

Не беспокойтесь о intellisense. Python действительно прост, и на самом деле это не так много, чтобы знать, поэтому после нескольких проектов вы будете понимать код python во время вождения, еды и т. Д., Даже не пытаясь. Кроме того, встроенный текстовый редактор python (IDLE) имеет wimpy-версию intellisense, которая всегда была более чем достаточной для моих целей.Если вы когда-либо пустым, и хотите знать, какие методы/свойства и объект, просто введите это в интерактивной сессии:

реж (MyObject)

0

Я использую Komodo Edit и делает достаточно хорошо гадать на автозавершения.

+1

Прикомандировано. Я бы также повторил вышеприведенные комментарии, предлагающие сохранить открытое консольное окно (или одно в Комодо) для проверки классов и объектов. – Tom

4

<rant>

Это своего рода той причине, что я думаю, что быть хорошим визуальным пользователем студия делает вас плохой разработчик. Вместо того, чтобы изучать API, вы смотрите в браузере объектов, пока не найдете что-то более или менее похожее на то, что вы ищете, создайте его, затем нажмите. и начните искать то, что походит на правильную вещь, чтобы использовать. Хотя это очень быстро, это также означает, что навсегда требуется изучение API на любой глубине, что часто означает, что вы в конечном итоге либо изобретаете колесо (потому что колесо захоронено под горным инвентарем бытовой техники, и вы понятия не имели он был там), или просто делал что-то не оптимальным образом. Просто потому, что вы можете найти решение A быстро, не означает, что это THE BEST решение.

</rant>

В случае .NET, который поставляется с около миллиарда API, для всего под солнцем, это на самом деле предпочтительным. Вам нужно просеять много шума, чтобы найти то, к чему вы стремитесь.

Pythonic code поддерживает один, очевидный способ сделать любую вещь. Это, как правило, делает API очень простыми и читаемыми. Хитрость заключается в изучении языка и изучении API. Это не очень сложно сделать, особенно в случае с python, и, хотя вы не можете полагаться на intellisense, возможно, сначала сотрясается, не нужно больше недели или двух, прежде чем вы привыкнете к нему, не будучи там ,

Изучите язык и основные стандартные библиотеки с хорошей книгой. Когда дело доходит до нового библиотечного API, я нахожу REPL, и некоторые поисковые кодировки могут привести меня к довольно хорошему пониманию того, что происходит довольно быстро.

+2

-1 Для вашего разговора. Разработчики узнают и понимают API. Многие из них узнают об общем намерении структуры и смогут определить вероятное местоположение API, который они хотят использовать. – Gregory

+1

Я говорю из личного опыта, так что, возможно, это справедливо для меня. 3 года .net по сравнению с годом рубинов. Я могу многое сделать на .net, но есть только несколько областей, которые я знаю, на любую глубину. Напротив, я знаю намного меньше рубиновых библиотек и API, но то, что я знаю, я действительно хорошо знаю. Когда дело доходит до ударов, я нахожу, что я намного быстрее использую стек MS, когда дело доходит до получения опыта, я считаю, что это проще с рубиновым материалом. Поразмышляя об этом некоторое время, я пришел к тому, что основной причиной стала оснастка. –

6

Python обладает богатыми функциями «самоанализа». В частности, вы можете много узнать о встроенных функциях с помощью команды help() из командной строки Python.

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

>>> import re 
>>> help(re) 

Вы получаете хороший дисплей информации, автоматически отображаться Вам постранично (нажмите пробел, чтобы увидеть следующую страницу).

Если вы уже знаете, что вы хотите использовать функцию sub() из re модуля, вы можете получить помощь на только что:

>>> help(re.sub) 

И это help() функция будет работать даже на свой собственный код, до тех пор, вы определяете Python docstrings для своих модулей, классов и функций.

Вы можете включить функции в редакторе vim (или gvim или vim для Windows), которые позволяют использовать функцию автозаполнения типа «IntelliSense», и вы можете использовать Exuberant Ctags для генерации гиперссылок «теги», чтобы вы могли быстро перемещаться по своим код. Они превращают vim во что-то примерно такое же мощное, как IDE, с полной мощностью vim для редактирования. (В vim нет встроенного инструмента рефакторинга, но there are options available.

И, как отметили другие, вы можете получить IDE для Python. Я использовал Wingware IDE, и я рекомендую его. Я стараюсь выполнять большую часть своей работы с помощью бесплатного программного обеспечения с открытым исходным кодом, но это один из проприетарных программ, которые я бы хотел купить. Я также использовал Eclipse с плагином Pydev (я использовал инструмент рефакторинга, и он отлично работал).

P.S. У Python более богатый набор функций, чем C#, хотя и за счет того, что ваш код не будет работать так быстро. Как только вы привыкнете к Python, вы больше не будете чувствовать себя в каменном веке.

+0

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

1

Точно так же вы делаете что-нибудь еще, у которого нет IntelliStuff.

Я уверен, что вы писали этот вопрос без помощи компьютерной программы IntelliEnglish, которая показывала вам список глаголов, которые вы могли бы использовать, и автоматически добавлял знаки препинания в конце ваших предложений, например. :-)

1

Я использую Eclipse и PyDev большую часть времени, а ограниченная помощь по автозаполнению, которую он предоставляет, очень полезна.

Это никогда не достигнет уровня IntelliSense VS, и это не может быть из-за динамической природы Python. Но есть компенсации, большие.

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

Другое дело, что это намного проще. Очень важно знать, что такое стандартные модули, и что они делают, но по большей части это можно получить с небольшим чтением. Я использую только небольшое количество модулей в своем повседневном программировании - itertools, os, csv (да, ну), datetime, StringIO - и все остальное есть, если мне это нужно, но обычно я этого не делаю.

Материал, который действительно важно знать, - это то, что IntelliSense не могло вам помочь. Авто-завершение не собирается.

self.__dict__.update(kwargs) 

Проклятье, что-то вроде смысла; вам нужно узнать, что такое удивительная строка кода, и почему вы ее напишете сами.

Тогда вы подумаете: «Как бы я даже начал реализовывать что-то подобное на C#?» и понимаете, что инструменты, используемые этими людьми из каменного века, немного сложнее, чем вы думаете.

0

Другие предложили несколько редакторов, которые обладают способностями, подобными intellisense. Попробуйте их.

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

Например, если вы наберете

import r<tab> 

он покажет все модули, которые можно импортировать, начиная с г

import re 
re.<tab> 

покажет все объекты в модуле повторного

re.compile? 

покажет docstring и другую информацию о функции re.compile, автоматически подключая i t через пейджер, если он длиннее экрана.

re.compile?? 

также покажет исходный код, если таковой имеется.

Используя это, я нахожу, что гораздо быстрее переключиться на ipython и запросить объекты напрямую, чем искать что-либо в документах. У вас есть доступ к обычной системе python help().

У ipython есть много и много других возможностей - слишком много для покрытия в короткой почте.

0

Pyscripter выполняет разумную работу по автозавершению/intellisense. Я использовал его недавно, когда начал изучать Python/Django, где в последние годы я был главным разработчиком C#.

0

Предлагаю перейти на холодную индейку - языки, такие как Python shine с отличными текстовыми редакторами. Выберите тот, который вы хотите порадовать (vim, emacs и т. Д.) И никогда не оглядываться назад.

-3

Используйте хороший редактор, например emacs или vim.

0

Ошибка, с которой сталкиваются люди из C# или Java, - это воссоздание иерархии больших классов, как это принято на этих языках. С Python это почти никогда не бывает полезным. Вместо этого узнайте о наборе уток. И не беспокойтесь о нехватке статической типизации: на практике это почти никогда не проблема.

Смежные вопросы