Понравилось как они интерфейсы с обьектами связали.
Добавили только то что нехватало. классы + (классика всегда в цене :D ) интерфейсы + (контроль над согласование множества обьектов, очень не плохо ) статическая типизация+ (как добавка к динамической то что надо) отсутствие именованных параметров в функциях - (очень удобно, но нету :( ) необходимости предварительной компиляции --- (была бы удобнее компиляция в браузере, хотябы как опция) |
Цитата:
Я наверное плохо сформулировал вопрос. Как вы относитесь к статической типизации и почему? Хотя если вы сначала видео хотите посмотреть, я конечно подожду... |
какие-то ответы неаргументированные и/или субъективные (мне нравится, что...)
|
x-yuri,
в некоторых местах она очень нужна, особенно на больших проектах. К гвардам однозначно положительно отнушусь, на счёт остольного пока трудно сказать. |
всегда удобно иметь набор инструментов на выбор.
если статическая типизация, доступна вместе с динамической то это идеальное сочетание на мой взгляд. Очень полюбил 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("привет"); нифига некамельфо. вот поэтому я и говорю что статическая + динамическая - это гуд. А только у статической и только динамической немало недостатков. |
DjDiablo,
Приведение типов перед передачей в функцию не решит проблему? |
Цитата:
Цитата:
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 |
Цитата:
Цитата:
А вот промо-сайт автомобиля, игра в канвасе, бизнес приложения, приложения на мобильные платформы, metro-приложения - предьявляют совсем иной набор требований. Таких заказов меньше, но они есть, и их число будет только расти. Я думаю что ориентируясь на лузеров, можно стать только лузером. |
а мне вот больше нравится статическая типизация с автоматическим приведением типов. например, на пхп я её эмулирую так:
function getTitle( $dom ){ so_dom::ensure( $dom ); return (string) $dom->select(' / html / title '); } в эту функцию можно передать строку, структуру из массивов, инстанс so_file или so_dom.. и это будет работать правильно. приводить типы вручную перед вызовом функции - слишком много копипасты получится. делать семейство функций на каждый тип - тоже. |
Входная переменная $dom - у тебя нетипизированная, естественно ты можешь передать в функцию что угодно
|
Часовой пояс GMT +3, время: 12:14. |