LINUX.ORG.RU

Метапрограммирование - проблемы и пути их решения.

 , ,


12

6

Пичал я тут на днях токенайзел для C++-кода, но всё это меня добило я решил поделится.

Проблема - мне надо было вычислять сложные значения для таблицы в компилтайме, да можно на сишке сделать через жопу(енумы) и макросы, но мне стало лень. Да можно сгинерить, но мне тоже лень.

Шблонную магию плюсов я не люблю, ибо она ущербна чуть более, чем полностью и тут я вспомнил, что оказывается в плюсах хотели ввести компилтайм функции, аля constexpr и подумалось мне - во, плюсы затащат и как всегда я в очередной раз убедился в ущербности плюсов и так и не понял логики тех, кто это запилил.

Чтобы не быть голословным пишем что-то типа

constexpr uint64_t f(uint64_t a, uint64_t b) {
  return a + b; 
}
Всё ок, но пишем что-то сложнее, аля:

uint64_t m[] = {0, 1, 2, 3, 4};
constexpr uint64_t f(uint64_t a, uint64_t b) {
  return m[a] + m[b]; 
}

Бида( или это моё неосиляторство плюсов?), дак зачем они запилили эту фичу, если она может лишь галимую примитивщину? Шаблоны ещё ущербней. В чем приемущество? Зачем?

А теперь у меня вопрос к вам, уважаемы батьки и отцы - что мне делать? Я хочу запонять массивы написав генератор, причем и в компилтайме тоже. Я хочу юзать libc, я хочу всё, а у меня нет ничего, почему?

Т.е. я не хочу каких-то макропроцессоров и скриптовых языков - я хочу, чтобы, если я написал constexpr - оно должно до последнего пытаться собрать то, что я написал и уже только тогда, когда оно реально это не сможет - отвалиться.

У меня есть 3 пути: терпеть, пилить свой язык и конпелятор самому( что долго и нудно) и ваш совет.

Ответ на: комментарий от superhackkiller1997

у меня есть близкие люди, братюни которые заканчивали физматы и околотого, либо учатся на них. И я не заметил их высокого уровня развития, а мне говорили, что вуз развивает всех выше меня, а я не развит и т.п.

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

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от www_linux_org_ru

Я граматен выше некуда. Видишь, какие вы хорошие - вы делаете из меня чиловека.

Я жду твоих задачек, и даже пока поверю в вашу силу знающих людей и не буду спорить.

superhackkiller1997
() автор топика
Ответ на: комментарий от superhackkiller1997

Выше по треду таких людей 100%, что какбэ говорит о ложности твоей теории, либо о том, что те, кто выше по треду замкадные недолюди.

бугага

если ты нормальных людей не видел, то для тебя их наличие, конечно, «теория», бугага еще раз

насчет тех, кто там выше по треду — мне честно говоря лень глубоко разбираться в куче шлака, но могу точно сказать, что AIv-ские конуса минковского полезная вещь

Ну значит его методика лучше твоей.

ты даже обозначенный мной сарказм не можешь понять, и вдобавок противоречишь сам себе

кого интересует *одно* сложение в *куче* выкладок, предназначенных не для цикла, а для разового ручного решения?

этот профит совершенно не стоит затрат труда на изучение Гениальной Методики (вспоминаем, как ты говорил о соотношении профита и времени, затраченного на изучение)

а я решал не «своей» методикой, а общепринятой универсальной

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от superhackkiller1997

Я жду твоих задачек, и даже пока поверю в вашу силу знающих людей и не буду спорить.

задачки будут — вот высплюсь и на свежую голову наваяю

да, заодно, дай ссылку на дискусняк по поводу fixnum vs. float

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от superhackkiller1997

Видишь, какие вы хорошие - вы делаете из меня чиловека.

я не делаю из тебя человека, епрст

я, грубо говоря, сообщил, что тебе будет непросто найти *нескучное* полезное применение твоим мозгам, если в них будет столько знаний, сколько сейчас

но, обрати внимание, я не сказал «невозможно найти» — при некоторой удаче все же можно найти

и я не предлагаю неглядя идти в техвуз и изучать всякую туфту

www_linux_org_ru ★★★★★
()
Последнее исправление: www_linux_org_ru (всего исправлений: 3)
Ответ на: комментарий от www_linux_org_ru

Все люди полезны в той или иной степени, иначе смысла в их существовании нет. Так же даже самый тупой днина в истории понимает какую-то вещь лучше самого мегапонимающего, иначе смысла в существовании обоих нет.

ты даже обозначенный мной сарказм не можешь понять, и вдобавок противоречишь сам себе

А ты не можешь мой сарказм понять.

Для меня профит не есть готовая байда, допустим если мне надо что-то запилить и похрен как, то для меня слив овердохренуа времени на труЪ запил будет профитен, ибо я что-то поимею с процесса, а в профита в процессе запила куска какахи я не получу.

superhackkiller1997
() автор топика
Ответ на: комментарий от www_linux_org_ru

да, заодно, дай ссылку на дискусняк по поводу fixnum vs. float

Его особо небыло, ибо то, что было выпилили, а скора у меня нет.

Ну основные мои постулаты:

флоат не нужен и не предсказуем в 95% случаев. Он излишне сложен, туп и бесполезен для тех же 95%.

Количества значений в uint64_t хватит почти всем и для вычисления почти всего. Если они считаю для реального мира, то пока значения той же массы/растояния/времени и т.п. выше uint64_t в нашем мире не достижимы в 99.9% случаев физически.

Зачем нужен какой-то флоат, если в почти 100% случаев им можно обойти, особенно в прикладных задачах и задачах связанных с реальным миром.

Да, ты можешь теоретически оперировать бесконечными значениями, но на практике твои бесконечные значения не упёрлись.

Любой выхлоп, аля «люди юзают - значит надо» - бредятина, ибо, как я уже говорил, нужно не то, что юзают, а то, без чего обойтись нельзя и конечный результат будет не хуже.

superhackkiller1997
() автор топика
Ответ на: комментарий от www_linux_org_ru

я, грубо говоря, сообщил, что тебе будет непросто найти *нескучное* полезное применение твоим мозгам, если в них будет столько знаний, сколько сейчас

Знаний в какой области? Умение говорить на туземском языке апается только тогда, когда ты говоришь с туземцами. Я с туземцами говорил мало - я не знаю туземский язык.

superhackkiller1997
() автор топика
Ответ на: комментарий от superhackkiller1997

математика это не «туземный язык», а способ че-то посчитать (см. ниже)

Знаний в какой области?

в какой-то предметной области

скажем, если ты хочешь писать на с++ и выжимать максимум из железа, то это скорее всего gamedev, highload или числодробилки

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

в начале координат находится наблюдатель; в точке (10,10,0) находится треугольник, натянутый на векторы (1,2,3) и (3,2,1); вертикально сверху светит солнце с интенсивностью 1; материал треугольника отражает по закону cos(fi)*cos(fi), где fi это разность между углом падения и углом отражения; свет рассеивается по закону 1/r; найти интенсивность света, пришедшего в глаз наблюдателя и общее количество света от треугольника пришедшего в глаз наблюдателя (интенсивность умножить на площадь)

аналитическая геометрия, короче

в highload то же че-то надо знать, скорее всего C++ Concurrency Memory Model и конечно же работу с сокетами, fd, нитями, ...

про числодробилки речь уже была выше по треду, и общение на эту тему у тебя как-то не заладилось :-)

но могут быть и другие варианты

www_linux_org_ru ★★★★★
()
Последнее исправление: www_linux_org_ru (всего исправлений: 1)
Ответ на: комментарий от www_linux_org_ru

http://ru.wikipedia.org/wiki/Фейхоа — это такое растение, а не способ прятать мат от модератора на лоре

пусть будет «нахрена», раз у тебя аллергия на фейхую. Хрен — тоже растение. В русском языке это ещё и эфемизм: http://ru.wikipedia.org/wiki/Хрен_(значения)

За сим урок русского языка считаю оконченным.

drBatty ★★
()
Ответ на: комментарий от drBatty

раз у тебя аллергия на фейхую

у меня нет аллергии на фейхоа (и я сам этот вариант употребляю), но вот на твое искажение аллергия есть

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от www_linux_org_ru

математика это не «туземный язык», а способ че-то посчитать (см. ниже)

Это арифметика, а ваш матан - это уже абстракции. Это типа лиспа по сравнению с сишкой.

Пока лень думать и читать.

в highload то же че-то надо знать, скорее всего C++ Concurrency Memory Model и конечно же работу с сокетами, fd, нитями, ...

Зачем там упёрся С++ я не понимаю, а посиксолинуксовское апи просто и понятно.

про числодробилки речь уже была выше по треду, и общение на эту тему у тебя как-то не заладилось :-)

В числодробилках есть одна вещь, котоая мне не нравится - это описание на языке туземцев.

Да всё у меня заладилось, просто пацантры знают только туземский язык - мне пройдётся его тоже осилить, чтобы говорить с ними, ибо даже если я царь запила - я не просто не понимаю что они от меня хотят.

Отреверсить уже готовый код и понять проще, чем хренпоймичто на языке туземцев.

superhackkiller1997
() автор топика
Ответ на: комментарий от superhackkiller1997

Ну основные мои постулаты: флоат не нужен

а я за лопату уже 20 лет не брался. Получается, лопата не нужна?

и не предсказуем в 95% случаев.

думаю, копать у меня, в силу вышеизложенного, тоже получится не очень хорошо.

Он излишне сложен, туп и бесполезен для тех же 95%.

ИМХО как раз 95% потому и ненавидят bc, что он по умолчанию считает в целых. Сишечка тоже вызывает у них удивление, выдавая ⅔ == 0. А вот float для них самое то.

Количества значений в uint64_t хватит почти всем и для вычисления почти всего. Если они считаю для реального мира, то пока значения той же массы/растояния/времени и т.п. выше uint64_t в нашем мире не достижимы в 99.9% случаев физически.

откуда такая уверенность, что промежуточные значения тоже не выйдут за пределы uint64_t? По твоему результат умножения зависит от порядка аргументов? Нет? А чему тогда равно

2 * ⅓ * 6
Ну и каким образом мне вообще записывать ⅓ ???

Зачем нужен какой-то флоат, если в почти 100% случаев им можно обойти, особенно в прикладных задачах и задачах связанных с реальным миром.

потому-что кроме 1, 2, 3, и 10 бутылок пива, есть ещё ½ бутылки пива. А считать пиво в миллиграммах во первых тупо неудобно, во вторых бутылки разные бывают, а в третьих, твоих uint64_t хватит всего на 307445 вагонов пива, согласись, этого не всегда достаточно.

Да, ты можешь теоретически оперировать бесконечными значениями, но на практике твои бесконечные значения не упёрлись.

ты опять забыл местоимение «мне».

Любой выхлоп, аля «люди юзают - значит надо» - бредятина, ибо, как я уже говорил, нужно не то, что юзают, а то, без чего обойтись нельзя и конечный результат будет не хуже.

математика — всего лишь модель RL. Зафейхуя нужна модель, в которой не бывает даже ½ бутылки пива?

drBatty ★★
()
Ответ на: комментарий от www_linux_org_ru

у меня нет аллергии на фейхоа (и я сам этот вариант употребляю), но вот на твое искажение аллергия есть

ну а мне твоя аватарка не нравится. И ник тоже, ИМХО, неправильный. Да и твой круг общения, мягко говоря, не нужен. Что дальше?

drBatty ★★
()
Ответ на: комментарий от superhackkiller1997

Это арифметика, а ваш матан - это уже абстракции.

арифметика — тоже абстракция.

Отреверсить уже готовый код и понять проще, чем хренпоймичто на языке туземцев.

«язык туземцев» — у тебя. Ибо компьютер туп и думать не умеет. Его надо из ложечки кормить тщательно разжёванным кодом. Иначе не понимает. А язык математиков придуман для людей, которые с мозгами. Вот и думай, где ты, а где — математика.

drBatty ★★
()
Ответ на: комментарий от drBatty

ну а мне твоя аватарка не нравится. И ник тоже, ИМХО, неправильный. Да и твой круг общения, мягко говоря, не нужен. Что дальше?

как что? дальше тебе следует забиться в долгой и театральной истерике, гы-гы!

а вообще странно, что ты меня об этом спрашиваешь

ну и кроме того, продолжаешь постить замаскированный мат в Метапрограммирование - проблемы и пути их решения. (комментарий)

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от drBatty

а я за лопату уже 20 лет не брался. Получается, лопата не нужна?

Аналогия глупа и не уместна.

думаю, копать у меня, в силу вышеизложенного, тоже получится не очень хорошо.

Читай выше.

ИМХО как раз 95% потому и ненавидят bc, что он по умолчанию считает в целых. Сишечка тоже вызывает у них удивление, выдавая ⅔ == 0. А вот float для них самое то.

Ага, а потом умножают на 3 и получают не меньшее удивление - это всё проблемы не осиляторов - меня онин е интересуют.

откуда такая уверенность, что промежуточные значения тоже не выйдут за пределы uint64_t? По твоему результат умножения зависит от порядка аргументов? Нет? А чему тогда равно

Это ликвидируется вменяемым счётом.

Ну и каким образом мне вообще записывать ⅓ ???

Фикседпоинт тебе в руки.

потому-что кроме 1, 2, 3, и 10 бутылок пива, есть ещё ½ бутылки пива. А считать пиво в миллиграммах во первых тупо неудобно, во вторых бутылки разные бывают, а в третьих, твоих uint64_t хватит всего на 307445 вагонов пива, согласись, этого не всегда достаточно.

Ага, а есь 1/3 буталка пива, а есть три 1/3 бутылок пива, которые != бутылке пива.

Вопервых да, считают пиво в милилитрах/литрах и т.п. Ты же считаешь пиво, а не бутылки? Разделить бутылку ты не можешь, а пиво можешь. Это лишь твои фейлы.

Реально? Вагонов? 15нулей - это где-то 8нулей в граммах. Т.е. 300к вагонов с точность до миллиардной доли грамма - неслабо так. В мире 300к вагонов у тебя никогда не будет, а налито у тебя пиво с точность даже больше грамма.

ты опять забыл местоимение «мне».

Нет. Твоя точность измерения не позволяет тебе юзать даже точность больше uint64_t на метр. Твоё балабольство просто смешит меня.

математика — всего лишь модель RL. Зафейхуя нужна модель, в которой не бывает даже ½ бутылки пива?

Ребёночек, твои аналогие настолько ущербны, что рушатся сами по себе. В мире не бывает полбутылки пива, ибо буталка - это неделимая сущность. В мире бывает объём равный полбутылки пива, а объём ты представить можешь. Ибо ты мериешь пиво.

Вот люди с таким же недалёким и плоским м ышлением и доказывают нужность флоата, считай пиво 1/2 бутылками.

superhackkiller1997
() автор топика
Ответ на: комментарий от drBatty

арифметика — тоже абстракция.

Бла-бла-бла.

«язык туземцев» — у тебя. Ибо компьютер туп и думать не умеет. Его надо из ложечки кормить тщательно разжёванным кодом. Иначе не понимает. А язык математиков придуман для людей, которые с мозгами. Вот и думай, где ты, а где — математика.

А ну да, ну да. Как он может быть туп, если туп можешь быть только ты, кормя его кривой какахой.

Нет, была арифметика, после который математики абсалютно нехрена не делая стали беситься с жиру и придумывать абстракции для счёта того, что бесполезно в реальном мире. Создали себе мирок и стали в неём что-то доказывать. Не улучшать теорию в рамках реального мира, а страдать фигнёй.

superhackkiller1997
() автор топика
Ответ на: комментарий от www_linux_org_ru

как что? дальше тебе следует забиться в долгой и театральной истерике, гы-гы!

как ты? Нафейхуя?

ну и кроме того, продолжаешь постить замаскированный мат в Метапрограммирование - проблемы и пути их решения. (комментарий)

может ты всё-же осилишь русский литературный язык? Узнаешь наконец, чем отличается матерное выражение, от ненормативной лексики? И что эвфемизмы вполне допустимы даже в литературном языке. Ты же ведь не в каменном веке живёшь, и даже не в СССР. У тебя интернет есть. Вот, нагуглил, раз тебя там забанили:

Некий граф, с претензиями на остроумие и не раз уколотый остротами поэта, никак не мог оставить мысль победить его в этом поединке. Его потуги были жалки, но вокруг него составилась компания таких же горе-острословов, и Пушкину кто-то сказал: «Ох, уест тебя граф! Вон сколько собрал он подручных. Ох, уест!» И тут появился граф с компанией и с порога залепил очередную нескладушку по адресу Пушкина, на что тот отреагировал молниеносно: " Ох, уел!"

drBatty ★★
()
Ответ на: комментарий от superhackkiller1997

а я за лопату уже 20 лет не брался. Получается, лопата не нужна?

Аналогия глупа и не уместна.

обоснуй.

Ага, а потом умножают на 3 и получают не меньшее удивление - это всё проблемы не осиляторов - меня онин е интересуют.

что не так с умножением на 3?

откуда такая уверенность, что промежуточные значения тоже не выйдут за пределы uint64_t? По твоему результат умножения зависит от порядка аргументов? Нет? А чему тогда равно

Это ликвидируется вменяемым счётом.

этот твой «вменяемый счёт» работает на порядок дольше обычного.

Ну и каким образом мне вообще записывать ⅓ ???

Фикседпоинт тебе в руки.

хм… Точно! И вправду: 123 я могу записывать как 123., 123/100 могу записывать как 123.*10^-2, а 12300000 как 123.*10^5

Спасибо, Учитель! Да, float не нужны!

OH SHI~

Ага, а есь 1/3 буталка пива, а есть три 1/3 бутылок пива, которые != бутылке пива.

3 бутылки по ⅓ РАВНЫ одной бутылке, по количеству. Осиль разницу между понятием «равно» и «эквивалентно».

И да, запись "!=" означает «не равно». Понятия «не эквивалентно» в сишечке нет, ибо там невозможно сравнивать разные типы. А вот в php есть, пишется "!==".

Вопервых да, считают пиво в милилитрах/литрах и т.п. Ты же считаешь пиво, а не бутылки? Разделить бутылку ты не можешь, а пиво можешь. Это лишь твои фейлы.

сбегал-бы ты за пивом, я-бы разделил. Без всяких фэйлов.

Реально? Вагонов? 15нулей - это где-то 8нулей в граммах. Т.е. 300к вагонов с точность до миллиардной доли грамма - неслабо так. В мире 300к вагонов у тебя никогда не будет, а налито у тебя пиво с точность даже больше грамма.

facepalm

ну осиль хоть арифметику-то! На калькуляторе.

drBatty ★★
()
Ответ на: комментарий от superhackkiller1997

В мире не бывает полбутылки пива, ибо буталка - это неделимая сущность.

фцитатнег!

drBatty ★★
()
Ответ на: комментарий от superhackkiller1997

Нет, была арифметика, после который математики абсалютно нехрена не делая стали беситься с жиру и придумывать абстракции для счёта того, что бесполезно в реальном мире. Создали себе мирок и стали в неём что-то доказывать. Не улучшать теорию в рамках реального мира, а страдать фигнёй.

и где только такая забористая трава растёт???

Не подскажешь?

drBatty ★★
()
Ответ на: комментарий от drBatty

обоснуй.

Что обосновать? Это ты обоснуй как твоя лопа связана с тем, что для 95% задач флоат не нужен и как это связанно.

что не так с умножением на 3?

Ну ты посчитаешь в 1/3 бутыхках пива, а потом у тебя окажется почти n бутылок, а должно быть n+1.

хм… Точно! И вправду: 123 я могу записывать как 123., 123/100 могу записывать как 123.*10^-2, а 12300000 как 123.*10^5

Спасибо, Учитель! Да, float не нужны!

OH SHI~

(1 << сколько хочешь)/3 - твои жалкие потуги всплыть меня смешат.

3 бутылки по ⅓ РАВНЫ одной бутылке, по количеству. Осиль разницу между понятием «равно» и «эквивалентно».

В реальном мире да, во флоате нет. Тебе нужно будет запилить кастыль, а если ты его запилишь - точность флоату умрёт.

И да, запись "!=" означает «не равно». Понятия «не эквивалентно» в сишечке нет, ибо там невозможно сравнивать разные типы. А вот в php есть, пишется "!==".

Чё ты несёшь? Иди проспись. объём бутлки != (ОБ/3 + ОБ/3 + ОБ/3). Что тебе тут не ясно?

сбегал-бы ты за пивом, я-бы разделил. Без всяких фэйлов.

Я похож на ущербано, который будет за этим `я не могу произносить это слово` гонять?

facepalm

Балаболка.

ну осиль хоть арифметику-то! На калькуляторе.

Осиль - даю подсказку uint64_t - это 19нулей. Вагон это меньше 100тонн, 100тонн это 8нулей в граммах. 300к вагонов - это 5нулей.

Ты одалел нести такую несуразицу в моём треде. Ты уже раз 20слился, но ты не прекращаешь. Ты будешь гадить и нести херню до последнего - валяй.

superhackkiller1997
() автор топика
Ответ на: комментарий от superhackkiller1997

Усложнив схему (скажем вдвое больше инструкций) мы можем поднять шаг по времени скажем в десять раз - в итоге темп счета возрастет в пять раз.

AIv ★★★★★
()
Ответ на: комментарий от AIv

Ну ты стал нормальный языком говорить, а не «тынепоймёшь». Ой как я люблю этот гендальфстайл.

Ну тебе надо съэмулировать 100шагов по времени, с шагом t. Ты хочешь уменьшить кол-во шагов? Я не совсем понял.

superhackkiller1997
() автор топика
Ответ на: комментарий от www_linux_org_ru

я щас знакомлюсь с классами людей, которые могли бы работать на подхвате, так что мне это интересно

РАБОТАТЬ О_О? Это не сможет. Не знаю наск. внимательно ты изучал тред, но у пОциента есть чудесное свойство - как тока его зажимают в угол, он тут же начинает говорить что он имел ввиду совсем-совсем другое. А неудобных вопросов он просто не замечает. Кроме того регулярные обострения - ЧСВ разбухает и давит на можжечек, что блокирует все функции организма кроме балабольской (она видимо спинным мозгом управляется).

Что бы сформулировать задачу так, что бы он понял - на это уйдет столько времени, что ты 10 таких уже сам сделаешь.

Не могу пожаловаться на свой жизненный опыт, но никогда ничего подобного мне встречать не приходилось. Ну поиграйся, поизучай...

AIv ★★★★★
()
Ответ на: комментарий от superhackkiller1997

Мне надо почитать на время T. Я могу считать по простой схеме которую тут писал с шагом T/1000 или по сложной схеме с шагом T/100. Сложная схема требует вдвое больше операций, в итоге профит по темпу счета в 5 раз.

AIv ★★★★★
()
Ответ на: комментарий от AIv

что он имел ввиду совсем-совсем другое.

Ты был тотально в хламину слит, жалкий балабол, с цитатками и как положенно.

Если ты найдёшь хоть одно предложение на которое я не ответил - я тебе даже перестану назвать балаболов.

Что бы сформулировать задачу так, что бы он понял - на это уйдет столько времени, что ты 10 таких уже сам сделаешь.

Дело не во мне, не моём понимании. Ты просто не смог и не сможешь. Как ты не смог вменяемо аргументировать не один свой выхлоп, даже аргументация на уровне детсада у этой кислотной пони в 10раз опережает твою.

А теперь давай подумаем, почему ты так себя ведёшь? Что тебе мешает вести себя вменяемо в этом треде?

superhackkiller1997
() автор топика
Ответ на: комментарий от superhackkiller1997

Ты был тотально в хламину слит, жалкий балабол, с цитатками и как положенно.

Да-да, особенно про сейсмику, фотолиторафию и пр. Включите же свою абсолютную память!!!1111 Кто там выше признавался не раз что он царь балаболов, найти ссылок?;-)

Если ты найдёшь хоть одно предложение на которое я не ответил - я тебе даже перестану назвать балаболов.

И сколько же будет 1e+30*1e-30 в интах?

AIv ★★★★★
()
Ответ на: комментарий от superhackkiller1997

Посчитайте мне на своих интах 1e-30*1e+30 - отвечу. По другому Вы очевидно не понимаете...

AIv ★★★★★
()
Ответ на: комментарий от AIv

Я числа меньше 10десятичных порядков я считаю за один, а числа больше 1десятичного порядка я считаю 1единица на порядок - здравствуй флоат.

И да, у тебя никогда не получатся числа больше uint64_t, а точность выше не нужна в реальном мире.

superhackkiller1997
() автор топика
Ответ на: комментарий от superhackkiller1997

Что обосновать? Это ты обоснуй как твоя лопа связана с тем, что для 95% задач флоат не нужен и как это связанно.

У меня для тебя плохие новости: 146% задач в твоей жизни, никак не связаны с задачами в твоём учебнике. IRL ты _всегда_ будешь получать дробный ответ.

Ну ты посчитаешь в 1/3 бутыхках пива, а потом у тебя окажется почти n бутылок, а должно быть n+1.

с чего это? 2 * ⅓ * 6 == 4, как не считай.

3 бутылки по ⅓ РАВНЫ одной бутылке, по количеству. Осиль разницу между понятием «равно» и «эквивалентно».

В реальном мире да, во флоате нет. Тебе нужно будет запилить кастыль, а если ты его запилишь - точность флоату умрёт.

в реальном мире FP никто и никогда не сравнивает на точное равенство. Потому точность не страдает.

Чё ты несёшь? Иди проспись. объём бутлки != (ОБ/3 + ОБ/3 + ОБ/3). Что тебе тут не ясно?

мне не ясно, как можно городить такую чушь? Ты ещё скажи, что две поллитры не равны одной литрухе, тебя любой конченый алкоголик засмеёт. Даже если он 3х классов не осилил.

Я похож на ущербано, который будет за этим `я не могу произносить это слово` гонять?

не похож. Потому-что тебе всё равно не продадут. Дура лекс, сед лекс.

Ты уже раз 20слился, но ты не прекращаешь

о да! Смешно.

drBatty ★★
()
Ответ на: комментарий от AIv

Да-да, особенно про сейсмику, фотолиторафию и пр. Включите же свою абсолютную память!!!1111 Кто там выше признавался не раз что он царь балаболов, найти ссылок?;-)

Я в хламину со всеми цитатками доказал, что я говорил про медяшку над кристаллом и про фотолитографию даже не заикался, а на вопрос «найди мне упоминание про фотолитографию от меня до твоего упоминания» ты проигнорировал, как и все неудобные тебе вопросы.

Я тебе сказал - сейсморазвдка работает в основном на удаче и нужна лишь для того, что её кдп намного превышает кдп геолога с киркой, но в основном ОНИ ПОЛАГАЮТСЯ НА УДАЧУ. Они не знаю где искать, что искать - он ищу тупо рандомом, но ищат не квадратный метр в час, как киркой, а 100метров в час.

Тебе это ясно? И без них обследовали бы всё, просто потребовалось больше времени и сил. При земельных работах они нужны лишь для уменьшения рисков, не более. До них строили и без них построят, но шанс фейла возрастает.

Я знаю в чем я и как признавался, признание меня царём балаболов не делает тебя моим ближайшим подданым и принцем балаболов.

Если ты считаешь себя большим дядей - веди себя не как лалка, а пока ты ведёшь себя не лучше, чем я, но мне можно, ибо я глупый ляля, а тебе нет, ибо ты разумный дядя.

superhackkiller1997
() автор топика
Ответ на: комментарий от AIv

РАБОТАТЬ О_О? Это не сможет

иногда полезен генератор совершенно неожиданных вещей.

drBatty ★★
()
Ответ на: комментарий от drBatty

У меня для тебя плохие новости: 146% задач в твоей жизни, никак не связаны с задачами в твоём учебнике. IRL ты _всегда_ будешь получать дробный ответ.

Ок, я не понял в чем вообще тут смысл.

с чего это? 2 * ⅓ * 6 == 4, как не считай.

Ну да, ибо твой флоат там уже плывёт как хрензнаетчто - на такой банальности ты не зафейлишься, ибо 0.99999999999999999 == 1.

в реальном мире FP никто и никогда не сравнивает на точное равенство. Потому точность не страдает.

Равенство тут не причем. Зачем ты его сюда приплёл?

мне не ясно, как можно городить такую чушь? Ты ещё скажи, что две поллитры не равны одной литрухе, тебя любой конченый алкоголик засмеёт. Даже если он 3х классов не осилил.

Я тебе написал выше.

не похож. Потому-что тебе всё равно не продадут. Дура лекс, сед лекс.

Да, да.

о да! Смешно.

Бла-бла-бла.

superhackkiller1997
() автор топика
Ответ на: комментарий от superhackkiller1997

Ок, я не понял в чем вообще тут смысл.

ты не зафейлишься, ибо 0.99999999999999999 == 1.

Равенство тут не причем. Зачем ты его сюда приплёл?

хватит юлить! Демагог из тебя тоже никакой.

Объясняю ещё раз, пруфы услышишь от учительницы математики:

1. Математика (арифметика, статистика, матан, CS, и т.д.) это такая наука, которая строит модели реального мира. Грубо говоря: клеит такие танчики. Из бумажек-чисел (но не обязательно из них). Танчики похожи на танки IRL (тоже не обязательно). Можешь смеяться, но аналогия полная, ибо перед изготовлением танка, сначала делают игрушку-модель. Потом делают прототип. Потом делают опытный образец. И только посл того, как наиграются с этими модельками, серьёзные дяди запускают танк в серию, а затем продают. Математика не может и не должна быть абсолютно точной копией этого мира.

2. Float — тип данных в компьютере. Он вовсе не может и не должен быть во всём похожим на RL. Int тоже модель. Пойми простую вещь: они просто РАЗНЫЕ. Нельзя говорить, что танк из тёплого говна лучше/хуже танка из бумаги. Это не танки, это просто модели. Float литров пива ты выпить не сможешь, ровно как и int64_t литров этого пива.

3. Дробное рациональное число в математике, и целое число в математике — суть тоже МОДЕЛИ. И это ДРУГИЕ модели. Целое число из математики похоже на int64_t, но им НЕ является. Точно также, как и рациональное.

4. У каждой модели есть ограничения и отличия от оригинала. Бумажный танк можно раздавить ногой. Танк из говна нельзя, ибо будешь весь в говне. Настоящий танк тоже нельзя, ибо железный. Это совсем не доказывает тот факт, что танк из говна, лучше танка из бумаги. Реальные бутылки пива нельзя сравнивать на ТОЧНОЕ равенство, ибо в одной бутылке всегда чуть меньше. Float тоже нельзя сравнивать на ТОЧНОЕ равенство, но не потому, что float'ы разные, а потому, что они неточные, они сделаны из «говна», и включают в себя НЁХ. Потому и ведут себя как говно. Программисты, которые сравнивают на равенство float'ы называются «говнокодерами». Они же делят на ноль и вычисляют x-- - --x(в сишечке, в яве можно). В целых числах, при аддитивных операциях(а сравнение == аддитивная операция), НЁХ не появляется. Энтропия суммы int равна энтропии этих int. Для float это не верно, ибо энтропия растёт при их сложении/вычитании. Это просто свойство данной модели. И этим данная модель отличается от рациональных чисел.

5. ты пытаешься найти хорошую модель без говна-НЁХ. Смирись, это невозможно, НЁХ существует IRL. Да, в рациональных числах никакой НЁХ вроде-бы нет, но это только так кажется. При ЛЮБОЙ операции, появляется НЁХ. Её не появление — предельный, идеализированный случай, который мы можем наблюдать в некоторых моделях действительности (например при аддитивных операциях с int). Операция сравнения на равенство двух float НЕ ДАЁТ РЕЗУЛЬТАТА. Точно также, как не даёт результата деление на ноль или разименование NULL в сишечке.

drBatty ★★
()
Ответ на: комментарий от drBatty

Ну чувак, я тебя похвалю. Ты первый раз не слился и решился написать нормально.

1. Математика (арифметика, статистика, матан, CS, и т.д.) это такая наука, которая строит модели реального мира. Грубо говоря: клеит такие танчики. Из бумажек-чисел (но не обязательно из них). Танчики похожи на танки IRL (тоже не обязательно). Можешь смеяться, но аналогия полная, ибо перед изготовлением танка, сначала делают игрушку-модель. Потом делают прототип. Потом делают опытный образец. И только посл того, как наиграются с этими модельками, серьёзные дяди запускают танк в серию, а затем продают. Математика не может и не должна быть абсолютно точной копией этого мира.

Ну давай разберём это в контексте флоата. Когда дяди делают танки - для них надо запилить детали, а детали надо вырезать на ЧПУ, потом их сварить и т.п. У всего этого есть точность, причем там даже сотых милиметра за глаза хватит.

Ну и вот, в реальном мире не нужна пародия на бесконечно точные вычисления, ибо технологии изготовления у тебя конечные, а точность еле-еле зашла за uint32_t на метр. Поэтому что-то проектировать с точность выше того бессмысленно.

Математика не может и не должна быть абсолютно точной копией этого мира.

Дак лалка, именно это я и доказываю, но математики хотят абсалютно точную копию мира - это прочно, ты прав. Этого никогда не будет - ты прав, но они хотят, а флоаты тому подтверждение.

2. Float — тип данных в компьютере. Он вовсе не может и не должен быть во всём похожим на RL. Int тоже модель. Пойми простую вещь: они просто РАЗНЫЕ. Нельзя говорить, что танк из тёплого говна лучше/хуже танка из бумаги. Это не танки, это просто модели. Float литров пива ты выпить не сможешь, ровно как и int64_t литров этого пива.

Флоат не похож на реальный мир. Наше понимание мира дискретно, у дискретизации есть предел - этот придел и есть единица - это и есть uint.

В том и суть - uint быстрее, точнее, предсказуемей, легче, проще в запиле. Если нет разницы - зачем платить больше? Когда реальный мир прекрасно ложится на инт и всё прекрасно?

3. Дробное рациональное число в математике, и целое число в математике — суть тоже МОДЕЛИ. И это ДРУГИЕ модели. Целое число из математики похоже на int64_t, но им НЕ является. Точно также, как и рациональное.

Дроби - это просто упращённое представление. Ты можешь что угодно принять за единицу и кромсать её как угодно - это удобней в обощенном случае.

Про дискретизацию мира я уже писал.

4. У каждой модели есть ограничения и отличия от оригинала. Бумажный танк можно раздавить ногой. Танк из говна нельзя, ибо будешь весь в говне. Настоящий танк тоже нельзя, ибо железный. Это совсем не доказывает тот факт, что танк из говна, лучше танка из бумаги. Реальные бутылки пива нельзя сравнивать на ТОЧНОЕ равенство, ибо в одной бутылке всегда чуть меньше. Float тоже нельзя сравнивать на ТОЧНОЕ равенство, но не потому, что float'ы разные, а потому, что они неточные, они сделаны из «говна», и включают в себя НЁХ. Потому и ведут себя как говно. Программисты, которые сравнивают на равенство float'ы называются «говнокодерами». Они же делят на ноль и вычисляют x-- - --x(в сишечке, в яве можно). В целых числах, при аддитивных операциях(а сравнение == аддитивная операция), НЁХ не появляется. Энтропия суммы int равна энтропии этих int. Для float это не верно, ибо энтропия растёт при их сложении/вычитании. Это просто свойство данной модели. И этим данная модель отличается от рациональных чисел.

А зачем нужна модель, которая хуже инта? флоат плывёт, нельзя сравнивать, не режится, сложнее и ещё стопицот пареметров по которым он сливаем. инт же не плывёт, абсалютно точен, предсказуем, легок и прост в запиле, реактивен и т.п. Ты легко можешь играть с битиками и т.п. По твоим же критериям флоат слили, а реальный мир можно представить в интах.

Вывод: флоат лишная сущность, по всем параметрам, кроме иной записи частей(во флоате она растёт вниз, а инте вверх).

5. ты пытаешься найти хорошую модель без говна-НЁХ. Смирись, это невозможно, НЁХ существует IRL. Да, в рациональных числах никакой НЁХ вроде-бы нет, но это только так кажется. При ЛЮБОЙ операции, появляется НЁХ. Её не появление — предельный, идеализированный случай, который мы можем наблюдать в некоторых моделях действительности (например при аддитивных операциях с int). Операция сравнения на равенство двух float НЕ ДАЁТ РЕЗУЛЬТАТА. Точно также, как не даёт результата деление на ноль или разименование NULL в сишечке.

Ты не прав. Я не пытаюсь найти идеальную модель - у меня есть 2 модели, одна из которых на голову выше другой, но вторая удобна математикам, ибо эмулирует их идельные, бесконечные дроби.

Но как я уже говорил - удобство неосиляторов для меня не аргумент.

Такого же я мнения и с ЯП. Зачем мне нужна жаба, которая вроде удобней неосиляторам, когда я могу всё тоже самое написать на сиасме, а так же могу написать то, на что жаба по своей природе не способна.

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

superhackkiller1997
() автор топика
Ответ на: комментарий от drBatty

Флоат нужен для того, чтобы забить на реальный мир. Вот ты пишешь какую-то проектировалку. Если ты аля: «вот я могу добится точности 1/100000000 метра - явозьму за основу 1, как число равное 1/1000000000 метра. И тупо считаешь в них - ты получаешь профиты - всё красиво и т.п.», то тебе надо подумать над реальным миром, быть втеме техпроцессов и т.п. Это сложно для математика.

Обычнай математик скажет так: Возьму даблы и хай будет то, что будет - не хватит виновато железо, а не я, а так должно хватить, хотя мне тоже прийдётся прировнять какую-то единицу измерения к моему 1. .

Работы поровну, но благодаря любимой фразе 96% людей: «кладём на всё» - они кладут на всё.

Допустим вменяемые люди считают время в интах, но сколько я видел лалок, который его считают в даблах - это фейспалм, но они считают и доказывают, что это труЪ. Как им доказать, что они идиоты?

superhackkiller1997
() автор топика
Ответ на: комментарий от superhackkiller1997

Наше понимание мира дискретно, у дискретизации есть предел - этот придел и есть единица - это и есть uint.

Езжай в штат Индиана, США. Там ты даже сможешь посчитать площадь круга.

В 1897 г. Генеральная Ассамблея американского штата Индиана утвердила билль 246, согласно которому число «ПИ» принималось равным 4

feofan ★★★★★
()
Ответ на: комментарий от feofan

Ты думаешь нельзя посчитать прощать круга в уинте, глупая лалка? Можно, ещё как можно и поточнее, чем в твоих флоатах. Погугли как там твоё пи считают.

Ты получишь точность исходя из того какую часть радиуса ты примешь за 1.

superhackkiller1997
() автор топика
Ответ на: комментарий от superhackkiller1997

Ну давай разберём это в контексте флоата. Когда дяди делают танки - для них надо запилить детали, а детали надо вырезать на ЧПУ, потом их сварить и т.п. У всего этого есть точность, причем там даже сотых милиметра за глаза хватит.

дурачок, на дырках диаметра ~100 посадки с допуском несколько соток. А дырки разные бывают, в дырках 10 точность уже тысячные. И это именно что в танках(образца 1950го года). В вертолётах намного точнее.

Дак лалка, именно это я и доказываю, но математики хотят абсалютно точную копию мира - это прочно, ты прав.

только идиоты могут хотеть идеальную копию. Математики этого не хотят. Математическое целое и так идеально. Ты не понял, по мнению математиков — это мир говно, а их формулы — правильные.

В том и суть - uint быстрее, точнее, предсказуемей, легче, проще в запиле. Если нет разницы - зачем платить больше? Когда реальный мир прекрасно ложится на инт и всё прекрасно?

У меня для тебя плохие новости: этот мир НЕ ложится на int.

Дроби - это просто упращённое представление. Ты можешь что угодно принять за единицу и кромсать её как угодно - это удобней в обощенном случае.

Спешу тебя расстроить. Очень сильно. Ты в школе уже решал задачу про бассейны? Ну где из бассейна вода выливается? Так вот, оказывается, скорость этой струи, таки зависит от напора. А напор, в свою очередь, зависит от количества. А количество постепенно уменьшается. Попробуй решить эту, более близкую к реальности задачу. И напиши мне здесь ответ. Ну например для бассейна в виде метрового куба, из которого вытекает 1 литр/сек, если он полный. Очевидно, что это совсем не 1000 секунд, ибо из почти пустого куба вода почти не течёт. Ответ мне конечно известен, а ты можешь нагуглить. Но вот как ты его запишешь — я не понимаю.

А зачем нужна модель, которая хуже инта? флоат плывёт, нельзя сравнивать, не режится, сложнее и ещё стопицот пареметров по которым он сливаем. инт же не плывёт, абсалютно точен, предсказуем, легок и прост в запиле, реактивен и т.п. Ты легко можешь играть с битиками и т.п. По твоим же критериям флоат слили, а реальный мир можно представить в интах.

ты так и не понял: слил int. Ибо он совсем не похож на то, что мы видим IRL. В реальном мире у нас всё тоже косо, криво, плывёт, точно НЕ равно, и всё хреново. Потому, для моделирования IRL идеален как раз float. Который тоже плывёт, почти как наше, реальное говно.

Ты не прав. Я не пытаюсь найти идеальную модель - у меня есть 2 модели, одна из которых на голову выше другой, но вторая удобна математикам, ибо эмулирует их идельные, бесконечные дроби.

забей ты на математиков. Они простых, действительных чисел уже с дюжину сортов придумали. И все идеальные, и бесконечные.

drBatty ★★
()
Ответ на: комментарий от superhackkiller1997

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

НЁХ в сишке появилась из реального мира, а не от скудоумия K&R. Я конечно понимаю, что ты боишься бабайку, вот только я тебе ничем помочь не могу, ОНА СУЩЕСТВУЕТ. И с каждой секундой, ОНА становится всё больше, и больше. ЯП без НЁХ просто не нужен на практике, смирись. Тебе с ней всю жизнь жить.

drBatty ★★
()
Последнее исправление: drBatty (всего исправлений: 1)
Ответ на: комментарий от drBatty

НЁХ в сишке появилась из реального мира, а не от скудоумия K&R

Ну да, например, неопределенный порядок вычисления параметров.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Вопрос был к поциенту. Этот гениальный программист так и не продемонстриловал лору своего кода.

feofan ★★★★★
()
Ответ на: комментарий от superhackkiller1997

Флоат нужен для того, чтобы забить на реальный мир. Вот ты пишешь какую-то проектировалку. Если ты аля: «вот я могу добится точности 1/100000000 метра - явозьму за основу 1, как число равное 1/1000000000 метра. И тупо считаешь в них - ты получаешь профиты - всё красиво и т.п.», то тебе надо подумать над реальным миром, быть втеме техпроцессов и т.п. Это сложно для математика.

Это НЕ НУЖНО и для математика, и для программиста. И да, в float сама единица ПЛАВАЮЩАЯ, а вот точка как раз вполне фиксированная. Точность тоже фиксированная, что и нужно на практике. Проблема твоих интов в том, что у них плавающая точность, которая слишком большая для больших чисел, и слишком малая для малых. А в техпроцессах точность тоже плавает, уже говорил, для одного класса точности H7 для 100 точность сотки, а для 10и идёт микронная точность.

Обычнай математик скажет так: Возьму даблы и хай будет то, что будет - не хватит виновато железо, а не я, а так должно хватить, хотя мне тоже прийдётся прировнять какую-то единицу измерения к моему 1. .

ты бредишь.

Допустим вменяемые люди считают время в интах, но сколько я видел лалок, который его считают в даблах - это фейспалм, но они считают и доказывают, что это труЪ. Как им доказать, что они идиоты?

Никак. Давай вернёмся к пиву. Сколько пива в вагоне?

drBatty ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.