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 пути: терпеть, пилить свой язык и конпелятор самому( что долго и нудно) и ваш совет.

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

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

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

до понимания реального

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

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

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

Детский слив.

Тебе уже говорили, что диапазон значений при таких вычислениях - от e+20 до e-20, при том, что точность конечного результата -+0.1. Узнай, сопля, что такое «расходимость». Так, для начала. Потом может еще и про интервальную арифметику узнаешь, ничтожество. Только вряд ли осилишь, у тебя слишком слабенькие мозги.

Сколько там значений у 63битиков? И ты так и не сказал, чем им помешает uint64_t.

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

Читай про расходимость, чмо.

Дак что случится, если они станут юзать uint64_t?

Ты, школоло, опять все попутал. Это именно ты не знаешь абсолютно ничего ни о собственно софте, ни об архитектуре ЭВМ, ни о вычислительной сложности, ни о семантике. Совершенно не понятно, откуда у такой невежественной и глупой свиньи такое ЧСВ.

Ах да, я не перестану тебе этой какопортянкой тыкать, пока ты сольёшься на место: https://ideone.com/aQHSXs

Не осилил на уровне 5-го класса начальной школы.

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

ЯП - лишь алиасы конструкций, не более, но ты из этого развезёшь балабольства на стопицот портянок, только смысл в нём?

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

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

Да, ты можешь говорить об языке как о какой-то широм абстрактном понятии, но это не имеет смысла и является балабольством.

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

Детский слив.

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

Всегда, по определению, заведомо сливает тот, кто встревает в дискуссию на тему, в которой ни хера не разбирается.

Сколько там значений у 63битиков? И ты так и не сказал, чем им помешает uint64_t.

Ты хотя бы понимаешь, чем отличается fixed point от floating point, сопля?

Сколько будет 1e+30*1e-30 в fixed point? Отвечать быстро, мразь!

Дак что случится, если они станут юзать uint64_t?

Не хватит точности. Тупо. И в два раза более широкий fixed point точно так же сдохнет. И, прикинь, в три раза более широкий тоже.

Ах да, я не перестану тебе этой какопортянкой тыкать, пока ты сольёшься на место: https://ideone.com/aQHSXs

Ты, грязная шлюшка, даже не удосужился объяснить, о чем этот бред.

Вычислительная сложность миф

И эта свинья еще что-то смеет говорить о «понимании»?

Ну хорошо. Миф так миф. Раскрась карту мира в три цвета. Быстро.

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

Ну давай. Вот у тебя есть есть дабл - это 64битика, количество значений от нижнего до верхнего предела больше, чем значений в 64битиках. Т.е. у дабла НЕ может физически быть представления БОЛЬШЕНСТВА значений из теоретического его диапазона.

Т.е. если у тебя равномерное распределение чисел по диапазонам, то в 90% случаях ты получиш промашку и лишь приблеженное значение. Сложишь ты эти значения - получишь приблеженное значение, а кол-во этих значений ВСЕГДА БУДЕТ РАВНО 64битикам.

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

Считая в даблах ты никогда не получишь БОЛЬШЕ ЗНАЧЕНИЙ, что логически их обесценивает, особенно когда ты считаешь сетки.

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

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

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

Ты хотя бы понимаешь, чем отличается fixed point от floating point, сопля?

Возможно.

Сколько будет 1e+30*1e-30 в fixed point? Отвечать быстро, мразь!

Ты знаешь какие-то известные научи частицы, для составлении 3-х мерной карты которых не хватит uint64[][][] для кубометра? Я не знаю, удиви.

Не хватит точности. Тупо. И в два раза более широкий fixed point точно так же сдохнет. И, прикинь, в три раза более широкий тоже.

Читай выше.

Ты, грязная шлюшка, даже не удосужился объяснить, о чем этот бред.

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

Этим ты зафейлился, показав то, что не знаешь, что в signed отрицательные числа больше положительных, а так же сама портянка говорит о том, что ты не ослил примитивный синтаксис си. да и вообще си.

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

И эта свинья еще что-то смеет говорить о «понимании»?

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

Да, да - это так ласкает мой слух. Я прам в раю для студентов.

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

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

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

У тебя нет даже самого базового понимания арифметики. Повторяю вопрос: сколько будет 1e30*1e-30?

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

Какие такие «частицы», придурок?

Повторяю вопрос: сколько будет 1e30*1e-30? Такие величины в реальных вычислениях неизбежны. Не был бы ты таким невежественным тупицей, знал бы столь простые вещи.

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

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

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

Раз уж зашел разговор о частицах: скажи ка нам, сява, каков радиус электрона? С какой точностью возможно измерить его координаты в пространстве?

Время пошло. Будет весело!

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

Такие, что делает твой томограф? Расскажи мне.

Тотальнейший слив, просто тотальнейший. Где неизбежны, почему не избежны. «не знаешь простые вещи». Дак если ты знаешь и вещь простая - почему ты не скажешь почему? Почему тебе нехватит uint64_t?

Так и запишем, пациент не смог объяснить, слился и пытается выехать на «ты просто не знаешь, ты лах, это надо и т.п.».

Тов. AIv, авось вы почитаете наши месаги и скажете почему я не прав?

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

Скажи, я погляжу.

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

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

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

то максимум-то значений всё ровно 64бита

У тебя примитивное, поверхностное мышление. Все пытаешься себе представить механически, да? Уровень IQ чуть ниже 70 единиц. Абстрактное мышление тебе недоступно. Не понимаешь, откуда берутся очень большие и очень малые числа в вычислениях, да? Представь себе, далеко не у каждого числа будет размерность «см», «г» или «сек». Я понимаю, что твой шаблон сейчас лопнет и брызнет гноем, но ты таки поднапрягись.

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

Где неизбежны, почему не избежны.

Мне тебе пересказывать всю соответствующую математику? Иди, хотя бы основы почитай. Вот тебе хорошая книга: J. Jin, «Electromagnetic Analysis and Design in Magnetic Resonance Imaging (Biomedical Engineering)»

пациент не смог объяснить,

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

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

Вот тебе задача попроще, встречается в реальной жизни сплошь и рядом: есть два миллиарда чисел, диапазон значений от 0 до 4 миллиардов. Посчитать среднее (сумма всех чисел поделенная на их количество). Вперед с плясками делать это на целых числах или fixed point.

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

Ну вот вся твоя сумма влезет в uint64_t - делается банальный циклом += с одним аккамулятором.

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

Тут я даже не стал возится с обратным сдвигом.

uint32_t m[] = { 9999, 3243254235, 345546546, 3546986056, 2560546546, 1237123791};
uint64_t t[32] = {0};

int main(void) {
  uint64_t acc = 0, res = 0;
  
  uint32_t * it = m, * end = (m + (sizeof(m) / sizeof(uint32_t)));
  uint64_t tmp, * it_t = t, * end_t = (t + (sizeof(t) / sizeof(uint64_t)));
  do {
    tmp = 0, it_t = t;
    do {
      *it_t += (*it & (1 << (tmp++)));
    } while(++it_t != end_t);
  } while(++it != end);
  
  it_t = t;
  
  do {
     acc += (*it_t);
  } while(++it_t != end_t);
  
  res = acc / (sizeof(m) / sizeof(uint32_t));
  
  fprintf(stderr, "%lu, %lu\n", acc, res);
  return 0;
}

Если я где-то зафейлил - можешь меня побить.

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

Нет, причем здесь математика? Если мы говорим не о том, что там надо делать, а о представлениях чисел. Опиши мне задачи в которых флоат выгоден и чем, а так же объясни где нужны цисла с порядка 20 десятичных знаков.

Байда толкает - байда летит, байда ударяеца и бум. А тебе бы дотянутся хотябы до уровня бейсика 9-го класса, спец ты мой повсем вопросам.

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

Как общество лалок может признать гения?

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

Да какие бы они небыли - их будет uint64_t. С таким же успехом можешь принимать каждую в uint64_t за 100500100500100500 и ещё раз 100500 по 100500 и в uint64_t у тебя влезет всё, что не пожилаешь.

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

Если тебе нужны абстрактные числа 90% которых не сущеструет - флаг тебе вруки, но объясни зачем это надо?

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

Нет.

Это плохо. Да, история знает гениев (Зельдович, Рихтер) которые не получали профильного образования. Но во первых их крайне мало. Во вторых, на каждого такого признанного гения приходится условно 10 (а то и 100) непризнанных, которые не смогли пробиться именно за счет отсутствия образования. С учетом Вашей асоциальности, и огромных пробелов в знаниях - учится Вам надо обязательно. Я не знаю, гений Вы или нет, но без образования я вообще не представляю как Вы сможете пробиться.

я не умею так учиться.

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

А почему мой выхлоп нельзя сравнить с готовым результатом?

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

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

Обсуждаемая задача (одномерное у-е диффузии) имеет единственное применение - Ваше обучение. Применение наших «боевых» расчетов без профильного образования Вы понять боюсь и не сможете. Но это не значит, что его нет;-)

Нет, я не знаю что такое производная.

Бида... Что понятно отсюда и отсюда?

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

Он визжал тут, что разработка CPU это фигня, анскилльно и изимодно

Он много чего вижжал, и будет еще много вижжать, пока Вы не начнете с ним нормального разговаривать. Для начала. Я не очень понимаю - Вы явно взрослый человек, специалист. Что за удовольствие топтать школьника ногами? У него явные девиации, Вам доставляет удовольствие этим пользоваться что ли?

На хера общий L1 разным ядрам?

ЧТо бы все данные были под рукой и не надо было париться за кэшируемость;-)

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

сколько будет 1e30*1e-30?

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

И когда то, давным давно, ММХ позволял обрабатывать целые гораздо быстрей чем флоат. И были люди, которые под эту технологию активно пилили числодробилки. Но с тех пор же все оооочень сильно изменилось, и стало с точностью до наоборот?

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

Да какие бы они небыли - их будет uint64_t.

Правильно.

Если тебе нужны абстрактные числа 90% которых не сущеструет

Вы хотели сказать не используются в конкретной задаче.

- флаг тебе вруки, но объясни зачем это надо?

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

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

Компьютер - универсальное устройство (а все универсальные устройства плохи при конкретном применении - пассатижи и нож по отдельности, как пассатижи и нож, всегда удобней мультитула). Он дешев за счет своей высокой востребованности (что позволяет организовать массовое производство), и востребован за счет свое дешевизны и универсальности. Для решения актуальных задач моделирования гораздо дешевле взять кластер универсальных компьютеров (получив в нагрузку их «жуткую» архитектуру), чем городить что то свое узкозаточенное.

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

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

Это плохо. Да, история знает гениев (Зельдович, Рихтер) которые не получали профильного образования. Но во первых их крайне мало. Во вторых, на каждого такого признанного гения приходится условно 10 (а то и 100) непризнанных, которые не смогли пробиться именно за счет отсутствия образования. С учетом Вашей асоциальности, и огромных пробелов в знаниях - учится Вам надо обязательно. Я не знаю, гений Вы или нет, но без образования я вообще не представляю как Вы сможете пробиться.

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

Пилить.

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

Я просто беру и пытаюсь запилить.

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

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

Обсуждаемая задача (одномерное у-е диффузии) имеет единственное применение - Ваше обучение. Применение наших «боевых» расчетов без профильного образования Вы понять боюсь и не сможете. Но это не значит, что его нет;-)

Вот меня это всегда увидвляло в людях - по словам таких же как вы - я не могу писать, не могу считать, не могу мыслить, не могу что-то делать, ибо я не обучался.

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

Бида... Что понятно отсюда и отсюда?

Ничего. Если я буду пилить - я до неё дойду.

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

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

Вот анонимус не понимает одну простую вещь - мне не надо знать всю вашу математику, зачем вам числа и т.п. Мне надо знать битики и уже Я ЛУЧШЕ ВАС вам скажу, что при помощи этих битиков можно представить.

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

Вы хотели сказать не используются в конкретной задаче.

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

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

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

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

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

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

Попробуй взять диапазон 0-100, причем сделай так, что твой фармат 0-10выдавал точно, а вот дальше выдавал ещё 10рандомных значений, а потом попробуй из этого посчитать сумму 20-30 рандомных значения из диапазона - получишь тот же фейл, что ты получишь в дабле, только в меньших мастабах.

Конечно, если тебе кое-как важны порядки, то ты можешь юзать дабл, как можно сделать 0-9, 10, 20, etc и получить примерно те же порядки, что при реальной сумме, но «точные вычисления» вычисления не стоят тут никаким боком.

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

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

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

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

А вообще да, когда играет роль дешевле, то прогресс идёт только в сторону ещё дешевле, приносит меньше пользы и лишь немного саморазвивает.

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

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

Правильно, лень, нежилание, устои - основа всего. Это тоже самое, что доказательство нужности ГЦ, либо нужность шаблонных контейнеров в плюсах, когда они не нужны - но попробуй выкатить не шаблонный - тебя съедят и скажут, что он не универсален.

Тут правит то же мышление.

И когда то, давным давно, ММХ позволял обрабатывать целые гораздо быстрей чем флоат. И были люди, которые под эту технологию активно пилили числодробилки. Но с тех пор же все оооочень сильно изменилось, и стало с точностью до наоборот?

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

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

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

К сожалению это не так. Вы знаете гораздо меньше, чем Вам кажется. У Вас чрезмерно раздуто самомнение (это не наезд, а сухая констатация факта). И это очень плохо, потому что Вы из за этого не можете расти. Чем скорее Вы с этим справитесь, тем будет лучше.

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

Я просто беру и пытаюсь запилить.

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

Вот меня это всегда увидвляло в людях - по словам таких же как вы - я не могу писать, не могу считать, не могу мыслить, не могу что-то делать, ибо я не обучался.

Мыслить конечно же можете, не надо утрировать. Но Ваша картина мироздания очень специфична и далека от реальности. А понять что либо выходящее за рамки своей картины мира человек как правило не в состоянии. Да даже наша дискуссия по поводу маски для фотолитографии... это было очень показательно.

если я не знаю термина == я не знаю суть

Терминология тут не причем вообще. Беда не в терминологии, беда именно в незнании сути. Вы похоже интуитивист. Как интуитивист интутивисту - интуиция иногда лажает. Чем больше знаешь, тем реже она лажает. В совершенно незнакомой области она лажает в 50% случаев и доверять ей увы нельзя.

Ничего. Если я буду пилить - я до неё дойду.

Ответ «ничего» не принимается не при каких обстоятельствах. Если человек пытался прочесть и понять - он что то понял. Ответ «ничего» говорит лишь о том, что человек НЕ пытался. Если Вы не пытаетесь прикладывать какие то усилия, то почему их должен прикладывать я?

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

Мне надо знать битики и уже Я ЛУЧШЕ ВАС вам скажу, что при помощи этих битиков можно представить.

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

Я не специалист в железе, АЛУ, теории чисел и пр., но я знаю что этот вопрос изучен очень тщательно уже лет 30-40 назад. Были разные, совершенно экзотические решения - например логарифмическая шкала для представления чисел. Текущее решение является оптимальным (и универсальным). Если Вы не верите мне на слово, читайте литературу.

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

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

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

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

Дело не в этом, просто наиболее разумный, должен указать разумному на фейлы в его суждениях, а пока кроме «ты лах и школьник» мне никто, ничего не сказал. Мне не объяснили почему в 95% задач даблы не нужны, никто не ответил ни на один мой вопрос про архитектуру, ЯП и т.п.

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

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

Мыслить конечно же можете, не надо утрировать. Но Ваша картина мироздания очень специфична и далека от реальности. А понять что либо выходящее за рамки своей картины мира человек как правило не в состоянии. Да даже наша дискуссия по поводу маски для фотолитографии... это было очень показательно.

Дак а почему? Я заходу к каким-нибудь жабистам - говорю ГЦ не нужен - они мне «ты далёк от реальности - оно нужно», захожу сюда - я уже писал. Никто не говорит в чем фейлы - как я буду учиться?

Я про маску ничего не говорил, я лишь сказал, что ваша маска в 90% случаев - это натычка из шаблончиков. Какие тут омегарасчёты нужны? Для размещения елементов? Вы мне так и не объяснили.

Терминология тут не причем вообще. Беда не в терминологии, беда именно в незнании сути. Вы похоже интуитивист. Как интуитивист интутивисту - интуиция иногда лажает. Чем больше знаешь, тем реже она лажает. В совершенно незнакомой области она лажает в 50% случаев и доверять ей увы нельзя.

Естественно, поэтому мне надо знать что и пому решается в этой области. А почему и что лажает я пойму, когда какраз-таки у меня эти знания и будут, а нагромаждать свои мозги «как решать» - мне не интересно и «как юзать» мне не говорит о том «ПОЧЕМУ ЭТО НАДО ЮЗАТЬ».

Ответ «ничего» не принимается не при каких обстоятельствах. Если человек пытался прочесть и понять - он что то понял. Ответ «ничего» говорит лишь о том, что человек НЕ пытался. Если Вы не пытаетесь прикладывать какие то усилия, то почему их должен прикладывать я?

Я пойду что-то, когда я конеретно увижу, что без этого сдесь никак, это нужно - это полезно и оно мне помогает. Что эта хреновина делает - я пойму за 5минут, из которые 90% времени уйдёт на кроссылки и раскуривании вашей мат-нотации.

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

Нет, вы меня не поняли. Ваше мышление слишком предвзято.

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

Но, это ОПТИМИЗАЦИЯ ВСЕГДА ДОЛЖНА СООТВЕТСТВОВАТЬ БИТИКАМ, и это первое, что вы учитываете при выборе.

Если мне говорят вещи, которые ПРОТИВОРЕЧАТ битикам - они не верны для случая с этой архитектурой, этим софтварным миром и т.п.

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

Вот именно 30-40лет назад, а сейчас это никому не надо, что пичально, ещё тебя назовут битолюбом.

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

Братиш, ты в Красной Армии служил? Там таких, с девиациями, лечат быстро и надежно. А другие методы и не работают.

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

Вот ведь баран! Флоат теряет точность предсказуемо и контроллируемо - читай про интервальную арифметику. А вот потери точности в fixed point контроллировать на порядок сложнее.

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

А ну да, ранд+тупой инт потери 0, ранд+флоат - мясо. Какбэ да, да.

А какие в uint64_t потери точности - я таких не знаю, или ты мне тоже будешь говорить, что тебе не хватит этого диапазона? Дак словил переполнение - заюзай 128бит и так деле - потери точности не будет, а мороки меньше.

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

Писал тест для Менсы.

Их правила предусматривают повторное прохождение?

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

Т.е. вся эта лабуда на 4скрола ввики описывает вообще несвязанную с реальностью задачу, ибо все реальные вещи расчитываются отдельно( если я правильно понял).

Допустим, нам надо расчитать как тепло «растечётся» по плоскости - это банальная итерация( каждую единицу времени) значений( темпиратуры) в сторону, зависемой от формы нагретого участка. Зачем там нужны какие-то многословные уравнения я не вкурил. Мир дискретен, а в особенности наши измерения.

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

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

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

Блин ну какая ты глупая лалка. Моя кружка не проливайка - засунь туда камаз - камаз незасунуть - «не ты писал».

Ты понимаешь, что такое «потеря точности при счёте», чтобы её потерять - надо считать, представляешь? А как ты посчитаешь, если не можешь число дпреставить.

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

Мир какой-то более-менее осязаемой науки, программный мир, мир измирений и т.п. - да дискретный.

А то, что там где-то возможноесть - нам не интересно, ибо не о том контекст.

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

программный мир, мир измирений и т.п. - да дискретный.

Да, нет, не знаю. Вот «не знаю» здесь не дискретно. А контекст по треду сломан через раз.

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

Виляешь ты как шалава, в этом ты действительно неплох.

Твои предложения по скилледюзу uint_64t в вопросах арифметики с использованием не конечных двоичных дробе какие?

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

Тут не контекст сломан, тут мировосприятие сломано, причём похоже клинически.

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