Оригинальная книга на английском языке доступна бесплатно по ссылка. Для меня она стала лучшим источником для вспоминания определенных разделов. Книга хорошо структурирована, легко читается и супер красиво оформлена: сноски на полях, некоторые трюки в формулах подсвечены цветом, цветные графики и тд.
Сразу бросилось в глаза, что издание от "Питера" представлено в черно-белом варианте (в том числе графики) и не содержит сносок на полях.
В статье речь идет о бакалавриате по специальности "математика и компьютерные науки". Это как раз то, что вы называете "математическим образованием". В больших вузах - большой спектр специальностей: МФТИ не только физиков выпускает, в МГТУ не только сопромат изучают, а ВШЭ не только экономистов обучает. Пример: когда-то ходил на день открытых дверей на кафедру аналогичную ФН11 но в МИФИ, оказалось там занимаются теми же самими МКЭ (о чем упоминается в статье) применительно к тем же самым композитным материалам - никакой ядерной специфики не заметил.
У вас очень интересный опыт. Спасибо за то, что делитесь им с сообществом.
По профильному предмету (подраздел механики сплошной среды, а именно «методы конечных элементов»)...
МКЭ не является подразделом МСС. МСС - раздел физики, обобщающий теории твердого тела, газовой динамики и другие. МКЭ - численный метод решения дифференциальных уравнений, находящий применение, в том числе в задачах МСС.
Чем «звонче» имя твоего университета, тем лучше, особенно в начале карьеры. Часто имеет смысл пойти в университет получше «не на ту специальность», чем выбрать «ту специальность» в средненьком или вообще неизвестном универе.
Кажется, лучше действовать с точностью наоборот (т.е. выбирать специальность, а не ВУЗ). Руководствуясь вашим советом если хочешь в computer science, но не проходишь в предпочитаемый ВУЗ на нужную кафедру , то нужно все равно идти в этот ВУЗ, но, например, на кафедру социальных наук.
Про бауманский коммунизм - от части правда. С другой стороны, уже на младших курсах преподавали выделяют сильных студентов и предлагают заняться ресерчем или работу в лаборатории.
PS Вроде, в целом вы положительно оцениваете опыт обучения, но забавные случаи приводите сильно негативные - в итоге смешанные ощущения. А где истории про функан или диффгем?
Действительно, но в C есть специальный синтаксис с ключевым словом static для указания минимального размера массива-параметра дока.
Кстати в C++ можно объявлять ссылки на массивы:
int fifth(int (&a)[5])
{
return a[sizeof(a)/sizeof(int) - 1];
}
int main()
{
int a1[] = {1,2,3,4,5};
fifth(a1); // OK
int a2[] = {1,2,3,4,5,6};
// fifth(a2); // error: invalid initialization of reference of type 'int (&)[5]' from expression of type 'int [6]'
return 0;
}
Офтоп. Недавно на хабре вышла статья о современной альтернативе LaTex: клик. Обзор языков разметки в этой статье может помочь отказаться от WYSIWYG в пользу более гибких инструментов с широкой автоматизацией (в том числе автоматической нумерации картинок, с произвольным форматом нумерации).
Спасибо за статью! С половиной тезисов не могу полностью согласиться (думаю, у всего есть границы применимости). Но пример в начале статьи топовый!
дальше душный факт-чекинг
В статье написано, что DIY-полиморфизм через условные операторы со сравнением строк работает быстрее чем нативный динамический полиморфизм:
Так вот первый код короче и работает быстрее.
Подозреваю, что вызов виртуального метода в любом ЯП реализован через сдвиг указателя на таблицу виртуальных функций объекта с последующим разыменованием. Очевидно, это всегда быстрее. Даже если заменить строки на целочисленный тип, все равно адресная арифметика предпочтительнее (то есть стандартная имплементация виртуального вызова).
Вообще современные процессоры не разделают любви к if.
Спасибо за то, что поделились интересным автором! В контексте интерактивного материала вспомнил про курсы brilliant. Не могу рекомендовать, потому что сам не проходил там курсы. Но на первый взгляд кажется, что там очень наглядное объяснение математики, физики и CS. Однако есть подозрение (лишь подозрение!), что материал не очень глубокий. И не все курсы бесплатны.
Хорошо, что Галуа не видел этого доказательства ассоциативности (хотя, справедливости ради, он не видел примерно все доказательства в рамках теории групп в силу своей судьбы).
Печально, но это правда
И да, у меня в старой версии Хабра текст доказательства про наличие не-нейтрального самообратного элемента в группе с чётным количеством элементов почему-то содержит пропуски в местах, где должны быть числа.
Да, вроде, исправил это. И заметил не точность в формулировке доказываемого утверждения. Изменил: "в любой группе с четным количеством элементов существует нечетное количество элементов совпадающих со своим обратным и отличных от нейтрального элемента."
Да, можно так сформулировать. В статье есть абзац про изоморфизм, в котором предложено смотреть на отрицательные числа знакового типа как на специальную запись соответствующих беззнаковых чисел.
это лишь р-адические числа
Действительно, это так. Но это никак не противоречит той математической теории, которая показана в статье. Более того об р-адических числах невозможно говорить без алгебраической подготовки. Статья рассчитывалась быть доступной для читателя, не знающего основные алгебраические структуры. Эта заметка ограничивается понятием группы, не обсуждая даже абелевы группы и, тем более, не доходя до колец и полей. Таким образом, рассмотрение целого типа как р-адических чисел это очень интересная, но более глубокая тема. Спасибо за наблюдение!
Что же касается вашей программы - надо было лишь использовать числа от INT_MIN до -INT_MIN и всё бы работало как надо!
В статье сделано заключение о том, что нужно использовать другие аргументы корневого вызова. И в программе были использованы INT_MAX и -INT_MAX.
Спасибо за ссылку! Да, язык суровый. Даже самый понятный фрагмент (и то только в контексте) выглядит устрашающе:
q)1+-1+-1+1+ -0W 0N 0W 1 2 3
0N 0N 0N 1 2 3
Читать эту доку с середины - плохая затея. Но, что стало понятно из текста под спойлером: в арифметических выражениях +/- inf под капотом ведет себя просто как max_int / min_int+1, но делается проверка на нул.
Конечно, честнее говорить не "доказательство утверждения...", а "выбор/демонстрация такой алгебраической структуры, в которой 2+2=0". Позволил себе не строгую формулировку под картинкой) Это продемонстрировано в статье как один из примеров групп (таблица сложения ).
Очевидно, что в рамках некоторого целочисленного знакового типа отрицательных чисел на 1 больше чем положительных, и поэтому у -INT_MIN нет соответствующего парного числа.
Да, и в тексте есть доказательство более общего утверждения.
Существуют ли процессорные архитектуры с более сложными аппаратными реализациями целых чисел? Например, можно код условного "-128" объявить как целочисленный NaN, что может быть весьма полезно для аппаратной реализации "нуллабельности" (optional). И появляется симметрия, -INT_MIN всегда будет равно INT_MAX и наоборот.
Не знаю о существовании подобных реализаций. Но мысль интересная! В таком случае, если требовать, что результат сложения с null'ом - есть null, то, похоже, потребуется усложнение АЛУ. И будут потеряны некоторые полезные свойства, но появится полезное свойство опциональности.
Факт что автор не уважает низкоуровневое программирование есть.
В другой ветке ироничный ответ. В действительности, я уважаю низкоуровневое программирование, и эта статья тому подтверждение.
К слову, ваши замечания тоже были очень полезны, я ещё раз переоценил свои выводы и думаю, что такие статьи полезны. И критикующие комментарии к ним полезны тоже.
Автор и математическую теорию приплёл там где почти не затрагивается вопрос вычислений.
Математика занимается не только вычислениями.
критикующая С++ без действительно важных причин
Тот раздел статьи, скорее, не критика C++, а ироничное рассуждение о конкретном факте из стандарта. И эта ирония является продуктом переживания за развитие языка.
Если в программе может быть переполнение целого, то либо целое — не тот тип который должен это содержать, либо проверки должен сделать программист
Согласен. Но это очень косвенно связано с текстом статьи. К тому же, вопрос проверок переполнения в C/C++ тоже не так прост.
Я бы сказал, что у вас просто нет понимания низкоуровневого программирования.
Гномье программирование? Это про endian'ы, байты, битовые маски, выравнивания и аллокации памяти, а так же другую волшебную магию? Да, слышал я о таком. Но сам то я из хоббитов - не нужны мне эти приключения...
Оригинальная книга на английском языке доступна бесплатно по ссылка. Для меня она стала лучшим источником для вспоминания определенных разделов. Книга хорошо структурирована, легко читается и супер красиво оформлена: сноски на полях, некоторые трюки в формулах подсвечены цветом, цветные графики и тд.
Сразу бросилось в глаза, что издание от "Питера" представлено в черно-белом варианте (в том числе графики) и не содержит сносок на полях.
Согласен. Особенно с последним тезисом.
В статье речь идет о бакалавриате по специальности "математика и компьютерные науки". Это как раз то, что вы называете "математическим образованием". В больших вузах - большой спектр специальностей: МФТИ не только физиков выпускает, в МГТУ не только сопромат изучают, а ВШЭ не только экономистов обучает.
Пример: когда-то ходил на день открытых дверей на кафедру аналогичную ФН11 но в МИФИ, оказалось там занимаются теми же самими МКЭ (о чем упоминается в статье) применительно к тем же самым композитным материалам - никакой ядерной специфики не заметил.
У вас очень интересный опыт. Спасибо за то, что делитесь им с сообществом.
МКЭ не является подразделом МСС. МСС - раздел физики, обобщающий теории твердого тела, газовой динамики и другие. МКЭ - численный метод решения дифференциальных уравнений, находящий применение, в том числе в задачах МСС.
Кажется, лучше действовать с точностью наоборот (т.е. выбирать специальность, а не ВУЗ). Руководствуясь вашим советом если хочешь в computer science, но не проходишь в предпочитаемый ВУЗ на нужную кафедру , то нужно все равно идти в этот ВУЗ, но, например, на кафедру социальных наук.
Про бауманский коммунизм - от части правда. С другой стороны, уже на младших курсах преподавали выделяют сильных студентов и предлагают заняться ресерчем или работу в лаборатории.
PS Вроде, в целом вы положительно оцениваете опыт обучения, но забавные случаи приводите сильно негативные - в итоге смешанные ощущения. А где истории про функан или диффгем?
На хабре есть отличная стать о VLA: клик.
Спасибо за статью! Оказывается у C есть рантайм!
Небольшое дополнение к:
Действительно, но в C есть специальный синтаксис с ключевым словом static для указания минимального размера массива-параметра дока.
Кстати в C++ можно объявлять ссылки на массивы:
Офтоп. Недавно на хабре вышла статья о современной альтернативе LaTex: клик.
Обзор языков разметки в этой статье может помочь отказаться от WYSIWYG в пользу более гибких инструментов с широкой автоматизацией (в том числе автоматической нумерации картинок, с произвольным форматом нумерации).
Спасибо за статью! С половиной тезисов не могу полностью согласиться (думаю, у всего есть границы применимости). Но пример в начале статьи топовый!
дальше душный факт-чекинг
В статье написано, что DIY-полиморфизм через условные операторы со сравнением строк работает быстрее чем нативный динамический полиморфизм:
Подозреваю, что вызов виртуального метода в любом ЯП реализован через сдвиг указателя на таблицу виртуальных функций объекта с последующим разыменованием. Очевидно, это всегда быстрее. Даже если заменить строки на целочисленный тип, все равно адресная арифметика предпочтительнее (то есть стандартная имплементация виртуального вызова).
Вообще современные процессоры не разделают любви к if.
И да, я считаю важным обсудить это в 2к23)))
Спасибо за то, что поделились интересным автором!
В контексте интерактивного материала вспомнил про курсы brilliant. Не могу рекомендовать, потому что сам не проходил там курсы. Но на первый взгляд кажется, что там очень наглядное объяснение математики, физики и CS. Однако есть подозрение (лишь подозрение!), что материал не очень глубокий. И не все курсы бесплатны.
Печально, но это правда
Да, вроде, исправил это. И заметил не точность в формулировке доказываемого утверждения. Изменил: "в любой группе с четным количеством элементов существует нечетное количество элементов совпадающих со своим обратным и отличных от нейтрального элемента."
Спасибо Вам!
Имхо, демонстрация такого отношение к академической деятельности вас дискредитирует. И да, вы и не угадали
Да, можно так сформулировать. В статье есть абзац про изоморфизм, в котором предложено смотреть на отрицательные числа знакового типа как на специальную запись соответствующих беззнаковых чисел.
Действительно, это так. Но это никак не противоречит той математической теории, которая показана в статье. Более того об р-адических числах невозможно говорить без алгебраической подготовки. Статья рассчитывалась быть доступной для читателя, не знающего основные алгебраические структуры. Эта заметка ограничивается понятием группы, не обсуждая даже абелевы группы и, тем более, не доходя до колец и полей. Таким образом, рассмотрение целого типа как р-адических чисел это очень интересная, но более глубокая тема. Спасибо за наблюдение!
В статье сделано заключение о том, что нужно использовать другие аргументы корневого вызова. И в программе были использованы
INT_MAX
и-INT_MAX
.Паника гарантируется в дебаге. В релизе - wrapping. И есть методы с явной обработкой переполнения.
?
Спасибо за ссылку!
Да, язык суровый. Даже самый понятный фрагмент (и то только в контексте) выглядит устрашающе:
Читать эту доку с середины - плохая затея. Но, что стало понятно из текста под спойлером: в арифметических выражениях +/- inf под капотом ведет себя просто как max_int / min_int+1, но делается проверка на нул.
Конечно, честнее говорить не "доказательство утверждения...", а "выбор/демонстрация такой алгебраической структуры, в которой 2+2=0". Позволил себе не строгую формулировку под картинкой)
).
Это продемонстрировано в статье как один из примеров групп (таблица сложения
Очень интересная информация! Не могли бы Вы поделиться ссылками?
Да, и в тексте есть доказательство более общего утверждения.
Не знаю о существовании подобных реализаций. Но мысль интересная! В таком случае, если требовать, что результат сложения с null'ом - есть null, то, похоже, потребуется усложнение АЛУ. И будут потеряны некоторые полезные свойства, но появится полезное свойство опциональности.
Ответ в другой ветке обсуждения.
В другой ветке ироничный ответ. В действительности, я уважаю низкоуровневое программирование, и эта статья тому подтверждение.
Полностью согласен! И спасибо Вам за комментарии.
Математика занимается не только вычислениями.
Тот раздел статьи, скорее, не критика C++, а ироничное рассуждение о конкретном факте из стандарта. И эта ирония является продуктом переживания за развитие языка.
Согласен. Но это очень косвенно связано с текстом статьи. К тому же, вопрос проверок переполнения в C/C++ тоже не так прост.
Гномье программирование? Это про endian'ы, байты, битовые маски, выравнивания и аллокации памяти, а так же другую волшебную магию?
Да, слышал я о таком. Но сам то я из хоббитов - не нужны мне эти приключения...