Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Религиозные войны > Зачем нужен этот ваш Python?


Автор: bems 6.2.2010, 22:52
сабж

Автор: kemiisto 6.2.2010, 23:22
 smile 

Новый холик!  smile 

Если очень коротко, у Python есть только одно неоспоримое преимущество - "batteries included". А так... smile 

Smalltalk, Lua - вот это да, шедевры. smile Но, батарейки, мать их, иногда решают.

Автор: bems 6.2.2010, 23:24
Топик создавался не холивара ради.
Я создал его в разделе по пайтону чтобы получить конкретный ответ об области применения.
А что за батарейки?

Автор: kemiisto 6.2.2010, 23:44
Цитата
Зачем нужен этот ваш Python?

Теперь по делу.
  • "batteries included" обычно означает мошную стандартную библиотеку. Но можно в этот же пункт запихнуть и 3rd party libs. Бумага терпит. smile По крайней мере, если есть велосипед для C++/Java, есть этот велик и под Пейтон. Пускай в виде биндов к ++ коду, но есть. smile И зачастую Свободное ПО, что, безусловно, доставляет.
    PyQt, NumPy, SciPy, ...
  • Есть ПО, написанное на Пейтоне + позволяющее использовать функциональность Пейтона в самом приложении. Ну, короче у кучи ++ тулз, есть Python scripting support. Софтиной в разы проще управлять, но надо знать сабж. Ещё пример - шедевральная система сборки http://www.scons.org/. CMake с его ублюдочными тегами слишком тяжеловесен и старомоден. Да и не всё позволяет. А тут - ты царь и бог. smile 
  • Быстрая скорость прототипирования. И возвращаясь к первому пункту, взять тот же PyQt vs Qt. Пока на Це++ на###кодишь хидеры с описанием классов, пока всё чётко закодируешь, пока разрулишь вопросы с const correctnes, конструкторами копирования, захватом ресурсов, ... smile На пейтоне строчка - и класс. Будьте любезны. А если что поменять надо будет? Да, знаю, грамотное проектирование рулид. Но безошибочное проектирование - миф. А если куришь новую технологию? Надо ковырять много... 
  • Иногда возможностей cmd smile (лулза ради), bash и т.п. не хватает. Скриптинг, батюшка, ещё никто не отменял.
  • Есть ещё такой сценарий применения - ###кодим что-нить тяжелочислодробительное на Fortran или С/С++никаких или! smile , берём F2PY (из NumPy), генерируем Пейтон-интерфейсы. И будьте любезны - тестики погонять, гуёк, прости хоспади, на том же PyQt присобачить...
  • Веб. Вроде как Джангой довольны. Но это не ко мне. smile

Всё, что пока в голову пришло. Голова больная, работаю с TeX. smile 

Автор: nginx 7.2.2010, 00:14
Вы забыли про мощный трехмерный редактор Blender, где языком сценириев является , как раз Питон, а про возможности Питона в Блендере писать не буду их уйма

PS
А вот тут тригерры очень даже ф-циональные, в отличии от тригерров в БД, тригерр в 3д сцене, очень мощный инструмент

Автор: bems 7.2.2010, 00:21
Цитата(nginx @  7.2.2010,  00:14 Найти цитируемый пост)
Вы забыли про мощный трехмерный редактор Blender, где языком сценириев является , как раз Питон

Да и в open office используется, и вроде бы в российском CAD "Компас".
То есть один пункт - как скриптовой язык в прикладных приложениях. Кстати, а почему бы не использовать там что-нибудь с адекватной семантикой?

Автор: bilbobagginz 7.2.2010, 00:24
Цитата(kemiisto @  6.2.2010,  22:44 Найти цитируемый пост)
Пейтоне 

почему так Пайтона погоняем... Python - Питон, Пайтон, но как блин, с него до Пейтона дойтить, не понимаю )

если коротко:
  • легко читабельный
  • быстро писабельный
до 4-5 лет назад было не сильно много модулей, чтобы сравниться с Perl, 
но сейчас уже можно спокойно иметь дилему какой скриптовый язык учить. не смотря на перловые способности.
И еще есть косвенные преимущества - есть официальный бинарный дистрибутив под большинство платформ.
напр. Windows 64-bit, что на полу не валяется и ничем не пахнет (напр. того же Ruby - нет)

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

Цитата(kemiisto @  6.2.2010,  22:44 Найти цитируемый пост)
 Голова больная, работаю с TeX

пиши-пиши бумажку, а вечером поставь геморройную свечку уважения Д.Кнуту smile

Автор: kemiisto 7.2.2010, 00:56
Цитата(bems @  7.2.2010,  01:21 Найти цитируемый пост)
То есть один пункт - как скриптовой язык в прикладных приложениях. Кстати, а почему бы не использовать там что-нибудь с адекватной семантикой?

Ну, во-первых, используется не только Пейтон.

В уже упомянутом Qt, если нет желания таскать с собой сабж, можно использовать встроенный QtScript scripting engine. Будешь скриптить на несколько изменённом http://en.wikipedia.org/wiki/ECMAScript. Но назвать синтаксис/семантику более адекватной у меня язык не повернёться. smile 

Lua широко распространена в качестве скриптового языка в game dev'е. http://en.wikipedia.org/wiki/Category:Lua-scripted_video_games. Кроме того, у Lua - вылизанный и простой C API (в отличие от сабжа), что облегчает embedding. Изначально так задумано было.

Ещё LISP'ы всякие встраивают бывает. http://en.wikipedia.org/wiki/AutoLISP. Но это с больной головы на здоровую. smile 

Питон рулид из-за жуткой популярности. Встраивать поддержку именно сабжа выгодно по маркетинговым причинам.

Цитата(bilbobagginz @  7.2.2010,  01:24 Найти цитируемый пост)
почему так Пайтона погоняем... Python - Питон, Пайтон, но как блин, с него до Пейтона дойтить, не понимаю )

Какбэ демонстрируется пренебрежительное отношение к сабжу. smile 

Цитата(bilbobagginz @  7.2.2010,  01:24 Найти цитируемый пост)
легко читабельный

Yep! And it's more than enough to beat Perl! smile Пёрл это вообще, write-only language. smile 

Цитата(bilbobagginz @  7.2.2010,  01:24 Найти цитируемый пост)
пиши-пиши бумажку, а вечером поставь геморройную свечку уважения Д.Кнуту

 smile Красива получаиццо зато!

Автор: Lazin 7.2.2010, 01:13
Цитата(bems @  7.2.2010,  00:21 Найти цитируемый пост)
Кстати, а почему бы не использовать там что-нибудь с адекватной семантикой?
адекватная, это как в паскале? smile 

Автор: bems 7.2.2010, 01:33
Lazin, ну да, там if var = 'string1' or 'string2' это ошибка, как и должно быть.

Автор: Lazin 7.2.2010, 01:38
в python-e тоже smile

Добавлено через 1 минуту и 54 секунды
а вообще, это @#$%^ товарищи, в языке есть столько вкусных фичь, а тебя беспокоит оператор присваивания = и возможность использовать его в if-e smile

Автор: bems 7.2.2010, 01:48
По паскальной привычке я потерял одно равно. Точная цитата:
Цитата(Lazin @  7.2.2010,  01:38 Найти цитируемый пост)
if input("Additional 5% discount? ( Y/N )") == "Y" or "y":

Здесь нет ошибки, а всегда истина.

Автор: Lazin 7.2.2010, 02:06
bems, 
Код

if input('Additional 5% discount? ( Y/N )') in ('Y', 'y'):


Добавлено через 42 секунды
Цитата(bems @  7.2.2010,  01:48 Найти цитируемый пост)
Здесь нет ошибки, а всегда истина.

а почему в других языках приоритет операторов должен быть таким-же как в паскале? smile 

Автор: bems 7.2.2010, 02:11
Не нужно мне говорить как написать то же самое, но правильно, это цитата из чужого вопроса на форуме.
Приоритет не обязан быть таким же, а вот то что непустая строка истинна - окончательная победа над здравым смыслом.

Автор: bilbobagginz 7.2.2010, 03:05
Цитата(bems @  7.2.2010,  01:11 Найти цитируемый пост)
а вот то что непустая строка истинна - окончательная победа над здравым смыслом. 

почему ?

непустая строка, как и др. строки - объект.
непустой объект != undefined => True!

Добавлено через 42 секунды
Цитата(kemiisto @  6.2.2010,  23:56 Найти цитируемый пост)
Красива получаиццо зато!

работашь со средой или в vim ?

Автор: GrayCardinal 7.2.2010, 11:40
del

Автор: bilbobagginz 7.2.2010, 17:46
GrayCardinal, a что del-то ?

Автор: Lazin 7.2.2010, 18:14
готов поспорить, что там было написано что-то вроде - Ruby - рулит, Python - sucks  smile 

Автор: bems 7.2.2010, 21:43
Цитата(bilbobagginz @  7.2.2010,  03:05 Найти цитируемый пост)
непустой объект != undefined => True

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

Автор: nginx 7.2.2010, 21:49
Цитата(Lazin @  7.2.2010,  18:14 Найти цитируемый пост)
готов поспорить, что там было написано что-то вроде - Ruby - рулит, Python - sucks   

Ruby пока интерпретатор чистый, а Питон уже давно вирт. машина =)
А Ruby умеет общаться с Сишными либами, как Питон?

Автор: kemiisto 7.2.2010, 22:03
Цитата(nginx @  7.2.2010,  22:49 Найти цитируемый пост)
Ruby пока интерпретатор чистый

Нет. С версии 1.9 - YARV. Yet another Ruby VM. smile 

Цитата(nginx @  7.2.2010,  22:49 Найти цитируемый пост)
А Ruby умеет общаться с Сишными либами, как Питон?

Умеет, наверное. Но это не так распространено как в случае с Python.

Автор: nginx 7.2.2010, 22:45
kemiisto, и сколько ссылочных типов есть в Раби? сборщик мусора есть? такой же, как в ПХП или нормальный?

Цитата(kemiisto @  7.2.2010,  22:03 Найти цитируемый пост)
Нет. С версии 1.9 - YARV. Yet another Ruby VM.  

Wikipedia must be updated!

Автор: Любитель 8.2.2010, 00:12
Цитата(bems @  7.2.2010,  02:11 Найти цитируемый пост)
непустая строка истинна - окончательная победа над здравым смыслом. 

При всём моём уважении к питону (да не, не особо заслуженном - просто так по сути) - ты прав.

kemiisto, я вот что-т в итоге так и не понял - тебе из чего-то имеющего реальное применение в мире сегодняшнего программинга (ну т. е. всякие обероны не в счёт) нравится или нет? Ну или.. хотя бы не то, что нравится.. Есть такое, что ты не будешь ругать? smile 

Автор: kemiisto 8.2.2010, 00:20
Цитата(nginx @  7.2.2010,  23:45 Найти цитируемый пост)
kemiisto, и сколько ссылочных типов есть в Раби?

Что значит сколько? Там вообще-то как и в Питоне все переменные имеют ссылочный тип. Т.е. каждая переменная указывает на объект в памяти.

Цитата(nginx @  7.2.2010,  23:45 Найти цитируемый пост)
сборщик мусора есть?

Есть. А вот подсчёта ссылок (reference counting) нет. В Ruby используется подход http://en.wikipedia.org/wiki/Garbage_collection_(computer_science)#Copying_vs._mark-and-sweep_vs._mark-and-don.27t-sweep. А в Питоне используется комбинация reference counting + cycle-detecting garbage collector. Если уверен, что не будет циклических ссылок GC можно вообще вырубить. smile 

Цитата(nginx @  7.2.2010,  23:45 Найти цитируемый пост)
такой же, как в ПХП или нормальный?

Вот это фиг знает. PHP не знаю совсем. С Ruby давно не работал.

Автор: nginx 8.2.2010, 00:26
Цитата(kemiisto @  8.2.2010,  00:20 Найти цитируемый пост)
Что значит сколько? Там вообще-то как и в Питоне все переменные имеют ссылочный тип. Т.е. каждая переменная указывает на объект в памяти.

нет, что в Питоне  a = "2" теперь переменная ссылочного типа? она "простого" типа
к примеру в C# только 4-е ссылочных типа, это classes, interfaces, delegates, arrays


Автор: Lazin 8.2.2010, 00:39
Цитата(Любитель @  8.2.2010,  00:12 Найти цитируемый пост)
kemiisto, я вот что-т в итоге так и не понял - тебе из чего-то имеющего реальное применение в мире сегодняшнего программинга (ну т. е. всякие обероны не в счёт) нравится или нет? Ну или.. хотя бы не то, что нравится.. Есть такое, что ты не будешь ругать?


Любитель, нет в мире совершенства, а в мире IT - и подавно smile

Добавлено через 1 минуту и 44 секунды
Цитата(nginx @  8.2.2010,  00:26 Найти цитируемый пост)
нет, что в Питоне  a = "2" теперь переменная ссылочного типа? она "простого" типа

нет, она ссылочного типа

Автор: nginx 8.2.2010, 00:48
Цитата(Lazin @  8.2.2010,  00:39 Найти цитируемый пост)
нет, она ссылочного типа

пошел за спецификацией Python, что-то неладно в Питоновском королестве  smile 

ЗЫ
приведу пока из C# спецификации

The following table provides an overview of C#’s type system.

Category    Description
Value
types

Simple types    Signed integral: sbyte, short, int, long
        Unsigned integral: byte, ushort, uint, ulong
        Unicode characters: char
        IEEE floating point: float, double
        High-precision decimal: decimal
        Boolean: bool

Enum types    User-defined types of the form enum E {...}
Struct types    User-defined types of the form struct S {...}
Nullable types    Extensions of all other value types with a null value

Reference
types

Class types                Ultimate base class of all other types: object
                    Unicode strings: string
                    User-defined types of the form class C {...}
Interface types    User-defined types of the form interface I {...}
Array types                Single- and multi-dimensional, for example, int[] and int[,]
Delegate types    User-defined types of the form e.g. delegate int D(...)

Автор: Lazin 8.2.2010, 01:18
Цитата(nginx @  8.2.2010,  00:48 Найти цитируемый пост)
пошел за спецификацией Python, что-то неладно в Питоновском королестве
представляешь, он оказывается динамический! smile 

а причем тут C#? smile 

Автор: kemiisto 8.2.2010, 01:20
Цитата(nginx @  8.2.2010,  01:26 Найти цитируемый пост)
нет, что в Питоне  a = "2" теперь переменная ссылочного типа? она "простого" типа

nginx, я сегодня не в духе. Не надо меня лишний раз злить. smile Я же написал, что я имел ввиду под ссылочными типами данных. 
Ты, видимо, хотел сказать не "простого", а атомарного. 
Цитата
К атомарным относятся int, long, complex и некоторые другие. При присваивании атомарных объектов копируется их значение, в то время как для ссылочных копируется только указатель на объект...

А вот и откуда ветер дует. Педивикия. 
Цитата(nginx @  7.2.2010,  23:45 Найти цитируемый пост)
Wikipedia must be updated!

Поначитаются всякой *****. 

Итак, во-первых, этой чепухи нет в официальных доках. Во-вторых, атомарными обычно называют встроенные в язык типы. В-третьих, как и в Ruby, любая переменная ссыслка на объект и вполне допустимо говорить, что все типы являются ссылочными. В-четвёртых надо различать mutable и immutable. В пятых, ... В пятых, иди учи Питон.

Цитата(nginx @  8.2.2010,  01:26 Найти цитируемый пост)
к примеру в C# только 4-е ссылочных типа, это classes, interfaces, delegates, arrays

Спасибо, я не знал. И ооооооочень в тему. smile

Добавлено через 2 минуты и 1 секунду
Цитата(Любитель @  8.2.2010,  01:12 Найти цитируемый пост)
kemiisto, я вот что-т в итоге так и не понял - тебе из чего-то имеющего реальное применение в мире сегодняшнего программинга (ну т. е. всякие обероны не в счёт) нравится или нет?

Нет.

Цитата(Любитель @  8.2.2010,  01:12 Найти цитируемый пост)
Есть такое, что ты не будешь ругать?

Из майнстрима Java, пожалуй, ругать не буду. С Python посмотрим как сложиццо.

Добавлено через 6 минут и 20 секунд
Цитата(Lazin @  8.2.2010,  02:18 Найти цитируемый пост)
а причем тут C#?

Вот-вот.

nginx, вот, держи картинку и подумай над ней.
user posted image

Автор: nginx 8.2.2010, 01:26
Цитата(kemiisto @  8.2.2010,  01:20 Найти цитируемый пост)
nginx, я сегодня не в духе. Не надо меня лишний раз злить. 

не, просто сказываются мои отсуствия в знаниях, прошу прощения

Цитата(kemiisto @  8.2.2010,  01:20 Найти цитируемый пост)
В пятых, иди учи Питон.

согласен

ЗЫ
**** ваши динамично-типизированные ЯП
и *** знает, как они работает в DLR в дотНЕТе... до сих пор темные дела эти в DLR

Автор: Любитель 8.2.2010, 01:44
Цитата(kemiisto @  8.2.2010,  01:20 Найти цитируемый пост)
Из майнстрима Java, пожалуй, ругать не буду. С Python посмотрим как сложиццо.

Мне, конечно, неудобно оффтопить, но.. странно. Я не хочу функционал рассматривать (функционал влияет на менйстримновость, но на нравится/нет - не особо), но с точки зрения языка.. Ява, конечно, справляется со своей задачей (максимально простой синтаксис), но.. мне эта задача не нравится.

Автор: kemiisto 8.2.2010, 01:54
Цитата(Любитель @  8.2.2010,  02:44 Найти цитируемый пост)
максимально простой синтаксис

 smile Ну это как сказать.

Цитата(Любитель @  8.2.2010,  02:44 Найти цитируемый пост)
мне эта задача не нравится

Да помню. С тобой, вроде, уже обсуждали. Ну не нравиться мне syntax sugar ни под каким соусом. smile 

Цитата(Любитель @  8.2.2010,  02:44 Найти цитируемый пост)
функционал влияет на менйстримновость, но на нравится/нет - не особо

Не согласен. Я здесь в начале топика уже писал. Но если Smalltak просто опередил время, то Lua проигрывает именно из-за библиотек. Я бы с удовольствием учил Lua, но... PyQtPySide, NumPy (с f2py), SCons, ...

Автор: Любитель 8.2.2010, 01:57
Цитата(kemiisto @  8.2.2010,  01:54 Найти цитируемый пост)
Да помню. С тобой, вроде, уже обсуждали. Ну не нравиться мне syntax sugar ни под каким соусом.

Прости, забыл smile Вот ты ща сказал - вспомнил )) Вроде причём в какой-то ява/шарп теме..

Цитата(kemiisto @  8.2.2010,  01:54 Найти цитируемый пост)
Я бы с удовольствием учил Lua, но... PyQtPySide, NumPy (с f2py), SCons, ...

Ну дык.. Тут проблема уже не в том, что "не нравится", а в том, что "не особо нужно" (условно говоря). Понятно, что в идеальном мире должно быть и то, и то...

Автор: kemiisto 8.2.2010, 02:00
Цитата(Любитель @  8.2.2010,  02:57 Найти цитируемый пост)
Вроде причём в какой-то ява/шарп теме..

Да. Верно. smile 

Цитата(Любитель @  8.2.2010,  02:57 Найти цитируемый пост)
Тут проблема уже не в том, что "не нравится", а в том, что "не особо нужно" (условно говоря).

Перечитал, понял. Да, всё так. С Oberon для меня таже история - применения пока не найду.

Цитата(Любитель @  8.2.2010,  02:57 Найти цитируемый пост)
Понятно, что в идеальном мире должно быть и то, и то...

Вот-вот... smile 

Автор: GrayCardinal 8.2.2010, 10:22
Цитата

готов поспорить, что там было написано что-то вроде - Ruby - рулит, Python - sucks

Именно так... smile  smile  smile  smile 

Автор: bilbobagginz 8.2.2010, 10:37
Цитата(nginx @  7.2.2010,  20:49 Найти цитируемый пост)
А Ruby умеет общаться с Сишными либами, как Питон?

есть единый свиг: http://www.swig.org/exec.html



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)