ФлеймФорумПрограммирование

Общие вопросы по программированию (1301 стр)

Страницы: 11300 1301 1302 13031308 Следующая »
#19500
5:42, 10 июня 2025

ronniko
> когда Богданчик успел полюбить java
большая часть софта на адроид пишется на java. Старое железо что он ковыряет, в основном андроид железки.

#19501
6:18, 10 июня 2025

большая часть софта на адроид пишется на java.

Ах вон оно, что.

#19502
13:16, 10 июня 2025

Zefick
> под iOS на чём-то кроме свифта
RoboVM еще жив вроже?

#19503
15:27, 10 июня 2025

monobogdan
> RoboVM еще жив вроже?
Компания Microsoft свернула проект RoboVM, полученный с покупкой Xamarin (15 апреля 2016 года). На гитхабе два человека делают по одному пушу в месяц. Последняя fully supported версия iOS - 16, у неё уже кончилась официальная поддержка. Подобные проекты начали массово закрываться после выпуска GraalVM от Оракла. Но и без этого iOS с недавнего времени начала окукливаться, всё больше делая упор на свифте. Они даже Objective-C так до этого не форсили как сейчас форсят свифт.

#19504
22:51, 10 июня 2025

Хы :)

Надо было мне для одной задачки (на питоне) сделать учет и расход некоторых ресурсов. Есть несколько поставщиков разнотипных дискретных ресурсов (то есть, штуками, целочисленно), при этом некоторые поставщики могут предлагать неограниченное количество какого либо ресурса.

Надо учесть все возможные ресурсы, а потом планировать расход. Сначала взялся реализовывать "в лоб" мапой (тип_ресурса, количество), задав для неограниченного количества специальное значение (по инерции взял None). Естественно, это требовало дополнительной писанины с условиями (если текущий поставщик предлагает None, если в мапе уже записано None). И при расходе также условия (уменьшать только если не None, сравнивать с нулем только если не None).

Но потом подумал - а нет ли како-го то способа, чтоб все эти частные случаи автоматом учитывались без всяких ручных условий? Гугление дало неожиданное решение - использовать в качестве такого хитрого значения плавучий +inf. Поскольку это питон, он легко переваривает суммирование/вычитание плавучего +inf с целочисленными.

Но вот подумалось - а если бы я писал не на питоне, а, скажем, на Си++ или Расте - какие варианты можно было бы использовать там? Первое, что приходит в голову - хранить количество не интами, а double/f64 (ведь пока целое число влезает в мантиссу, плавающий петух не проявляется). Но как-то это некошерно, мало ли что-там может при потенциальном рефакторинге попасть в этот "целочисленный double". А как было бы кошерно?

#19505
22:56, 10 июня 2025

Dmitry_Milk
в расте, думаю, было бы кошерно

enum DSAjjasdb {
   Unlimited,
   Limited(u64)
}

и во всех местах через match предусматривать преобразования) можно конечно и операции переопределить)

#19506
23:14, 10 июня 2025

Dmitry_Milk
> А как было бы кошерно?
Ну видимо класс IntWithInfinity

#19507
23:23, 10 июня 2025

kkolyan, 1 frag / 2 deaths, неужели ничего готового нет? Точнее готового, но кошерного (т.к. double с его +inf вполне годился бы, если б не мысли о возможном рефакторинге).

#19508
23:55, 10 июня 2025

Dmitry_Milk
Ну а как кошерно сделать? Тебе придётся либо память жрать на состояние бесконечности, либо одно состояние считать за "бесконечное". А бы посоветовал сложение-с-сатурацией, но оно тут поможет, только если у тебя только сложения.

#19509
23:56, 10 июня 2025

Dmitry_Milk
мысли о возможном рефакторинге) плюс потенциальные корнер кейсы, которые у inf могут отличаться. просто если выбирается раст, то это уже значит что априори готовы вложиться в надежность кода)

#19510
(Правка: 0:40) 0:16, 11 июня 2025

Dmitry_Milk
> Но вот подумалось - а если бы я писал не на питоне, а, скажем, на Си++
Проще чем на петухоне, ибо имеешь реальное понимание какими ресурсами и возможностями обладаешь. Твоя задача сводится только к тому, как определить по размеру это "очень много" и придумать так, чтобы это твое "очень много" в обозримом будущем не смогло исчерпать разумные пределы.

Dmitry_Milk
> Сначала взялся реализовывать "в лоб" мапой
Вот на этом ваш петухон и все, полномочия его окончены, ибо мыслить надо на более низком уровне, за гранью парадигмы шоблонных контейнеров и алгоритмов общего назначения.

Dmitry_Milk
> Первое, что приходит в голову - хранить количество не интами, а double/f64
Как вариант, безлимитных поставщиков складывать в отдельную структуру ;)

#19511
0:57, 11 июня 2025

totoro
> Проще чем на петухоне
Я тебе сейчас такой питухон устрою, что параша с мыльницу покажется! Вот это https://stackoverflow.com/questions/42315541/difference-between-n… -and-floatinf что такое? Транслятор питона был на чём написан, я спрашиваю?! Гусь.jpg
1 frag / 2 deaths
> Ну а как кошерно сделать?
Посмотреть в исходниках NumPy, Maxima, Scalab или прочих математических программ. https://numpy.org/devdocs/reference/constants.html
Почему надо решение любой задачи на программирование превращать в строительство даже не велосипедного, а завода по строительству завода велосипедов?

#19512
1:20, 11 июня 2025

Алексей Патрашов
> Я тебе сейчас такой питухон устрою
Караул, хулиганы зрения лишают! :)

Алексей Патрашов
> Вот это https://stackoverflo… -and-floatinf что такое?
Ну если по правде, то в сишке все действительно проще реализуется, обычно для признака бесконечности/невалидности/чего-то еще используют most significant bit, дешево и сердито.

#19513
4:37, 11 июня 2025

Dmitry_Milk
> Но вот подумалось - а если бы я писал не на питоне, а, скажем, на Си++ или Расте - какие варианты можно было бы использовать там?

Пряч просто всё за интерфейсом.
isInfinity
getNumberValue // выбивает исключение если isInfinity
incBy
decBy
asString

#19514
8:53, 11 июня 2025

totoro
> Твоя задача сводится только к тому, как определить по размеру это "очень много" и придумать так, чтобы это твое "очень много" в обозримом будущем не смогло исчерпать разумные пределы.

Мой вопрос в первую очередь был про то, как делать так, чтоб иметь более простой код, без кучи ифов с условиями, в которых можно запутаться. В принципе все советы выше сводятся к тому, что "сделай свой (у)инт_с_бесконечностью", других вариантов, кроме некошерного использования плавучки для хранения интов, не придумалось.

А насчет

totoro
> и придумать так, чтобы это твое "очень много" в обозримом будущем не смогло исчерпать разумные пределы.

в "этом нашем петухоне"-то как раз с этим все красиво и не сломается, и ничего придумывать не надо потому что:

- инт безразмерный, сколько надо, столько и влезет, пока менеджер кучи не покажет болт (легко и непринужденно можно посчитать количество элементарных частиц во всей наблюдаемой Вселенной)

- переменную с количеством можно сослать не на целочисленное значение, а на плавучий +inf, который будет складываться/вычитаться с интами именно с таким поведением, какое мне и надо (+inf + целое == +inf,  целое + +inf == +inf), и сравниваться с нулем тоже так, как мне надо (+inf > 0 == True ).

Страницы: 11300 1301 1302 13031308 Следующая »
ФлеймФорумПрограммирование