Здравствуйте, Pavel Dvorkin, Вы писали:
AVK>>Базовые парадигмы одинаковы (конечно, оба в большей степени императивны).
PD>Вот об этом я и говорю, а ты меня понять не хочешь.
А я говорю о другом. О том что сходства базовых парадигм совсем недостаточно, чтобы считать языки одинаковыми.
PD> Мы же немного в другом форуме, и мой ответ Зверьку — отнюдь не продолжение дискуссий в форуме по .Net. В том. что в .Net есть отличия от того, что было раньше — не спорю. Но назвать эти отличия новыми в том плане, как об этом писал Зверек — ИМХО это уж слишком.
Почему слишком? Если Зверек написал про эти языки, значит от спрашивал именно про такие отличия. Более кардинальных в любом случае не будет. Индустрия живет эволюционно. Все революционные языки постигла участь кулуарных проектов. ИМХО в будущем ситуация не изменится.
PD>Да понимаю я вас всех прекрасно. Вам создали специальные правила, мне они не по душе, я в них вижу больше оверхеда, чем пользы, вот и пытаюсь понять, как в этой среде писать эффективную программу, а мне в ответ тыкают, что я , дескать, идеи не понимаю.
Правильно тыкают. Потому что ты не хочешь воспринимать то, что тебе пишут в ответ. Не зря ведь все твои вопросы заканчиваются одним и тем же, хотя ты далеко не единственный бывший С++ник.
PD>Andrew, хватит. Я эту парадигму прекрасно понимал еще тогда, когда вопросы свои задавал. И готов не спорить.
Не заметно, если честно
PD> Но только до тех пор, пока эти рамки меня серьезно ограничивать не станут. А начнут ограничивать (по эффективности, к примеру) — пошлю я все эти рамки куда подальше, и буду делать так, как мне хочется, под свою ответственность. Вот меня и интересовало — есть ли способ эти рамки послать ?
Есть. Но будет только хуже. Микроскопом конечно можно гвозди заколачивать, но уж больно неудобно.
PD>Хочешь аналогию ? Для паскальщика или с-шника в языке средств всяких сколько угодно на всякие действия. А мне надо понять, как в Паскале или С ассемблерную вставку сделать — для максимальной эффективности. Я об этом и спрашиваю. А мне в ответ — а зачем тебе команда mov, когда в языке есть замечательный оператор присваивания!
Ты так и не понял, что тебе отвечали. Ты заранее предлагаешь решение (выдернутое из С++) и требуешь, чтобы реализовали именно так. Когда тебе говорят, что надо по другому, ты не соглашаешься. Я тебе сейчас массу задач могу предложить, которые легко решаются на .NET и приводят к горам кода на С++. There is no silver bullet!!!
PD>>> Считать такой идеей управляемый код я никак не могу,
AVK>>Вот в этом и проблема. С верой спорить бессмысленно.
PD>Ну уж верой это не назвать. Я вообще-то Фома неверующий . Просто уж слишком серьезное заявление для такого нововведения.
Оно обосновано. Остается только допустить тень сомнения в своей правоте и попробовать разобраться.
AVK>>Что такое etc? Под это можно подвести массу языков. Если же ограничится С++ и Delphi, то пожалуйста: AVK>>Интерфейсы как сущность языка
PD>Появились в Java.
Ну так Java, в отличие от С++, очень близка по идеологии к .NET (я сам бывший Java'ист). Но ты ведь и Java не очень хорошо знаешь? И Зверек упоминал их обоих вместе.
>>управляемый верифицируемый код, CAS (Code Access Security)
PD>Да, не помню, кажется я этого не видел раньше.
Я тоже.
PD> Но это все на одну тему — защита.
Это демонстрация возможностей управляемого кода.
PD> А то, что защиту я не считаю особо серьезным нововведением — я уже сказал.
Зря.
>> yield, анонимные методы (они же лямбда функции)
PD>Ну тогда надо признать, что появление template в C++ — тоже радикальное нововведение.
Да, конечно.
>>Reflection, Reflection.Emit,
PD>Зачатки этого Reflection — RTTI C++, Object Pascal
Это не зачатки, это, даже не знаю с чем сравнить, вобщем что то из той же области. Ну примерно как современный автомобиль и гужевая повозка.
PD>О господи! Еще раз объясняю — не собираюсь я набивать шишки.
Ну собираешься или нет это другой вопрос .
PD> Я вполне могу писать, придерживаясь всех ваших правил, которые для вас, похоже, такая же истина в последней инстанции, как бытие божее для верующего.
Нет, не истина. Это опыт применения.
PD> Меня просто интересует, есть ли способы в нужный момент эти правила обойти, приняв ответственность на себя. Не волнуйся — никаких шишек при этом не будет. В конце концов, не скажешь же ты что я некорректно делаю, если интерфейс пользователя я вынесу в C#, а для математики напишу обыкновенную DLL на C++ и там буду делать как всегда делал ?
Здравствуйте, Пацак, Вы писали:
П>Значит я и правда стал подзабывать. Не напомнишь вкратце, что это?
Отсечение — это воспрещение отката. За счёт этого механизма можно ограничивать поиск ответа и проводить описываемую здесь политику деградации цели. Разумеется, всё это требует достаточно аккуратного составления базы знаний.
Извини, но пример я приводить и искать не стану — лень.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>>>Зверёк, а не стоит ли попытаться определить, что такое "совершенно новые".
Ну, идея в общем такая.
Писали-писали на асме — появился Фортран — все поняли, что можно и нужно использовать языки высокого уровня.
Писали-писали на структруных языках — появился С++ — все понял, что можно и нужно писать на ОО-языках.
было X — появились Java и C# — все поняли, что Y ?
(теоретически, Y == "использование байткода"?)
Но вопрос не в том. Вопрос в том — что должно появиться, чтобы "все поняли, что...")
Здравствуйте, Зверёк Харьковский, Вы писали:
PD>>А вот если дадите мне принципиально новый язык и убедите, что им заниматься стоит — я отрину все, что я знаю, вспомню себя в молодости и начну его изучать, как будто я ничего не знаю.
ЗХ>Взгляните все же на руби и питон
Насчет руби ничего не скажу (не видел), а что появилось такого уж нового в питоне?
AVK>А я говорю о другом. О том что сходства базовых парадигм совсем недостаточно, чтобы считать языки одинаковыми.
Я что, считал Фортран и С++ одинаковыми ?
AVK>Почему слишком? Если Зверек написал про эти языки, значит от спрашивал именно про такие отличия.
Он и про Фортран написал, и про Питон и т.д.
>Более кардинальных в любом случае не будет.
Кто его знает...
>Индустрия живет эволюционно. Все революционные языки постигла участь кулуарных проектов.
Я бы так категорически не стал утверждать.
>ИМХО в будущем ситуация не изменится.
Поживем — увидим.
AVK>Правильно тыкают. Потому что ты не хочешь воспринимать то, что тебе пишут в ответ.
Я уже сто раз воспринял, а вот мои ответы воспринять ты не хочешь. Есть бог — молитесь ему, не верите в евангелие как оно написано, от и до — в ад!
Не зря ведь все твои вопросы заканчиваются одним и тем же, хотя ты далеко не единственный бывший С++ник.
Я не бывший, я настоящий . Вот фортранщик я, точно, бывший.
AVK>Есть. Но будет только хуже. Микроскопом конечно можно гвозди заколачивать, но уж больно неудобно.
Вот я и хотел знать — есть ли или нет. А уж будет хуже или нет мои проблемы. Еще раз объясняю — микроскопом я буду микробов изучать. Но если надо гвоздь забить, жизненно надо, а ничего, кроме микроскопа нет — ну что же, забью микроскопом
AVK>Ты так и не понял, что тебе отвечали. Ты заранее предлагаешь решение (выдернутое из С++) и требуешь, чтобы реализовали именно так. Когда тебе говорят, что надо по другому, ты не соглашаешься.
Я уже не знаю, как еще объяснять. Никогда не думал, что это так сложно, хотя 20 лет преподаю. Еще раз — все я понял. Что не надо так делать — понял. Что парадигма здесь другая — понял, Что я все неправильно делаю — понял. Что я ничего не понимаю, по вашему мнению, тоже понял. Достаточно ?
А если да, ответьте мне на вопрос — можно ли в этой среде делать не так, парадигму нарушать и неправильно по ее мнению делать ? Это все, что я хочу знать. Можно или нет ? И если можно, то как ? Неужели трудно понять, что я хочу ? Если, конечно, не вести себя как верующий, которого спрашивают, можно ли изложить евангелие более понятным языком и кое-что в нем поправить, а он в ответ — в ад тебя за такое !
PD>>Ну тогда надо признать, что появление template в C++ — тоже радикальное нововведение.
AVK>Да, конечно.
Да, тогда у нас на каждом шагу сплошные революции. По одной каждый год.
PD>>Зачатки этого Reflection — RTTI C++, Object Pascal
AVK>Это не зачатки, это, даже не знаю с чем сравнить, вобщем что то из той же области. Ну примерно как современный автомобиль и гужевая повозка.
И там, и тут принцип колеса. В этом — никаких отличий. В этом плане — никакой революции, а в плане двигателя — да.
Здравствуйте, Павел Кузнецов, Вы писали:
>> E> возможность передавать в функцию блок кода в качестве параметра.
>> Лямбда-функции?
ПК>Полагаю, не совсем, т.к. лямбда это, все-таки, больше именно функция, а не блок кода.
Здравствуйте, Pavel Dvorkin, Вы писали:
>>Индустрия живет эволюционно. Все революционные языки постигла участь кулуарных проектов.
PD>Я бы так категорически не стал утверждать.
Тогда приводи пример революционного языка, благосклонно воспринятого индустрией. Я таких не знаю.
AVK>>Правильно тыкают. Потому что ты не хочешь воспринимать то, что тебе пишут в ответ.
PD>Я уже сто раз воспринял
Не заметно.
AVK>>Есть. Но будет только хуже. Микроскопом конечно можно гвозди заколачивать, но уж больно неудобно.
PD>Вот я и хотел знать — есть ли или нет. А уж будет хуже или нет мои проблемы. Еще раз объясняю — микроскопом я буду микробов изучать. Но если надо гвоздь забить, жизненно надо, а ничего, кроме микроскопа нет — ну что же, забью микроскопом
Видимо большинству форума такая философия мазохиста непонятна
PD>Я уже не знаю, как еще объяснять. Никогда не думал, что это так сложно, хотя 20 лет преподаю. Еще раз — все я понял. Что не надо так делать — понял. Что парадигма здесь другая — понял, Что я все неправильно делаю — понял. Что я ничего не понимаю, по вашему мнению, тоже понял. Достаточно ?
Нет. Надо еще научится не делать одну и ту же ошибку в следующий раз.
PD>А если да, ответьте мне на вопрос — можно ли в этой среде делать не так, парадигму нарушать и неправильно по ее мнению делать ? Это все, что я хочу знать. Можно или нет ?
Можно все. Вопрос в количестве усилий, которые на это нужно потратить.
PD>>>Ну тогда надо признать, что появление template в C++ — тоже радикальное нововведение.
AVK>>Да, конечно.
PD>Да, тогда у нас на каждом шагу сплошные революции. По одной каждый год.
Радикальное нововведение != революция. Революция это когда отбрасывают все старое. А когда к старому добавляют что то новое, это эволюция.
AVK>>Это не зачатки, это, даже не знаю с чем сравнить, вобщем что то из той же области. Ну примерно как современный автомобиль и гужевая повозка.
PD>И там, и тут принцип колеса. В этом — никаких отличий. В этом плане — никакой революции, а в плане двигателя — да.
Вот и с рефлекшеном так. С точки зрения идеи похоже, с точки зрения возможностей несопоставимо.
Здравствуйте, Пацак, Вы писали:
ПК>>>Полагаю, не совсем, т.к. лямбда это, все-таки, больше именно функция, а не блок кода. AVK>>А в чем разница?
П>В наличии возвращаемого значения?
Здравствуйте, Павел Кузнецов, Вы писали:
ПК>Типичный софизм: если нет наследования, то некоторые заменяют его copy-paste; значит отказ от наследования в ряде случаев приведет к copy-paste.
Термин софизм означает предположение. А так как это уже было — то это опыт. А если это повторится, то это будут грабли.
>> Что лучше?
ПК>Лучше использовать разнообразные patterns, значительная часть которых направлена на ослабление связей, в т.ч. за счет отказа от наследования.
Поговорим о паттерне Composite? Нельзя смотреть на одно и закрывать глаза на другое.
Здравствуйте, Павел Кузнецов, Вы писали:
ПК>Это и называется умер. Можешь спросить у тех, кто писал на VB, и теперь не может скомпилировать свои продукты новой студией, и не может использовать идиомы из VB в VB.Net.
Насчет идеом я бы не сказал. Их и так там было немного. Но матрасик они все-таки подставили. Чтобы не больно было падать.
>> В данном случае больше подходит аналогия с MC++. ПК>В чем аналогия? MC++ тоже умер: C++/CLI развитием MC++ тоже не является, хотя при его создании и использовался опыт, полученный в результате MC++.
Вот с этим абсолютно согласен. Об этом и говорю.
Здравствуйте, AndrewVK, Вы писали:
>>> Лямбда-функции?
ПК>>Полагаю, не совсем, т.к. лямбда это, все-таки, больше именно функция, а не блок кода.
AVK>А в чем разница?
By popular demand, a few features commonly found in functional programming languages and Lisp have been added to Python. With the lambda keyword, small anonymous functions can be created. Here's a function that returns the sum of its two arguments: "lambda a, b: a+b". Lambda forms can be used wherever function objects are required. They are syntactically restricted to a single expression. Semantically, they are just syntactic sugar for a normal function definition. Like nested function definitions, lambda forms can reference variables from the containing scope:
>>> def make_incrementor(n):
... return lambda x: x + n
...
>>> f = make_incrementor(42)
>>> f(0)
42
>>> f(1)
43
, хлопотал о будущей кандидатской. ЗХ>>Зашибись* там все. Всего каких-нибудь лет 20 — и он может быть выберется из ж*пы.
ГА>Так вроде бы ФП не в наших университетах развивается.
...почему я и назвал свое сообщение "офтоп" .
Просто только что вернулся из ВУЗа, и ощущение болота меня в очередной раз впечатлило