[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Давай те поигрем в DART's
m4a1fox
Всем доброго дня! Прочитал в новостях вот про это
У кого какие мнения?



Спустя 6 минут, 59 секунд (11.10.2011 - 14:33) alex12060 написал(а):
m4a1fox

Ну не плохо. Пока в действии не юзал его, но читаю сейчас доку, и вижу, что он схож с C++.
Строготипизирован, это хорошо.
Хорошая ООП, уже не плохо, но, наверное, немного излишне.
Есть четкое разграничение доступа к объектам, хороший ход в убийство ЖС.

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

Спустя 6 минут, 4 секунды (11.10.2011 - 14:39) m4a1fox написал(а):
C++? Хм. Я тоже доки сейчас читаю, но по мне так вылитый JS? Еще так и не понял в чем разница?! Вот нет что бы в доках точно эьто указать. Мол, раньше на JS вы делали (что-то) так, сложно, а вот наш DART с этим справляется за меньшее время и с меньшим кодом. Вот отличие, вот преимущество! Вот так было бы понятнее. smile.gif

Спустя 15 минут, 37 секунд (11.10.2011 - 14:55) m4a1fox написал(а):
class Point {
var x, y;
Point(this.x, this.y);
scale(factor) => new Point(x*factor, y*factor);
distance() => Math.sqrt(x*x + y*y);
}

Это получается, что класс используется сам в себе?

И вот это интересно!
scale(factor) => new Point(x*factor, y*factor);

Насколько я понял это функция, с паарметром factor внутри, но как-то она ссылается хитро на объект, кот. кажется, уже инициализирован???!!! :)

Спустя 5 минут, 16 секунд (11.10.2011 - 15:00) alex12060 написал(а):
m4a1fox

Ну для начала, первой выполняется функция main(), и, насколько я понял, только она.
В С такая же шарада.
final переменные и функции. Строгая типизация.
Это все С, и последующий С++

Спустя 8 минут (11.10.2011 - 15:08) m4a1fox написал(а):
alex12060
Цитата
Ну для начала, первой выполняется функция main(), и, насколько я понял, только она.
В С такая же шарада.
final переменные и функции. Строгая типизация.
Это все С, и последующий С++

Спорить не буду, ибо не в курсе как там у С и С++. Скорее вы правы. Но мне интересна последовательность действий. Это что же получается, что вот такой код

class Point {
var x, y;
Point(this.x, this.y);
scale(factor) => new Point(x*factor, y*factor);
distance() => Math.sqrt(x*x + y*y);
}

main() {
var a = new Point(2,3).scale(10);
print(a.distance());
}

Как я понимаю, должен был вернуть число - 130. Но возвращает, как оказалось - 36.05551275463989. Интересно, как это у него получилось? Даже если разбирать код, попробую. Итак

class Point {
var x, y;
Point(this.x(2), this.y(3));
scale(factor(10)) => new Point(x(2)*factor(10), y(3)*factor(10)); // получается что теперь в scale => new Point(x = 20, y = 30)
distance() => Math.sqrt(x(20)*x(2) + y(3)*y(30)); // итого в сумме должно вернуться 130.
}

main() {
var a = new Point(2,3).scale(10);
print(a.distance());
}

P.S. Хотя нужно еще посмотреть, что делает API sqrt?! Правильно? Это называется API? Когда используется функция кот. встроена в стандартный набор языка?

Спустя 36 минут, 34 секунды (11.10.2011 - 15:44) alex12060 написал(а):
Вот на пыхе сделал то же самое.


class Point {

public $x = null;
public $y = null;

public function Point($x, $y) {
$this->x = (int)$x;
$this->y = (int)$y;
}

public function scale($factor) {
return new Point($this->x*(int)$factor, $this->y*(int)$factor);
}

public function distance() {
return (float)sqrt($this->x*$this->x + $this->y*$this->y);
}
}


$t = new Point(2, 3);
$t = $t->scale(10);
echo $t->distance();


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

Если по твоему коду, то вот так будет:


class Point {
var x, y;
Point(this.x(2), this.y(3)); // Конструктор. Мы х = 2, а у = 3
scale(factor(10)) => new Point(x(2)*factor(10), y(3)*factor(10)); // Вызываем объект еще раз, и перемножаем старые значения на 10, получаем новые.
distance() => Math.sqrt(x(20)*x(20) + y(30)*y(30)); // А тут фишка. По идее, должны быть старые значения, но мы перезапустили наш класс и влепили туда новые значения.
}

main() {
var a = new Point(2,3).scale(10);
print(a.distance());
}

Спустя 8 минут, 36 секунд (11.10.2011 - 15:53) m4a1fox написал(а):
Ага! Тогда у меня только один вопрос. Почему в итоге в интерпретаторе на сайте DATR ответ этой задачи - 36.05551275463989. Я так понимаю, это связано с функцией sqtr - в самом API языка?!

Спустя 4 минуты, 57 секунд (11.10.2011 - 15:58) alex12060 написал(а):
m4a1fox

sqrt - это корень числа n второй степени.
Math - объект, содержащий математические функции.

Это же стандартный яваскрипт smile.gif

Спустя 1 минута, 56 секунд (11.10.2011 - 16:00) m4a1fox написал(а):
alex12060
Цитата
Это же стандартный яваскрипт

Ну мало ли! smile.gif Теперь знать буду! smile.gif

Спустя 4 минуты, 33 секунды (11.10.2011 - 16:04) m4a1fox написал(а):
alex12060
Цитата
Там рассказывается о том, что можно делать вызов класса внутри класса..

Да, это и имел ввиду. Не так выразился.

Цитата
вызываем экземпляр класса

ни как запомнить не могу.

Спустя 31 минута, 4 секунды (11.10.2011 - 16:36) RCuPeR написал(а):
https://gist.github.com/1277224
Поклонникам Дарта.

Спустя 16 минут, 2 секунды (11.10.2011 - 16:52) alex12060 написал(а):
RCuPeR

Amazing smile.gif

Спустя 1 минута, 46 секунд (11.10.2011 - 16:53) RCuPeR написал(а):
Цитата (alex12060 @ 11.10.2011 - 13:52)
RCuPeR

Amazing smile.gif

Вот-вот.

Спустя 1 минута, 16 секунд (11.10.2011 - 16:55) m4a1fox написал(а):
WTF это?

Спустя 14 минут, 56 секунд (11.10.2011 - 17:10) RCuPeR написал(а):
"Hello world на языке Dart, скомпиленный в js, занял 17259 строк"

Спустя 3 минуты (11.10.2011 - 17:13) Zerstoren написал(а):
Это сам ретранслятор в JS коде.

Короче Dart компилируется в JS.
Тоже самое что и Python.

Кода на 2 кб, а вот интерпретатор в 13 мб (так под виндой)

Вообще, кто-то видел как ретранслятор так и интерпретатор в паблике для Dart?

Спустя 13 минут, 8 секунд (11.10.2011 - 17:26) m4a1fox написал(а):
Насколько я понял, при написании кода на DART не нужна какая-либо сторонняя программа? Или не так? Надо какое-то определенное ПО?

Спустя 9 минут, 7 секунд (11.10.2011 - 17:35) Zerstoren написал(а):
Цитата (m4a1fox @ 11.10.2011 - 14:26)
Насколько я понял, при написании кода на DART не нужна какая-либо сторонняя программа? Или не так? Надо какое-то определенное ПО?

Как гугл заявил - это будет некий плагин для браузера, который будет интерпретировать язык.

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

Но JS готовит ответный удар, в виде JavaScript 2.0
А значит - может Дарт и не выстрелит.

Но если ретранслятор будет полностью решать все проблемы и количество кода от hello world не будет вырастать в геометрической прогрессии, то он может и выжить.

Вот если бы гугл запустил Dart прямо сейчас. Уже утвержденный, готовый, проверенный (хотя б в бете), написаны все расширения, ретрансляторы и так далее - то он мог бы подпортить репутацию JS очень сильно. А сейчас нам остается только пускать слюнки

Спустя 3 часа, 56 минут, 51 секунда (11.10.2011 - 21:32) kovaldm написал(а):
Не скоро этот DART наберет такую же популярность как яваскрипт.

Спустя 1 час, 19 минут, 16 секунд (11.10.2011 - 22:51) TMake написал(а):
по мне так еще одни костыли для программиста ph34r.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.