FR>>Любое преимущество можно обозвать отдельными фичами, а можно и часами его перечислять
VD>Ну, так ты покажи хоть какие-то кроме встроенных средств работы с коллекциями.
так показывал уже тот же калькулятор, но ты не смотришь.
VD>Чем лучше? Вместо скобок пробеы и отсуствие типизации (что скорее минус).
А чем хуже? Да судя по отступам этот Range еще в какой то класс засунут? Если так
то это недостаток
А отсутствие типизации имеет не только недостатки но и преимущества например функция автоматически
становится обощенной.
VD>ЗЫ
VD>Кстати, твой вариант не воспроизводит всех возможностей range.
твой тоже, упущенно, что может быть два аргумента
def my_range(*name):
if(len(name) == 1): name = (0, name[0], 1)
if(len(name) == 2): name = name.append(1)
i = name[0]
while i < name[1]:
yield i
i += name[2]
Здравствуйте, VladD2, Вы писали:
VD>Здается мне, что в Питоне понятнее и логичнее.
Дело вкуса.
VD> А смотреть на то как работают операторы и встроенные функции как-то даже в голову не приходит.
Понятно, что смотреть на устройство какого-нибудь print и увидеть дизассемблированный код, ну или
даже код на C/C++ (сам питоновсаий интерпретатор вроде на C++ написан?) не очень интересно. Но в случае со смоллтоком мы видим код на том же смоллтоке (где-то в глубине упирающийся, конечно, в вызов примитива VM), что для начинающего очень и очень удобно — есть откуда брать массу полезных примеров.
FR>def my_range(*name):
FR> if(len(name) == 1): name = (0, name[0], 1)
FR> if(len(name) == 2): name = name.append(1)
FR> i = name[0]
FR> while i < name[1]:
FR> yield i
FR> i += name[2]
FR>
Ошибка, однако
name.append вернёт None
лучше уж так:
def my_range( n, *args):
i, n, step = args and ([n] + args + [1])[:3] or (0, n, 1)
while i < n:
yield i
i += step
СГ>Ну, вот, еще один "спец" нашелся. Утверждает что Васик проще и совершеннее Оберона.
Подмена суждений — прием дешевого демагога.
СГ>А Вы случаем не на компанию по производству компьютеров и коммуникаций работаете? Они очень заинтересованы в том чтобы людям надо было как можно более мощное и быстрое оборудование.
Я работаю на компанию по призводству программного обеспечения. Она (эта компания) заинтересована в качественных, быстрых, компактных, безопасных, поддерживаемых, распространенных и стандартизированных технологиях разработки ПО.
Таких как Java и С#.
А Ваша компания, наверное, предлагает аналогичные решения на обероне?
СГ>Именно в родной код. Безопасность встроена в сам язык. В оберонистой программе никогда не бывает переполнения буфера (range index check).
Никада не говори никада
СГ> И Вам никогда не удасться что-то читать или писать по неправильному адресу, просто потому что в языке нет такого понятия как адрес, адресная арифметика, и самого адресного пространства как такового.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Сергей Губанов, Вы писали:
VD>Это конечно несколько лучше чем в Паскале/Дельфи. Но все же я не понимаю на фиг так извращаться.
А где, собственно, извращение? В том что с числами запрещены бинарные операции? Так это, как бы, правильно — кесарю кесарево, а слесарю слесарево. В тоже время это не вредит системному программированию, так как всегда можно преобразовать число в множество (BITS) и множество в число (ORD). Например, пусть есть число i: INTEGER, хотите обнулить старшие четыре бита, вуаля:
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Здравствуйте, VladD2, Вы писали:
VD>>Здравствуйте, Сергей Губанов, Вы писали:
VD>>Это конечно несколько лучше чем в Паскале/Дельфи. Но все же я не понимаю на фиг так извращаться.
СГ>А где, собственно, извращение? В том что с числами запрещены бинарные операции? Так это, как бы, правильно — кесарю кесарево, а слесарю слесарево. В тоже время это не вредит системному программированию, так как всегда можно преобразовать число в множество (BITS) и множество в число (ORD). Например, пусть есть число i: INTEGER, хотите обнулить старшие четыре бита, вуаля: СГ>
СГ>i := ORD( BITS(i) - {28,29,30,31} );
СГ>
Нет, ну я фигею, что за изврат, а...
Тут без бутылки фиг поймёшь, это ты и называешь понятным и классным?
по мне дак вот такая бы запись была бы гораздо понятней:
i := ORD(BITS(i) AND BITS (0,0,0,0, 1,1,1,1, 1,1,1,1, 1,1,1,1,)
а вычитание совсем не логичная операция, да и запись битов тоже хрен разберёшь,
я понимаю, что по вирту, чем туманней, тем круче, но жизнь требует совсем иного, имхо
Здравствуйте, Курилка, Вы писали:
К>а вычитание совсем не логичная операция
Вычитание одного множества из другого не понятная операция? Просто в первом множестве исчезают все элементы, которые есть во втором множестве. Чего не понятного-то?
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Kluev, Вы писали:
K>>
>>>>> for i in range(10) : print i
K>>
K>>Выполняется прямо в командной строке без компиляции, написания функции и т.п. ИМХО если учить то лучше питона не найти
VD>Ну, и чем это отличается от Шарпа: VD>
VD>foreach (int i Range(10))
VD> Console.WriteLine(i);
VD>
VD>?
Чем отличается? тем что как уже было сказано: K>>Выполняется прямо в командной строке без компиляции, написания функции и т.п.
А минимальная шарп программа это как минимау класс со статической main к которой среда еще и аттрибут подосовывает. Плюс using, плюс namespace, плюс среда, плюс компиляция. Вообщем не многовато ли для начинающего?
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Здравствуйте, Курилка, Вы писали:
К>>а вычитание совсем не логичная операция
СГ>Вычитание одного множества из другого не понятная операция? Просто в первом множестве исчезают все элементы, которые есть во втором множестве. Чего не понятного-то?
Представь студента и у него есть вычитание чисел, которое даст совсем другой результат, т.е. совсем он будет ожидать не того, что ты ему скажешь.
Думать-то он будет далеко не о множествах, имхо.
Вопрос-то шёл о бинарном представлении чисел, а не об абстрактных множествах, оторваных в бол-ве случаев от жизни.
Здравствуйте, VladD2, Вы писали:
VD> Мертвяк. Причем чистейший воды. Ни одного комерческого проекта.
Вы не компетенты в вопросах об оберонах. Я уже приводил ссылки, среди которых, например, упоминается коммерческий проект создания ПО для ЭЛЕКТРОСТАНЦИИ (не хило не так-ли?), в ссылках сайта info21 есть военный проект по управлению беспилотными летающими аппаратами (опять не хило?).
VD> Развитие Оберона с 96 года нет.
Мало того что Вы не компетентны в вопросах об оберонах, но Вы еще и просто не внимательны. Совсем недавно, на этом форуме обсуждались "активные объекты". Вы случаем не обратили внимание на фигурирующие в даваемых ссылках даты? Создание Aos ~ 2000 год, диссертация Мюллера 2002 год. Работа над Zonnon идет по сей день.
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Здравствуйте, VladD2, Вы писали:
VD>> Мертвяк. Причем чистейший воды. Ни одного комерческого проекта.
СГ>Вы не компетенты в вопросах об оберонах. Я уже приводил ссылки, среди которых, например, упоминается коммерческий проект создания ПО для ЭЛЕКТРОСТАНЦИИ (не хило не так-ли?), в ссылках сайта info21 есть военный проект по управлению беспилотными летающими аппаратами (опять не хило?).
VD>> Развитие Оберона с 96 года нет.
СГ>Мало того что Вы не компетентны в вопросах об оберонах, но Вы еще и просто не внимательны. Совсем недавно, на этом форуме обсуждались "активные объекты". Вы случаем не обратили внимание на фигурирующие в даваемых ссылках даты? Создание Aos ~ 2000 год, диссертация Мюллера 2002 год. Работа над Zonnon идет по сей день.
СГ>Посмотрите даты проектов: http://www.cs.inf.ethz.ch/gutknecht/
А ты очень компетентен, прям жуть?
Вот приведи статистику по числу раб. мест на обероне?
Хотябы в Швейцарии есть такие вообще?
Возьми теперь и сравни даты, числа и объёмы с тем же C#, да я думаю даже со смолтолком оберон будет очень хило выглядеть (эй смолтолковцы, замолвите словечко )
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, LaptevVV, Вы писали:
LVV>>Это конечно мысль. Или еще можно С# попробовать. Но хотелось бы не Сишного синтаксиса — для алтернативы.
VD>ВБ.НЭТ потянет? Сточки зрения простоты синтакиса и отсутствия сишных скобок самое оно. Только логических операций лучше на нем не давать. Они в нем такие же кривые как в Паскле (бен разделения на бинарные илогические).
То есть ты видишь разницу между побитовыми и булевыми операциями????
И представление булевых переменных в битовом представлении???
В Delphi (Паскале) ты можешь применять те или иные операции основываясь на их типе.
Нелзя применять как в C
int i=0;
if (~i ) {...}
i:Integer=0;
............
if not Boolean(i) Then
.....................
if i<>0 Then
Без приведения к булевому типу
Меня лично в c# бесит это разграничение. Так что кривизна больше не в Паскале.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Kluev, Вы писали:
K>Чем отличается? тем что как уже было сказано: K>>>Выполняется прямо в командной строке без компиляции, написания функции и т.п.
Это не приемущество. Во-первых, это на фиг не упало. А, во-вторых, создать утититку эмулирующую командрую строку задача на вечер.
K>А минимальная шарп программа это как минимау класс со статической main к которой среда еще и аттрибут подосовывает. Плюс using, плюс namespace, плюс среда, плюс компиляция. Вообщем не многовато ли для начинающего?
Для минимальной ни юсинги ни нэймспэйсы не нужны. А один класс можно пережить. Зато с самого начала народ будет приучаться к объектной ориентации и в последствии будет меньше вопросов. Опять так если уж сильно напрягает класс, то не проблем создать программку которая автоматически обернет код в класс.
В общем, это все не серьезные аргументы. А вот то отсуствие типов сильно попортит восприятие у начинющих. Типы концепция обязательная. Без нее еще ту кашу можно создать.
... << RSDN@Home 1.1.4 beta 3 rev. 206>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.