31

вот кстати практическая задача:
Дано целое число, которое больше 0. Требуется разделить его на 3.

+ открыть спойлер

Кто написал x = y / 3; ? Садись, два.
Операция деления в десятки раз медленнее операции умножения. Вы быдлокодер.
Предположим, у нас 32х битное железо. В этом случае достаточно не делить, а умножить на 1/3. Или, что тоже самое, на 0x55555555. Этим мы ускорим данный участок кода в десятки раз.

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

32

drBatty пишет:

вот кстати практическая задача:
Дано целое число, которое больше 0. Требуется разделить его на 3.

+ открыть спойлер

Кто написал x = y / 3; ? Садись, два.
Операция деления в десятки раз медленнее операции умножения. Вы быдлокодер.
Предположим, у нас 32х битное железо. В этом случае достаточно не делить, а умножить на 1/3. Или, что тоже самое, на 0x55555555. Этим мы ускорим данный участок кода в десятки раз.

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

33

ormorph пишет:

Приближенными результатами занимаются численные методы, вроде они уже давно появились,

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

ormorph пишет:

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

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

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

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

34

ormorph пишет:

Хм а это к чему, то что операция умножения работает быстрее чем деление, это мне давно известно.

я рад за вас. А почему - известно? Ещё интересно, известно-ли вам, как математики называют алгоритм деления? Уверен, ответ вас удивит. bx

ormorph пишет:

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

если он не будет изучать математику, он навсегда останется быдлокодером. И многим нравится быть быдлокодером, они себе даже ЯП выбрали: PHP. На нём обычно и быдлокодят (между прочим - сам язык отличный).

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

35

«      Человек, не способный к математике, не является разумным.
Этого недочеловека в лучшем случае можно терпеть,
раз он научился носить ботинки, мыться и не сорить в доме.     »
— Р.Э.Хайнлайн

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

36

drBatty пишет:

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

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

XMPP: mogul82@jabber.ru Фанбой AMD

37 (25.02.2011 13:54:08 отредактировано drBatty)

mogul82 пишет:

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

не могу. госбезопасность bx

UPD ничего нет там интересного. немного быдлокода есть конечно, если вы про это. с кем не бывает? иногда очевидные вещи не замечаю ac
а делить на ноль я умею. Очень хорошо между прочим.

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

38

drBatty пишет:

2) 200коп*200коп == 40000копеек == 400руб. Очевидно для компьютера.

Ай-я-я-й :-)

200коп*200коп == 40000коп^2.
Также как и 200м * 200м == 40000м^2.
А вот зачем она, "квадратная копейка" -- другой совсем вопрос :-)

39

bormant пишет:

Ай-я-я-й :-)

ага. так-же как 2р*2р = 4квадратных рубля.

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

40

drBatty пишет:

если он не будет изучать математику, он навсегда останется быдлокодером. И многим нравится быть быдлокодером, они себе даже ЯП выбрали: PHP. На нём обычно и быдлокодят (между прочим - сам язык отличный).

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

41

i2ks пишет:

это случайно не к степенным рядам относится?

i2ks пишет:

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

число цифр в двоичном коде равно целочисленному логарифму по основанию 2. внутри компьютера число цифр всегда одинаковое, потому речь там идёт о местоположении первой единицы. Это настолько важная операция, что даже есть команда в процессоре такая, BTS. Логарифмы придумали, что-бы жизнь математикам увеличить. А программист может значительно ускорить свою программу, в тысячи, а иногда и в миллионы раз. Вместо того, что-бы делить и умножать, часто достаточно посчитать число единичек.

число единиц связанно с признаками делимости, эти признаки помогают быстро находить делители (и в уме и в CPU), нахождение делителей поможет при факторизации, а факторизация чисел - ключ чуть менее чем ко всем схемам шифрования. Подробнее см. >9000 разных книг начиная с работ Гаусса.
Конечно, доказано, что для нахождения делителей 2048битных чисел никакие признаки не помогут, но жизнь - сложная штука: вспомните, как в 2008ом году "исправили" баг таким образом, что поле генерируемых ключей значительно сократилось. Что в теории могло позволить злоумышленнику таки подобрать код доступа, и тут ему очень помог-бы этот матан. Такие дела...

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

42 (25.02.2011 15:02:57 отредактировано bobr)

Чтобы стать быдлокодером, и стать любимым субъектом для цитирования на Говнокоде матан знать НЕ_НУЖНО

Йа тьомный эльф

43

ormorph пишет:

Само слово пугает (быдло) предполагает наличие еще царственных особ.

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

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

44

drBatty пишет:

Оно может где-то и так, например в среде менеджеров или дворников, я про них не в курсе. Но только не в среде кодеров.

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

45

ormorph, ну будем надеяться...

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

46

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

По поводу слов Хейнлайна.

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

Сначала появилось желание дать в морду, но потом понял смысл.  wink

P.S. Тема решена. (?)

47

drBatty пишет:

вот кстати практическая задача:
Дано целое число, которое больше 0. Требуется разделить его на 3.

+ открыть спойлер

Кто написал x = y / 3; ? Садись, два.
Операция деления в десятки раз медленнее операции умножения. Вы быдлокодер.
Предположим, у нас 32х битное железо. В этом случае достаточно не делить, а умножить на 1/3. Или, что тоже самое, на 0x55555555. Этим мы ускорим данный участок кода в десятки раз.

Этим должен заниматься компилятор, код должен быть еще и читаемым.

48

mycetophylax пишет:

Этим должен заниматься компилятор, код должен быть еще и читаемым.

Ага.
Только нужно учесть, что все зависит еще и от контекста, где используется эта "третья часть от y".

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

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

Извините, если кому-то показалось, что я сказал прописные истины. Просто это сказано не для Вас -- на форуме много молодых людей, которые идут вслед за Вами, и могут не знать того, что для Вас очевидно. Будьте терпимее, ОК? ab

Live Free or Die

49

koala пишет:

Сначала появилось желание дать в морду, но потом понял смысл.  wink

Наш человек! Далеко пойдет.

Сильный не то, кто может в морду дать, а тот, кто еще и себя сдерживает от этого.
А в морду дать -- это что! Эт-фигня! Ты в себе попробуй убить дракона.
И, главное, koala, ни на кого не держи зла.

Live Free or Die

50

mycetophylax пишет:

Этим должен заниматься компилятор, код должен быть еще и читаемым.

это пример. компилятор не в состоянии переписать пузырьковую сортировку в qsort или в сортировку Шелла. Причина очень проста: компилятор НЕ ПОНИМАЕТ, когда надо использовать нужную сортировку. Это должен понимать программист. Но для этого он должен знать математику.

Как правильно подметил zhevak, всё от контекста зависит. Вы зря так доверяете компилятору, во первых, его может просто не быть, например, это не С, а bash. Станет-ли Bash проводить такую оптимизацию? Во вторых, С не всегда может отличить константу от не константы. Возможно, мы делим не всегда на три. Но всегда на константу. В этом случае, С не распарсит деление (если конечно в не пользуетесь const с оголтелым фанатизмом, и не делаете из const религию, как это делаю я, Но даже я не всегда надеюсь на Святый const bx )

zhevak пишет:

Поэтому код нужно будет оптимизировать в ручную

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

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

51

drBatty пишет:

ну там конечно посложнее, но суть та же: человек не понимает, что вышеописанное эквивалентно i >=0 && i<=9.

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

52

Cruiser78 пишет:
drBatty пишет:

ну там конечно посложнее, но суть та же: человек не понимает, что вышеописанное эквивалентно i >=0 && i<=9.

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

ООП. В C не так. wink

53

Хороший программист - обязательно еще и математик, обратное неверно.

UNIX: Live Free OR Die

54

zorro пишет:

Хороший программист - обязательно еще и математик, обратное неверно.

А если математики отдельно, программисты отдельно? Математик считает, программист пользуется результатами его работы?

55

mycetophylax пишет:

А если математики отдельно, программисты отдельно? Математик считает, программист пользуется результатами его работы?

Что значит считает?
В том то и суть, что при написании программ надо знать как математический аппарат, так и то, как это воспринимает машина. Математик часто не может сказать как оптимально запрограммировать решение задачи.

UNIX: Live Free OR Die

56

zorro,  а ты знаешь математику?

XMPP: mogul82@jabber.ru Фанбой AMD

57 (02.03.2011 23:33:08 отредактировано zorro)

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

UNIX: Live Free OR Die

58

zorro пишет:

Математик часто не может сказать как оптимально запрограммировать решение задачи.

:o  :O  oO
Это как так? А нафиг он тогда нужен? ag

59

mycetophylax пишет:

Это как так? А нафиг он тогда нужен?

Учить математике других.
Математик в чистом виде (не инженер, не программист, а просто математик) вообще ничего кроме этого не может и не должен уметь.
Это ведь фундаментальная наука.
Часто ли можно увидеть математика где-то кроме школы или университета?

Йа тьомный эльф

60

Cruiser78 пишет:

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

это да. согласен.
но я не про то. вот почитайте: http://linuxforum.ru/viewtopic.php?id=11408
неплохо написано, согласны?
а вот как это я написал:

lsof | sed -rn "s%^$BR\s+([0-9]+)\s+\w+\s+([0-9]+)u\s+.*/tmp/(Flash\w+)\s+\(deleted\)$%touch $TD/\3$EXT \&\& dd if=/proc/\1/fd/\2 of=$TD/\3$EXT bs=4096 \&\& file $TD/\3$EXT%e;T;p"

задача математика - объяснить суть. а кодера - ПОНЯТЬ. это главное. дальше просто, на любом ЯП и на любой платформе.

zorro пишет:

В том то и суть, что при написании программ надо знать как математический аппарат, так и то, как это воспринимает машина. Математик часто не может сказать как оптимально запрограммировать решение задачи.

mogul82 пишет:

а ты знаешь математику?

ключевое слово: оптимально.

математикам наплевать, сколько времени решается задача, час, или 100 лет.

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)