LINUX.ORG.RU

Python стал юзабельным

 ,


0

2

http://www.pythonb.org/

Ъ:

Python with Braces is a variant of the Python programming language, that has one significant difference: it uses standard C style braces for defining scopes rather than the classic python indentation. This makes Python more similar to other programming languages, and can also enable the introduction of new concepts such as anonymous functions and classes to Python.

А лисп без скобок уже сделали?

jori ()

Совсем наоборот же, это же одна из главных его фич.

z00ke ()

Кому нужен питон без отступов? Это можно сразу закапывать.

wakuwaku ★★★★ ()

We're planning to:

• Add indentation support to C language

PolarFox ★★★★★ ()

Ещё бы они убрали это дурацкое «self.» и было бы вообще замечательно.

xterro ★★★★★ ()

"А мы построим свой Python! С блекджеком и скобками!"

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

Что значит убрали self. ? Это даже не зарезервированное слово, вместо него, внезапно, можно писать вообще что угодно.

class Dummy:

    def __init__(this):
        this.foo = 'oh hai'

    def meth(this, bar):
        print(bar)
Это будет корректно работать, да и вообще ты можшь хоть что там писать. В питоне зоны видимости устроены иначе, поэтому без передачи экземпляра класса, по сути, никак.

z00ke ()

Вангую

Python with Blocks is a variant of the Python programming language, that has one significant difference: it uses standard Ruby style blocks for defining scopes rather than the classic python indentation. This makes Python more similar to other programming languages, and can also enable the introduction of new concepts such as anonymous functions and classes to Python.

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

С принципом DRY автор питона знаком точно не был.

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

Что? В питоне ООП не менее функционально чем в каком либо другом языке, поддерживает все те же концепции, в некоторой степени даже лучше.
Хочешь сказать, что авторы языков со скобками тоже с этим не знакомы, ты ведь постоянно их пишешь. Хм...

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

Ещё бы они убрали это дурацкое «self.» и было бы вообще замечательно.

отсутствие self — это writeonly-стиль программирования.

например ты читаешь чужой код и видишь там:

class Bar(Baz):
    ...
    def qux(...):
        ...
        foo()
        ...
    ...

вопрос — что именно за foo() ? это член класса или что-то другое?

а теперь сравни:

class Bar(Baz):
    ...
    def qux(self, ...):
        ...
        self.foo()
        ...
    ...

всё сразу стало ясно

user_id_68054 ★★★★★ ()
Последнее исправление: user_id_68054 (всего исправлений: 2)
Ответ на: комментарий от z00ke

Что?

То. Лишнее объявление параметра в каждом методе.

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

this.foo = 'oh hai'

Можно то можно, но зачем оно вообще нужно, разве класс не знает, его это переменная или нет? Зачем её предварять этим словом? Понятно, что вроде как может быть неопределенность, что это за переменная - член класса или скажем глобальная, но это думаю, должно предупреждаться питоном. Почмеу например в C# мы не пишем такого? Наверно потому что C# знает, что есть что )

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

отсутствие self — это writeonly-стиль программирования.

«отсутствие обязательного визуального разделения имён функция и имён переменных — это writeonly-стиль программирования.»

«отсутствие обязательного визуального разделения имён переменных и названий классов — это writeonly-стиль программирования.»

«отсутствие обязательного визуального разделения compile-time и run-time значений — это writeonly-стиль программирования.»

«отсутствие обязательного визуального разделения вызовов со сторонними эффектами и без — это writeonly-стиль программирования.»

«отсутствие обязательного визуального разделения quoted и unquoted значений при запросах в БД — это writeonly-стиль программирования.»

И т.п.

Больше бреда.

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

Оно и так ясно и понятно. Почему например в той же Java этого нет или в C#? Наверняка потому что там есть скобки, и пользователь сразу видит к чему что относится, но итут я думаю с этим не должно быть проблем. Или, вот ещё момент, раз уж оно нужно, то передавали бы его как в С++ - скрытно, т.е чтобы оно в параметрах функции не светилось, по первости с толку сбивает.

xterro ★★★★★ ()
Последнее исправление: xterro (всего исправлений: 1)
Ответ на: комментарий от user_id_68054

в каждом?

Имелось ввиду конкретное подмножество методов, принимающих инстанс.

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

разве класс не знает, его это переменная или нет? Зачем её предварять этим словом?

потому что ты определяешь функцию а не класс (ключевое слово def — для определения функции).

а класс это лишь тип — он ВООБЩЕ НИЧЕГО НЕ ЗНАЕТ об СВОИХ ЭКЗЕМПЛЯРАХ (экземпляр класса может быть многократно изменён после того как будет создан).

user_id_68054 ★★★★★ ()
Последнее исправление: user_id_68054 (всего исправлений: 4)
Ответ на: комментарий от xterro

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

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

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

xterro ★★★★★ ()
Последнее исправление: xterro (всего исправлений: 1)
Ответ на: комментарий от xterro

Можно то можно, но зачем оно вообще нужно, разве класс не знает, его это переменная или нет?

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

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

А ведь можно было взять и сделать как в рубях: использовать 1 символ для указания скоупа.

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

Путаешься в чем? Это наоборот упрощает чтение и понимание, в питоне можно получить функцию/переменную извне и тогда уже тот, кто будет читать твой код, может не понять что ты имеешь в виду. В некоторых языках вообще зона видимости класса ограничивается только классом, а в питоне нет. Затем это и сделано.

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

Ещё бы они убрали это дурацкое «self.»

self — прекрасен. Ты просто еще слишком глуп, чтобы это понять. Передача инстанса позволяет многие «магические» (в других языках) вещи делать явно, плюс симметрия с classmethod.

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

Тебе кто-то запрещает?

Устройство мозга, например.

Возьмём JS. В JS this — это ВСЕГДА this. Возьмём Ruby. В Ruby значения префиксов скоупа фиксированы и всегда значат одно и то же.

Чуешь к чему это? Распознавание этих обозначений при чтении становится автоматическим навыком, не отвлекая от размышления об алгоритме.

В Питоне не так. В питоне придётся при чтении каждого метода осознанно обращать внимание, какая переменная используется в значении «этот инстанс».

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

Почему например в той же Java этого нет или в C#?

потому что Java/C# а также и C/C++ --- это практически writeonly-языки программирования по сравнению в Python. (сюрприз?)..

разобраться в чужом коде C/C++/C#/Java — можно но ГОРАЗДО сложнее чем в чужом python-коде.

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

а если кто-то хочет разобратсья в чёжом C/C++/C#/Java коде — то ему придётся использовать какую-нибудь геморойную IDE с функцией («найди мне где это декларированно»).. и разумеется эта IDE будет работать только если в коде нет ошибок.

Или, вот ещё момент, раз уж оно нужно, то передавали бы его как в С++ - скрытно

кроме this\self — в C/C++/C#/Java (во всём его семействе) есть и другие проблемы которые вызывают в нём эффект writeonly.

например конструкция импорта модулей — которая во время импортирования СРЁТ ВСЁ ВНУТРЬ ГЛОБАЛЬНОГО ПРОСТРАНСТВА [в C++ есть namespace и они чуть-чуть облегчают ситуацию, о НЕ до конца]

вобщем вот тебе очередная writeonly-проблема C/C++/C#/Java:


#include "module_a.h"
#include "module_b.h"
// ...и..ещё..кучу..других..импортов..(а..внутри..них..другие..импорты..)...
#include "module_y.h"
#include "module_z.h"


void foo() {
   bar();
   baz();
}

как узнать в каком модуле эти bar() и baz() ????

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

использовать 1 символ для указания скоупа

И два десятка символов чтобы получить ссылку на метод. Да-да.

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

Передача инстанса позволяет многие «магические» (в других языках) вещи делать явно

А именно?

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

В JS this — это ВСЕГДА this.

Гг. То-то везде разбросаны "var self = this".

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

И два десятка символов чтобы получить ссылку на метод. Да-да.

— А давайте поставим красивые остановки, как в Париже.
— Там же гейбраки, вы что!!!

Совок детектед.

Становясь программистом, человек всё равно может остаться совком.

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

Гг. То-то везде разбросаны «var self = this».

Точно совок.

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

О, почитатели сохранения сломанных контекстов в треде. Все в v8!

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

Да, только символы не я первый считать начал.

Давай, отмазывайся теперь. :)

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

Гг. То-то везде разбросаны «var self = this».

хахаха :) .. и ведь точно :-)

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

лорчую

хотел что-нибудь добавить, только смысла нет :-/

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

О, почитатели сохранения сломанных контекстов в треде. Все в v8!

У тебя тяжелая форма бреда.

Заметь, ты мне сейчас пытаешься рассказывать, как плох JS. При том что я вообще ничего не говорил о том, плох JS или хорош.

Ты уверен, что адекватен?

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

Давай, отмазывайся теперь. :)

Предпочитай дальше не замечать торчащего this в bind и apply. Бабуины любят делать бессмысленную работу.

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

Устройство мозга, например.

А при чем тут язык тогда?

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

А при чем тут язык тогда?

Внезапно, язык программирования предназначем, чтобы его читать. Мозгом.

anonymous ()

И там, и там выравнивание… Зачем тогда скобки?

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

Оно и так ясно и понятно. Почему например в той же Java этого нет или в C#? Наверняка потому что там есть скобки, и пользователь сразу видит к чему что относится

:facepalm:

В каком месте в Java используются скобки в вызовах локальных методов? :)

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

self — прекрасен. Ты просто еще слишком глуп, чтобы это понять. Передача инстанса позволяет многие «магические» (в других языках) вещи делать явно, плюс симметрия с classmethod.

корень всего этого конфликта (этой темы) — в том что некоторые люди хотят магическую илитарность.

заявление «явное лучше неявного» — выставляем магию как шарлотанство. и как быть теперь любителям магии? использовать метаклассы? :-)

user_id_68054 ★★★★★ ()
Последнее исправление: user_id_68054 (всего исправлений: 1)
Ответ на: комментарий от anonymous

Заметь, ты мне сейчас пытаешься рассказывать, как плох JS.

Если бы ты не привел js как пример

this — это ВСЕГДА this.

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

baverman ★★★ ()
Последнее исправление: baverman (всего исправлений: 1)
Ответ на: комментарий от baverman

Предпочитай дальше не замечать торчащего this в bind и apply. Бабуины любят делать бессмысленную работу.

Дяденька, ты сейчас с кем разговаривал? :D

Но ты продолжай. Мне интересно, до какой стадии ты дойдёшь. Давай я буду тебе говорить каждый раз говорить, что ты совок, а ты каждый раз продолжай какую-нибудь белиберду генерировать а ля «this в bind и apply». Договорирились?

Твой ход.

Для справки: я вообще без понятия, о чем ты бредишь и какое это отношение имеет к скорости чтения кода на питоне. :D

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