Здравствуйте, Mamut, Вы писали:
L>>Не надо повторять. Просто напиши что я предложил и посмотри на код, сам все поймешь. Удачи.
M>Что ты предложил? Ты предложил map/fold и т.п.? M>Я тебе тоже предложил, причем примеры из реальной жизни. Ты почему-то решил отмести их напрочь.
Ты сравниваешь синтаксис лямбд в шарпе и jsvscript-е и утверждаешь, что он в js не хуже и при этом обосновываешь этот вывод на примере, где лямбда — большая. И из этого частного случая делаешь общий вывод. Это некорректно, нужно рассматривать не частные случаи, а все случаи. Если ты перепишешь свой же код, вынеся функционал высасывания rss-а в отдельную функцию и будешь использовать ее в each-е, то ты заметишь громоздкость синтаксиса лямб в js.
Здравствуйте, Цыба, Вы писали:
L>>Если спорно, приведи пример, где он кратче.
Ц>var F = function(){}; // лямбду в шарпе так нельзя
можно
Ц>var A = [];
new List<object>();?
Ц>var O = {};
Что это?
Ц>описание объектов, методов, этц
Ц>и это как минимум
Слабовато как-то.
L>>в свете появления dynamic в шарпе, это уже не исключительно преимущество js-а.
Ц>динамика никогда не являлась свойством исключительно джаваскрипта
Зачем тогда приводить это как его преимущество перед шарпом?
Здравствуйте, Mamut, Вы писали:
L>>А C#?
M>Процедурное программирование, например
Ты имеешь в виду, что нельзя объявить методы вне класса или что-то другое? Если это, то воспринимай это просто как своего рода namespace.
M>И, насколько я помню, функции все же не first-class objects в C#
Здравствуйте, Lloyd, Вы писали:
Ц>>var F = function(){}; // лямбду в шарпе так нельзя L>можно
нельзя с выводом типа
CS0815: Cannot assign lambda expression to an implicitly-typed local variable
+ не нужно возиться с делегатами
Ц>>var A = []; L>new List<object>();?
грубо говоря, да
Ц>>var O = {}; L>Что это?
похоже на var O = new Object(); в C#
Ц>>описание объектов, методов, этц Ц>>и это как минимум L>Слабовато как-то.
что именно слабовато в описании объектов и методов в JS?
L>>>в свете появления dynamic в шарпе, это уже не исключительно преимущество js-а. Ц>>динамика никогда не являлась свойством исключительно джаваскрипта L>Зачем тогда приводить это как его преимущество перед шарпом?
а слишком давно ли вышел динамический 4.0 в шарпе? хотя да, мы лучше мы со временем обвешаем шарп всем-всем-всем, чтобы его можно было использовать везде
Здравствуйте, Цыба, Вы писали:
Ц>>>var F = function(){}; // лямбду в шарпе так нельзя L>>можно
Ц>нельзя с выводом типа Ц>CS0815: Cannot assign lambda expression to an implicitly-typed local variable
Да, тип добавить нужно. это минус
Ц>+ не нужно возиться с делегатами
Не нужно
Ц>>>var A = []; L>>new List<object>();?
Ц>грубо говоря, да
Ок.
Ц>>>var O = {}; L>>Что это?
Ц>похоже на var O = new Object(); в C#
Гм. Это преимущество js-а?
Ц>>>описание объектов, методов, этц Ц>>>и это как минимум L>>Слабовато как-то.
Ц>что именно слабовато в описании объектов и методов в JS?
а что именно сильно по сравнению с C#-ом?
L>>>>в свете появления dynamic в шарпе, это уже не исключительно преимущество js-а. Ц>>>динамика никогда не являлась свойством исключительно джаваскрипта L>>Зачем тогда приводить это как его преимущество перед шарпом?
Ц>а слишком давно ли вышел динамический 4.0 в шарпе? хотя да, мы лучше мы со временем обвешаем шарп всем-всем-всем, чтобы его можно было использовать везде
Недавно вышел. Если учитывать dynamic в 4-м шарпе, остаются какие-либо преимущества js-а или нет?
Здравствуйте, Lloyd, Вы писали:
Ц>>+ не нужно возиться с делегатами L>Не нужно
возможно, вы имеете в виду, если не ошибаюсь, Action, Func?.. если не вы, значит за вас
L>Гм. Это преимущество js-а?
я же сказал: одно из
спрашивать меня это сейчас — это всё-равно, что я бы спрашивал вас "ну неужели (x,y)=>x+y*2 лучше function(x,y){return x+y*2;}?"
Ц>>что именно слабовато в описании объектов и методов в JS?
Lloyd?
L>Недавно вышел. Если учитывать dynamic в 4-м шарпе, остаются какие-либо преимущества js-а или нет?
да, нет нужды даже в урезанном BCL, на котором даже обычный foreach стоит (foreach-foreach, мы же ведь о языках)
Здравствуйте, Цыба, Вы писали:
Ц>>>+ не нужно возиться с делегатами L>>Не нужно
Ц>возможно, вы имеете в виду, если не ошибаюсь, Action, Func?.. если не вы, значит за вас
но тем не менее не нужно
L>>Гм. Это преимущество js-а?
Ц>я же сказал: одно из
если "var O = {}" — аналог "var O = new Object()", то почему он считается преимуществом? Или вы что-то недоговариваете, или...
Ц>спрашивать меня это сейчас — это всё-равно, что я бы спрашивал вас "ну неужели (x,y)=>x+y*2 лучше function(x,y){return x+y*2;}?"
Не вижу ничего общего, если честно.
Ц>>>что именно слабовато в описании объектов и методов в JS?
Ц>Lloyd?
Тьфу, в шарпе.
L>>Недавно вышел. Если учитывать dynamic в 4-м шарпе, остаются какие-либо преимущества js-а или нет?
Ц>да, нет нужды даже в урезанном BCL, на котором даже обычный foreach стоит (foreach-foreach, мы же ведь о языках)
а js видимо святым духом выполняется и в нем нет ни string-ов, ни Array-ев. В чем ткое коренное отличие-то?
Здравствуйте, Mystic, Вы писали:
M>Здравствуйте, Vamp, Вы писали:
V>>Идеальное устройство — это автомобиль. Хочешь — воспринимай его как руль и педали, хочешь — открой капот и там все есть.
M>Не сказал бы, что оно идеально... Особенно, когда возникнет проблема добавить туда гусеничный ход
Это ж разве проблема...
¯\_(ツ)_/¯
И когда они были в поле, восстал Каин на Авеля, брата своего, и убил его.
Здравствуйте, Lloyd, Вы писали:
L>но тем не менее не нужно
значит, я не знаю чего-то. my bad. могли бы и указать — я бы вспомнил хоть
L>если "var O = {}" — аналог "var O = new Object()", то почему он считается преимуществом? Или вы что-то недоговариваете, или... Ц>>спрашивать меня это сейчас — это всё-равно, что я бы спрашивал вас "ну неужели (x,y)=>x+y*2 лучше function(x,y){return x+y*2;}?" L>Не вижу ничего общего, если честно.
а я вижу. причём даже очень ясно. и вы, пожалуй. лукавите, что "не видите". краткий синтаксис ведь — наше всё сегодня. да или нет?
L>>>Недавно вышел. Если учитывать dynamic в 4-м шарпе, остаются какие-либо преимущества js-а или нет? Ц>>да, нет нужды даже в урезанном BCL, на котором даже обычный foreach стоит (foreach-foreach, мы же ведь о языках) L>а js видимо святым духом выполняется и в нем нет ни string-ов, ни Array-ев. В чем ткое коренное отличие-то?
где это я говорил, о святых духах? я выше сказал, что в JS значительно меньше "родных" объектов, чем в C# с его огромным BCL
Здравствуйте, Цыба, Вы писали:
L>>но тем не менее не нужно
Ц>значит, я не знаю чего-то. my bad. могли бы и указать — я бы вспомнил хоть
Я имел в виду, раз эти делегаты (Func, Action) есть в стандартной библиотеке, то писать их не нужно.
L>>если "var O = {}" — аналог "var O = new Object()", то почему он считается преимуществом? Или вы что-то недоговариваете, или... Ц>>>спрашивать меня это сейчас — это всё-равно, что я бы спрашивал вас "ну неужели (x,y)=>x+y*2 лучше function(x,y){return x+y*2;}?" L>>Не вижу ничего общего, если честно.
Ц>а я вижу. причём даже очень ясно. и вы, пожалуй. лукавите, что "не видите". краткий синтаксис ведь — наше всё сегодня. да или нет?
А, так вот ты о чем. Теперь понятно.
На самом деле, синтаксис шарпа не намного длиннее — достаточно new {};
L>>>>Недавно вышел. Если учитывать dynamic в 4-м шарпе, остаются какие-либо преимущества js-а или нет? Ц>>>да, нет нужды даже в урезанном BCL, на котором даже обычный foreach стоит (foreach-foreach, мы же ведь о языках) L>>а js видимо святым духом выполняется и в нем нет ни string-ов, ни Array-ев. В чем ткое коренное отличие-то?
Ц>где это я говорил, о святых духах? я выше сказал, что в JS значительно меньше "родных" объектов, чем в C# с его огромным BCL
Часть BCL-я, необходимая для работы C#-а не такая уж и огромная. Возьми тот же SL — 2 метра всего, а функциональности по сравнению с js — море.
Здравствуйте, Lloyd, Вы писали:
L>Я имел в виду, раз эти делегаты (Func, Action) есть в стандартной библиотеке, то писать их не нужно.
ну да, "за вас", т.е. теперь понятно, о чём вы
L>На самом деле, синтаксис шарпа не намного длиннее — достаточно new {};
эммм, разве здесь не объект анонимного типа создаётся, или это new Object()?
L>Часть BCL-я, необходимая для работы C#-а не такая уж и огромная. Возьми тот же SL — 2 метра всего, а функциональности по сравнению с js — море.
будь у меня доступ к SL-ому BCL прямо из JS — я бы не менее эффективно использовал этот BCL из JS
Здравствуйте, yoriсk.kiev.ua, Вы писали:
YKU>Ну, если вы хорошо так понимаете JS, обьясните чего у него хорошего. По сравнению с C#, например.
JSON-нотация уже многого стоит... Функции являются first-class object'ами. В C# есть два вида функций — "лябмды" и "обычные функции". Но это уже больше тема "статическая типизация vs динамическая"...
Здравствуйте, Цыба, Вы писали:
L>>На самом деле, синтаксис шарпа не намного длиннее — достаточно new {};
Ц>эммм, разве здесь не объект анонимного типа создаётся, или это new Object()?
Анонимного.
L>>Часть BCL-я, необходимая для работы C#-а не такая уж и огромная. Возьми тот же SL — 2 метра всего, а функциональности по сравнению с js — море.
Ц>будь у меня доступ к SL-ому BCL прямо из JS — я бы не менее эффективно использовал этот BCL из JS
Здравствуйте, koandrew, Вы писали:
YKU>>Ну, если вы хорошо так понимаете JS, обьясните чего у него хорошего. По сравнению с C#, например.
K>JSON-нотация уже многого стоит...
ну как бы и в шарпе object initializer никто не отменял.
K>Функции являются first-class object'ами.
Что вы в это понятие вкладываете?
K>В C# есть два вида функций — "лябмды" и "обычные функции".
Здравствуйте, Lloyd, Вы писали:
L>ну как бы и в шарпе object initializer никто не отменял.
Ну как бы их нельзя получить из сети... Опять же это следствие динамической типизации JS
K>>Функции являются first-class object'ами.
L>Что вы в это понятие вкладываете?
см. ниже
K>>В C# есть два вида функций — "лябмды" и "обычные функции".
L>Да ну? И в чем же отличие?
class Something
{
private Func<string, string> m_function = x => x; //это поле типа "делегат"private string Function(string s) //это функция
{
return s;
}
}
JavaScript:
var Function = function(x) { return x; };
function Function(x) { return x; }; //эти две записи _полностью_ эквивалентны
Здравствуйте, koandrew, Вы писали:
L>>ну как бы и в шарпе object initializer никто не отменял.
K>Ну как бы их нельзя получить из сети...
Ну это как бы относится не к языку, а к наличию библиотеки сериализации, не более того.
K>Опять же это следствие динамической типизации JS
Это не следствие динамической типизации ни разу. Это слдествие наличия eval в стандартной библиотеки.
K>>>Функции являются first-class object'ами.
L>>Что вы в это понятие вкладываете? K>см. ниже
K>>>В C# есть два вида функций — "лябмды" и "обычные функции".
L>>Да ну? И в чем же отличие?
K>
K>class Something
K>{
K> private Func<string, string> m_function = x => x; //это поле типа "делегат"
K> private string Function(string s) //это функция
K> {
K> return s;
K> }
K>}
K>
K>JavaScript:
K>
K>var Function = function(x) { return x; };
K>function Function(x) { return x; }; //эти две записи _полностью_ эквивалентны
K>
Ну и в чем принципиальное отличие? Только в том, что я не могу изменить значение в том случае, когда функция является методом? Дык я и поле могу сделать readonly.
Здравствуйте, Lloyd, Вы писали:
L>Ну и в чем принципиальное отличие? Только в том, что я не могу изменить значение в том случае, когда функция является методом? Дык я и поле могу сделать readonly.
Принципиальное отличие в том, что в C# это два разных типа объектов, а в JS они неотличимы и полностью эквивалентны
Здравствуйте, koandrew, Вы писали:
L>>Ну и в чем принципиальное отличие? Только в том, что я не могу изменить значение в том случае, когда функция является методом? Дык я и поле могу сделать readonly.
K>Принципиальное отличие в том, что в C# это два разных типа объектов,
и в чем будет проявляться отличие в случае сипользования public readonly поля типа Func/Action? если абстрагироваться от метаданых сборки и говорить только о языке.
Здравствуйте, Lloyd, Вы писали:
L>и в чем будет проявляться отличие в случае сипользования public readonly поля типа Func/Action? если абстрагироваться от метаданых сборки и говорить только о языке.
В том, что в C# они не взаимозаменяемы. И к чему это ограничение readonly? Они _разные_ и точка. Или всё ещё непонятно, о чём я?
Здравствуйте, koandrew, Вы писали:
L>>и в чем будет проявляться отличие в случае сипользования public readonly поля типа Func/Action? если абстрагироваться от метаданых сборки и говорить только о языке.
K>В том, что в C# они не взаимозаменяемы. И к чему это ограничение readonly? Они _разные_ и точка. Или всё ещё непонятно, о чём я?
Не, не понятно. Ты с завидным упорством продолжаешь повторять это, не приводя примеров.