« first day (1542 days earlier)      last day (1146 days later) » 

3:51 AM
@Suvitruf в мобильном браузере их можно посмотреть?
 
4:36 AM
@АндрейNOP хм, стараюсь на мобиле браузер не юзать :D
 
 
2 hours later…
6:27 AM
@VladD там своих хватает (¬‿¬ )
 
@Suvitruf но не так много как в яве (¬‿¬ )
 
@Grundy Котлин многие проблемы Джавы исправил (¬‿¬ )
@Grundy а вот JS уже никто не исправит (¬ ¬ )
 
6:58 AM
@Suvitruf такая же какашка :)
@Suvitruf он почти совершенен :-) нечего исправлять
 
@Grundy ну, это бан
 
@Suvitruf пфффф, неоселяторы в треде :)
 
@Grundy [1,10,2, 11].sort()?
 
@Grundy ага, "Вот мы сделали херню, но в справке мы про это написали, так что, мучайтесь" (с) Брендан Эйх
 
7:02 AM
@Suvitruf ну а как :-) если это документировано - это не баг, это фича :)
 
@Grundy (¬‿¬ )
 
@vp_arth Не вместо. *You can't parse [X]HTML with regex.*™
Markdown-парсер чата меня убивает. Сдаюсь.
 
@ߊߚߤߘ я чат матерю каждый раз, когда захожу в мобильную версию :D
2019 год, а адаптивности нет и не будет.
 
7:19 AM
@ߊߚߤߘ Ну это же было очевидное: «Ой, всё» =)
 
@Grundy И после этого кто-то называет C и C++ ногоотстреливающими?
 
@ߊߚߤߘ естественно!
 
@Suvitruf нормальный лексикографический порядок, если нужно сортировать числа, нужен компаратор: [1,10,2, 11].sort((a,b)=>a-b)
 
@vp_arth я сортирую массив int'ов. С чего вдруг мне ожидать, что он приводит это к строкам?
Это не интуитивно.
 
Ну или можно пушкой жахнуть этого воробья:
const q=a=>a.length?[...q(a.slice(1).filter(e=>e<=a[0])),a[0],...q(a.slice(1).filter(e=>e>a[0]))]:[];
q([1,10,2,11])
@Suvitruf Что такое int'ы в языке с динамической типизацией? Типы эфемерны)
 
7:31 AM
@vp_arth ну, там, как минимум, есть string'и и number'ы.
Мне, как пользователю языка, по барабану, что у него там внутри.
Я ожидаю интуитивно понятного поведения.
А не вот этого вот всего.
 
@Suvitruf Просто почините свою интуицию) это же не бан?
 
@vp_arth но на грани (¬‿¬ )
 
7:50 AM
@VladimirGamalyan день добрый. Часто мелькаете, но почти не пишете.
 
@Suvitruf Шалом! Вместе с набором других вкладок открывается чатик, я не уиноват =)
 
@VladimirGamalyan тогда ладно )
 
@Suvitruf А тут уже настпулиа демократия, или пока все хорошо?
 
@VladimirGamalyan не начинайте )
 
@Suvitruf Малчу, малчу ))
 
8:07 AM
@VladimirGamalyan ну вот это точно бан :D
 
8:22 AM
@vp_arth for the swarm!
 
@Suvitruf Need something liberated? Fire all missile clusters!
 
Даже перепройти захотелось.
 
А я вторую не осилил, времени не хватило)
Смотрю на тытрубе иногда)
 
8:42 AM
@vp_arth я в момент выхода играл. Сейчас на такое уже времени нет =/
 
@Suvitruf это отвратительно, я так уже 8 месяцев рдр2 прохожу >_<
 
@yolosora не любитель кинца.
 
9:08 AM
@yolosora speedrun.com/rdr2 15 часов геймплея всего =)
 
9:53 AM
@Suvitruf Проблемы? В моём C#? Их там нет! (Адепты темплейтов, изыдите в геенну огненную!)
 
@vp_arth это всё происки Джавистов!
 
@vp_arth Не, это предложения по тому, как сделать C# ещё круче. ADT, тайпклассы, вот это всё.
@Suvitruf Нила Гафтера в основном :-P
 
У вас даже Label: bug отсутствует. Зачем-то назвали его Feature Request
 
@vp_arth потому что багов в c# нет .NET нет! :-D
если серьёзно, вы смотрите не тот репозиторий
этот посвящён развитию языка
за ошибками во фреймворке нужно смотреть вот сюда: github.com/dotnet/corefx
ошибки в компиляторе здесь: github.com/dotnet/roslyn
 
10:19 AM
@VladD Тут даже больше фич)
 
10:50 AM
@vp_arth Но по крайней мере есть баги: github.com/dotnet/corefx/…
 
@VladD Это не баги, это жучки полезные) В C# нет проблем, я это из достоверного источника знаю.
 
@vp_arth Это ошибки не в языке, а в стандартной библиотеке
А язык совершенен ;-D
(Кроме ковариантности массивов)
 
11:19 AM
@VladD tuple тоже?
 
С# - это же C++++?
 
@Suvitruf Новые туплы — блеск
 
@VladD кому как)
 
Например, обмен значений сейчас кодируется так: (a, b) = (b, a);
А обычный конструктор выглядит так:
class C
{
    public int Id { get; }
    public string Name { get; }
    public C(int id, string name) => (Id, Name) = (id, name);
}
Лепота!
2
Вот ещё рекорды подвезут, можно будет писать так:
record C (int Id, string Name)
{
}
А старые туплы, которые Tuple.Create, те да, были не очень
 
11:38 AM
И чем это лучше Javascript?
 
@vp_arth Прежде всего типизацией. Языковые конструкции, которые компилируются, не выбросят исключение в рантайме.
Ещё серьёзное преимущество — невозможность манки-патчинга и связанного с ним хаоса
 
При всё этой красоте в шарпе все равно полно окон для прострела себе коленей, dynamic, reflection, unsafe и т.д. :D
 
@yolosora Это да. Но они изолированы синтаксически. То есть, нестрогий код выглядит не так, как строгий. В JS единственный тип переменной — dynamic, что требует серьёзной дисциплины разработчиков.
 
@VladD нет темплейтов - нет проблем :-)
@VladD ну не, (A)b - компилируется, но может выбросить исключение в рантайме
 
@VladD TypeScript.
 
11:48 AM
@VladD разве невозможно? а всякие reflection emit?
 
Я его щас вместе с nest.js юзаю для новых проектов.
Вполне съедобно.
@Grundy перекрестился
 
12:18 PM
@Grundy Да, согласен. Одно исключение есть. Второе исключение — ковариантные массивы.
@Suvitruf Ну, я его особо не пробовал. Но там вроде с подтипами не всё интуитивно.
@Grundy Не, при помощи Reflection.Emit можно конструировать новые классы
Но не манкипатчить старые
 
0xdb, Павшинская пойма, Московская область, Россия
1 10 31 63
 
@VladD а там же было что-то вроде compiletomethod или как-то так?
 
Учётная запись временно заблокирована за нарушения при голосовании.
 
@Grundy Было
 
а что это за голосование такое?
 
12:24 PM
@aleksandrbarakin обычно когда плюс минусы
 
@VladD Кол-во ошибок, связанных с совершением формальных обрядов, вызванных строгой типизацией невелирует это преимущество кмк.
 
@Grundy ставишь плюс и получаешь бан? круто
 
@VladimirGamalyan Спорное утверждение. Можете привести конкретный пример?
 
@aleksandrbarakin там же вроде ссылка есть
 
@aleksandrbarakin не:-) когда делаешь несколько человек и ставишь плюсы себе и минусы другим :)
 
12:27 PM
@Grundy себе
 
@Suvitruf да!
 
@Suvitruf по ссылке (ru.meta.stackoverflow.com/questions/6703) ничего про голосование не вижу.
@Grundy теперь понятно.
 
@aleksandrbarakin а, думал в причине ссылка на описание есть. Оказывается нет =/
Вообще странно, что там нет ссылки на описание причины бана.
С другой стороны, может это и правильно.
 
12:45 PM
@Grundy я не совсем понял , но @0xdb нанял пару человек которые "плюсовали "ему и "минусовали " его врагам ??? И как вы это узнали 0_o
 
12:58 PM
@timob256 WikiLeaks
 
 
3 hours later…
4:15 PM
@timob256 у них всех прослеживался очень похожий поведенческий паттерн — перед голосованием они все заходили на сайт
@VladD если бы строгая типизация была абсолютно необходима не было бы всяких Person a = (Person) man;;
 
@vp_arth В хорошо спроектированной программе такое никогда не нужно. В плохо спроектированной нужно в ничтожном количестве случаев. Разве не так?
11
A: Причины использования DownCast

VladDВ хорошо спроектированной системе необходимость в понижающем приведении (downcast'е) минимальна. Однако, существуют случаи, при которых он нужен. Вот несколько примеров. Обычная причина — слабость системы типов. Представьте себе, что вы хотите запрограммировать класс с выделенным экземпляром. Н...

 
@VladD очень часто передаётся object, который потом приводится к нужному типу.
Такое любят всякие либы делать.
Особенно API'шки.
@VladD а как вы к рефлексии относитесь? )
 
4:36 PM
@Suvitruf В старых дотнетовских API часто так и было. В новых они используют дженерики :) и проблема не возникает
@Suvitruf Необходимое зло, конечно. Но это ж не часть языка, а часть библиотеки.
 
@VladD ну да, шило на мыло.
:D
 
@Suvitruf Почему? Теперь API строго типизированные.
Это ж хорошо
 
@VladD а темплейты сишные любите?
мммм
 
@Suvitruf Не, не люблю. А вот дженерики люблю :)
 
@VladD а дженерики в джаве? :P
 
4:41 PM
@Suvitruf С type erasure нифкусна
 
@VladD щито поделать. Обратная совместимость.
 
@Suvitruf Не, это не обратная, это какая-то странная ещё совместимость
Обратная не имеет смысла, это ж фича нового рантайма, старые фичи не выбрасываются
Смысл тот, чтобы новый код можно было выполнить на старом рантайме
Нафига это надо, моя не понимать
 
2 стула
 
5:41 PM
0
Q: Потерялся комментарий

QwertiyВот так отображаются комментарии под ответом: А на самом деле там вот так: Почему в первом случае не отображается последний комментарий? Давайте продолжим обсуждение в чате.

я тут баг нашёл - у всех так же отображается? ^^
а то вроде раньше проблема только с удалёнными комментариями и кнопкой "показать ещё" была, а тут что-то наоборот
 
5:57 PM
@yolosora, @Suvitruf, ау? ^^
 
1
Q: Потерялся комментарий

QwertiyВот так отображаются комментарии под ответом: А на самом деле там вот так: Почему в первом случае не отображается последний комментарий? Давайте продолжим обсуждение в чате.

 
@VladD так ведь он возможен
 
6:28 PM
@Qwertiy я в аэропорт щас еду. Не могу 😅
 
6:48 PM
@0xdb в бане? Что случилось?
 
@VladD сугубо на личном опыте (поэтому приписал "кмк"), со статической типизацией много больше писанины и лишних конструкций/шаблонного кода, часто уход от изначально красивого замысла в сторону "как бы впихнуть в возможности языка" и т.п. Опять же при изменении исходных требований/входных данных -- в строгом варианте либо куча работы по переписыванию либо костыли с последующими мутными ошибками.
@VladD В динамике же гораздо быстрее адаптироваться к изменениям в процессе разработки (яркий пример - взрывной рост популярности безсхемной БД mongodb).
 
@Qwertiy В C#?
@VladimirGamalyan ну мне хотелось бы какой-то пример. С моей точки зрения строгая типизация как раз очень помогает при изменениях в коде, ведь если у вас передаётся один тип, а в реальности ожидается совсем другой, код просто не скомпилируется.
Если же типов нету, то у вас нету лёгкой возможности узнать, где вы уже поменяли код, а где он ещё старый.
 
@VladD в этом частном случае достаточно поставить на входе в ф-ию проверку типа (либо использовать возможности языка по проверке входных аргментов с помощью аннотаций или ещё чего похожего).
@VladD тесты наше всё
 
7:05 PM
@VladimirGamalyan Не, популярность связана не с этим. Наоборот, стандартный объектно-ориентированный подход очень плохо ложится на реляционные базы данных. Например, в ООП если тип A владеет коллекцией экземплярв типа B, то знания этого не требуются в типе B. При реляционном подходе в тип B приходится класть внешний ключ на владеющий экземпляр типа A. Инкапсуляция, таким образом, полностью отсутствует. Документоориентированные базы данных куда ближе к объектно-ориентированному подходу.
@VladimirGamalyan Угу, вот это и называется строгой типизацией :)
@VladimirGamalyan Тесты на много порядков слабее проверки типов. Вы не сможете написать тесты на каждое присваивание, это большой overhead.
Отсутствие контроля типов и приводит к ошибкам наподобие этой: github.com/dotnet/try/issues/290
 
 
3 hours later…
10:27 PM
@NicolasChabanovsky Можете передать мне мой список банов? Мне сложно получить его самостоятельно, потому что придётся разгребать огромное количество почты.
 
@vp_arth в профиле же написано - накрутка
 
 
1 hour later…
11:45 PM
@VladD ага - библиотеки для моков ведь умеют мокать Date.Now, так что при особом желании возможно)
 

« first day (1542 days earlier)      last day (1146 days later) »