Найти - Пользователи
Полная версия: Куда катится питон?
Начало » Python для новичков » Куда катится питон?
1 2 3
Gradient
Может, уже где обсуждалось, я ж не читатель :-)
Сразу скажу, что вообще питон мне всё-таки нравится, но некоторые вещи кажутся мне очень странными.

Область видимости переменных. Почему просто было не сделать “снизу вверх”, как в “обычных” языках? Частая глобальная переменная - в каждой функции пиши global. Или передавай её как параметер. Зачем эти сложности на пустом месте?

Почему бы не сделать вложенных функций? Я не имею в виду lambda, я имею в виду функции строк на 10 с нормальной логикой, несколькими return, и доступом к переменным вышележащей функции.

Зачем при написании метода класса всегда указывать self? Понятно, что “объектная ориентированность реализована так”, но код-то зачем этим забивать? В “других языках” интерпретатор с таким отлично справляется без пихания self на каждый чих.

Почему bytes неизменяем? Что мешало сделать работающим что-то вроде b = 0x10?

В третьей версии серьёзно меняли синтаксис… Одно из главнейших отличий (не главное, конечно, но пожалуй, именно это больше всего ударило по питоновким проектам), что print - теперь функция. Проделана огромная работа, многое было переписано заново…
А этих очевидных вещей не добавили. Почему?! Был бы вообще лучший язык на свете, а тут во многом остаётся ощущение некоторой недоделанности и временности. Хоть Гвидо и “заморозил изменения синтаксиса”, думаю, меняться язык будет. Уж очень нестабильное состояние его сейчас (3.1).

Сумбурно, конечно, но надо же высказаться и мнения общественного спросить.
helm2004
В каждом языке есть свои плюсы и минусы. Например - РНР. Простой(и плюс и минус), поддерживает много баз данных(+), есть куяча примеров и реализаций(+). Минуса - простой(ох и много гавнокода на нём написано!), нет(это мое ИМХО) нормальной ИДЕ под него, непонятные и запутанные инклуды.
Gradient
Ну да… Но я не к тому, чтобы поныть о том, что мне не нравится.
Может, предложения по улучшению где-нибудь централизованно принимаются? Ведь добавь эти вещи - однозначно лучший язык будет.
Lexander
Из всего вышеперечисленного только self поддерживаю. Остальное - на любителя.
ZZZ
Lexander
Из всего вышеперечисленного только self поддерживаю.
И от куда вы предлагаете его брать? Из воздуха?
Не надо магии.
Dimka665
то, что вам кажется недоделанностью, другим видится логичными вещами.
есть bytearray - mutable bytes.
что за вложенные функции? )
Ferroman
Область видимости переменных. Почему просто было не сделать “снизу вверх”, как в “обычных” языках? Частая глобальная переменная - в каждой функции пиши global. Или передавай её как параметер. Зачем эти сложности на пустом месте?
1. Использование глобальных переменных - частый симптом плохого дизайна. Требуется редко.
2. Потому что Namespaces are one honking great idea – let's do more of those!

Почему бы не сделать вложенных функций? Я не имею в виду lambda, я имею в виду функции строк на 10 с нормальной логикой, несколькими return, и доступом к переменным вышележащей функции.
Вы мне не поверите.
Приведу код из Python ESSENTIAL REFERENCE Fourth Edition

def countdown(start):
n = start
def display():
print('T-minus %d' % n)
def decrement():
n -= 1 # Fails in Python 2
while n > 0:
display()
decrement()
In Python 2, you can work around this by placing values you want to change in a list or
dictionary. In Python 3, you can declare n as nonlocal as follows:
def countdown(start):
n = start
def display():
print('T-minus %d' % n)
def decrement():
nonlocal n # Bind to outer n (Python 3 only)
n -= 1
while n > 0:
display()
decrement()
The nonlocal declaration does not bind a name to local variables defined inside arbi-
trary functions further down on the current call-stack (that is, dynamic scope). So, if
you’re coming to Python from Perl, nonlocal is not the same as declaring a Perl local
variable.
Ещё раз - функция должна оперировать только теми переменными, которые ей дали явно. Тогда количество side-effects меньше.

Зачем при написании метода класса всегда указывать self? Понятно, что “объектная ориентированность реализована так”, но код-то зачем этим забивать? В “других языках” интерпретатор с таким отлично справляется без пихания self на каждый чих.
Дабы отличать обычные методы от методов класса и статических методов. А так же для того, что бы отличать локальные переменные от атрибутов класса.
И это ещё не все причины.
Почему bytes неизменяем? Что мешало сделать работающим что-то вроде b = 0x10?
Я, наверное, что-то упустил, но в питоне нет встроенного типа bytes.
В третьей версии серьёзно меняли синтаксис… Одно из главнейших отличий (не главное, конечно, но пожалуй, именно это больше всего ударило по питоновким проектам), что print - теперь функция. Проделана огромная работа, многое было переписано заново…
Начиная с версии 2.5, кажется, можно было использовать print как функцию. Но я вас обрадую - это не главное изменнение.
Да и вывод в консоль нужен был не везде.
Да и использовать 3-ку не обязательно, вполне можно использовать 2.6. Пока что.
А этих очевидных вещей не добавили. Почему?! Был бы вообще лучший язык на свете, а тт во многом остаётся ощущение некоторой недоделанности и временности.
Потому что эти вещи даже близко не очевидны. Потому что python - не PHP. Потому что вы не разбираясь принялись выносить суждения.
Такие вопросы и утверждения - троллинг чистой воды.
Хоть Гвидо и “заморозил изменения синтаксиса”, думаю, меняться язык будет. Уж очень нестабильное состояние его сейчас (3.1).
Да, он будет меняться. И это замечательно.
Это “стабильное-нестабильное” мне напоминает нытьё некоторых новых линуксоидов на дебиан и удунту. Для одних он “стар, ибо в стаб. ветке одно старьё” другие ноют что “нестабильно” используя нестабильную ветку.
А чего вы хотели? Хотите стабильного - берите старую но стабильную. Хотите новизны - берите последнее, но тогда, по крайней мере на время, забудьте о “стабильности”.
sypper-pit
вспоминается анекдот “”“чукча не читатель , чукча писатель”“”
Lexander
ZZZ
И от куда вы предлагаете его брать? Из воздуха?
Не надо магии.
Зачем магия. Есть перечень свойств и методов класса, оттуда их брать. Речь идет о том, чтобы сократить запись обращения к ним внутри класса. Вот именно в этом я и поддерживаю автора. Но только в этом :)
regall
Lexander
Зачем магия. Есть перечень свойств и методов класса, оттуда их брать. Речь идет о том, чтобы сократить запись обращения к ним внутри класса.
Читаем внимательно:

Ferroman
Дабы отличать обычные методы от методов класса и статических методов. А так же для того, что бы отличать локальные переменные от атрибутов класса.
И это ещё не все причины.
P.S.
Спросите Гвидо =)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB