как перейти с C # на python? - PullRequest
       37

как перейти с C # на python?

9 голосов
/ 04 декабря 2009

я чувствую, что возвращаюсь в каменный век.

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

Ответы [ 16 ]

8 голосов
/ 04 декабря 2009

Я недавно изучил Python с сильным фоном C #.

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

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

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

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

6 голосов
/ 04 декабря 2009

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

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

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

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

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

>>> help(re.sub)

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

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

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

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

5 голосов
/ 04 декабря 2009

Один шаг за раз?

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

4 голосов
/ 04 декабря 2009

<rant>

По этой причине я считаю, что хороший пользователь визуальной студии делает вас плохим разработчиком. Вместо изучения API вы просматриваете браузер объектов, пока не найдете то, что звучит более или менее похоже на то, что вы ищете, создаете его экземпляр, а затем нажимаете. и начать искать то, что звучит как правильно использовать. Хотя это очень быстро, это также означает, что изучение API на любой глубине требует вечности, что часто означает, что вы в конечном итоге либо заново изобретаете колесо (потому что колесо похоронено под горой, на котором стоит бытовая техника, а вы даже не знали это было там), или просто делать вещи неоптимальным способом. То, что вы можете быстро найти решение A , не означает, что это ЛУЧШЕЕ решение.

</rant>

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

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

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

2 голосов
/ 04 декабря 2009

Идея Python из wingware довольно хороша. На этом я остановился на переходе от Visual Studio C ++ /. Net к Python.

2 голосов
/ 04 декабря 2009

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

1 голос
/ 04 декабря 2009

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

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

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

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

То, что действительно важно знать, это то, с чем IntelliSense не может вам помочь в любом случае. Автозаполнение не даст

self.__dict__.update(kwargs)

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

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

1 голос
/ 04 декабря 2009

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

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

1 голос
/ 04 декабря 2009

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

реж (MyObject)

0 голосов
/ 11 августа 2016

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

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