LINUX.ORG.RU

Обзор новых возможностей в Python 2.6 и 3.0

 ,


0

0

В сентябре 2008 года должны выйти сразу две версии языка Python — 2.6 и 3.0. Версия 3.0 потеряет обратную совместимость с линейкой 2.x. Облегчить переход на новую ветку должна версия 2.6, в которой будут реализованы основные возможности из Python 3.0, но в которой еще сохранится обратная совместимость с предыдущими версиями. Таким образом, в версии 2.6 уже можно будет пользоваться многими возможностями Python 3.0, но старый код будет продолжать работать, и будет время для перехода на Python 3.0.

В этой статье мы с вами рассмотрим основные изменения, которые произошли в Python 2.6 и 3.0 по сравнению с Python 2.5. Для запуска примеров использовались первые бета-версии Python 2.6 и 3.0, поэтому к выходу финальной версии еще может что-то измениться.

>>> Подробности



Проверено: Shaman007 ()

Ответ на: комментарий от Led

>Что тогда говорить про Forth, где вообще только две сущности: "слово" (последовательность ЛЮБЫХ непробельных символов) и "пробел" (любая последовательность пробельных символов), да и это можно переопределить:)

Вот поэтому языки и делятьтся на которые никто не любит и которые никто не использует). А Forth отличнейший язык, только все никак не сяду за него основательно.

anonymous
()
Ответ на: комментарий от Led

>"Навернётся" только у ламеров, которые не обращают внимания на warning'и при компиляции.

У ламеров все навернеться, независимо от языка и прочего. Если боитесь так ламеров - java вам в руки=)

anonymous
()
Ответ на: комментарий от anonymous

2anonymous (*) (30.06.2008 22:53:27):

> Тока из-за кривых лямбда придеться объявлять функции отдельно
> скорее всего.

lambda никогда и не собирались в Python быть чем-то подобным
лямбда в функциональных языках. Забудьте уже про это. В объявлении
отдельных функций нет ничего смертельного. Напротив, это поощряется
функциональным стилем программирования, как более читабельное.
Возможность в Python создавать вложенные функции с успехом решает
эту задачу, понижая уровень видимости таких функций.

>> Напротив, Python имеет больше схожего с функциональным
>> программированием

> Марш ботать матчасть, декларативное программирование !=
> функциональное программирование, это один из вариантов.

Да, это так. В таком случае покажи, в каком месте Ruby
более декларативный, чем Python. Что он менее функциональный,
чем Python, я тебе показал. Очередь за тобой. Примеры в студию.

> Синтаксис ничто, семантика фсё=) Функции высшего порядка есть а про
> скобочки бред, не существено, а то я ща начну вспоминать всеми
> любимые отступы:).

Про скобочки, увы, не бред. И это существенно. Похоже, ты
вообще слабо понимаешь, о чём речь. Какие плюсы и минусы
вытекают из опционального использования скобок.

> В руби есть блоки кода, это прибавляет функциональности.
> Питон скорее не функциональный, а процедурный в этом отношении.

Батенька, блоки никакого отношения к функциональности не имеют!
А вот то, что в Python функции - это first-class functions, в отличие
от Ruby, как раз показывает, что Python ближе к функциональному
программированию. Но в Ruby этого прямым путём и невозможно достичь,
так как функций там нет, есть методы классов.

> Незабываем, что руби это не только язык с гавнореализциями, но еще
> и идеология, так что чисто технически сравнивать недостаточно,
> потому как и на руби можно педалить вполне питонообразный код.

Этот словопоток даже и комментировать нет смысла.

anonymous
()
Ответ на: комментарий от anonymous

>Что он менее функциональный, чем Python, я тебе показал.

Нет, не показал

>Очередь за тобой. Примеры в студию

2.upto(7){|i| ... }

vs

for i in range(2, 7):
...

Первая запись декларативная, вторая очень смахивает на:

for(int i = 2; i <= 7; i++)
...

>Батенька, блоки никакого отношения к функциональности не имеют!

Еще как имеют. Блок кода это анонимная функция (точнее функтор).

>Но в Ruby этого прямым путём и невозможно достичь,
так как функций там нет, есть методы классов.

Мало вы про руби читали. Да и про питон тоже. Каша в голове. (а каша в голове как известно пища для ума:) ) В руби есть функторы. В питоне тоже не функций, а функторы:

def foo():
..pass

foo.__class__
=> <type 'function'>

######################################

foo = lambda{}

foo.class
=> Proc

anonymous
()
Ответ на: комментарий от anonymous

2anonymous (*) (30.06.2008 23:12:20):

>> Регулярные выражения не обязаны быть частью языка. Может быть туда
>> ещё парсер XML запихнём?

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

Повторяю ещё раз -- текстовая обработка бывает разной. И все методы
текстовой обработки пихать в синтаксис языка нет смысла. Python
в этом плане минималистичен.

>> "Твоих" знакомых.

> Вот что удивительно, они очень авторитетные люди для меня.

Не сомневаюсь. Но не для меня.

> Вот скажи, какой идиот будет так коверкать класс Integer? Такие
> изменения делаються очень осторожно.

Как бы осторожно они не делались. Впоследствии найти ошибку,
связанную с таким изменением, может быть непросто. Ну да, я же
сказал, что для мелких скриптов это пойдёт. Но не для крупных
проектов.

> Так если рассуждать, то в С++ можно #define true false сделать и
> все навернеться. Никто же этого не боиться, правда?

Ошибаешься. Боятся.

anonymous
()
Ответ на: комментарий от anonymous

>Как бы осторожно они не делались. Впоследствии найти ошибку, связанную с таким изменением, может быть непросто. Ну да, я же сказал, что для мелких скриптов это пойдёт. Но не для крупных проектов.

Бред. Тогда вам больше подойдет fool-proofed язык Java:)

anonymous
()
Ответ на: комментарий от anonymous

2anonymous (*) (30.06.2008 23:59:16):

>> Что он менее функциональный, чем Python, я тебе показал.

> Нет, не показал

Показал. Хотя бы два признака. В Python first-class functions,
в Ruby нет. В Python immutable strings, в Ruby нет.

>> Очередь за тобой. Примеры в студию

> 2.upto(7){|i| ... }
> vs
> for i in range(2, 7):
> ...
> Первая запись декларативная, вторая очень смахивает на:
> for(int i = 2; i <= 7; i++)
> ...

Не вижу, каким боком вторая смахивает на C цикл for.
Напротив, она более декларативная, чем в Ruby :-)
Буквально "Для i в диапазоне таком-то делать то-то"
В Ruby "Два до семи блок бла-бла". Чуешь разницу?

>> Батенька, блоки никакого отношения к функциональности не имеют!

> Еще как имеют. Блок кода это анонимная функция (точнее функтор).

Ха-ха. Вот как раз в Python функции - это равноправные члены языка,
так же, как и объекты, переменные и списки. В Ruby это не так.
Там разве что Method и Proc позволяют извратиться так, чтобы получился
функтор.

>> Но в Ruby этого прямым путём и невозможно достичь,
>> так как функций там нет, есть методы классов.

> Мало вы про руби читали. Да и про питон тоже. Каша в голове.

Да нет, я не "читаю", а пишу на них. А вот ты продолжай читать.

> В питоне тоже не функций, а функторы.

Неверно. Правильно сказать, в Python функции - это такие же
равноправные объекты, как строки, списки и пр., что позволяет
легко создавать функторы. В Ruby это не так.

При чём здесь ведь этот бред, что ты тут написал?

> def foo():
> ..pass

> foo.__class__
> => <type 'function'>

> ######################################

> foo = lambda{}

> foo.class
> => Proc

Приведи два простых примера: функтор на Python и на Ruby.
Ещё приведи пример функции, принимающией в качестве аргументов
две другие функции и оперирующей с ними. Вот тогда посмеёмся,
посмотрим, где прямее это реализовано и понятнее выглядит,
в Python или Ruby.

anonymous
()
Ответ на: комментарий от anonymous

2anonymous (*) (01.07.2008 0:17:21):

>> Как бы осторожно они не делались. Впоследствии найти ошибку,
>> связанную с таким изменением, может быть непросто. Ну да, я же
>> сказал, что для мелких скриптов это пойдёт. Но не для крупных
>> проектов.

> Бред. Тогда вам больше подойдет fool-proofed язык Java:)

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

А что мне подойдёт -- это не тебе решать. И часто даже не мне.
Я проекты развивал и поддерживал и на Java, и на C++, и на Python,
на Ruby, на Tcl, на Perl. То есть, судить мне есть на основе чего :)
Сильно сомневаюсь про тебя. Скорее всего сидишь дома книжку про Ruby
читаешь и решил заодно потрепаться :)

anonymous
()
Ответ на: комментарий от anonymous

>Буквально "Для i в диапазоне таком-то делать то-то"
В Ruby "Два до семи блок бла-бла". Чуешь разницу?

Эх, ви таки не нюхали нормальных декларативных языков. Я специально показал пример для руби с методом upto, я думал вы догадаетесь, что вся соль в том что если бы не было такого метода, то его можно прикрутить, а вот конструкцию типа for ... прикрутить нельзя, все таки это не лисп:) Стандартными декларативными фишками не напосешься, тут нужна система метапрограммирования. Так что переопределение всех возможных объектов это большой плюс к декларативным возможностям языка.

>Ха-ха. Вот как раз в Python функции - это равноправные члены языка,
так же, как и объекты, переменные и списки.

Повторяю для особо непонятливых - в питоне функции это функторы. Если и с этого раза будете утверждать обратное - буду кидаться ссылками.

>Приведи два простых примера: функтор на Python и на Ruby.

Я именно их и привел.

>Ещё приведи пример функции, принимающией в качестве аргументов
две другие функции и оперирующей с ними

Функций нету, есть функторы (и в питоне и в руби)

foo1 = lambda do |a, b, x|
a.call(b.call(x))
end

foo2 = lambda do |a|
a * a
end

foo3 = lambda do |a|
a + 1
end

foo1.call(foo2, foo3, 2)

Запись smth.call() такая странная, что бы не вводить в заблуждение, что это метод.

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

Откройте для себя Agile:) Ключевые слова для поиска: коллективное владение кодом.

>Сильно сомневаюсь про тебя. Скорее всего сидишь дома книжку про Ruby
читаешь и решил заодно потрепаться :)

Учитывая вашу неграмотность в области языков невольно возникает вопрос либо о правдивости истории либо о качестве ваших проектов. Я участвовал в реальных проектах на руби, так что не надо ля-ля:)

anonymous
()
Ответ на: комментарий от anonymous

> Кроме: > for i in xrange(n): > ...

> Навскидку: > map(..., xrange(n)) > reduce(...,xrange(n))

Ващета это не эквивалентный код. Почему - догадайся сам. :)

anonymous
()
Ответ на: комментарий от anonymous

А их личный фрэймворк на Питоне "webapp" очень похож функциональностью на распространённый "web.py". Видимо дали бвбла разработчику, он им и подпилил свой фрэймворк.

anonymous
()
Ответ на: комментарий от anonymous

> Регулярные выражения там релизованы библиотекой, для скриптового языка не иметь встроенной поддержки регулярок - позор

Вдоль мне логи, откуда такие идиоты берутся? ЗАЧЕМ? Руби и так не быстр, так им ещё регвыры разбирать? Умники, блин. Ах, в Питоне библиотеки на Сях, он говно.

> Про "невелосипедистов", написавших Django - слизано с Ruby On Rails

Охренеть. А Рубьи integer слизаны вообще сложно сказать с чего.

> Так что больше - возможностей, меньше monkey-code => больше эффективность, и нечего бояться

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

anonymous
()
Ответ на: комментарий от anonymous

>Вдоль мне логи, откуда такие идиоты берутся? ЗАЧЕМ? Руби и так не быстр, так им ещё регвыры разбирать? Умники, блин. Ах, в Питоне библиотеки на Сях, он говно.

В руби класс Regexp оболочка над сишным модулем + syntactic sugar для непосредственной работы с этим классом. Ну и тупые пошли нынче пойонеры...

>Охренеть. А Рубьи integer слизаны вообще сложно сказать с чего.

Сам хоть понял, что сказал?

>Это Руби так на мозг воздействует, что ли? Сравни уже наконец Питонье наследование от встроенных типов и подумай, кому надо помнить, что и в каком во встроенном типе наворотил месяц назад такой же бестрашный горе-программатор из каморки в соседнем крыле.

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

anonymous
()
Ответ на: комментарий от anonymous

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

Теперь представь во сколько раз была бы сложнее подобная библиотека на питоне:

http://facets.rubyforge.org/doc/index.html

anonymous
()
Ответ на: комментарий от anonymous

>> Буквально "Для i в диапазоне таком-то делать то-то"
>> В Ruby "Два до семи блок бла-бла". Чуешь разницу?

> Эх, ви таки не нюхали нормальных декларативных языков.

Да я пошутил над тобой, а ты обрадовался, что взрослому дяденьке
нос утёр :-)

> Я специально показал пример для руби с методом upto, я думал вы
> догадаетесь, что вся соль в том что если бы не было такого метода,
> то его можно прикрутить,

Да, но в данном случае пример совсем неудачный, потому что
в Python подобное совершенно легко делается через итераторы.
Что хорошо для Ruby, совсем не в кассу для Python. Не вижу
никакого преимущества здесь. Кстати, возвращаясь к шутке 'два до семи
блок бла-бла', как раз хотел показать, что Python'овский код более
легко читаем, буквально, как естественный язык, а то есть более
высокоуровневый, чем Ruby.

> а вот конструкцию типа for ... прикрутить нельзя, все таки это не
> лисп:)

Ну до Lisp и Python, и Ruby и всем остальным вечно далеко. Это
же очевидно в силу специфичности языка.

> Стандартными декларативными фишками не напосешься, тут нужна
> система метапрограммирования. Так что переопределение всех
> возможных объектов это большой плюс к декларативным возможностям
> языка.

Не надо этого ничего. Вы преувеличиваете роль метапрограммирования
для большинства задач. А вот в крупных проектах 'переопределение
всех возможных объектов' создаёт настоящий кошмар. Что действительно
надо, так это 'one way to do it', что Python и реализует.

> Функций нету, есть функторы (и в питоне и в руби)

Не мели чепуху ради бога. У функтора достаточно общее понятие,
и обычно это объект с поведением, как у функции. Например, в Python
функторами принято называть классы с поведением, как у функций,
а в OCaml функторы - это модули, параметризуемые другими модулями.

> Запись smth.call() такая странная,

Вот и я к тому, что она 'странная', а в Python запись естественная,
как в функциональных языках.

> что бы не вводить в заблуждение что это метод.

Не чтобы не вводить в заблуждение, а просто потому, что по-другому
в Ruby ты не сделаешь, в силу того, что там () могут отсутствовать
в вызове функций без агрументов и ты просто не в состоянии будешь
отличить вызов функции от ссылки на неё.

> Откройте для себя Agile:) Ключевые слова для поиска: коллективное
> владение кодом.

К Agile тоже надо подходить критично. Не стоит принимать всё слепо
на веру. Это во-первых. А во-вторых не надо недостатки языка
пытаться закрыть с помощью Agile. И без того хватает проблем, которые
приходится решать.

> Учитывая вашу неграмотность в области языков невольно возникает
> вопрос либо о правдивости истории либо о качестве ваших проектов.
> Я участвовал в реальных проектах на руби, так что не надо ля-ля:)

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

anonymous
()
Ответ на: комментарий от lester

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

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

а если задача нестандартная, алгоритм только что придуман и не отлажен, а уложиться надо не во время выполнения программы а в сроки? тоже на си будете писать? тогда флаг вам в руки и барабан на шею.

anonymous
()
Ответ на: комментарий от anonymous

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

создается впечатление, что вы ничего юзабельного не писали, если для вас безразлично, что должны быть приемлимые временные показатели работы программы, насчет что пишу я, вот малая часть( того что можно заскриншотить :) ):

http://www.picatom.com/l/222-26.html
http://www.picatom.com/l/333-31-link.html



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

lester ★★★★
()
Ответ на: комментарий от anonymous

> В руби класс Regexp оболочка над сишным модулем + syntactic sugar для непосредственной работы с этим классом

Так к чему высеры про то, что в Питоне регвыры "не средствами языка" сделаны? Отдельный модуль мешает?

> А все такого плана изменения обязательно тщательно документируются и выносятся на всеобщее обсуждение

Ясно всё, совещания и документирование хаков — дело настоящих программистов

anonymous
()
Ответ на: комментарий от anonymous

> Теперь представь во сколько раз была бы сложнее подобная библиотека на питоне: http://facets.rubyforge.org/doc/index.html

а) такая библиотека не имеет смысла за рамками разработки языка б) это было бы тупо выделено в новые типы-классы

anonymous
()
Ответ на: комментарий от anonymous

>Да, но в данном случае пример совсем неудачный, потому что
в Python подобное совершенно легко делается через итераторы.

Итераторы, да, в данном конкретном случае выход. Однако, стоит чуть отойти от обработки коллекций и у питоне нету НИЧЕГО, он превращается в некое подобие java с динамической типизацией. Ну ладно, еще с декораторами:) Вот пример, более близкий к тому что называеться большой проект (просто первые попавшиеся куски кода из tutoriala)

PySpec:
def add2(input):
..return input + 2

class add2_Behavior(object):
..@context
..def Function_add2_whose_input_is_3(self):
....self.result = add_2(3)

..@spec
..def should_return_5(self):
....About(self.result).should_equal(5)

RSpec:

describe "All Employees", :shared => true do
..it "should be payable" do
....@employee.should respond_to(:calculate_pay)
..end
end

describe "All Managers", :shared => true do
..it_should_behave_like "All Employees"
..it "should be bonusable" do
....@employee.should respond_to(:apply_bonus)
..end
end

describe Officer do
..before(:each) do
....@employee = Officer.new
..new
..it_should_behave_like "All Managers"

..it "should be optionable" do
....@employee.should respond_to(:grant_options)
..end
end


Теперь сколько угодно доказывайте, что pyspec более похож на DSL, чем rspec, все равно отправлю изучать матчасть:)


>Кстати, возвращаясь к шутке 'два до семи
блок бла-бла', как раз хотел показать, что Python'овский код более
легко читаем, буквально, как естественный язык, а то есть более
высокоуровневый, чем Ruby.

Ола-ла, не забываем, что

for i in (0..n)
...
end

Никто не отменял:))) Всегда есть выбор в сторону более человечного выбора и не надо это путать с подходом перла, там скорее "у нас еще один более убогий способ решения задачи", а в руби "оказывается в руби можно сделать еще лучше!"


>Не надо этого ничего. Вы преувеличиваете роль метапрограммирования
для большинства задач. А вот в крупных проектах 'переопределение
всех возможных объектов' создаёт настоящий кошмар.

Мальчик, хватит фантазировать. Вы не привели ни одного весомого аргумента и описываете ситуацию, абсолютно не представляя как такая технология работает. Вот описываю два возможных случая:

1) Переопределение стандартного метода. Совершенно известно, что до переопределения делаеться alias на старую версию метода и к названию, например, добавляеться old_, далее obj.methods.grep /^old_/ и любуемся списком переопределённых методов.

2) Добавление нового метода. Вообще ничего страшного. Всегда можно получить разницу между стандартными методами объекта и расширеным набором.

>Что действительно
надо, так это 'one way to do it', что Python и реализует.

Аха, жава рулит!

>Не мели чепуху ради бога. У функтора достаточно общее понятие,
и обычно это объект с поведением, как у функции. Например, в Python
функторами принято называть классы с поведением, как у функций,
а в OCaml функторы - это модули, параметризуемые другими модулями.

Для особо глупых привожу пример повторно:

def foo(x):
..print x

демонстрация поведение как объекта:
foo.__class__
=><type 'function'>
(обращение к атрибуту объекта)

foo.__call__(56)
56
(вызов метода объекта)

демонстрация поведения как функции:
foo(56)
56

anonymous
()
Ответ на: комментарий от anonymous

>Вот и я к тому, что она 'странная', а в Python запись естественная,
как в функциональных языках.

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

>Не чтобы не вводить в заблуждение, а просто потому, что по-другому
в Ruby ты не сделаешь, в силу того, что там () могут отсутствовать
в вызове функций без агрументов и ты просто не в состоянии будешь
отличить вызов функции от ссылки на неё.

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

>К Agile тоже надо подходить критично. Не стоит принимать всё слепо
на веру. Это во-первых.

Ты всегда все отрицаешь?:) Наверное ты самый умный, да?

>А во-вторых не надо недостатки языка
пытаться закрыть с помощью Agile. И без того хватает проблем, которые
приходится решать.

Он решает не проблемы языка, он решает проблемы, не дающие влиться нормальным языкам в мейнстрим, что бы отойти от того что называется software factory.

>Я догадываюсь, что проекты были небольшими, и делал их ты один.

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

>Если бы тебе достался в наследство код от каких-нибудь индусов или
китайцев, ты бы так не говорил. Я уверен

Весь фокус в том что индусы не пишут на руби. А вот на питоне еще как пишут! Все таки опенсорсный базар уже развратил питона, а руби еще нет, его бережно охраняет Matz. Вот стоит бояться будущего, когда руби допилят до масс и до него таки доберуться знатоки вроде тебя, так что все надежды на матца.

anonymous
()
Ответ на: комментарий от cab

> Кстати, чем плоха лямбда в питон?

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

tailgunner ★★★★★
()
Ответ на: комментарий от anonymous

> Если вкратце, то питон скриптовый, потому как он используется как оболочка над сишными модулями (впрочем, так же как и руби).

За твоими речами видимо скрывается остутствие реального опыта в применении обоих упомянутых языков. Если рассматривать питон в составе того же Django, а это основное применение пейтона для мена, то твоя фраза бессмысленна. Здесь он выступает в качестве языка высокого уровня и удобной основы для веб движка. Питонские скрипты, да, бывают. Как правило это небольшие задачи по обслуживанию сайта, запускаемые по крону. Но и здесь он выступает на высоте - обработка строк, удобный optparse и тп

syncsync
()
Ответ на: комментарий от syncsync

>За твоими речами видимо скрывается остутствие реального опыта в применении обоих упомянутых языков...

Еще один "гуру" заявился))

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

>За твоими речами видимо скрывается остутствие реального опыта в применении обоих упомянутых языков.

О да, кодинг сайтов это пипец какой опыт:)

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

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

>Как правило это небольшие задачи по обслуживанию сайта, запускаемые по крону.

Ну если питон не способен ни на что большее, то это просто пыхтелка-перделка какая-то. Однако я все же знаю и другие применения, как руби так и питона. И основное применения - это оболочка над Сишными модулями (простая и безгеморная работа с графикой, сетью и прочее), преимущественно для unix систем. Подбираемся к тому что программа должна соответствовать unix-way, один из критериев - использование текстовых интерфейсов. Может от дядек по-старше слышал что такое sed, awk, grep? Если нет, то поинтересуйся. Тебе будет полезно.

>Но и здесь он выступает на высоте - обработка строк, удобный optparse и тп

Какой в задницу на высоте? На высоте здесь один язык - перл, от которого и была взята обработка регулярных выражений. Первоначально в руби взяли и еще некоторые вещи, вроде подразумеваемых аргументов и прочего, но от них вскоре отказались, а вот обработка регулярок в стиле перла прошла проверку временем и закрепилась. Удобный optparse говоришь? Можно подумать, что в руби GetoptLong чем-то уступает. По мне так теже яйца, только с боку. Ня, и сравни:

opts = GetoptLong.new(
[ '--help', '-h', GetoptLong::NO_ARGUMENT ],
[ '--repeat', '-n', GetoptLong::REQUIRED_ARGUMENT ],
[ '--name', GetoptLong::OPTIONAL_ARGUMENT ]
)
Тока еще можно задавать уровень опциональности.


anonymous
()
Ответ на: комментарий от anonymous

> Скрипт это такая программа, которая управляет другими программами. Вот если бы питоновские модули были написаны на питоне и без всяких Си
Сразу видно ты мыслишь стереотипами вдолбленными тебе на уроках. Попробуй хоть немного думать абсткратно - когда ты пишешь обработчик http запроса,или view в терминах джанго, какая тебе блять разница что там внизу C-шная библиотека, чистый пейтон или еще что? Другими словами, какое тебе дело до особенностей реализации когда ты описываешь чистую логику?
> О да, кодинг сайтов это пипец какой опыт:)
Видишь ли, руби который тут ты ставишь в пример лучшей альтернативы python, не имеет друго применения, кроме как в составе рельсов. Поэтому
тут ты перднул в лужу :-)
>И что? В качестве основы для веб-движка может выступать при большом желании любой тьюринг-полный язык
Речь не о том, какой может при желании, а который УЖЕ с успехом применяется. Я рассуждаю с позиции прагматика и практика, а ты с позиции
школьнега-флеймера жаждущего славы Луговского. Вот и вся разница.
> Ну если питон не способен ни на что большее, то это просто пыхтелка-перделка какая-то.
Тут дальше и комментировать нечего - обычная сублимация проблем с прыщами. Пожалуй посмотрим только как применяется питон и руби в свежеустановленом линуксе:

locate -r '\.py$' | wc
2182 2182 119472

locate -r '\.rb$' | wc
0 0 0

Так почему на руби реально нигде не используется, кроме как в так презираемом сайтостротельстве?

syncsync
()
Ответ на: комментарий от syncsync

> locate -r '\.py$' | wc
2182 2182 119472

нашел чем хвастатся
дерьма всякого напихали в систему - прям "вавилонская башня"


anonymous
()
Ответ на: комментарий от anonymous

> нашел чем хвастатся
> дерьма всякого напихали в систему - прям "вавилонская башня"

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

syncsync
()
Ответ на: комментарий от syncsync

> поменьше вякал, что руби как скриптовый язык лучше питона. чудик , я не тот аноним c которым ты тут мозги трахаете я в гробу видел и рубанок и пистон в linux системе.

anonymous
()
Ответ на: комментарий от syncsync

> а мне в свою очередь до п@#%ы тот ты или другой аноним )))

всегда подозревал о низком IQ панчеров на питоне стоит треснуть табуреткой по роже - сразу забывают литературный язык прям беда одна :)))

anonymous
()
Ответ на: комментарий от anonymous

> сразу забывают литературный язык :)))

и пистон тоже

anonymous
()
Ответ на: комментарий от anonymous

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

syncsync
()
Ответ на: комментарий от syncsync

>Видишь ли, руби который тут ты ставишь в пример лучшей альтернативы python, не имеет друго применения, кроме как в составе рельсов. Поэтому тут ты перднул в лужу :-)

Это для таких трллей как ты он не имеет больше применения, да и вообще забудь об этом языке, тебе не понять. Лично для меня и моих коллег это в первую очередь язык для извлечения данных(этакий перл, только для проектов больших и серьезных, а не скриптиков на пару строчек).

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

А вот и интеллект "блять" попер. Как язык для веба руби во вторую очередь, хотя там тоже текстовая обработка - одна из передовых задач, более того не единственная и есть задачт далеко уходящие от "написания обработчиков http запросов и тп."

>Речь не о том, какой может при желании, а который УЖЕ с успехом применяется. Я рассуждаю с позиции прагматика и практика, а ты с позиции школьнега-флеймера жаждущего славы Луговского. Вот и вся разница.

Посмотри на проект twitter, или из отечественных lookatme, хочешь сказать, что они не успешные? Если ты так хочешь использовать, то что уже с успехом используеться, поставь себе в идолы PHP, на нем даже непревзойденная wikipedia написана.

>Пожалуй посмотрим только как применяется питон и руби в свежеустановленом линуксе:

Руби испоьзуют лично знакомые авторитетные люди, я же привык выбирать инструмент не через locate "-r '\.xx$' | wc" а собствееной головой. Если у тебя хватает ума только копировать других, как мака, флаг тебе в руки, ты идеальный кандидат на то что бы на тебе зарабатывали деньги.

anonymous
()
Ответ на: комментарий от anonymous

>Как язык для веба руби во вторую очередь, хотя там тоже текстовая >обработка - одна из передовых задач
Хаха хватит смешить иди делай домашние задания недоучка ))

>Руби испоьзуют лично знакомые авторитетные люди
Ты своими постами уже неоднократно доказал, что решения самостоятельно принимать не способен и уж тем более не способен сам зарабатывать деньги. Да и где ты их можешь заботать с такими поверхностыми знаниями и пренебрежением к вебу?

syncsync
()
Ответ на: комментарий от anonymous

> Django это cms движок

ни разу ни cms-движок, это именно веб-фреймворк с ORM для веб-приложений.

anonymous
()
Ответ на: комментарий от anonymous

> Повторю еще раз питон - из разряда скриптовых, текстовая обработка должна быть нормальной, а не аля Java - через мега-супер-пупер либы.

либам именно в "либах" - самое место. подключаешь только то, что нужно. re, xmllib или что ещё вздумается.

Кто сказал, что "скриптовый язык" - ТОЛЬКО тот, у которого всё встроенное? А если не всё, то что? Почему именно регулярные выражения должны быть встроенные, а не, скажем, математика, или гуи?

На то и язык (относительно) универсальный, чтобы решать широкий класс задач.

anonymous
()
Ответ на: комментарий от syncsync

>Да и где ты их можешь заботать с такими поверхностыми знаниями и пренебрежением к вебу?

Аха-ха)))))) Чё, зарабатываешь на пиво кодингом гостевых книг на Django? Иди, дальше восхищайся optpars-ом своим)) Детсад...

anonymous
()
Ответ на: комментарий от anonymous

>Кто сказал, что "скриптовый язык" - ТОЛЬКО тот, у которого всё встроенное? А если не всё, то что? Почему именно регулярные выражения должны быть встроенные, а не, скажем, математика, или гуи?

Потому что и питон и руби это попсовые инструменты. Я был бы не против, если бы библиотека не просто добавляла новый класс с соответствующими либами но и пополняла синтаксис сахаром за счет макросов. А коль их нету...

anonymous
()
Ответ на: комментарий от anonymous

Ты вот пока пускаешь пузыри в лужи и совсем не думаешь о будующем. Но после того как сдашь свои лабы и закончишь "изучать программирование", то поймешь какое ты на самом бесперспективное говно и пойдешь обивать пороги, пока тебя не возьмут куда нибудь где и будешь уныло админить до пенсии!

anonymous
()
Ответ на: комментарий от anonymous

> если бы библиотека не просто добавляла новый класс с соответствующими либами но и пополняла синтаксис сахаром за счет макросов

А вот и лисперы подтянулись :D Почему почти в любой спор о языках приходят безумные лисперы и начинают объяснять, что только лисп рулит, потому что в нем есть макры, или CLOS, или метапрограммирование, или надо прям руками AST писать...ну почему так?

P.S. EasyExtend позволяет расширять синтаксис Питона.

tailgunner ★★★★★
()
Ответ на: комментарий от anonymous

>Ты вот пока пускаешь пузыри в лужи и совсем не думаешь о будующем. Но после того как сдашь свои лабы и закончишь "изучать программирование", то поймешь какое ты на самом бесперспективное говно и пойдешь обивать пороги, пока тебя не возьмут куда нибудь где и будешь уныло админить до пенсии!

Лабы я сдал уже давно. И не только за себя, а еще человек за 10. Чего и тебе желаю, мож ума наберешься. Работаю я руби-программистом, а свои фантазии можешь оставить при себе, я не ничтожество вроде тебя, что бы отстаивать инструмент, который не применяю на практике.

А "изучаю программирование" я непрерывно и не собираюсь останавливать процесс разваития в этой области, пока не решу бросить профессию программиста.

anonymous
()
Ответ на: комментарий от tailgunner

>А вот и лисперы подтянулись :D Почему почти в любой спор о языках приходят безумные лисперы и начинают объяснять, что только лисп рулит, потому что в нем есть макры, или CLOS, или метапрограммирование, или надо прям руками AST писать...ну почему так?

Хы, так я и не лиспер вовсе, хотя в свободное от работы руби-программиста время балуюсь со Scheme. А макросы мне больше в Nemerle нравяться

anonymous
()
Ответ на: комментарий от anonymous

Ура! петон с его ограниченной лямбдой не нужен уже потому что среди нас есть живые руби-программисты !!

anonymous
()
Ответ на: комментарий от anonymous

>Ура! петон с его ограниченной лямбдой не нужен уже потому что среди нас есть живые руби-программисты !!

Именно! Не будь руби превосходящим питон, он бы никогда не добился хотя бы какой-нибудь поддержки со своими гавно-реализациями. Может пройдет пара лет и руби заглохнет, но уже сейчас он оказал огромное влияние на программистов и технологии. Вы видели ASP.NET MVC? Это же очередной клон Rails, только на этот раз уже на C#. Да, я согласен в том виде в каком оно есть сейчас Django выгоднее, однако это сейчас, руби ведь развиваться стал только последних года 3. Хотя о руби я узнал от людей, которые писать на нем начали еще лет 8 назад, когда rails еще не пахло.

anonymous
()
Ответ на: комментарий от anonymous

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

anonymous
()
Ответ на: комментарий от anonymous

Каким образом относится rails к лямбдам питона, не подскажешь?

Таким что Rails менее многословен. Когда пишешь на питоне, всегда четкое понимание - это питон. Когда пишешь на руби (в рамках rails в том числе) есть больше ощущение, что это DSL. Хотя в целом и питон и руби довольно так отстойные языки, это я так, к слову:)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.