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

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

Задача реальная и нужная.

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

Да простят меня боги за русскую википедию:

Вычислительные (численные) методы — методы решения математических задач в численном виде

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

Это не задача, а кусок какахи. Чего параметры, для чего и т.п. Вот такой вот постановкйо задачи славится наши гордые математики.

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

Задача не нужная абсалютно и беполезная абсалютно.

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

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

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

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

Нет, я продолжу

Благородный дон полон решительности? Ок.

вы, все-таки, очевидно, совсем тупой.

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

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

выглядите убогим узколобым маргиналом, с комплексом неполноценности на фоне математики.

Меня Ваше мнение обо мне почему то совершенно не интересует.

у меня в качестве комментария против Вас оказывается уже стоит «упорот».

Это более характеризует вас, нежели меня :P

В данном случае, к сожалению характеризует только Вас.

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

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

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

Я ее не знаю.

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

банальные операции с числами

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

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

Пожалуйста -

координаты: 38,322° с. ш. 142,369° в. д.

магнитуды: 9.1, 7.0 через 18 минут, 7.4 через 27 минут, 7.2 через 38 минут.

Можешь посчитать скорость и высоту волны у побережья.

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

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

нет. Теплопроводность и новый кристалл (в контексте треда) никак не связаны. Это два СОВЕРШЕННО РАЗНЫХ ПРИМЕРА ПРИМЕНЕНИЯ ЧИСЛЕННОГО МОДЕЛИРОВАНИЯ. То, что Вы свалили все это в кучу, говрит лишь о Вашем знании физики и умении работать с литературой. Уже бы прочитали что есть фотолиторафия и как делают современные кристаллы, но нет - Вы продолжаете нести ахинею.

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

Отличается кардинально.

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

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

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

За пацана.

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

Ложь.

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

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

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

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

Да, ВСЕГДА любая вменяемая вещь пилится СНИЗУ ВВЕРХ. От самого нижнего, до самого высокого уровня. Никто не строит мост не расчитав сочленений и винтиков, и исходя из возможности соглинений, техники, материалов ОН УЖЕ ПРОЕКТИРУЕТ МОСТ.

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

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

Знание - это послойное накопление, а теория слишком примитивна.

Меня Ваше мнение обо мне почему то совершенно не интересует.

А зря.

В данном случае, к сожалению характеризует только Вас.

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

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

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

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

Это нащзывается проекция - Вы проектируете на меня свои сожаления о том, что так и не закончили школу.

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

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

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

AIv ★★★★★
()
Ответ на: За пацана. от superhackkiller1997

С «пацаном» мы разберемся сами, а Вы опять несете чушь.

Хотя бы потому, что Вы сами признались, что не «запилили» ни одной реальной вещи, а ограничивались илитными концепциями.

Как правило теория строится как обобщение накопленного опыта. После построения, теория дает ОЧЕНЬ сильный толчок практике - так было и так будет во ВСЕХ областях. Я мог бы привести 100500 примеров, но их есть в интернете а мне банально даль времени.

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

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

нет. Теплопроводность и новый кристалл (в контексте треда) никак не связаны.

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

Какой точности нужно моделирование для пластины над кристаллом процесоора? Никакой, да и проще сделать методом тыка.

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

Тепловизор, палец, расчёты, платина над кристаллом, тепропроводность - тебе эти слова не намекают ни на что?

Контрольный:

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

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

Это два СОВЕРШЕННО РАЗНЫХ ПРИМЕРА ПРИМЕНЕНИЯ ЧИСЛЕННОГО МОДЕЛИРОВАНИЯ. То, что Вы свалили все это в кучу, говрит лишь о Вашем знании физики и умении работать с литературой. Уже бы прочитали что есть фотолиторафия и как делают современные кристаллы, но нет - Вы продолжаете нести ахинею.

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

Отличается кардинально.

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

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

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

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

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

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

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

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

Это нащзывается проекция - Вы проектируете на меня свои сожаления о том, что так и не закончили школу.

Это бессмысленно.

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

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

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

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

Он мой единомышленник настолько же, насколько и вы, а верне процентов на 20-30%, не более.

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

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

Без признания ровни во вменяемом ученике вы далеко не уедите.

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

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

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

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

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

Если вы в меня поверили, то верте. Если нет, то зачем всё это было начинать? Нам не надо ломать мировосприятия друг друга - нам надо понять друг друга.

Если вы согласны - напишите, как мне с вами можно честно поговорить, ибо на ларе нет ЛС.

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

ваша задача показать ученику в чем и почему он не прав

Ок. Например вот в этом:

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

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

Или вот в этом:

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

Отличается МАСШТАБОМ. Если бы Вы потрудились почитать про фотолитографию, то не писали бы чуши. Но раз Вам так лень, я чуток поясню - скажем надо сделать дорожки. Для этого надо по маске осветить фоточувствительный слой, что бы он пролимеризовался везде, кроме дорожек (потом его смоют там где он не полимеризовался, напылят металл, потом смоют везде где он полимеризовался - в итоге останутся дорожки). Так вот, масштабы дорожки МЕНЬШЕ длины волны УФ-излучения. Это значит, что маска не выглядит как схема (вся черная и белые просветы там где дорожки) - она со схемой на первый взгляд вообще ничего общего не имеет. Прохождение света через маску не описывается геометрической оптикой, нужны расчеты в рамках волновой оптики, а по другому никак спроектировать маску нельзя. Никакой метод тыка тут не сработает.

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

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

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

Обучающую задачу для одномерного уравнения теплопроводности хотите? Если нет - ничем помочь не могу.

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

Но давайте на чистоту, объективно в части программирования я намного сильнее вас,

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

Почему у меня к вам отношение номальное, а у вас ко мне отношение как к глупой лалке

потому что Вы ведете себя как глупая лалка?

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

Если вы согласны - напишите, как мне с вами можно честно поговорить, ибо на ларе нет ЛС.

Обучающую задачу для одномерного уравнения диффузии хотите? Если нет, ничем помочь не могу.

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

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

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

Отличается МАСШТАБОМ. Если бы Вы потрудились почитать про фотолитографию, то не писали бы чуши. Но раз Вам так лень, я чуток поясню - скажем надо сделать дорожки. Для этого надо по маске осветить фоточувствительный слой, что бы он пролимеризовался везде, кроме дорожек (потом его смоют там где он не полимеризовался, напылят металл, потом смоют везде где он полимеризовался - в итоге останутся дорожки). Так вот, масштабы дорожки МЕНЬШЕ длины волны УФ-излучения. Это значит, что маска не выглядит как схема (вся черная и белые просветы там где дорожки) - она со схемой на первый взгляд вообще ничего общего не имеет. Прохождение света через маску не описывается геометрической оптикой, нужны расчеты в рамках волновой оптики, а по другому никак спроектировать маску нельзя. Никакой метод тыка тут не сработает.

Такой же техникой травят многослойные платы. Есть некоторыео тличая, но в целом концепция таже и отличается лишь масштабом.

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

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

Принцип абсалютной такой же.

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

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

И дамплю дифф значений. Где я фейланул?

Да, хочу задачку.

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

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

ВОт если бы Вы знали УМФ;-) - Вы бы знали, что уравнение теплопроводности описывает не только теплопроводность но и много чего еще. Да и в задачах теплопроводности далеко не всегда тепловизор поможет.

Принцип абсалютной такой же.

Дьявол кроется в деталях. В данном случае такая «деталь» - это маска. Вот как мне скажите на милость Вас чему то учить, а? Вы, например, не только нихрена не знаете физики, Вы еще и упорствуете в своем незнании, Вы еще и не хотите хоть как то хоть что то читать - зато Вы очень хотите спорить. Ну вон спорьте себе с alienclaster.

Где я фейланул?

Вот здесь:

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

А знаете почему Вы фейланули? Потому что Вы не знаете что такое производная.

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

ВОт если бы Вы знали УМФ;-) - Вы бы знали, что уравнение теплопроводности описывает не только теплопроводность но и много чего еще. Да и в задачах теплопроводности далеко не всегда тепловизор поможет.

Возможно.

Дьявол кроется в деталях. В данном случае такая «деталь» - это маска. Вот как мне скажите на милость Вас чему то учить, а? Вы, например, не только нихрена не знаете физики, Вы еще и упорствуете в своем незнании, Вы еще и не хотите хоть как то хоть что то читать - зато Вы очень хотите спорить. Ну вон спорьте себе с alienclaster.

Я не спорю.

А знаете почему Вы фейланули? Потому что Вы не знаете что такое производная.

В чём конкретно фейл? Я не получу правильной эмуляции, или что?

И да, я хочу задачку.

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

Да, хочу задачку.

Решается уравнение

         2
d u     d u
--- = D ----
d t        2
        d t
u искомая функция, u(x,t), t время, x координата, D коэффициент диффузии (или теплопроводности - здесь одно и то же). Моделируется отрезок -L/2<x<L/2. На границах отрезка u = 0. В начальный моменты времени u=0 везде кроме точки x=0 (это называется дельта-функция Дирака).

Численная схема Эйлера (самая простая): \hat u_i = u_i + h D (u_{i-1}+u_{i+1}-2 u_i)/delta_x^2, где \hat u_i - следующее значение u в точке i, h шаг по времени, delta_x шаг сетки по пространству.

Т.е. у нас есть массив (вектор) значений u (u задано на сетке). В начале массив забит нулями, кроме центрального элемента - там лежит что нить, например единица. Мы на каждом шаге по времени меняем каждый элемент массива следующим образом:

u[i] += h*D*(u[i-1]+u[+1]-2*u[i])/(delta_x*delta_x);
Но есть подвох - если делать так, то мы меняем u[ i ], а его старое значение нужно для расчета u[i+1].

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

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

Я не получу правильной эмуляции,

Вы получите рост температуры по всей области, а не распространение тепла.

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

Ты невообразимо туп. Так и не понял про длину волны.

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

Система уравнений мелкой воды - aka двумерное расширение КдФ-уравнения. Ты издеваешься? Это школоло даже уравнение теплопроводности не осилило.

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

h, D, delta_x - это константы? Что такое шаг сетки по пространству? Это поправка на попугаи в которых мы считаем?

И сколько шагов делать?

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

Ну напишу, что понял, авось ты ответишь до того, как я усну.

u[L+1]; - это твоё u. В sizeof(u)/2 я кладу твой чтонибудь. i - это типа точки на твоём отрезке.

Потом я кручу верчу это сколько-то раз. Что такое шаг по времени? Что такое шаг сетки по пространсту?

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

Ах да, забыл тебе рассказать про вуз, а в особенности про физмат.

Ладно я ассоциальный и никогда особо с лалками не общался, но я общался с братом жены, который закончил физмат, я общался с её братухами, которые училились/учатся тоже где-то в этих степях и да, я прям видел их скилл. Их понимание математики, программирования и умение считать. Я очень долго общался с разными борадачами из советских физматов( и каких-то околокомпьютерных факультетах). Да возможно, они что-то знают, понимают - но я не увидел ни в учениках вузов, ни в преподавателях, ни в программах вузов/работах студентов хоть какой-то приемлемый уровень.

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

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

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

я общался с братом жены, который закончил физмат, я общался с её братухами, которые училились/учатся тоже где-то в этих степях и да, я прям видел их скилл. Их понимание математики, программирования и умение считать. Я очень долго общался с разными борадачами из советских физматов( и каких-то околокомпьютерных факультетах). Да возможно, они что-то знают, понимают - но я не увидел ни в учениках вузов, ни в преподавателях, ни в программах вузов/работах студентов хоть какой-то приемлемый уровень.

У меня для Вас ОЧЕНЬ плохие новости. Что бы оценивать чей то уровень, надо самому иметь какой то уровень. Из нашего непродолжительного общения совершенно однозначно следует, что Вы не в состоянии оценивать чей либо уровень в технических направлениях. Вообще. Это не наезд, а сухая констатация факта.

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

h, D, delta_x - константы. delta_x это размер ячейки, delta_x = L/N, где N - число элементов в массиве (число узлов сетки).

С потолка, D=.1, h=.1, N=100, L=100, число шагов по времени 200, сбрасывать результаты каждые 10 шагов.

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

А Вы посчитайте так и так и сравните:-)

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

u[L+1] лишено смысла, поскольку L - размер области (скажем в метрах). Имеет смысл

float u[N];

Что такое шаг по времени? Что такое шаг сетки по пространсту?

Схема конечно-разностная. Т.е. мы двигаемя по времени скачками (с каким то шагом h), а u по пространству задано на сетке. Я не очень понимаю, насколько подробно это надо описывать - вот тут наверное гугль в помощь, проверим как Вы умеете рабоать с литературой;-)

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

0-нотация это не «математика», а утилитарный примитив из теории алгоритмов

Угорел.

Если мне понадобится программист со знанием математики

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

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

О-нотация бесполезна.

Да ты же идиот.

Твоя теория формальных языков никому не упёрлась

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

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

Если мне понадобится программист со знанием математики

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

«Угорел» (с)

А вот твой архитектор

The Great Creator? :D

её наверняка знает на довольно высоком уровне.

Еще один озлобленный на мир фантазер детектед.

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

Да ты же идиот.

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

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

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

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

Понимаешь в чём штука, если сишка чуть лучше остальных каках - это не делает его идеальной, а её создателей кем-то.

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

Я только пошел пилить и лар упал.

А зачем это надо? Как я и сказал - это поправка на попугаи, аля нам надо 100метров, мы считает 10-ю шагами по пространству. Это лишено смысла. Представляй 1 деление как 10метров, а не 1 - ты выпилишь бесполезность. Такая же история со временем.

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

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

А его знания мы умножаем на кооэфициет бесполезности фуза( его кдп порядка 5-10%), коэффициент бесполезности знаний( человеку свойственно забывать неиспользуемые вещи), коэффициент нужности( с кдп 5-10% в вузе преподают десятки предметов 80% которых бессмысленны, мы получа с эти 5-10% 2-3).

Потом берём затраченное время - убераем бесполезности, гулянки и прочую лабуду - получаем порядка 30-50 полных, слитых суток на год обучения и умножаем года. Получаем где-то в районе 200суток с кдп знаний в районе 1% и кдп самого студента, который производительностью не блещет.

Я трачу на запил чего-то по 10-18часов в сутки, моё кдп намного выше 99% студентов, ибо я спокойно сижу - делаю то, что мне нравится. У меня тут чай, музычка, еда, интернеты и т.п. И того получаем, что на осиливание всех знаний студента с его же кпд мне надо полгода, если не меньше - это если взять такой оптимистический уровень вуза и студента и пессимистический мой кпд + я не люблю делать одно дело - я делаю параллельно всяких дел, поэтому за эти полгода я ещё научуть много чему.

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

Вы сидите над тривиальной задачей (у-ем теплопроводности) уже третьи сутки. И Вы еще несете какую то чушь про свое архивысокое кпд???

Вы никогда не учились в вузе, но мнение имеете, как и обо всем остальном на свете, в чем вообще не разбираетесь. Знаете как выглядят Ваши бредни со стороны? «Я д'Артаньян, они все пид'расы!!! И вы все тоже пид'расы!!!». Если бы 1/10 времени, которое Вы флудите, Вы бы тратили на изучение хотя бы википедии - Вы бы несли ахинеи на два порядка меньше.

Насчет сеток - Вы опять несете бред. Именно что бы представлять один шаг как нужного попугая, этот попугай и вводится. Читайте про системы единиц. Читайте про сетки. Про численные методы. И уже продемностриуйте наконец свой архивысокий скилл - программу на 20 строчек для этой несчастной задачи! Для справки - среднейстатистический студент МФТИ пишет такое за ОДИН ЧАС (в самом худшем случае).

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

Я ничего не понял с этим N. В чем смысл x? С N=100 елементов должно быть 101 или не должен быть 101. По графичку с википедии я понял, что должен быть 101.

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

Насчет сеток - Вы опять несете бред. Именно что бы представлять один шаг как нужного попугая, этот попугай и вводится. Читайте про системы единиц. Читайте про сетки. Про численные методы. И уже продемностриуйте наконец свой архивысокий скилл - программу на 20 строчек для этой несчастной задачи! Для справки - среднейстатистический студент МФТИ пишет такое за ОДИН ЧАС (в самом худшем случае).

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

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

Лекции - лишь малая часть, важно еще общение с преподами, семинары, совместное и самостоятельно решение задач.

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

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

Ах да, ещё одно, если бы у меня был уже посчитаный выхлоп - я это понял бы и без вас, но у меня его нет - я не понимаю вообще чего от меня хотят.

Сколько там елементов, как они считались и т.п.

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

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

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

Очень грубо для функции одного аргумента:

Тебе нужно решить дифференциальное уравнение (найти функцию, подставив которую в дифур ты получишь верное тождество).

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

Ломаная, которую ты получишь - аппроксимация искомой функции.

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

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