Alexander
Delphi - он жив вполне, тоже работает замечательно. Большая часть игр с махровейшим с++ выпущена именно под винду.
Кроме Delphi, наверное, и 1С можно вспомнить... Насчёт игр - так если постараться, то и Haskell под виндой можно использовать. Вопрос же в количестве усилий.
պլհկ
Завязывайте с офтопом
red75prime
Не. Для хаскеля нужно нормальное ide и система пакетов и сборки. Тогда можно будет просто писать код.
Для перехода на чисто-функциональный язык нужно сильно выворачивать мозги, да и изучать специфически функциональные структуры данных вроде zipper'ов и skew binary
red75prime
одного иде мало
Alexander
Для перехода на чисто-функциональный язык нужно сильно выворачивать мозги, да и изучать специфически функциональные структуры данных вроде zipper'ов и skew binary
Писал в продакшен - ни разу не использовал ни зиппер, ни skew binary. И даже близко не видел! Про второй вообще не слышал. 😂
Alexander
А вот линзы сплошь и рядом использовали... По ходу дела мало-мало их освоил.
red75prime
Думаю как реализовать stateful datagram oriented протокол, без использования tokio-proto, без оверхеда и без кучи комбинаторов футур. Ничего такого не встречалось?
Слава
На каждой из сторон будет висеть нечто вроде конечного автомата. А датаграммы поверх чего будут ходить? Сразу udp?
red75prime
mio... надо будет подумать.
red75prime
На каждой из сторон будет висеть нечто вроде конечного автомата. А датаграммы поверх чего будут ходить? Сразу udp?
Конечный автомат есть, но для его реализации используется куча комбинаторов, пробрасывающих сокет, буфер и куски состояния между футурами.
պլհկ
Ну сделай одну большую футуру и крути в ней свой стейт
Денис
есть кстати крейт, облегчающий написание футурных стейт-машин, ща нагуглю
red75prime
Так оно сейчас и есть
պլհկ
Зачем комбинаторы, если можно все руками писать 🤔
Денис
во, https://docs.rs/state_machine_future/0.1.7/state_machine_future/
Денис
red75prime
Зачем комбинаторы, если можно все руками писать 🤔
А зачем руками писать, если есть комбинаторы? С реализацией poll() не всё так тривиально. Хотя тоже вариант.
red75prime
Я написал без кучи комбинаторов, хотя да, куча - понятие растяжимое
պլհկ
Депрекейтед же
Alexander
https://blog.plan99.net/modern-garbage-collection-911ef4f8bd8e вот поновее стейт
Если кто ещё читает пост - автор не совсем прав насчёт Go GC. Благодаря активному использованию объектов по значению и escape analysis, эффективно получается, что Go использует стек в качестве нулевого поколения. К тому же, стек у горутин лежит в куче. А в GC-кучу получается промоутятся только "убежавшие" объекты. Так что в целом программы на Go (стиль кодирования + компилятор + GC) используют "гипотезу поколений".
Alexander
Насчёт фрагментации кучи автор тоже неправ - Go аллоцирует объекты в пулах, сгруппированных по размеру объектов.
Слава
Насчёт фрагментации кучи автор тоже неправ - Go аллоцирует объекты в пулах, сгруппированных по размеру объектов.
Как и все прочие делают. И более того - объекты же могут быть пермещены по желанию gc
Vladimir
Не все делают. И вроде, у Go не перемещающий GC.
А как в го выглядит разница между стеком и гц? Как переменные отлияить
Alexander
А как в го выглядит разница между стеком и гц? Как переменные отлияить
Ну, компилятор-то знает где что, соответственно, и рантайм знает. 😊
Alexander
В C/C++/Rust (я думаю) разница между стеком и кучей - какой сегмент в какой регистр записали, там и будет.
Vladimir
Та нет, я про синтаксис
Alexander
Юзер тоже знает?
Это уж кто как, я всех не опрашивал... 😂
Vladimir
В русте Box<T> это куча
Alexander
Та нет, я про синтаксис
А! В этом смысле - нет. Как в Java/C#.
Alexander
Но можно догадаться - по значению кладёшь или создаёшь new/make, берёшь указатель и передаёшь куда-то или нет.
Vladimir
А ссылку на стек получить нельзя?
Vladimir
Или как работает это?
Vladimir
Взял ссылку на обьект - объект уходит в гц?
պլհկ
Vladimir
Я к тому, что стек реалоцируемый, и типа указатель на стек будет меняться, не сильно ли много компилятор умеет? Звучит как наебалово
պլհկ
Взял ссылку на обьект - объект уходит в гц?
Только если наружу отдал из функции
Alexander
Escape analysis называется. 😃
պլհկ
^^
Alexander
Ну, мы тут щас Go разрекламируем - половина чата переметнётся! 😂
Vladimir
Только если наружу отдал из функции
А как работает тогда аналог let x =... let z =&x; ... realloc_stack()
Vladimir
Где будет x
Alexander
А как работает тогда аналог let x =... let z =&x; ... realloc_stack()
А что делает realloc_stack()? Подозреваю, в Go его просто нет.
Cat
наверное вайпает C:\\
Vladimir
А что делает realloc_stack()? Подозреваю, в Go его просто нет.
Ну условный триггер реалоции стека. Типа алокация многих переменных
Alexander
Ну условный триггер реалоции стека. Типа алокация многих переменных
Так они на стек сверху кладутся - с нижними-то ничего не происходит. В Go growable stacks в куче.
Vladimir
Реалокация это не просто увеличить размер, а возможное перемещение стека в другую область
Alexander
Спагетти-стек. 😉
Vladimir
Это как, он состоит из многих частей?
Alexander
Да.
Vladimir
Тю, тогда какие проблемы такую херню организовать в Русте в рамках либ корутин?
Alexander
As far as I know. Может, за минувшие годы чего и поменялось.
Vladimir
Отсутствие GC?
А оно чем мешает?
Alexander
Эти стеки из кучи тоже нужно собирать время от времени...
Слава
Ссылки нужно будет изменить.
Vladimir
Эти стеки из кучи тоже нужно собирать время от времени...
Зачем их собирать? Когда стек поинтер вернулся на предыдущий стек (вложенность уменьшилась) дропается следующая часть стека
Vladimir
В этом и вопрос, если стек не мувается, то какие ссылки менять нужно?
Alexander
Если запретить передачу ссылок между корутинами - то можно, но, думается, это будет слишком ограничивать как программистов, так и производительность.
Vladimir
Скопед гарантированно живёт меньше чем текущий стек, статик просит замувать объекты внутрь
Слава
В расте стек сегментированый? Насколько я знаю, нет.
Vladimir
В расте стек сегментированый? Насколько я знаю, нет.
Ну из коробки нет, я про то, что это можно накрутить поверх текущего раста неким корутин фреймворком
Слава
А если он не сегментированый, то увеличить его размер может быть не всегда возможно без перемещения
𝙽𝚒𝚌𝚔
"Уточки памяти" term by @qnikst
Слава
А в го вроде от сегментирования отказались Update: нет, не отказались.
Слава
Но им можно, у них gc