Re[13]: Математика + программирование
От: Igor Trofimov  
Дата: 17.08.02 08:51
Оценка:
A>Кстати можно тебе вопрос на засыпку: вот ты судя по твоему коммендарию
A>уже знал эти алгоритмы, во сколькох своих программах ты их использовал?
A>

Да тоже не приходилось наверное никогда... (Бойера-Мура имеем в виду?)
Но это никак не может служить подтверждением твоим первым словам, против которых я взъярился.

А факт в том, что
а) кто-то использовал
б) в стандартной либе нет
в) при этом он хороший программист
Re[14]: Математика + программирование
От: Anatolix Россия https://www.linkedin.com/in/anatolix/
Дата: 17.08.02 09:27
Оценка:
Здравствуйте Igor Trofimov, Вы писали:

A>>Кстати можно тебе вопрос на засыпку: вот ты судя по твоему коммендарию

A>>уже знал эти алгоритмы, во сколькох своих программах ты их использовал?
A>>

IT>Да тоже не приходилось наверное никогда... (Бойера-Мура имеем в виду?)

Их там совсем много оказывается.

IT>Но это никак не может служить подтверждением твоим первым словам, против которых я взъярился.


Ты против каких именно взъярился? Ты не согласен с тем что любой
человек пишуший QSort на C++ например плохо знает C++ потому
как не может поюзать std::sort ?
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Re[15]: Математика + программирование
От: Igor Trofimov  
Дата: 17.08.02 12:52
Оценка:
A>Ты против каких именно взъярился? Ты не согласен с тем что любой
A>человек пишуший QSort на C++ например плохо знает C++ потому
A>как не может поюзать std::sort ?

Предположим соглашусь. но никак не могу согласиться на исходное обобщение этого частного случая.

Извини, но его меньшая часть программистов полностью прочитала.
Если ты вынужден реализовывать алгоритмы из него, то это
значит что ты плохой программист, потому как не знаешь
что они есть уже реализованные в стандартной библиотеке
(не все конечно, а только полезные)
Re[16]: Математика + программирование
От: Anatolix Россия https://www.linkedin.com/in/anatolix/
Дата: 18.08.02 08:18
Оценка:
Здравствуйте Igor Trofimov, Вы писали:

A>>Ты против каких именно взъярился? Ты не согласен с тем что любой

A>>человек пишуший QSort на C++ например плохо знает C++ потому
A>>как не может поюзать std::sort ?

IT>Предположим соглашусь. но никак не могу согласиться на исходное обобщение этого частного случая.


IT>Извини, но его меньшая часть программистов полностью прочитала.


Будем голосовать сколько людей полностью прочитала кнута?

IT>Если ты вынужден реализовывать алгоритмы из него, то это

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

В STL есть 2 метода сортировки которые используются
(qsort и балансированое бинарное дерево), все виды контейнеров
которые нужны(set/map/list/vector/deque итп) это уже 50% вещей
которые нужны в работе.

Давай я опять задам вопрос на засыпку:
1) какие именно алгоритмы лично тебе приходилось реализовывать из Кнута?(из тех
что нет в STL)
2) какие из них тебе понадобились 2 или 3 раза?
3) ты используешь какой-нибудь из них на столько же часто как например сортировку?

Например мои ответы на эти вопросы следующие:
1) Из того что помню: один раз пришлось написать алгоритм преобразования выражения в обратную польскую запись(дейкстра)
2) Никакие.
3) Нет, все что мне часто надо можно взять из STL.
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Re[17]: Математика + программирование
От: Igor Trofimov  
Дата: 18.08.02 09:09
Оценка:
A>Будем голосовать сколько людей полностью прочитала кнута?
Зачем? Верю, что мало.

A>Давай я опять задам вопрос на засыпку:

A>1) какие именно алгоритмы лично тебе приходилось реализовывать из Кнута?(из тех
A>что нет в STL)
A>2) какие из них тебе понадобились 2 или 3 раза?
A>3) ты используешь какой-нибудь из них на столько же часто как например сортировку?

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

Да вот хотя-бы. Берем исходники linux, отыскиваем там алгоритм из Кнута.
По твоему тезису, человек, который там этот алгоритм реализовал — плохой программист Ну не бред ли?
Re[18]: Математика + программирование
От: Anatolix Россия https://www.linkedin.com/in/anatolix/
Дата: 18.08.02 10:05
Оценка:
Здравствуйте Igor Trofimov, Вы писали:

IT>Да вот хотя-бы. Берем исходники linux, отыскиваем там алгоритм из Кнута.

IT>По твоему тезису, человек, который там этот алгоритм реализовал — плохой программист Ну не бред ли?

Во первых: Linux написан 20 лет назад, написан он на C и ассемблере,
STL тогда еще не придумали. Но я абсолютно уверен что и там программисты
использовали функцию qsort из C rtl, а не писали ее сами.

Во вторых ты перевираешь мой тезис: перечитай его
Если ты вынужден реализовывать алгоритмы из него, то это
значит что ты плохой программист


Обрати внимение на множественно число слова реализовывать, и на
слово вынужден. На счет того чтобы один раз реализовать упоминания не было.
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Re[19]: Математика + программирование
От: Igor Trofimov  
Дата: 18.08.02 10:18
Оценка:
A>Во первых: Linux написан 20 лет назад, написан он на C и ассемблере,
A>STL тогда еще не придумали.

А ты про C++ и STL ничего и не говорил
Ну ладно, допустим.

A>Обрати внимение на множественно число слова реализовывать, и на

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

Еще тебе пример. Разработка SQL-сервера какого-нибудь. Или просто работа с большими объемами данных.
Одной сортировкой в памяти не обойдешься, типа quick sort. Нужна, например, сортировка на диске, сортировка слиянием — хоть ты на C++ их пиши, хоть на чем.

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

P.S. Надо заканчивать этот бесполезный спор. И так ясно, что истина тут не уродится — каждый останется при своем мнении.
Re[20]: Математика + программирование
От: Anatolix Россия https://www.linkedin.com/in/anatolix/
Дата: 18.08.02 11:49
Оценка:
Здравствуйте Igor Trofimov, Вы писали:

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


Здесь стоит заметить 2 вещи
1) В мире примерно 2 десятка SQL серверов
2) Речь идет о стандартных алгоритмах. Мне кажется что в кнуте нет алгоритма сортировки с
подсчетом средней зарплаты по предприятию(я же не говорю что вообще не надо алгоритмя применят,
я просто говорю что стандартные алгоритмя которые должен знать программист уже написаны,
а с нестандартными Кнут не поможет, придется мозг использовать)

IT>P.S. Надо заканчивать этот бесполезный спор. И так ясно, что истина тут не уродится — каждый останется при своем мнении.


Ok.
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Re[21]: Математика + программирование
От: unintruder  
Дата: 19.08.02 06:56
Оценка:
Здравствуйте Anatolix, Вы писали:

A>Здесь стоит заметить 2 вещи

A>1) В мире примерно 2 десятка SQL серверов
A>2) Речь идет о стандартных алгоритмах. Мне кажется что в кнуте нет алгоритма сортировки с
A>подсчетом средней зарплаты по предприятию(я же не говорю что вообще не надо алгоритмя применят,
A>я просто говорю что стандартные алгоритмя которые должен знать программист уже написаны,
A>а с нестандартными Кнут не поможет, придется мозг использовать)

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

Мое ИМХО кто не читал Кнута тот должен обязательно сделать, иначе будет очень часто чувствовать себя ущербным... особенно на вечеринках с коктейлями (с) кажется из Элджера (кстати его тоже советуешь не читать ? ведь это все давно реализовано )
Re[7]: Математика + программирование
От: VVP Россия 67524421
Дата: 19.08.02 09:24
Оценка:
Здравствуйте Aquary, Вы писали:

A>OK, сдаюсь — расскажи, как решил :shuffle:

Хгм, расскажу конечно.
Но мораль сей басни такова, что в любой области разработки ПО без математики на обойтись. Явно или не явно, сознательно или нет, ты будешь ее применять, если хочешь сделать аккуратно и красиво, даже если просто хочешь сделать.
Итак к решению задачи, опишу решение в простых терминах:
VVP>Требуется построить на стороне сервера функциональный уникальный индекс RTTP_UNIQ_IDX над таблицей RATE_TYPE, разрешающий в типы кросс-курсов вводить только уникальные пары значений, т.е. если существует запись с парой (1;2), то ввести запись с парой (2;1) уже нельзя.
Что такое любой индекс в БД — это функция от нескольких переменных (1,...,N), область определения по каждой из переменных — это допустимые значения в столбце таблицы, соответствующему переменной.
В нашей ситуации требуется построить функцию от 2-х натуральных переменных (CURRENCY_ID_1, CURRENCY_ID_2). Причем функция должна быть симметрична относительно плоскости, ортогональной плоскости области определения (заменим CURRENCY_ID_1 на X, а CURRENCY_ID_2 на Y — плоскость (X,Y), результат функции — значения по оси Z), и проходящей через ось Z (ось результатов) под равными к плоскостям (X,Z) и (Y,Z) углами — пространственная биссектриса прямого угла (X,Y). При этом функция (для простоты анализа — исключим различные сложно-периодические функции, дающие на целых значениях уникальные значения) должна быть монотонной на области определения, допустим возрастающей. Поиск такой функции в коре головного мозга приводит к следующему (качественному!!! поскольку вместо коэффициента 1.0 можно подставить другое значения, для избежания машинного округления, например 1000000.0) результату:
F(X,Y)=1.0/X+1.0/Y,
где X=CURRENCY_ID_1, y=CURRENCY_ID_2

Ну и совсем окончательный вывод — математический склад ума и основы математического (технического) образования необходимы для программирования. А эти два понятия и являют собой (осо)знание математики конкретным индивидумом.
Никогда не бойся браться делать то, что делать не умеешь. Помни, ковчег был построен любителем. Профессионалы построили Титаник...
Re: Математика + программирование
От: Ростислав Глухов Россия http://www.geocities.com/rg2204/
Дата: 19.08.02 09:29
Оценка:
Здравствуйте Aquary, Вы писали:

A>Часто слышу мнение, что для того, чтобы стать хорошим программистом, нужно хорошо знать математику. Соответственно, если знаешь на 3 — не быть тебе програмером никогда.


Понятие хороший программист растяжимое.
каждый трактует по-своему.

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

Корочки программиста дают после 5и месяцев обучения. Курсы бывают разные и по направленности и по длительности. И математику там не преподают. Если человек после этих курсов работает программистом и получает нормальные деньги он "хороший программист"?

А есть такой зверь как инженер-программист. Таких выводят 5 лет. Булева алгебра это математика? А реляционная?
А если человек не работает с БД, ему и рел. алгебра не нужна? Вот этим набором фундаментальных знаний и отличается инженер-программист от просто программиста.

Хорошим программистом можно стать и после прочтения книжки "программирование по-хорошему за 21 день", а можно и не стать после 5и лет всяких теорий графов и дискретных математик, этож дело такое...
- А Вы что курите?
— Минздрав предупреждает
Re[8]: Математика + программирование
От: achp  
Дата: 19.08.02 09:33
Оценка: 15 (1)
Здравствуйте VVP, Вы писали:

VVP>
VVP>F(X,Y)=1.0/X+1.0/Y,
VVP>где X=CURRENCY_ID_1, y=CURRENCY_ID_2
VVP>


Неужели?

Вставив пару (3; 24), ты, конечно, не сможешь уже вставить (24; 3). Но весь фокус в том, что и (4; 8) ты тоже уже не вставишь...

Не проще ли не выпендриваться, а просто наложить ограничение: CURRENCY_ID_1 < CURRENCY_ID_2 (или как их там) — всегда, отслеживая это дело на уровне хранимых процедур и т. п.?
Re[9]: Математика + программирование
От: Igor Trofimov  
Дата: 19.08.02 10:18
Оценка:
A>Вставив пару (3; 24), ты, конечно, не сможешь уже вставить (24; 3). Но весь фокус в том, что и (4; 8) ты тоже уже не вставишь...

Действительно

A>Не проще ли не выпендриваться, а просто наложить ограничение: CURRENCY_ID_1 < CURRENCY_ID_2 (или как их там) — всегда, отслеживая это дело на уровне хранимых процедур и т. п.?


Еще можно создать ДВА уникальных индекса — один (a,b) а другой — (b,a). Это и при поиске поможет — не знаешь же заранее, как искать будешь. А так — симметричность производительности и уникальность обеспечится.
Re[9]: Математика + программирование
От: VVP Россия 67524421
Дата: 19.08.02 12:15
Оценка:
Здравствуйте achp, Вы писали:

A>Вставив пару (3; 24), ты, конечно, не сможешь уже вставить (24; 3). Но весь фокус в том, что и (4; 8) ты тоже уже не вставишь...

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

A>Не проще ли не выпендриваться, а просто наложить ограничение: CURRENCY_ID_1 < CURRENCY_ID_2 (или как их там) — всегда, отслеживая это дело на уровне хранимых процедур и т. п.?

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

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

Вот я посидел минут 30 и выдал другую функцию:
F(x,y)=(x+y+1)/(x*y),
в остальном тоже: x, y - натуральные, ограничены сверху неким разумным значением.
Никогда не бойся браться делать то, что делать не умеешь. Помни, ковчег был построен любителем. Профессионалы построили Титаник...
Re[10]: Математика + программирование
От: Lloyd Россия  
Дата: 19.08.02 12:54
Оценка:
Здравствуйте VVP, Вы писали:

VVP>Здравствуйте achp, Вы писали:



VVP>Вот я посидел минут 30 и выдал другую функцию:

VVP>
VVP>F(x,y)=(x+y+1)/(x*y),
VVP>в остальном тоже: x, y - натуральные, ограничены сверху неким разумным значением.
VVP>


И опять не попал
(1, 8) и (2, 2)
Re[11]: Математика + программирование
От: VVP Россия 67524421
Дата: 19.08.02 12:58
Оценка:
Здравствуйте Lloyd, Вы писали:

L>И опять не попал

L>(1, 8) и (2, 2)
Есть одно ограничение, про которое я похоже ничего не говорил, значения не должны совпадать, т.е (2,2) это недопустимое значение, контролируется другим констрейном, хотя конечно...
Никогда не бойся браться делать то, что делать не умеешь. Помни, ковчег был построен любителем. Профессионалы построили Титаник...
Re[12]: Математика + программирование
От: Lloyd Россия  
Дата: 19.08.02 13:06
Оценка:
Здравствуйте VVP, Вы писали:

VVP>Здравствуйте Lloyd, Вы писали:


L>>И опять не попал

L>>(1, 8) и (2, 2)
VVP>Есть одно ограничение, про которое я похоже ничего не говорил, значения не должны совпадать, т.е (2,2) это недопустимое значение, контролируется другим констрейном, хотя конечно...

(4, 5) и (3, 8)
Re[13]: Математика + программирование
От: VVP Россия 67524421
Дата: 19.08.02 13:25
Оценка:
Здравствуйте Lloyd, Вы писали:

L>(4, 5) и (3, 8)

Да-да, еще до того как я отправил сообщение о новой функции, я это видел. У меня в коде вместо единички должно стоять большое слагаемое.
Это не принципиально. Может быть пример не очень удачный, а если быть честным, то не до конца мною доведенный, но речь в треде идет не об этом. Речь идет о том нужна или нет программисту математика, хорошие ее знания. Я пытался привести один пример в области, где казалось-бы можно обойтись без нее, получилось не очень хорошо. Но все-же лучше, чем голые споры о том, надо читать Кнута или нет. А про свою задачку скажу, что попытаюсь ее решить строго, о чем непримерно сообщу...
Никогда не бойся браться делать то, что делать не умеешь. Помни, ковчег был построен любителем. Профессионалы построили Титаник...
Re[14]: Математика + программирование
От: Lloyd Россия  
Дата: 19.08.02 13:34
Оценка:
Здравствуйте VVP, Вы писали:

VVP>Здравствуйте Lloyd, Вы писали:


L>>(4, 5) и (3, 8)

VVP>Да-да, еще до того как я отправил сообщение о новой функции, я это видел. У меня в коде вместо единички должно стоять большое слагаемое.
VVP>Это не принципиально. Может быть пример не очень удачный, а если быть честным, то не до конца мною доведенный, но речь в треде идет не об этом. Речь идет о том нужна или нет программисту математика, хорошие ее знания. Я пытался привести один пример в области, где казалось-бы можно обойтись без нее, получилось не очень хорошо. Но все-же лучше, чем голые споры о том, надо читать Кнута или нет. А про свою задачку скажу, что попытаюсь ее решить строго, о чем непримерно сообщу...

Можно попробовать такой вариант:

max(x, y) + min(x, y)/max(x, y)


Мне кажется для такой формулы повторений не будет.
Re[22]: Математика + программирование
От: Anatolix Россия https://www.linkedin.com/in/anatolix/
Дата: 19.08.02 15:11
Оценка:
Здравствуйте unintruder, Вы писали:

U>Здравствуйте Anatolix, Вы писали:


U>Я читаю твои заявления и улыбаюсь...

U>Сам Кнута наверняка дома на полку поставил и почитывает, а другим _категорически_ не советует Молодец в наше время жестокой конкуренции все средства хороши

U>Мое ИМХО кто не читал Кнута тот должен обязательно сделать, иначе будет очень часто чувствовать себя ущербным... особенно на вечеринках с коктейлями (с) кажется из Элджера (кстати его тоже советуешь не читать ? ведь это все давно реализовано )


Вот Элджера как раз стоит, мейерса стоит, Design Patterns стоит. А кнута нет.
Потому как если ты DP 3 раза перечитаешь то пользы больше будет чем если ты
1 раз кнута прочитаешь. Просто эти знания будет куда применить а алгоритмы
из кнута нет. Ну не нужны мне алгоритмы сортировки на ленте. Есть вообще
всего 2 алгоритма сортировки которые применяются на практике, а знать
очтальные я смысла не вижу.

К тебе вопрос
1) Ты полностью Кнута прочитал?
2) Что из него ты используешь в работе?
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.