Здравствуйте, Mamut, Вы писали:
M>Я бы сказал, строгой типизации.
Одна из ранних имплементаций Sciter имела JavaVM on board (вместо tiscript).
С 99% вероятностью могу сказать что тебе бы это не понравилось. Именно из-за типизации.
jquery со строгой типизацией напрмер есть вельми грустное зрелище.
А вот нормальная модульность это the must в случаях когда у тебя используется несколько библиотек.
Я имею ввиду как минимум namespaces котрые я сделал в tiscript.
L>>>Не надо повторять. Просто напиши что я предложил и посмотри на код, сам все поймешь. Удачи.
M>>Что ты предложил? Ты предложил map/fold и т.п.? M>>Я тебе тоже предложил, причем примеры из реальной жизни. Ты почему-то решил отмести их напрочь.
L>Ты сравниваешь синтаксис лямбд в шарпе и jsvscript-е и утверждаешь, что он в js не хуже и при этом обосновываешь этот вывод на примере, где лямбда — большая. И из этого частного случая делаешь общий вывод. Это некорректно, нужно рассматривать не частные случаи, а все случаи. Если ты перепишешь свой же код, вынеся функционал высасывания rss-а в отдельную функцию и будешь использовать ее в each-е, то ты заметишь громоздкость синтаксиса лямб в js.
Повторю в шестой раз. То, что я показал, и есть общий случай для js
L>>>А C#?
M>>Процедурное программирование, например
L>Ты имеешь в виду, что нельзя объявить методы вне класса или что-то другое? Если это, то воспринимай это просто как своего рода namespace.
Я имею в виду процедурное программирование Без классов, без ООП
M>>И, насколько я помню, функции все же не first-class objects в C#
L>Что ты имеешь в виду?
Можно ли в C# такое:
function func(){ /* что-то там */ }
var a = func;
a();
M>>Я бы сказал, строгой типизации.
CS>Одна из ранних имплементаций Sciter имела JavaVM on board (вместо tiscript). CS>С 99% вероятностью могу сказать что тебе бы это не понравилось. Именно из-за типизации. CS>jquery со строгой типизацией напрмер есть вельми грустное зрелище.
CS>Ну и вот тебе инфа к размышлению: CS>http://www.codeproject.com/Surveys/1038/Compile-time-Language-Type-Safety-a-help-or-a-hind.aspx
Эээ. Строгая не есть статическая
M>>Да, модульность было бы неплохо (хотя есть варианты решения, как, например, в Node.js)
CS>А вот нормальная модульность это the must в случаях когда у тебя используется несколько библиотек. CS>Я имею ввиду как минимум namespaces котрые я сделал в tiscript.
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, Цыба, Вы писали:
Ц>>>>+ не нужно возиться с делегатами L>>>Не нужно
Ц>>возможно, вы имеете в виду, если не ошибаюсь, Action, Func?.. если не вы, значит за вас
L>но тем не менее не нужно
L>>>Гм. Это преимущество js-а?
Ц>>я же сказал: одно из
L>если "var O = {}" — аналог "var O = new Object()", то почему он считается преимуществом? Или вы что-то недоговариваете, или...
Просто можно пойти дальше:
> var o = {}
Object
__proto__: Object
> var o = { a: 1, b: 2}
Object
a: 1
b: 2
__proto__: Object
> var o = { method: function(){ return this; }}
Object
method: function (){ return this; }
__proto__: Object
Вот так вот легко и ненапряжно мы создали три разных объекта.
Расширяем объект:
> o = {}
Object
__proto__: Object
> o['method'] = function(){}
> o
Object
method: function (){}
__proto__: Object
Здравствуйте, Mamut, Вы писали:
L>>Ты имеешь в виду, что нельзя объявить методы вне класса или что-то другое? Если это, то воспринимай это просто как своего рода namespace.
M>Я имею в виду процедурное программирование Без классов, без ООП
Да сколько угодно, статические классы — и вперед. Пусть тебя не смущает слово class в их определении, это не имеет ничего общего с классами из ООП.
M>>>И, насколько я помню, функции все же не first-class objects в C#
L>>Что ты имеешь в виду?
M>Можно ли в C# такое:
M>
M>function func(){ /* что-то там */ }
M>var a = func;
M>a();
M>
Можно, только синтаксис немного другой и надо указать аннотацию типа у переменной a, т.к. язык — статически типизированный.
Здравствуйте, Mamut, Вы писали:
Ц>>>я же сказал: одно из
L>>если "var O = {}" — аналог "var O = new Object()", то почему он считается преимуществом? Или вы что-то недоговариваете, или...
M>Просто можно пойти дальше:
M>
>> var o = {}
M>Object
M> __proto__: Object
>> var o = { a: 1, b: 2}
M>Object
M> a: 1
M> b: 2
M> __proto__: Object
>> var o = { method: function(){ return this; }}
M>Object
M> method: function (){ return this; }
M> __proto__: Object
M>
M>Вот так вот легко и ненапряжно мы создали три разных объекта.
Спасибо, Кэп. Странно, что ты поправил меня, а не Цыбу.
Здравствуйте, Цыба, Вы писали:
L>>Спасибо, Кэп. Странно, что ты поправил меня, а не Цыбу.
Ц>Цыба, вообще-то, писал о синтаксисе, а не о "можно пойти дальше"
Да, с телепатическими способностями у меня совсем плохо, надо над этим поработать.
т.е. все веб-технологии задумывались как лучше, а исторически сложилось как всегда (причем скорее даже не от недостатков самих технологий, а из-за того, что в интернете их используют не так как надо).
А еще чего мне не хватает в интернете — так это определенности и постоянства. Как ненадежен интернет — сегодня есть, а завтра нет Например, был какой-нибудь хороший ресурс, потом бац — его закрыли, или перенесли на другой сервер без сохранения старого имени, или просто изменили что-то на нем — и все ссылки, которые я сохранил или отправил знакомым, стали битыми. И даже нет механизма проверить в момент сохранения ссылки, насколько постоянным можно считать тот контент, на который она ссылается. Также на многих интернет-ресурсах нет возможности сослаться именно на нужный кусок контента (например, хочу послать кому-нибудь ссылку на текст какой-нибудь статьи, а не на кучу рекламы вокруг нее).
Да, и еще чего не хватает — это возможностей поиска. Хочу, чтобы в браузере была возможность а ля "Поиск во всех файлах проекта" в VisualStudio. И хочу, чтобы это было именно в браузере, чтобы для этого мне не надо было лезть в гугл — чтобы это работало как в онлайне, так и в оффлайне, и чтобы для этого разработчику контента не надо было создавать в своем HTML извращениский скрипт — хочу, чтобы это все делалось стандартными средствами.
M>>Повторю в шестой раз. То, что я показал, и есть общий случай для js
L>Ты просто жжошь. 1 случай не может быть общим, т.к. он — частный случай по определению.
Аналогично с твоими лямбдами.
В JS анонимные функции используется постоянно, причем именно так, как я показал. Поэтому твое
не надо приводить примеры, где лябды на полэкрана, тогда увидишь, где читабельность.
L>>>Ты имеешь в виду, что нельзя объявить методы вне класса или что-то другое? Если это, то воспринимай это просто как своего рода namespace. M>>Я имею в виду процедурное программирование Без классов, без ООП L>Да сколько угодно, статические классы — и вперед. Пусть тебя не смущает слово class в их определении, это не имеет ничего общего с классами из ООП.
Это все равно ООП.
M>>>>И, насколько я помню, функции все же не first-class objects в C#
L>>>Что ты имеешь в виду?
M>>Можно ли в C# такое:
M>>
M>>function func(){ /* что-то там */ }
M>>var a = func;
M>>a();
M>>
L>Можно, только синтаксис немного другой и надо указать аннотацию типа у переменной a, т.к. язык — статически типизированный.
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, Mamut, Вы писали:
Ц>>>>я же сказал: одно из
L>>>если "var O = {}" — аналог "var O = new Object()", то почему он считается преимуществом? Или вы что-то недоговариваете, или...
M>>Просто можно пойти дальше:
M>>
>>> var o = {}
M>>Object
M>> __proto__: Object
>>> var o = { a: 1, b: 2}
M>>Object
M>> a: 1
M>> b: 2
M>> __proto__: Object
>>> var o = { method: function(){ return this; }}
M>>Object
M>> method: function (){ return this; }
M>> __proto__: Object
M>>
M>>Вот так вот легко и ненапряжно мы создали три разных объекта.
L>Спасибо, Кэп. Странно, что ты поправил меня, а не Цыбу.
Поправил тебя, потому что "var O = {}" — не аналог "var O = new Object()". И поправил тебя, потому что такое впечатление, что о JS ты знаешь если не понаслышке, то очень мало (многстрочные лямбды, ага)