Python для программиста-любителя (несколько вопросов)

Я программист-любитель (раньше только в TI-Basic), и после долгих, долгих споров сам с собой решил изучить Python. У меня нет кучи свободного времени, чтобы выучить сотню языков, и все программы, которые я делаю, будут для личного пользования или для распространения среди людей, которые в них нуждаются, поэтому я решил, что мне нужен один хороший, сильный язык, чтобы хорошо владеть . Мои вопросы:

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

  2. Достаточно ли хорошо Python справляется с сетевыми задачами?

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

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

Большое спасибо за любую помощь, которую вы можете оказать.


person Kefka    schedule 19.03.2010    source источник
comment
Он идеально подходит для ваших нужд, за исключением №3.   -  person Larry Lustig    schedule 19.03.2010
comment
и если вы сделаете что-нибудь супер-классное, оно гарантированно будет декомпилировано независимо от того, на каком языке оно используется ...   -  person Gordon Gustafson    schedule 19.03.2010
comment
По поводу № 3: вы не можете это остановить. Ничто также не помешает дуфу заявить об авторстве обфусцированного двоичного файла. Просто поставьте хорошую лицензию на свою работу и выложите ее, и массы будут это ценить. Не позволяйте дуфам мешать вам делиться!   -  person mwcz    schedule 19.03.2010
comment
Ближе всего к №3 может быть py2exe, но безопасность через неясность в лучшем случае бесполезна ...   -  person Matthew Iselin    schedule 19.03.2010
comment
Я тоже перешел с TI-BASIC на Python и ни разу не пожалел об этом. (Если вы ищете книгу, по которой можно было бы учиться, я рекомендую Python для чайников.) Одна замечательная особенность Python заключается в том, что сам язык (или, по крайней мере, все функции, которые нужны большинству людей) сравнительно прост в изучении, остальное просто читает документацию библиотеки.   -  person LeafStorm    schedule 19.03.2010
comment
Я получил «Программирование на Python для абсолютного новичка» и «Программирование на Python: введение в информатику». Проблема только в том, что я не проверял совместимость версий. книга CS - 2.3, а первая - 3.1: P   -  person Kefka    schedule 19.03.2010
comment
@Larry, вы удивитесь, насколько запутанный код может быть запутан с помощью выражений списков и генераторов;)   -  person    schedule 19.03.2010


Ответы (7)


Достаточно ли мощен Python, чтобы справиться с большинством задач?

да. Период. Изучите игру EveOnline для получения дополнительной информации. Взгляните на структуру pygame. Бесплатно бесплатно используйте Google, чтобы найти больше.

Достаточно ли хорошо Python справляется с сетевыми задачами?

да. Посмотрите на количество веб-фреймворков Python и Twisted framework. Не стесняйтесь использовать Google для поиска сетей Python.

Можно ли запутать исходный код Python?

Бесполезно. Это не C.

И насколько популярен питон по сравнению с другими языками?

Взгляните на индекс TIOBE.

person S.Lott    schedule 19.03.2010
comment
Не может быть запутан? Посетите этот чат-сервер paste.pocoo.org/show/94512 (автор: stackoverflow.com/users/10999)! (Конечно, вопрос о попытке скрыть исходный код, чтобы приложение не было украдено, показал недостаток знаний о том, что удерживает код от несправедливого использования на любом языке.) - person Mike Graham; 19.03.2010

Я думаю, что Python очень мощный инструмент для множества вещей, но, как и Java и C ++, он часто зависит от хороших сторонних библиотек. У меня опыт работы с Java, но я использую Python для многих вещей, и это было весело. Я занимался такими вещами, как статистика и автоматизация, не уверен в пользовательском интерфейсе, хотя это часто зависит от набора инструментов больше, чем от языка.

Сеть Python работает хорошо. Я не знаю, использовал бы я его для создания быстрой алгоритмической торговой системы или приложения VOIP, но для большинства намерений и целей, особенно на более высоких уровнях абстракции, он прекрасен и прост в использовании. Вам понадобятся внешние библиотеки для таких вещей, как SSH или FTP.

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

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

Единственная проблема Python по сравнению с такими языками, как C и Java, заключается в том, что он не имеет статической типизации. Это позволяет намного быстрее писать код, но также * значительно упрощает) совершение ошибок, отладка которых может быть весьма неприятной. Например, одна и та же переменная может в какой-то момент содержать ссылку на строку, а в другой - ссылку на список строк.

person Uri    schedule 19.03.2010
comment
+1 за защиту Python для программистов-не идиотов. Как любитель Haskell (соответствуя критериям Мэтта для малоизвестного языка), я все еще часто использую Python для многих задач; он ни в чем не уступает никому. - person Jared Updike; 19.03.2010

  1. Абсолютно.
  2. Какой тип сети? Он имеет встроенные сокеты, http, xml, smtp / pop, telnet и многое другое.
  3. Обфускация Python не так хороша, как скомпилированный язык. Обычно это не проблема.
  4. Это 9-й по популярности тег в stackoverflow, поэтому здесь есть много справочной информации.
person Jon-Eric    schedule 19.03.2010

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

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

Достаточно ли хорошо Python справляется с сетевыми задачами?

да. Вы захотите изучить Twisted.

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

«Открытый исходный код» означает лицензирование вашего кода, а не возможность просмотра исходного кода. Скрыть исходный код Python невозможно, а результаты декомпиляции байт-кода Python приведут к получению гораздо более читаемого кода, чем эквивалентные инструменты на таких языках, как C. Не беспокойтесь об этом! Можно ' • не позволять людям угонять вашу машину или компьютер, если они хотят нарушить закон, и вы не можете сделать то же самое со своим кодом на любом языке.

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

Это вопрос, на который нет ответа. Google выдаст вам множество противоречивых результатов с разными показателями, большинство из которых являются полезными. Ты тоже немного глупый;)


Что касается учебных материалов, я рекомендую Как думать как компьютерный ученый , это хороший текст, не предполагающий каких-либо существующих знаний в области программирования. Он доступен бесплатно в Интернете, или вы можете купить печатную копию, если хотите. (Не утруждайте себя изучением 3.x. Поддержки библиотеки недостаточно для того, чтобы делать много полезных вещей, которые вы хотите делать, а когда они появятся, их будет легко освоить; это не сильно отличается от 2.5 / 6/7. .)

person Mike Graham    schedule 19.03.2010
comment
О, скрученный - НЕ хорошее место для начала. Это фантастический инструмент для нетворкинга, но он немного смущает любителей. Черт. Это немного смущает профессионалов. Начните с более простых сетевых модулей в стандартных библиотеках. Когда urllib и urllib2 начинают казаться громоздкими, загрузите httplib2, который действительно понимает http, для более сложных задач. - person jcdyer; 19.03.2010
comment
@jcd, Twisted действительно может потребовать некоторых усилий, чтобы щелкнуть. Однако, видя первые попытки многих людей создать собственные сетевые приложения на Python, я думаю, что это того стоит. - person Mike Graham; 19.03.2010

  1. Возможно - да. Может быть, обработка статистики будет немного медленной, а может быть игрой в зависимости от того, какая игра, но в целом производительность достаточно хорошая, и вы сэкономите много времени на самом программировании. Если вам ДЕЙСТВИТЕЛЬНО нужна производительность, вы можете создать модуль на C, но обычно есть библиотека, написанная для того, чтобы делать то, что вы хотите.

  2. Я не использовал его, но есть фреймворк под названием Twisted, который кажется довольно неплохим.

  3. Нет. Байт-код можно легко декомпилировать, и он работает только с определенной версией Python, поэтому ваш код не такой переносимый.

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

person Javier    schedule 19.03.2010
comment
В Python есть библиотеки, такие как SciPy и NumPy, для всего, что имеет решающее значение для производительности, числовых, статистических и т. Д. За исключением обработки изображений (которая достаточно хорошо обрабатывается PIL (Python Imaging Library)) или интенсивных графических вещей, я не могу думать ни о чем, что я ' У меня были проблемы с производительностью при использовании Python. - person Jared Updike; 19.03.2010
comment
Байт-код CPython довольно легко декомпилируется, часто в довольно приятный, читаемый код (если код должен был начаться). Он также имеет несколько ограничений, в том числе ограничение работы на одной версии Python и невозможность работы с альтернативными реализациями Python. От того, чтобы кто-то нечестно использовал ваш код, вас защищает закон и тот факт, что большинство людей не придурки. - person Mike Graham; 19.03.2010
comment
Спасибо за ввод, я изменил ответ. Не то чтобы на данном этапе это важно. - person Javier; 19.03.2010

Пункты 1 и 2: АД ДА.

Пункт 4: вроде. Python хорош в некоторых сетевых вещах. Это не Java или C ++. Просто используйте zlib (zip-библиотеку) и pickle (сериализацию) для всего и посмотрите xmlrpclib, если вам нужен IPC.

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

person wisty    schedule 19.03.2010

Python справляется с задачей (и лучше) для 1, 2 и 4.

Лучшее решение для трех из того, что вы описываете, вероятно, было бы сделать ваши программы действительно открытыми с лицензией GPL или BSD. Таким образом, люди будут редактировать ваши супер-классные исходники (но зачастую опытные программисты, а не только скриптовые детишки) и развивать их, но оставлять ваше имя для потомков.

person kriss    schedule 19.03.2010