- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
class C {
_length: number;
constructor() {
this._length = 10;
}
get length() {
return this._length;
}
set length(value: number) {
this._length = value;
}
}
function main() {
const c = new C();
print(c.length);
c.length = 20;
print(c.length);
delete c;
print("done.");
}
ASD_77 07.07.2021 11:28 # 0
и дампик https://pastebin.com/hhZLyDBw в LLVM IR и LLVM MLIR https://pastebin.com/0W5H2rJ4
ASD_77 07.07.2021 14:24 # 0
bormand 07.07.2021 14:31 # 0
А через c['length'] эти свойства доступны? Или в TS эту фичу спрятали?
booratihno 07.07.2021 14:55 # 0
оно аботает, посто типизиованное
bormand 07.07.2021 14:57 # +1
Хуяссе, а как вы там типизированную гетерогенную мапу запилили? Что за ёбаная магия?
Тип возвращаемого значения зависит от значения ключа? Да у вас там coq практически...
Coq 07.07.2021 15:04 # 0
Опровергаю.
1024-- 07.07.2021 15:09 # 0
Такая питушня с оптимизациями и проверки типов могут поднять ИТ до небес.
booratihno 07.07.2021 15:09 # 0
Да ты сам проверь
1024-- 07.07.2021 15:13 # 0
А Борманд хотел спросить, наверно, что будет, если, скажем, запихнуть Foo['length'] в add : (number, number) -> number.
booratihno 07.07.2021 15:16 # 0
ни в JS, ни в питоне стат типизация не проверяется без спец средств.
Борманд имел ввиду, что значение мапы зависит от ключа.
В C#, Java или C++ такое выразить не просто
1024-- 07.07.2021 15:27 # 0
Ну что в жс такая же питушня сработает.
И что выражение на первый взгляд выглядит так, как будто в нём никому нет дела до проверки типов.
bormand 07.07.2021 15:56 # 0
Тип значения мапы зависит от значения ключа. В крестах такое вообще не выразить, разве что для кейсов, когда значения ключей заранее известны. Ну в общем-то и в тс точно так же, как мы выяснили ниже.
bootcamp_dropout 07.07.2021 22:47 # 0
есть discriminated unions
докажешь что строка может принимать значения только из множества ключей объекта - будет работать, тип значения - union type из всех возможных значений
bormand 07.07.2021 22:55 # 0
Ну это, по сути, подобие енума получится, а не "строка"? Обычную строку, которая мне от юзера пришла, туда уже никак не просунуть?
bootcamp_dropout 07.07.2021 23:01 # 0
bormand 07.07.2021 23:06 # 0
bootcamp_dropout 07.07.2021 23:09 # 0
ну или в `else` если в ифе отрицание
или вообще если в ифе отрицание и там гарантирован return
или вообще в свитче (енам по значениям точно разберет, про функцию не уверен)
bormand 07.07.2021 23:13 # 0
Круто сделали.
MAKAKA 07.07.2021 23:15 # 0
очень, угу
Вообще даже обидно, что скриптоблядям вебовским такой годный язык достался
Desktop 07.07.2021 23:17 # 0
https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/discriminated-unions
bormand 07.07.2021 23:19 # 0
А тьфу, это F#.
MAKAKA 07.07.2021 23:20 # 0
Desktop 07.07.2021 23:22 # 0
bormand 07.07.2021 23:23 # +3
MAKAKA 07.07.2021 23:25 # +2
заменишь девочку на ротоёба, и язык поменяешь
Desktop 07.07.2021 23:28 # +1
императивомразь!
bormand 08.07.2021 00:17 # 0
Боюсь, что не прокатит т.к. вся архитектура уже заточена под какие-нибудь реактивные паттерны да всякие кобенаторы, которые в шарпике будут выглядеть как говно. Да и старый код прочитать будет некому.
Так что интероп здесь в одну сторону.
Desktop 08.07.2021 00:20 # +2
вот бизнес порадуется! будет полное nevmerle!
MAKAKA 07.07.2021 23:25 # 0
если бы я писал под .NET плотно, то вероятно бы выучил..
JaneBurt 08.07.2021 00:49 # 0
MAKAKA 08.07.2021 00:51 # +2
Desktop 08.07.2021 00:52 # 0
bootcamp_dropout 08.07.2021 02:36 # 0
bootcamp_dropout 08.07.2021 02:37 # 0
JaneBurt 08.07.2021 15:45 # 0
booratihno 08.07.2021 16:06 # 0
жаль конечно, что в стандартной библиотеке нихуя нет
JaneBurt 09.07.2021 00:23 # 0
MAKAKA 09.07.2021 00:25 # 0
bootcamp_dropout 08.07.2021 21:48 # 0
Массив реализует интерфейс очереди
>связных списков, priority queue
Задачи с литкода рекомендую всё-таки решать на питоне или джаве
MAKAKA 08.07.2021 21:53 # 0
не очень производительно
>Задачи с литкода рекомендую всё-таки решать на питоне или джаве
почему, кстати?
bootcamp_dropout 08.07.2021 21:57 # +1
Какая производительность )))
>почему, кстати?
1) там все перечисленное JaneBurt есть
2) интервьюер на алгоритмической секции с большей вероятностью знает их чем жс
bormand 08.07.2021 21:56 # 0
Ну priority queue -- это всё-таки практическая штука, а не хрень для лаб.
MAKAKA 08.07.2021 21:58 # +1
Если я буду перманентно срать в голову массиву размером в гигабайт, то могу и соснуть
С другой стороны, современные процы умеют неплохо двигать последовательные куски данных
bormand 08.07.2021 22:06 # 0
JaneBurt 09.07.2021 00:24 # +1
А вставка/удаление в начало работает за O(n) . У труЪевой очереди ето работает за O(1).
> Задачи с литкода рекомендую всё-таки решать на питоне или джаве
Я не думаю, что в том же Яндексе алгоритмическую секцию дадут решать на каком угодно ЯПе. Раз я подаюсь на позицию с ЖС, мне надо писать на ЖС.
bootcamp_dropout 09.07.2021 00:57 # 0
Какой перформанс )))
>Раз я подаюсь на позицию с ЖС, мне надо писать на ЖС.
Мне это кажется добровольным усложнением жизни но флаг тебе в руки
MAKAKA 09.07.2021 02:57 # 0
JSер не обязан знать, чем массив отличается от листа, а O(1) от O(n)
bootcamp_dropout 09.07.2021 12:20 # 0
Глистов тоже нет только деревья
booratihno 09.07.2021 14:42 # 0
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array
мы вам этсамое
bootcamp_dropout 09.07.2021 14:48 # 0
Массив это Uint8Array он вроде обязан выделить сплошной кусок памяти
А array не обязан
booratihno 09.07.2021 14:49 # 0
охуясе, то есть доступ к Array[42] не за O(N)?!
у вас там в джсе всё такое?
bootcamp_dropout 09.07.2021 14:53 # 0
Ты никогда не задумывался как работает индексация Array если в объекте ключи могут быть только строками или символами?
booratihno 09.07.2021 14:56 # 0
а сам эррей массивом
ну если он хештаблой, то как же тогда перечислять его?
bootcamp_dropout 09.07.2021 15:04 # 0
j123123 09.07.2021 14:51 # 0
https://www.php.net/manual/en/language.types.array.php
booratihno 09.07.2021 14:54 # 0
ну назовите лист тада, або сиквенс
HEu3BECTHblu_nemyx 09.07.2021 15:07 # +1
guest6 09.07.2021 15:10 # 0
Coq 07.07.2021 15:05 # +2
booratihno 07.07.2021 15:10 # 0
буде Element implicitly has an 'any' type because expression of type 'string' can't be used to index type
1024-- 07.07.2021 15:15 # 0
bormand 07.07.2021 15:36 # +1
А что будет, если я в это any засуну "42"? Мне не дадут это сделать в компайлтайме или рантайме? Или просто читатели потом охуеют от разрушенных инвариантов?
booratihno 07.07.2021 15:40 # 0
все сломаешь, и сам виноват
тайпскрипт НЕ ВЛИЯЕТ НА РАНТАЙМ
>зависимыетипы
там тока так
https://www.typescriptlang.org/docs/handbook/2/mapped-types.html
bormand 07.07.2021 15:54 # 0
ASD_77 07.07.2021 16:39 # 0
CHayT 07.07.2021 15:11 # 0
bootcamp_dropout 07.07.2021 23:05 # 0
ASD_77 07.07.2021 15:00 # 0
ASD_77 07.07.2021 15:13 # 0
1024-- 07.07.2021 14:56 # +3
* Создан продукт с 1 фичей - очень интересно.
* Добавлена фича - ну ладно.
* Стало 3 фичи - зачем? Ты просто досчитал до трёх. Расскажи, когда будет скачок.
* Стало 10 фич - интересно
* Стало 100 фич - ну ладно
* Стало 1000 фич - зачем? Ты просто досчитал до трёх по логарифмической шкале. Расскажи, когда будет скачок.
* Код использует вся страна - интересно
* Код использует вся планета - ну ладно
* Код использует вся галактика - зачем? Ты просто досчитал до трёх по вселенской шкале. Расскажи, когда будет скачок.
Так что штука крутая, но из-за особенностей восприятия она будет всё больше и больше недооцениваться.
Coq 07.07.2021 15:03 # 0