Как стать великим программистом с открытым исходным кодом Python?

1

Я программист веб-приложений на С#.

Несколько недель назад я задал вопрос о stackoverflow о Что должен начинать программист (веб) путем обучения - Erlang, Haskell, Python, С++, F #. Спасибо всем тем, кто предложил свои мысли и помог принять решение. Я нашел, что Python должен быть тем, с кем я должен начать смотреть вперед. Я также заинтересовался Эрланг. Я также попытаюсь провести некоторое время за месяц для Erlang, но Python - это то, что я начал. Я начал учиться у Dive на Python, который до сих пор работает.

Была причина, по которой я взял Python по многим другим вариантам. Параллельно с моим сообщением (упомянутым выше), и я также проводил расследование. Я имел в виду, прежде чем поднимать вопрос здесь. Почему большинство великих инженеров (я не использую разработчиков - они заслуживают большего уважения назвать их инженерами) были/являются разработчиками проектов с открытым исходным кодом? И проект с открытым исходным кодом имеет свой формат. Все отличные программные средства, когда-либо изобретенные, имеют прямую или косвенную связь с открытым исходным кодом. Они создали отличный проект с открытым исходным кодом, прежде чем создали это, они работали над открытым проектом и т.д. И т.д.

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

Поскольку я начал замечать что-то о Python, у него потрясающая химия с C. И большинство его клиентов накладывали свой хардкорный процесс на C вместо Python. Мне это любопытно. Я ушел и начал больше об этом разбираться и нашел несколько имен, которые используют Python с C. Даже, какой-то большой проект с открытым исходным кодом (предприятие) также разработан таким образом.

Почему все хорошие имена поддерживают свой процесс с помощью C и используют Python для script? Не подходит ли Python для использования в бэкэнд-процессе? Если это хорошая практика сохранить дизайн, то почему мы еще не видели хорошей книги по этому поводу? Или у нас есть? Я должен держать это в плане, поэтому, если у вас есть хороший материал для чтения, пожалуйста, укажите здесь.

Я планирую более широкий охват обучения. Цель состояла в том, чтобы выучить язык, теперь он превращается в синтез на платформе с открытым исходным кодом. У меня есть рабочий стол DELL OPTIPLEX, на котором я собираюсь настроить среду с открытым исходным кодом с помощью UNIX, VIM, PYTHON. Есть много гуру с открытым исходным кодом, которые работают над некоторыми отличными материалами с открытым исходным кодом. Я видел сэр Алекс Мартелли здесь на stackoverflow. Хотелось бы, чтобы я мог что-то получить от него, как мне создать среду разработки с открытым исходным кодом? Но есть много других героев, и мне также нравится их опыт в этом.

Концепция обучения теперь становится хорошим разработчиком с открытым исходным кодом (unix, python с c). Для этого мне нужно настроить среду разработки? Какое большое развитие среды разработки с открытым исходным кодом? Пожалуйста, сохраните ответ в контексте с Python.

Спасибо.

  • 2
    Я не знал, что он был просто сэр. Я больше думал об Императоре. :)
  • 2
    Странно спрашивать, учитывая длину вышеприведенного текста, но какой у вас вопрос? Когда я сканирую на «?» Я понимаю: «Почему большинство великих инженеров (я не использую разработчиков - они заслуживали большего уважения, чтобы называть их инженерами) были / являются участниками проектов с открытым исходным кодом?» (необоснованное предположение, а не вопрос): «Почему все хорошие имена поддерживают свой процесс на C и используют Python для сценария?» (опять же, насколько я понимаю, на самом деле это не вопрос), "Для этого мне нужно, как настроить среду разработки?" (Любой дистрибутив Linux отлично подходит для разработки. Попробуйте!)
Показать ещё 2 комментария
Теги:

4 ответа

5
Лучший ответ

Ничего себе, много вопросов, которые вы задаете. Позвольте мне попытаться обратиться к ним...

Почему все хорошие имена поддерживают процесс с C и использовать Python для script? Не подходит ли Python для для бэкэнд-процесса?

Я не уверен, что вы имеете в виду. Python много используется для работы на заднем плане; если и когда какая-то часть окажется узким местом процессора, извлекая стабильное ядро ​​и используя для него C-код (или С++, или Fortran и т.д.), все они хорошо знакомы с Python) является разумным первым ударом при оптимизации (Cython также часто является возможной альтернативой) - так же, как и на "последнем" курорте, можно изучить подробный язык ассемблера, еще больше производительности (GMP, основная библиотека, которую я обернула в gmpy, делает это, когда это оправдано - действительно хорошие части сборки на самом деле специфичны для конкретных CPU, даже "платформы" ). Почему вы думаете (например) о том, что наличие специфичной для CoreDuo сборки для тотальной оптимизации ЦП означает, что общая сборка x86 "недостаточно хороша" или наличие общей сборки означает, что C "недостаточно хорошо" и т.д., И так далее так далее? В случаях (редких, но не неслыханных) случаях, когда сжатие каждого цикла ЦП действительно важно, для этой крошечной части кода, для которой это важно, спуск на один уровень абстракции является отличной стратегией и никоим образом не означает, что более высокий уровень абстракции "недостаточно хорошо".

Кстати, почему я ставил "последний" в scare-quotes - потому что, когда даже самая конкретная сборка по-прежнему требует большей оптимизации, можно (для некоторых процессоров) окунуться в микрокод или FPGA или полностью пользовательские ИС. Конечно, что решительно не означает, что программные решения не (использовать правильный глагол за один раз;-) достаточно хорошо (для остальных 99,999% ваших потребностей): это означает, что настоящие инженеры понимают компромиссы производительности...! -)

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

Какой предмет вы думаете, что сами по себе стоят целой книги? Я не думаю, что есть большой потенциальный рынок для книги (скажем) о том, как и когда выбирать части Python для перекодирования в C, части C, чтобы перекодировать в общей сборке для выбранной вами платформы (ов), части общей сборки для перекодировки в сборке модели с конкретным процессором и т.д. вплоть до микрокода, FPGA, пользовательских ИС - это моя мотивация не посвящать (скажем) год моей жизни написанию такой книги. Я думаю, что Nutshell делает достойную работу в описании самых основоположений - как вы используете профилирование для выбора частей, которые являются процессорами (если есть), оптимизируйте их на уровне Python и перекодируйте на языках более низкого уровня, если это необходимо (без упоминания Китонов - еще не было, когда я в последний раз переписал ореховую скорлупу). Но, конечно, часть 10% книги или меньше.

Я планирую более широкий охват обучение. Цель состояла в том, чтобы изучить язык теперь оказывается синтеза на платформе с открытым исходным кодом. У меня есть рабочий стол DELL OPTIPLEX, на котором Я собираюсь настроить открытый источник среда с UNIX, VIM, PYTHON. Есть много гуру с открытым исходным кодом работая над отличным открытым исходным кодом вещи. Я видел сэра Алекса Мартелли здесь на stackoverflow. Мне бы хотелось, чтобы я мог получить от него что-нибудь от того, как я должен разработка разработки с открытым исходным кодом Окружающая среда? Но есть много других героя, и мне также нравится их опыт на этом.

Трудно побить Ubuntu (хотя я лично использую в основном Macs, потому что Mac OS X по-прежнему предлагает превосходный опыт работы с ноутбуком, а мои персональные машины в основном являются ноутбуками к настоящему моменту - моя рабочая станция на работе работает Ubuntu) - хотя я уверен, что другие современные дистрибутивы Linux будут плечом к плечу. Моя личная причуда: код, который я считаю решающим для моей работы с открытым исходным кодом, я всегда стараюсь перестроить с нуля, из источников - Python, множество расширений Python, GMP, svn, hg, Cython... Я признаю эти дней я делаю исключение для самой ОС, gcc-пакета, X11 и друзей, gvim - нужно нарисовать строку, где можно получить любые запасные циклы, чтобы получить полезную работу; -).

Концепция обучения теперь изучается стать хорошим разработчиком с открытым исходным кодом (unix, python с c). Для этого мне нужно как настроить разработку Окружающая среда? Каковы великие разработка разработки с открытым исходным кодом Окружающая среда? Пожалуйста, сохраните ответ в контексте с Python.

Я не думаю, чтобы там было много.

Некоторые люди клянутся IDE (например, с PyQt или Eclipse plus pydev); я, я придерживаюсь gvim (и, хотя я иногда использую iPython, простой python по-прежнему я использую больше всего). Аналогично для VCS, таких как svn и hg, или DB, такие как PostgreSQL и т.д., Есть много графических интерфейсов, но я нахожу инструменты командной строки более подходящими для моих личных предпочтений.

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

Ключ выбирает то, что вы действительно заботитесь лично - работаете ли вы с ним с Ubuntu или Gentoo, или с Gvim, или Emacs, или с Eric и т.д. и т.д., это действительно очень незначительное рассмотрение IMNSHO.

  • 0
    Большое спасибо за наглядный ответ. Это поможет мне определиться. Я также подумывал начать участвовать в проекте с открытым исходным кодом. Можете ли вы предложить мне несколько хороших проектов, с которых я могу начать?
1

Начните кодирование! Серьезно, создайте некоторые примеры приложений. Если вы столкнетесь с болевыми точками, то, где вы узнаете. Когда вы закончите, читайте книги лучших практик, чтобы узнать, как вы могли бы сделать лучше. В противном случае вы не учитесь, вы просто следуете рецепту.

  • 0
    ... и получите "Python Phrasebook" (или похожую книгу) для помощи с общими фрагментами кода.
0

Есть две основные причины написания кода C вместо Python: скорость и клей.

Python значительно медленнее C. В большинстве случаев это вообще не имеет значения, но иногда это происходит. Если вы хотите написать функцию преобразования Фурье в чистом Python, вы не будете довольны скоростью; поэтому ребята SciPy предоставили реализацию C преобразования Фурье, которую вы можете просто вызвать из Python.

Но если вы не знаете, что занимаетесь чем-то действительно сложным, например, кодированием сжатого видео или преобразованием Фурье, вы всегда должны начинать, просто записывая его в Python. Большую часть времени он будет работать достаточно быстро. Если да, то все готово!

Если вы пишете прототип Python, и, похоже, он работает, но он медленный, вы можете в любом случае освободить его как бесплатное программное обеспечение. Медленное решение лучше, чем никакое решение, и люди могут поблагодарить вас за это. Но если вы мотивированы, вы можете перекодировать свой Python на C, чтобы ускорить его. (Сначала измерьте свой Python, так что вы знаете, какие части нуждаются в ускорении.) И, в качестве бонуса, вы уже правильно реализовали алгоритм один раз (на Python), поэтому у вас есть хорошая идея, как справиться с проблемой в C.

Другой важной причиной написания модулей C для Python является предоставление слоя "клея", который адаптирует Python для использования некоторого внешнего ресурса. Например, в версии Python для Windows вы можете использовать модуль C, позволяющий использовать COM-объекты. Весь COM API написан для C, поэтому C-модуль - лучший способ адаптировать COM для Python.

Итак, в общем, мой совет - просто написать код, который решает некоторые проблемы, которые у вас есть, и посмотреть, считаете ли вы, что результат достаточно ценен для обмена с миром.

P.S. Это отличный ресурс для запуска Python-программистов:

http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html

  • 0
    Благодарю. кто-то также упомянул однажды этот великий ресурс. спасибо, чтобы напомнить это, я определенно прочитал это. Вы знаете какой-нибудь хороший пример (книга была бы отличной), который основан на python с c?
  • 0
    На самом деле, не беспокойтесь о части C. Вы можете решить практически любую проблему, просто написав Python и воспользовавшись кодом C, написанным другими (пример: SciPy уже имеет преобразование Фурье, вам не нужно его писать). Что касается того, как написать модуль C для Python, вы можете найти его в Google; главная ссылка, которую я нашел, была с сайта python.org: docs.python.org/extending/extending.html
0

Прочитайте много кода. Разработайте свой собственный стиль кодирования, но работайте над большим количеством проектов, чтобы:

a) ваш стиль может наследовать лучшие части их

b) вы не попадете в плохую привычку всегда делать что-то так, как вы впервые научились (поскольку python постоянно меняется, и поэтому "лучшая" идиома имеет привычку переключаться на

Задавайте множество вопросов и удачи!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню