Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Typescript vs Dart (https://javascript.ru/forum/offtopic/32335-typescript-vs-dart.html)

DjDiablo 12.10.2012 16:26

Понравилось как они интерфейсы с обьектами связали.
Добавили только то что нехватало.

классы + (классика всегда в цене :D )
интерфейсы + (контроль над согласование множества обьектов, очень не плохо )
статическая типизация+ (как добавка к динамической то что надо)
отсутствие именованных параметров в функциях - (очень удобно, но нету :( )
необходимости предварительной компиляции --- (была бы удобнее компиляция в браузере, хотябы как опция)

x-yuri 12.10.2012 16:26

Цитата:

Сообщение от FINoM
Дарт — выдумывание велосипеда, создание собственного синтаксиса, методов и пр.

Они заботятся о производительности, ну и может быть о помощи программисту (которую по идее должна дать статическая типизация), хотя насчет второго не знаю насколько они серьезно. У Typescript основная цель - вторая.

Я наверное плохо сформулировал вопрос. Как вы относитесь к статической типизации и почему? Хотя если вы сначала видео хотите посмотреть, я конечно подожду...

x-yuri 12.10.2012 16:31

какие-то ответы неаргументированные и/или субъективные (мне нравится, что...)

Nekromancer 12.10.2012 16:32

x-yuri,
в некоторых местах она очень нужна, особенно на больших проектах. К гвардам однозначно положительно отнушусь, на счёт остольного пока трудно сказать.

DjDiablo 12.10.2012 16:55

всегда удобно иметь набор инструментов на выбор.
если статическая типизация, доступна вместе с динамической то это идеальное сочетание на мой взгляд. Очень полюбил C# за эту возможность в своё время, именно там впервые начал пользоваться динамическими переменными. Автор typeScript и автор С#, pascal, delphi это один и тот же человек.

Только строгая типизация, более перспективна в плане производительности, однако подкидывает и немало гемороя.
к примеру
function hello(d){
   console.log(d);
}
hello(1);
hello("привет");

уже работать небудет

Пришлось бы вводить в язык перегрузку функций и получилось бы что то вроде.
function hello(d:int){
   console.log(d);
}
function hello(d:string){
   console.log(d);
}

hello(1);
hello("привет");

нифига некамельфо.

вот поэтому я и говорю что статическая + динамическая - это гуд.
А только у статической и только динамической немало недостатков.

Gozar 12.10.2012 17:29

DjDiablo,
Приведение типов перед передачей в функцию не решит проблему?

FINoM 12.10.2012 17:32

Цитата:

Сообщение от x-yuri
Они заботятся о производительности, ну и может быть о помощи программисту (которую по идее должна дать статическая типизация), хотя насчет второго не знаю насколько они серьезно.

NaCl, я думаю, порвет здесь любой язык.
Цитата:

Сообщение от x-yuri
Как вы относитесь к статической типизации и почему? Хотя если вы сначала видео хотите посмотреть, я конечно подожду...

Лично я совершенно не вижу преимуществ статической типизации. В крайнем, если она мне, вдруг, понадобится, я буду использовать дескрипторы, отлавливая получаемый тип. Что-то типа:
Object.defineProperty( Object.prototype, 'defineInteger', {
	value: function( key, value ) {
		Object.defineProperty( this, '_' + key, {
			value: parseInt( value ) || 0,
			enumerable: false,
			writable: true
		});
		Object.defineProperty( this, key, {
			get: function() {
				return this[ '_' + key ];
			},
			set: function( value ) {
				var parsed = parseInt( value );
				if( value !== parsed ) {
					throw Error( 'Key "'+key+'" must be an integer, fuck off, motherfucker' );
				} else {
					this[ '_' + key ] = value;
				}
			}
		});
	},
	enumerable: false
});

o = {};
o.defineInteger( 'myInt', 333 );
console.log( o.myInt );
o.myInt = 444;
console.log( o.myInt );
o.myInt = 'valera';

Нужно только немного подождать сметри ИЕ8.
Производительность здесь, конечно, херовая, но, мне кажется, задачи, где реально требуется статическая типизация с высокой производительностью, настолько редки, что ими можно пренебречь. Если уж хотите быстроты, параллельте приложение с помощью воркеров. Еще раз попеарю небольшую поделку: https://github.com/finom/Functions/t...r/InlineWorker

DjDiablo 12.10.2012 17:45

Цитата:

Приведение типов перед передачей в функцию не решит проблему?
решит, но ведь для этого придётся приводить :D, пусть лучше компилятор этим вместо меня занимается

Цитата:

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

А вот промо-сайт автомобиля, игра в канвасе, бизнес приложения, приложения на мобильные платформы, metro-приложения - предьявляют совсем иной набор требований. Таких заказов меньше, но они есть, и их число будет только расти.

Я думаю что ориентируясь на лузеров, можно стать только лузером.

tenshi 12.10.2012 18:46

а мне вот больше нравится статическая типизация с автоматическим приведением типов. например, на пхп я её эмулирую так:
function getTitle( $dom ){
    so_dom::ensure( $dom );
    return (string) $dom->select(' / html / title ');
}


в эту функцию можно передать строку, структуру из массивов, инстанс so_file или so_dom.. и это будет работать правильно. приводить типы вручную перед вызовом функции - слишком много копипасты получится. делать семейство функций на каждый тип - тоже.

DjDiablo 12.10.2012 19:13

Входная переменная $dom - у тебя нетипизированная, естественно ты можешь передать в функцию что угодно


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