Костя
Владислав как я и сказал, ты открываешь ServerSocket, а тебе нужен ServerWebSocket или чего-то там
Костя
протокол не апгрейдится до websocket и остается висеть tcp соединение
Костя
даже после закрытия вкладки
Владислав
Костя
давай, можешь потом даже доложить об успехах)
Костя
если не секрет, что за девайс пилишь? терминал com -> браузер?
Oleg
Проектирование функциональных языков — дело крайне наукоёмкое, не каждый просто может себе это позволить
Чем дальше смотрим в прошлое — тем больше препятствий встаёт перед нами, так например, есть иммутабельные структуры, которые позволяют работать значительно быстрее как в плане рантайма так и в плане темпа разработки ценой некоего оверхеда по памяти.
То есть, чем более масштабные у тебя проекты и более современная платформа — тем больше выигрыш от фп, так как процессоры окончательно застряли на одном месте, а вот памяти у всех поприбавилось
Кодя под блокчейн, который дожен выполнится на всех нодах всего мира чтобы получить подтверждение и по цене 5000$ за 1Mb данных ты понимаешь что может где-то там память и производительность не важны, но в этой новой технологии, на этом новом витке, ты вот смотришь и думаешь - int8 или int16 для переменной.... ну и циклы - это очень дорого. И тп
Дима
Дима
Блокчейн — первое место, где актуален фп
Костя
Дима
Знаю людей, которые занимаются формальной верификацией и кодогенерацией на Idris
Oleg
То есть вроде вот уже всё, достигли небывалых мощностей, но потом изобретают виртуальные машины, от уровня языка до уровня ос. Ну ладно, мощности снова достигли небывалых высот, справляемся, и тут появляются интерпретируемые языки для программ под названием браузеры, и всё это может быть внутри виртуальной машины и вообще опять назад. И вот вроде бы всё, пришел V8 и вообще компьютеры стали ещё быстрее, вон уже на телефонах 64-битный софт и кое-где в маркет не принимают 32-битный, а что говорить про ПК. И тут появляется блокчейн с гигантским оверхедом по повторению вычислений, при этом с хранением кучи данных за всю историю каждого из блокчена, а блокчейнов разных много, а ещё всё на в виртуальной машине чтобы обечпечить совместимость везде железа... и снова мир откатывается назад. Теперь машины должны стать достаточно быстрыми чтобы обрабатывать блокчейн и распределенные приложения.
Дима
Потому что байтоложство можно сгенерировать из надёжного окружения, а обратный маневр, увы невозможен
Костя
Oleg
В итоге на блокчейне нельзя ФП потому что слишком дорого, эффективнее перезаписывать память. Да, снова.
Oleg
Си-подобные подходы с процедурами, декларируются возможности что-то около ООП, по факту же они жрут столько что эффективнее процедурно.
Дима
Пасаны, я вас возможно удивлю, но никто у вас мутабельность не отбирает
Костя
Oleg
Тем не менее
Дима
Так же как и сишку как target platform
Дима
Oleg
Тот софт что может работать на предыдущих витках - там построчные интерпретаторы ок, на близком к железу так вообще пой-танцуй
Oleg
Но текущий виток - жесткая экономия
Oleg
Кстати, так как там виртуалка с байткодом - можно попробовать свой язык запилить, с ФП и монадами
Oleg
Или транслятор какой-нить
Oleg
Кстати, самый популяный из языков под смарт контракты - Solidity - сравнивают с JS
Костя
вот я как раз его и смотрел)
Oleg
Ну так вот, заходит значит JS разработчик в доку, пробует чего-то.... таааак, типизация значит? Ну ладно, есть же тайпскрипт
Oleg
uint8 и uint16? Что? Ну ладно, экономия памяти, потерпим, не так страшно
Oleg
Нельзя внутри функции? Это что за JS такой? Ну ладно, можно процедурчики делать, хотя отстой, но жить можно
Oleg
Так, инструкция assembly.... Что?! Ассемблер?!
Oleg
М - маркетинг
Костя
😄
Oleg
В итоге заходишь из интереса, JS-подобный язык, ну просто же
Oleg
Попутно понимаешь что это Си но с парой плюшек и упрощений. Но Си!
Oleg
Ну и там про стандартную библиотеку, да. У массива есть всего 1 метод - push.
Oleg
А у строк нет свойства длинны
Дима
Oleg
Велком ту хел
Дима
Я непосредственно по работе каждый день занимаюсь этими структурами
Дима
Работаю с памятью, считаю байты, оптимизирую сложную логику через фп
Дима
Фронтенд — флоу, purescript, бэкенд — Scala
Oleg
В JS есть для чисел только 1 тип, ибо супер-высокоуровневый язык. В других высокоуровневых обычно 2-4 типа.
Дима
Блядь
Дима
Ой, всё
Oleg
Чтож ты так ругаешься
Oleg
Можно юзать там массивы с байтами и делать свои числа
Oleg
В JS
Дима
UInt8Array, Uint16Array, Int32Array, ArrayBuffer, DataView, UInt8ClampedArray, Buffer — это только то, что встречалось в моём коде за последний час
Oleg
Ну вот, да
Дима
В жс
Oleg
Можно развлекаться с самодельными числами и тп
Дима
Это нативные типы
Oleg
Да
Oleg
Но это не числа
Oleg
Это массивы и буферы
Дима
Это числа
Igor
Oleg
Ну каждую последовательность байт можно представить в виде числа, или строки или чего угодно, зависимости от интерпретации
Дима
UInt8ClampedArray может хранить только int 0 - 255 например
Oleg
Ну понятно, только это не число
Дима
Дима
Безо всяких но
Oleg
Ну даже дока говорит что не число
Oleg
Массив для чисел
Oleg
Добавили в JS возможность работы с битами-байтами покруче чем просто побитовые операторы
Oleg
Как раз вот для случаев когда надо делать что-то совсем не прикладное, но надо
Oleg
Как в твоем случае
Oleg
Но в целом это специфичная вещь
Oleg
По факту то в JS число только одно - Number
Oleg
Ну хоть дробные есть, если вернуться к Solidity - их там нет
Oleg
Раз уж мы с этого начали этот спор 😄
Oleg
Вообще у JS есть конечно шанс стать языком, который будет как сейчас везде, но прочно везде. Потому что да, виртуальная машина, обвязочка и хоть где используй. Раньше правда тоже было можно, но теперь есть V8, тайпед арреи и жесткая оптимизация
Дима
Wasm ещё
Oleg
Вот, но это уже ответвление какое-то
Oleg
То есть вроде и JS-тема, но....
Oleg
По факту это рядом работает