Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Google выпустила версию Chromium с поддержкой Dart «Dartium» (https://javascript.ru/forum/offtopic/25892-google-vypustila-versiyu-chromium-s-podderzhkojj-dart-dartium.html)

Magneto 19.02.2012 02:15

Google выпустила версию Chromium с поддержкой Dart «Dartium»
 
Ссылка на статью на habrahabr.ru
Пока только для Маков и Линукса.

Mахmахmахimus 19.02.2012 02:58

Объясните мне чем дарт лучше яваскрипта?

Nekromancer 19.02.2012 03:00

Mахmахmахimus,
Он другой (с)
А серьёзно, никто этого не говорил :)

Mахmахmахimus 19.02.2012 03:10

Цитата:

Сообщение от Nekromancer
Он другой (с)

Ну тогда он хуже javascript'a тем, что не лучше.)

FINoM 19.02.2012 05:06

http://synonym.dartlang.org/ вот, если кто не знает. Нифига не круто.

FINoM 19.02.2012 06:37

Блин, в статье уже есть эта ссылка :D

FINoM 19.02.2012 07:27

Цитата:

Dart does not support variable numbers of arguments
Офигеть.

monolithed 19.02.2012 11:09

Цитата:

Сообщение от FINoM
Офигеть.

У меня такое чувство, что Dart начали писать еще в 80-х.

Nekromancer 19.02.2012 11:12

Цитата:

Сообщение от monolithed
У меня такое чувство, что Dart начали писать еще в 80-х.

Да не, на самом деле Google за JS. Просто они вывели на рынок Dart, что бы показать, на сколько крутой Harmony :)

monolithed 19.02.2012 12:48

Цитата:

Сообщение от Nekromancer
на сколько крутой Harmony

На столько, что специалистов станет еще меньше, потому что уровень вхождения будет очень высоким.
А если еще добавят дескрипторы, декораторы, срезы и перегрузку операторов, то серверная реализация полностью вытеснит Python :)

Gozar 19.02.2012 13:06

Чем дальше в лес, тем толще партизаны. Того и гляди у каждого браузера скоро будет своя реализация чего-то своего, понятного только ему. Мало им было IE css и if IE script.

Однако как показала практика основным всё же будет простейшее.

Mахmахmахimus 19.02.2012 13:24

Цитата:

Сообщение от monolithed
А если еще добавят дескрипторы,

дескрипторы добавили)


Цитата:

Сообщение от monolithed
декораторы, срезы

что это такое где можно почитать?

monolithed 19.02.2012 14:06

Цитата:

Сообщение от Mахmахmахimus
дескрипторы добавили)

можно ссылку?

Цитата:

Сообщение от Mахmахmахimus
что это такое где можно почитать?

Срезы:
var array = [1, 2, 3, 4, 5];

array[:1]   -> [1]
array[1:]   -> [2, 3, 4, 5]
array[1:3]  -> [2, 3]
array[::2]  -> [1, 3, 5]
array[::-1] -> [5, 4, 3, 2, 1]


и т.д.

Объяснить, что такое декораторы сложно, это нужно понимать

Gozar 19.02.2012 15:07

Цитата:

Сообщение от monolithed (Сообщение 158443)
Объяснить, что такое декораторы сложно

Не так уж и сложно.

декоратор на javascript

monolithed 19.02.2012 15:18

Цитата:

Сообщение от Gozar
Не так уж и сложно.

В Python декораторы не имеют никакого отношения к одноименному паттерну проектирования. Однако с помощью декораторов можно реализовать и паттерн.

Mахmахmахimus 19.02.2012 15:35

Цитата:

Сообщение от monolithed
можно ссылку?

Object.getOwnPropertyDescriptor(obj, propName)
Object.getPropertyDescriptor(obj, propName)
Object.defineProperty(object, propertyname, descriptor)

http://msdn.microsoft.com/en-us/libr...(v=vs.94).aspx

Цитата:

Сообщение от monolithed
Срезы:

срезы Проксями делаются но не так удобно, мне кажется они не будут делать среды отдельно так как кому надо тот сделает)
Я бы сделал отдельно но мне кажется они не будут.

monolithed 19.02.2012 16:06

Цитата:

Сообщение от Mахmахmахimus
Object.getOwnPropertyDescriptor(obj, propName)
Object.getPropertyDescriptor(obj, propName)
Object.defineProperty(object, propertyname, descriptor)

Ну это да.

Seva1986 19.02.2012 16:41

Цитата:

Сообщение от Mахmахmахimus
что это такое где можно почитать?

В двух словах декоратор это функция которая какбы оборачивает другую функцию,чем то её дополняет (декорирует) и доступна для вызова под именем оригинальной функции. в js основано на замыканиях.

Mахmахmахimus 19.02.2012 19:21

Seva1986,
аа, ясно, частенько она заменяет переменную в которой хранилась орегинальная функция да?

это как


(function(){
var log = console.log.bind(console);

console.log = function(a){
    alert(a);
    log(a);
}

})()


теперь консоль будет не только ложить но еще и алертить, так)?
это декоратор?

Nekromancer 19.02.2012 19:25

Mахmахmахimus,
Здесь bind не нужен как бы ;)

Mахmахmахimus 19.02.2012 19:28

Nekromancer,
как бы нужен так то чтобы работало;)
Ну сделай пример без бинда) гляну что ль как это делается у отцов js))

Nekromancer 19.02.2012 19:30

(function(){
var log = console.log;
 
console.log = function(a){
    alert(a);
    log.apply(this, arguments);
}
 
})();
console.log("It's a Magic!")

Mахmахmахimus 19.02.2012 19:32

Здесь apply не нужен как бы, он сильнее тормозит чем бинд) бинд фиксируется один раз)
а эплай ищется в прототипах функции и.т.п.

Nekromancer 19.02.2012 19:39

Mахmахmахimus,
Ну во первых твой bind не сработает при аргументах больше одного :) А во вторых, сделай бенчмарк.

Mахmахmахimus 19.02.2012 19:49

Цитата:

Сообщение от Nekromancer
Ну во первых твой bind не сработает при аргументах больше одного

ясно) а почему ты сказал что это не нужно? я не использую консоль с больше одного аргумента). А во вторых бинд быстрее)
в среднем бинд выдавал (алерт убрал) 1900-2100
а эплай выдавал
2300 - 2900

на 10 000 итераций

но спасибо что сказал, ты же не знал что я знаю про эплай)

Ну так что, это декоратор?

Nekromancer 19.02.2012 19:51

Mахmахmахimus,
Да ты нам сам бенчмарк покажи, а не то сколько выдавал он. Мы сами и проверим.

Mахmахmахimus 19.02.2012 19:56

Nekromancer,
Вы там всем офисом за компом сидите;) ?

(function(){
var log = console.log.bind(console);

console.log = function(a){
    log(a);
}

})();

var start = new Date()
for ( var i = 0; i < 100000; i++) {
	console.log('d', 'gg');
}

alert((new Date()) - start)


(function() {
	var log = console.log;

	console.log = function() {
		log.apply(this, arguments);
	}

})();

var start = new Date()
for ( var i = 0; i < 100000; i++) {
	console.log('d', 'gg');
}

alert((new Date()) - start)

Nekromancer 19.02.2012 20:01

Mахmахmахimus,
Не-не-не, запускать даже не буду. И ты наверно не запускал. Ты в курсе что в хроме можно максимум 1000 раз отпечатать в консоль подряд?
А может ты ещё всё таки для правильно бенчмарка заменишь apply на call и будешь передавать один аргумент, ведь bind с несколькими в данном случае не работает?

Mахmахmахimus 19.02.2012 20:04

monolithed,
что означает стрелочка?
->

Mахmахmахimus 19.02.2012 20:06

Цитата:

Сообщение от Nekromancer
Не-не-не, запускать даже не буду

да короче я много раз редактировал запутался, там было вначале 10 000 итераций поом сделал больше, но слишклм много щас поправил. короче я понял тебя, ты рекомендуешь в деаораторах использовать эплай а не бинд?? ясно

monolithed 19.02.2012 20:08

Цитата:

Сообщение от Mахmахmахimus
что означает стрелочка?

function

Mахmахmахimus 19.02.2012 20:20

monolithed,
Спасибо большое я тебя нашел) тперь тебе не скрыться) ответь на вопрос про поля в классах) а то я дальше делать не могу потому что не знаю что должно получиться(((

http://javascript.ru/forum/misc/2589...-klassakh.html

Octane 20.02.2012 00:12

Не понял про bind, разве в bound-функция не передает все аргументы в исходную?

Mахmахmахimus 20.02.2012 00:15

Нет, бинд только закрепляет контекст, вторым и последующими аргументами бинда будут закрепленные параметры функции.

если функция принимала 2 аргумента, а мы её забиндили к какому то контексту а так же забиндили какой то первый парамет, то потом передав забинденной функции ОДИН параметр, он будет ей трактоваться как второй.

Octane 20.02.2012 00:19

Ну и почему log = console.log.bind(console) не должно работать? Новая bound-функция привязывается к console и может принимать столько же аргументов, сколько и console.log

Nekromancer 20.02.2012 00:30

Octane,
Да, вы правы :) Естественно передаются все параметры, ведь это всего лишь обёртка привязанная к определённому контексту. Но в данном случае, нужно будет вручную передавать все возможные параметры которые придут в console.log. Не делать же так, в самом деле:
var a = console.log.bind(console);
console.log = function(){
a.apply(console /* Ну или видимо null можно */, arguments);
}

Смысл байнда тогда отпадает :)

П.С. А можно извратиться так:
var a = Function.prototype.apply.bind(console.log, console);
console.log = function(){
a(arguments);
}

Octane 20.02.2012 00:37

ааааааааа нипанимаю, все ведь работает без apply:
var log = console.log.bind(console);
log(1,2,3,4)


Nekromancer 20.02.2012 00:40

Octane,
Да работает, работает. Но вы видели пример Аквариума, что он там напридумывал? Это выглядело примерно так:
var log = console.log.bind(console);
console.log = function(a){
log(a);
};

Так будет работать только один параметр.

Mахmахmахimus 20.02.2012 00:46

Некроморф хочет сказать что логер который я сделал для примера декоратора не достаточно полный. Так как не может принимать более одного параметра. За что ему и спасибо нашему капитану очевидность. Да, это ни ка не относится к декоратору, но он поставил смайлик что означало что он как бы к слову.

Я подумал что он не знает что лог нужно биндить к контексту консоли чтобы он работал. И обьяснил ему что в другом контексте работать не будет.

Тут он показал что есть эплай, тогда за место того чтобы сказать ну и на хрена мне в примере декоратора эплай, я начал ему обьяснять что бинд работает быстрее, тогда он мне сказал что мой логер не полный.

x-yuri 20.02.2012 11:40

Цитата:

Сообщение от monolithed
У меня такое чувство, что Dart начали писать еще в 80-х.

хм, а почему?


Часовой пояс GMT +3, время: 23:43.