0 / 0 / 0
Регистрация: 20.09.2015
Сообщений: 103
|
|
1 | |
Что же всё-таки в начале: мат. часть или сам С++28.09.2015, 23:46. Показов 3085. Ответов 48
Метки нет (Все метки)
Пошерстил интернет, пишут, что хорошему программисту учить, как минимум, некую булеву алгебру да дискретную математику. Якобы С++ можно вообще отложить пока что. А что скажете Вы?
Я понимаю, что можно всё это пытаться параллельно изучать, но во что больше всего нужно углубляться? Математика - это круто. И мне кажется, что в программировании точно лишним не будет. Помимо мат. части, английского и самого языка программирования я вообще почти ничего толкового "не вижу" в плане изучения для программиста, т.к. даже не знаю в каком направлении двигаться. И туда ли мы вообще идём, товарищи?
0
|
28.09.2015, 23:46 | |
Ответы с готовыми решениями:
48
Что лучше встроенное AMD 760G или всё таки поставить GeForce GT520 Всё таки что возможно написать? Цифровик, что же всё таки лучше. Байки или всё-таки нет (Intel) |
236 / 196 / 21
Регистрация: 04.06.2014
Сообщений: 1,309
|
|
03.10.2015, 06:13 | 41 |
А чё её учить? 15-и минут достаточно. К тому-же, без её знания, ни одной программы не напишешь.
Примем 1 за true, а 0 за false. Тогда булевы операции сведутся в несколько таблиц: ! - Логическое отрицание !1 = 0 !0 = 1 "И" (&) - логическое умножение. 0 * 0 = 0 0 * 1 = 0 1 * 0 = 0 1 * 1 = 1 "ИЛИ" (||) - логическое сложение 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 1 "ИСКЛЮЧАЮЩЕЕ ИЛИ" (^) - логическое исключение 0 ^ 0 = 0 0 ^ 1 = 1 1 ^ 0 = 1 1 ^ 1 = 0 Операции соотношений == - равно != - не равно > - больше < - меньше >= - больше или равно <= - меньше или равно Вот и вся "алгебра" .
1
|
0 / 0 / 0
Регистрация: 20.09.2015
Сообщений: 103
|
|
03.10.2015, 15:09 [ТС] | 43 |
Законы де Моргана вчера изучал. Ну т.е. тут в принципе ничего сверхъестественного? Я просто думал, что булева алгебра это что-то ОГО-ГО.
0
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
03.10.2015, 15:33 | 44 |
тем что не простой джамп на метку.
ну так вы попробуйте обойти дерево рекурсивно (например файловую систему). но при этом используя циклы, а не рекурсию. и тогда убедитесь, что контекст текущей итерации все равно придется сохранять. но если с рекурсией за вас парился компилятор, и цена вопроса - вызов функции, то теперь вам самому придется сохранять текущий контекст итерации, складывая его на макушку какого нибудь контейнера. например std::stack. во-первых, вы все равно будете дергать методы классов - считай никуда не ушли от вызова функции. а во-вторых, складывать придется в динамической памяти. и вот здесь - катастрофическое падение перфоманса в сравнении с обычным вызовом функции. для файловой системы - не критично. вы даже этого не заметите, потому что 99,(9) будут жрать вызовы функций апи системы, и медленное чтение с диска. но для обхода каких то деревьев, которые хранятся в памяти, (например, мы работаем с базой данных, расположенной в оперативной памяти), это может быть весьма существенным.
0
|
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
|
|
09.10.2015, 02:24 | 45 |
Тем кто не собирается оптимизировать свой код, математика не нужна. В нормальном колективе он долго не продержится.
Банальный пример, сумма натуральных чисел 1..n часто встречается как тупой подсчет с аккумулированием результата, когда это всего навсего арифметическая прогрессия и быстро считается по формуле даже в уме. Таких примеров масса. Простые базовые вещи. Что касается булевой алгебры, то это основа дискретных вычислений. Например, мы проектируем некое устройство, имеющее N состояний. Все состояния кодируются, потом снимаеются функции выходных сигналов и все это записывается как логические выражения, а дальше мы приступаем к минимизации различными методами. Чтобы уменьшить количество логических элементов (тарнзисторов), тем самым повышая производительность устройства и понижая его стоимость и размер. Какая польза от всего этого в программировании? Прямая. Машинное слово -- это всего лишь вектор логических вентилей. То что мы в теории проделывали с логическими значениями в неизменяемом виде переносится на байты. Далее. Решили мы написать свой язык и компилятор к нему, или компилятор уже существующего языка. И? Деревья! Вспоминаем теорию графов и вновь для нас ничего нового, всё это мы уже знаем из математической теории. Более того мы знаем все законы и правила использования и существования таких структур. И так сплошь и рядом. В любой области нашей профессии. Матан, дуффуры, оптимизация, статистика, вероятность может и не понядобится, а может и понадобятся. Ну а за информационную безопасность я вообще молчу. Там кроме математики практически ничего другого нет. Важно вот что. Мат аппарат универсален. Это значит -- применим вне зависимости от особенностей конкретного программного продукта, т.е. на все виды ПО, оборудования.
0
|
MLPMan
|
09.10.2015, 15:56
#47
|
Не по теме: ValeryS, нормас :good:
0
|
236 / 196 / 21
Регистрация: 04.06.2014
Сообщений: 1,309
|
|
19.10.2015, 12:22 | 48 |
А вот с арифметическим операциями сложнее.
0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 10 Иными словами: Друг моего друга - мой друг Друг моего врага - мой враг Враг моего друга - мой враг? Враг моего врага - два моих врага?
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,520
|
|
19.10.2015, 18:14 | 49 |
не совсем представь что у нас один разряд, т.е есть переполнение
0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 0 не зря же "исключающие ИЛИ" зовут "сложение по модулю два"
0
|
19.10.2015, 18:14 | |
19.10.2015, 18:14 | |
Помогаю со студенческими работами здесь
49
Дело в мониторе? Или всё таки в видеокарте? Как лучше сделать? LINQ или всё-таки foreach Какой выбрать Firewall или родной всё-таки лучше? К знатокам С++: это самодостаточный язык, или всё таки он зависит от Си Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |