Здравствуйте Aquary, Вы писали:
A>Всем привет!
A>Чувствую, спровоцирую флейм, но уж сильно интересно...
A>Часто слышу мнение, что для того, чтобы стать хорошим программистом, нужно хорошо знать математику. Соответственно, если знаешь на 3 — не быть тебе програмером никогда.
A>Собстно, хотелось бы узнать мнение общественности по этому вопросу...
A>P.S. ИМХО, программистом может быть даже гуманитарий Особенно это касается переводчиков — и там, и там — перевод с одного языка на другой
Я считаю, что ДА. Так как сам заканчивал, МАТ.ФАК. в КГУ. У нас на работе есть ребята с Физического, хорошие программисты.
C другой стороны Ален И. Голуб пишет (Обратите внимание):
Акт записи на английском языке описания того, что делает программа, и что делает каждая функция в программе, является критическим шагом в мыслительном процессе. Хорошо построенное, грамматически правильное предложение — признак ясного мышления. Если вы не можете это записать, то велика вероятность того, что вы не полностью продумали проблему или решение. Плохая грамматика и строение предложения являются также показателем небрежного мышления. Поэтому первый шаг в написании любой программы — записать то, что делает программа, и как она это делает.
Есть разные мнения о возможности мышления вне языка, но я убежден, что аналитическое мышление того типа, который нужен в компьютерном программировании, тесно связано с языковыми навыками. Я не думаю, что является случайностью то, что многие из знакомых мне лучших программистов имеют дипломы по истории, филологии и схожим наукам. Также не является совпадением то, что некоторые из виденных мной худших программ были написаны инженерами, физиками и математиками, затратившими в университете массу энергии на то, чтобы держаться как можно дальше от занятий по языку и литературе.
Сущность заключается в том, что математическая подготовка почти не нужна в компьютерном программировании. Тот тип организационного мастерства и аналитических способностей, который нужен для программирования, связан полностью с гуманитарными науками. Логика, например, преподавалась на философском факультете, когда я был в университете. Процесс, используемый при проектировании и написании компьютерных программ, почти полностью идентичен тому, который используется, чтобы сочинять и писать книги. Процесс программирования совсем не связан с теми процессами, которые используются для решения математических уравнений.
Здесь я делаю различие между информатикой (computer science) — математическим анализом компьютерных программ — и программированием или разработкой программного обеспечения — дисциплиной, интересующейся написанием компьютерных программ. Программирование требует организационных способностей и языковой подготовки, а не абстрактного мышления, необходимого для занятий математическим анализом. (В университете меня заставили проходить год на лекции по математическому анализу, но я никогда из него ничего не использовал ни на занятиях по информатике, хотя для них матанализ был необходимым условием, ни в реальной жизни).
Я как-то получил открытую рецензию на книгу, посвященную мной предмету проектирования компиляторов, в которой рецензент (который преподавал в одном из ведущих университетов) заявил, что он "считает абсолютно неуместным включение исходного кода компилятора в книгу о проектировании компиляторов". По его мнению, необходимо учить "фундаментальным принципам" — лежащей в основе математике и теории языка, а детали реализации — "тривиальны". Первое замечание имеет смысл, если у вас создалось впечатление, что книга написана ученым-специалистом по информатике, а не программистом. Рецензент интересовался лишь анализом компилятора, а не тем как его написать. Второе замечание просто показывает вам, насколько изолировала себя научная элита от реального труда программирования. Интересно, что основополагающая работа по теории языка, сделавшая возможным написание компиляторов, была выполнена в Массачусетском технологическом институте лингвистом Наумом Хомским, а не математиком.
Здравствуйте unintruder, Вы писали:
U>Выскажу свое мнение может резковато:
U>- если человек не способен прочитать/понять такой труд как "Искусство программирования", то не может в принципе считать себя Real Programmer , а читать его без глубоких познаний математики бессмысленно...
Чересчур резко.
Во-первых, читать Кнута — все равно, что читать энциклопедию. Да это, собственно, и есть энциклопедия. А их не читают, ими пользуются (а это, в свою очередь, тоже требует определенного умения).
Что касается "глубоких познаний математики", — да не согласен я! Глубоких познаний не нужно, нужен здравый смысл, умение читать и анализировать прочитанное, да немного общей математической подготовки. Очень помогает общая эрудиция.
Это во-первых.
Во-вторых, работа программиста подразумевает не только анализ (чем занимается теоретическое познание), но и синтез, а это требует и определенных инженерно-технологических навыков.
Здравствуйте Aquary, Вы писали:
A>Всем привет!
A>Чувствую, спровоцирую флейм, но уж сильно интересно...
A>Часто слышу мнение, что для того, чтобы стать хорошим программистом, нужно хорошо знать математику. Соответственно, если знаешь на 3 — не быть тебе програмером никогда.
Ну на мой взгляд все зависит от того, чем ты собираешься заниматься, как программист,
Вот начнешь ты заниматься обработкой изображений и без быстрого преобразования Фурье и теории свертки рядов тебе не обойтись, ты конечно можешь просто взять от куда-нибудь готовые алгоритмы преобразования, непонимая сути, но это ИМХО не правильно.Другой пример — VOIP — тут тоже не обойтись без математики — так что вот оценивайте обстановку.
Вообще считается, что у математиков складывается особый стереотип мышления, который полезен при программировании и проектировании, но это не значит, что гуманитарий не может программировать — помоему тут все зависит от личных качеств и желания =)
A>Собстно, хотелось бы узнать мнение общественности по этому вопросу...
A>P.S. ИМХО, программистом может быть даже гуманитарий Особенно это касается переводчиков — и там, и там — перевод с одного языка на другой
Взойти на гору можно разными путями, но само восхождение остается неизменным.
Здравствуйте Aquary, Вы писали:
A>Часто слышу мнение, что для того, чтобы стать хорошим программистом, нужно хорошо знать математику. Соответственно, если знаешь на 3 — не быть тебе програмером никогда. A>Собстно, хотелось бы узнать мнение общественности по этому вопросу...
ИМХО!
Это можно сказать и о домохозяйке (да как и о других) — не знаешь законы математики (пусть и арифметики), не сосчитаешь доходы и расходы, не знаешь законы экономики — не сможешь планировать свои доходы и расходы и т.д. Однако домохозяйки ещё не вымерли все, т.е. они есть. И я сильно сомневаюсь, что они имеют знания по всем этим предметам выше 3. Значит, тут что-то не стыкуется. Значит можно и не знать и быть домохозяйкой.
Но это опять не значит, что всех этих предметов она совсем не знает. Она просто может не знать что она знает. И не сдавать экзамены на это знание. А просто по житейски уметь.
И с другой стороны, зная эти предметы и применяя на практике осознанно, домохозяйка может очень эффективно вести хозяйство. Что, впрочем, не мешает ей вести его не менее эффективно и без осознанного знания.
Когда человек рассуждает, он неминуемо работает по законам логики, даже не осознавая их. Но если он знает законы логики, то это помогает ему избегать неверных выводов, которые вполне допустимы при "житейском" подходе. Через определённое время практика даст понять человеку, не знающему законы логики, что он не прав, но это потребует времени.
Отсюда мораль: знаешь законы — быстрее придёшь к цели, не знаешь — потратишь время на их изучение на собственном опыте. Поэтому и незнающий математики будет постигать это таинство самостоятельно и неосознанно.
A>P.S. ИМХО, программистом может быть даже гуманитарий :) Особенно это касается переводчиков — и там, и там — перевод с одного языка на другой ;)
Я сам не гуманитарий, но я не думаю, что для них будет большой проблемой программирование в том или ином виде. Это такая же общечеловеческая деятельность, доступная, кстати, всем без исключения. Вполне возможно что скорость написания программ для этих людей будет не сопоставима с аналогичной для математика-программиста, однако, наверное, и цель-то у них другая. Опять же знания в области гуманитарных наук имеют своё значение.
Здравствуйте Aquary, Вы писали:
A>Часто слышу мнение, что для того, чтобы стать хорошим программистом, нужно хорошо знать математику. Соответственно, если знаешь на 3 — не быть тебе програмером никогда.
Я уже тут, как-то писал эту мысль, правда, не очень к месту. Но повторюсь.
Сегодня большой процент программистских задач (в т.ч. и весьма нетривиальных) лежат не в области алгоритмики и прикладной математики, а в области применения тех или иных технологий и построения работающей системы.
Соответственно, для решения таких задач математика с большой буквы может и не пригодитьтся. Но с другой стороны, общие ПОНЯТИЯ например об алгоритмической сложности — не помешают никогда.
Здравствуйте Igor Trofimov, Вы писали:
IT>Имхо, совершенно необоснованное обобщение. Во-первых, Кнут — это не справочник, а скорее, учебник. IT>А во-вторых, "стандартные библиотеки" совершенно не резиновые ;) Найди мне в "стандартной библиотеке" какой-нибудь алгоритм факторизации или операции для работы с многочленами.
IMHO, весьма точно подмечено. Учился на РЛ (оптико-электроника) в МГТУ, но как-то имел склонность :-)) (как раньше писали). Вначале писал БД, потом решал "высоконаучные задачи", потом... В общем, когда дело дошло до профессиоанльного занятия этим делом, выяснилось, что хотя нас и очень здорово натаскали и по преобразованиями и по матфизу и еще по куче вещей, для того чтобы быть программером а не писателем функций взятия интералов методом прямоугольников, понадобились знания (информация) в сситематизированном в виде по предмету. Вот в этом смысле я думаю и стоит понимать вопрос, вынесенный в сабж. И иметь в виду и Кнута, и Страуструпа, и Дейкстру (увы http://news.itunion.ru/index.phtml?act=show&tid=4&fid=10512 :( ) и еще ряд уважаемых. Вот где-то здесь и проходит грань между программером и непрограммером.
- Простите, профессор, не пса, а когда он уже был человеком.
— То-есть он говорил? Это еще не значит быть человеком. (с) Булгаков
Другой пример — VOIP — тут тоже не обойтись без математики — так что вот оценивайте обстановку.
Очень спорно. Вот никому из 3 человек в нашей команде математика не пригодилась, занимаемся VoIP.
Вообще программист это действительно образ мышления, но с математикой он
имеет совсем мало общего. Никакой корелляции между уровнем математической
подготовки и скиллом в программировании не прослеживается.
Конечно для того чтобы быть программистом надо знать математику на уровне
11 класса но вообщем то и все. Полезные темы это
1) Арифметика(+системы счисления)
2) Теория графов
3) Понятие временной сложности
4) Булева логика
Все это вместе изучается на матмехе примерно за 50-100 учебных часов
(36 учебных часов это 1 семестр по 1 паре в неделю)
Все остальные дисциплины специфичны, можно найти тему где они понадобятся
но 95% программистов занимаются не ими.
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Здравствуйте Aquary, Вы писали:
A>Часто слышу мнение, что для того, чтобы стать хорошим программистом, нужно хорошо знать математику. Соответственно, если знаешь на 3 — не быть тебе програмером никогда.
Выскажу свое мнение может резковато:
— если человек не способен прочитать/понять такой труд как "Искусство программирования", то не может в принципе считать себя Real Programmer , а читать его без глубоких познаний математики бессмысленно...
U>>- если человек не способен прочитать/понять такой труд как "Искусство программирования", то не может в принципе считать себя Real Programmer SVZ>...Продолжу фразу... "...нечитавших и не желающих это делать считать всего лишь кодерами!!!
Чего мелочиться... сразу "если не решил самостоятельно всех упражнений, включая доказательство великой теоремы Ферма..."
Вставив пару (3; 24), ты, конечно, не сможешь уже вставить (24; 3). Но весь фокус в том, что и (4; 8) ты тоже уже не вставишь...
Не проще ли не выпендриваться, а просто наложить ограничение: CURRENCY_ID_1 < CURRENCY_ID_2 (или как их там) — всегда, отслеживая это дело на уровне хранимых процедур и т. п.?
Здравствуйте Anatolix, Вы писали:
A>Не основным а самым большим.
А основным и самым большим это не одно и то же ?
A>Стоит больше задумываться над формулировками.
Стоит лучше понимать значения слов и внимательнее читать формулировки.
A>Да и от сайта это сильно зависит. Проведи голосование A>на flasher.ru и у тебя будут другие результаты
Ага. А еще проведи соц опрос среди ОфисМенеджеров и еще будут другие результаты. Вообще получается что все сводится к репрезентативности выборки голосовавших. Будем считать что выборка по РСДН репрезентативна (т.е. ее результаты можно обобщить), т.к. на РСДН есть форумы по большинству тематик...
Здравствуйте OlegO, Вы писали:
OO>Здравствуйте achp, Вы писали:
A>>Здравствуйте unintruder, Вы писали:
A>>Во-первых, читать Кнута — все равно, что читать энциклопедию. Да это, собственно, и есть энциклопедия. А их не читают, ими пользуются (а это, в свою очередь, тоже требует определенного умения).
OO>Согласен Кнут своего рода энциклопедия, но не совсем, я бы сказал это шкатулка знаний, особенно, если учесть как достаточно подробно Кнут ставит задачи, анализирует их, а потом решает, это просто JAZZ, и вот этому у него и стоит обязательно поучиться.
OO>А алгоритмы, которые Кнут приводит, часть запомнятся, часть забудутся, но их всегда можно будет вспомнить.
OO>ЗЫ: Первый том Кнута, я прочитал после первого курса + пытался его задания решать, он мою эрудицию увеличил в разы :super:
Кстати, он и сам не советует все уж очень глубоко закапывать и раскапывать :))
- Простите, профессор, не пса, а когда он уже был человеком.
— То-есть он говорил? Это еще не значит быть человеком. (с) Булгаков
Здравствуйте dmz, Вы писали:
dmz>Посмотрел я как-то в исходниках MS STL, как работает функция поиска подстроки. И, насколько можно понять из абсолютно нечитабельного кода, реализована она там была брут-форсом. И где гарантии, что остальные вещи реализованы не так же... эээ... халтурно?
Я не согласен с оценкой реализованного в стандартных библиотеках алгоритма!
Например, простой поиск — самое разумное решение для моих типичных задач поиска подстрок (строки и подстроки не настолько велики, чтобы сказывалось асимптотическое преимущество более совершенных алгоритмов поиска). Задача стандартной библиотеки — предоставить простое и удобное решение типичной задачи.
Если вам нужно что-то особенное (а может, в конкретной задаче удобней использовать не БМ, а конечные автоматы?), вы выберете нужный именно вам алгоритм, реализуете его так или иначе, положите в свою личную библиотеку или поделитесь с другими, но это не должна быть стандартная функция...
dmz>>Посмотрел я как-то в исходниках MS STL, как работает функция поиска подстроки. И, насколько можно понять из абсолютно нечитабельного кода, реализована она там была брут-форсом. И где гарантии, что остальные вещи реализованы не так же... эээ... халтурно?
A>Я не согласен с оценкой реализованного в стандартных библиотеках алгоритма!
Ну я и не берусь оценивать. Так, вспомнилось просто. У той-же SGI в ее STL все хорошо было,
насколько я помню.
A>Например, простой поиск — самое разумное решение для моих типичных задач поиска подстрок (строки и подстроки A>не настолько велики, чтобы сказывалось асимптотическое преимущество более совершенных алгоритмов поиска).
Ну а я строку в файлах искал. В большом количестве больших файлов. Банально, но брут-форс тут как-то не очень...
Там же в комментариях к функции не писали, что подходит только для маленьких строк.
A>Задача стандартной библиотеки — предоставить простое и удобное решение типичной задачи.
Интерфейс-то один и тот-же: find (к примеру). Насколько оно сложно внутри, пользователя библиотеки
мало беспокоит — да и нет ничего такого сложного в Бойер-Муре или Кнуте-Морисе-Пратте.
A>Если вам нужно что-то особенное (а может, в конкретной задаче удобней использовать не БМ, а конечные автоматы?),
Чего такого особенного в поиске подстрок? Почему оно было реализовано брут-форсом, если есть общеизвестный быстрый алгоритм?
A>вы выберете нужный именно вам алгоритм, реализуете его так или иначе, положите в свою личную библиотеку или A>поделитесь с другими, но это не должна быть стандартная функция...
Однако функция sort реализует QSort, а никак не пузырёк. По такой логике должен быть пузырек
— самое простое решение типовой задачи.
Собственно, мой пойнт в том, что человек, который принципиально не читает Кнутов,
и верит, что все алгоритмы уже хорошо реализованы (причем, в стандартных библиотеках)
— может неслабо наколоться иной раз.
Здравствуйте Anatolix, Вы писали:
A>Если ты вынужден реализовывать алгоритмы из него, то это A>значит что ты плохой программист
я не вынужден, естественно я сначала поищу...
А вот что делать если нет ? сказать что это не возможно ?
Вот случай из жизни:
Программер на Delphi говорит мне что 6-ка очень крутая, можно ттроян на ней быстро сколотить. А я его спросил что его навело на эту мысль уж не компонент ли TTroyan ?
A>А читать или не читать Кнута это опционально.
Здравствуйте Aquary, Вы писали:
A>Чувствую, спровоцирую флейм, но уж сильно интересно...
A>Часто слышу мнение, что для того, чтобы стать хорошим программистом, нужно хорошо знать математику. Соответственно, если знаешь на 3 — не быть тебе програмером никогда.
Не знаю как насчет оценок, но я и многие мои знакомые программистами стали именно потому, что математика хорошо давалась. Я постоянно побеждал на математических олимпиадах, хотя по оценкам — бывали и тройки. И считаю, что именно этот склад ума, который позволял мне решать нетривиальные задачи на олимпиадах, он и позволяет работать программистом и довольно успешно.
Здравствуйте Aquary, Вы писали:
A>Всем привет! A>Чувствую, спровоцирую флейм, но уж сильно интересно... A>Часто слышу мнение, что для того, чтобы стать хорошим программистом, нужно хорошо знать математику. Соответственно, если знаешь на 3 — не быть тебе програмером никогда. A>Собстно, хотелось бы узнать мнение общественности по этому вопросу... A>P.S. ИМХО, программистом может быть даже гуманитарий Особенно это касается переводчиков — и там, и там — перевод с одного языка на другой
Может. Но здесь появляется опять же классификация программистов . Да, гуманитарий может стать программистом, но пока он не узнает простейших вещей, ему будет трудно. Здесь вопрос скорее ставится о складе ума человека. Где-то читал что есть примерно 20% людей, которые в принципе не способны понять фон Неймановское программирование.
А если уж человек способен, то он придет от программирования к математике, или от математики к программированию это значения не имеет (IMO).
То есть вывод такой: изучать математику прийдется (либо сначала, либо потом).
Хотя это все конечно рассуждения на тему. Я в своей жизни не встречал хороших программистов, у которых было бы очень плохо с математикой.
Здравствуйте Lefay, Вы писали:
L>Ну удивил — наверняка вы не писали никакой кодек, а взяли готовые библиотеки и использовали уже их. Попробуй написать какой — нить архиватор или сжимающий фильтр на поток — тут не обойтись без математики
Не канает. В сумме в природе существует менбше 20 аудио кодеков.
Они почти все запатентованы, т.е. даже если те его сам напишешь ты
должен будешь за него заплатить. Ими занимаются математические институты.
Никто из программеров их не пишет ни у нас ни у них. Пишут математики.
L>Я же не говорю, что не можешь заниматься ничем связанным с телефонией — я говорю, что очень много задач, связанных с математикой, может быть многие из них решено, но ведь тоже программисты делали.
Нет в офисном и web программировании таких задач. А если кому-то она
по исключению попадается, то человек лезет в yandex или rsdn и спрашивает.
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Чувствую, спровоцирую флейм, но уж сильно интересно...
Часто слышу мнение, что для того, чтобы стать хорошим программистом, нужно хорошо знать математику. Соответственно, если знаешь на 3 — не быть тебе програмером никогда.
Собстно, хотелось бы узнать мнение общественности по этому вопросу...
P.S. ИМХО, программистом может быть даже гуманитарий Особенно это касается переводчиков — и там, и там — перевод с одного языка на другой
Здравствуйте ToShA_2K, Вы писали:
T2>А если уж человек способен, то он придет от программирования к математике, или от математики к программированию это значения не имеет (IMO). T2>То есть вывод такой: изучать математику прийдется (либо сначала, либо потом).
Почему же он должен к ней прийти, если в повседневной работе ее не использует?
Здравствуйте Lefay, Вы писали:
L>Ну на мой взгляд все зависит от того, чем ты собираешься заниматься, как программист, L>Вот начнешь ты заниматься обработкой изображений и без быстрого преобразования Фурье и теории свертки рядов тебе не обойтись, ты конечно можешь просто взять от куда-нибудь готовые алгоритмы преобразования, непонимая сути, но это ИМХО не правильно.Другой пример — VOIP — тут тоже не обойтись без математики — так что вот оценивайте обстановку.
Ну это и так ясно
Просто большинство задач гораздо приземленней — те же БД, например. Там совсем не обязательно знать реляционную алгебру, чтобы проектировать реляционные базы
Здравствуйте Anatolix, Вы писали:
A>Здравствуйте Lefay, Вы писали:
A>Другой пример — VOIP — тут тоже не обойтись без математики — так что вот оценивайте обстановку.
A>Очень спорно. Вот никому из 3 человек в нашей команде математика не пригодилась, занимаемся VoIP.
Ну удивил — наверняка вы не писали никакой кодек, а взяли готовые библиотеки и использовали уже их. Попробуй написать какой — нить архиватор или сжимающий фильтр на поток — тут не обойтись без математики
Я же не говорю, что не можешь заниматься ничем связанным с телефонией — я говорю, что очень много задач, связанных с математикой, может быть многие из них решено, но ведь тоже программисты делали.
Взойти на гору можно разными путями, но само восхождение остается неизменным.
Здравствуйте Aquary, Вы писали:
A>Здравствуйте ToShA_2K, Вы писали:
T2>>А если уж человек способен, то он придет от программирования к математике, или от математики к программированию это значения не имеет (IMO). T2>>То есть вывод такой: изучать математику прийдется (либо сначала, либо потом).
A>Почему же он должен к ней прийти, если в повседневной работе ее не использует?
Хммм... Сформулировал наверное неправильно.
Очень вероятно, что разработчик прийдет к математике.
Например, часть из того, что перечислил Anatolix, всплывает практически в любой задаче.
Т.е. таких знаний достаточно для 60-70% задач. Для остальных же 30-40% нужны более глубокие знания. (опять же IMO).
Здравствуйте Anatolix, Вы писали:
A>Здравствуйте Lefay, Вы писали:
L>>Ну удивил — наверняка вы не писали никакой кодек, а взяли готовые библиотеки и использовали уже их. Попробуй написать какой — нить архиватор или сжимающий фильтр на поток — тут не обойтись без математики
A>Не канает. В сумме в природе существует менбше 20 аудио кодеков. A>Они почти все запатентованы, т.е. даже если те его сам напишешь ты A>должен будешь за него заплатить. Ими занимаются математические институты. A>Никто из программеров их не пишет ни у нас ни у них. Пишут математики.
Ага, а математики, которые пишут — это уже не программиты
L>>Я же не говорю, что не можешь заниматься ничем связанным с телефонией — я говорю, что очень много задач, связанных с математикой, может быть многие из них решено, но ведь тоже программисты делали.
A>Нет в офисном и web программировании таких задач. А если кому-то она A>по исключению попадается, то человек лезет в yandex или rsdn и спрашивает.
Замечу, что человек, который инициировал сабж не говорил ничего о офисном web программировании — не одним же им покрыта вся область программирования
Взойти на гору можно разными путями, но само восхождение остается неизменным.
Здравствуйте Aquary, Вы писали:
A>Здравствуйте Lefay, Вы писали:
L>>Ну на мой взгляд все зависит от того, чем ты собираешься заниматься, как программист, L>>Вот начнешь ты заниматься обработкой изображений и без быстрого преобразования Фурье и теории свертки рядов тебе не обойтись, ты конечно можешь просто взять от куда-нибудь готовые алгоритмы преобразования, непонимая сути, но это ИМХО не правильно.Другой пример — VOIP — тут тоже не обойтись без математики — так что вот оценивайте обстановку.
A>Ну это и так ясно A>Просто большинство задач гораздо приземленней — те же БД, например. Там совсем не обязательно знать реляционную алгебру, чтобы проектировать реляционные базы
Ну тут я согласен конечно, просто сабж не из конфы про базы данных, а из философии программирования, а философия весьма обширна
Взойти на гору можно разными путями, но само восхождение остается неизменным.
Здравствуйте Lefay, Вы писали:
A>> Пишут математики. L>Ага, а математики, которые пишут — это уже не программиты
Программирование для них в данном случае — это "побочный эффект", инструмент, если так можно выразиться
A>>Нет в офисном и web программировании таких задач. А если кому-то она A>>по исключению попадается, то человек лезет в yandex или rsdn и спрашивает. L>Замечу, что человек, который инициировал сабж не говорил ничего о офисном web программировании — не одним же им покрыта вся область программирования
Посмотри мои постинги — я там вообще-то про БД говорил...
Даже если не брать БД и веб — возьми сетевые или системные задачи... Нужна ли математика при написании сервисов для операционки? Много ли математики использовали создатели Бата или ИЕ?
Здравствуйте Lefay, Вы писали:
L>Ну тут я согласен конечно, просто сабж не из конфы про базы данных, а из философии программирования, а философия весьма обширна
Любая философия исследует и описывает жизнь вообще, в которой в частности местами и БД встречается...
Здравствуйте Aquary, Вы писали:
A>Здравствуйте Lefay, Вы писали:
A>>> Пишут математики. L>>Ага, а математики, которые пишут — это уже не программиты A>Программирование для них в данном случае — это "побочный эффект", инструмент, если так можно выразиться
A>>>Нет в офисном и web программировании таких задач. А если кому-то она A>>>по исключению попадается, то человек лезет в yandex или rsdn и спрашивает. L>>Замечу, что человек, который инициировал сабж не говорил ничего о офисном web программировании — не одним же им покрыта вся область программирования
A>Посмотри мои постинги — я там вообще-то про БД говорил...
A>Даже если не брать БД и веб — возьми сетевые или системные задачи... Нужна ли математика при написании сервисов для операционки? Много ли математики использовали создатели Бата или ИЕ?
Например в ранних операционках — когда доставка информации между устройствами небыла достаточно гарантирована — повсеместно применялись алгоритмы обнаружения ошибок — ну а это уже абсолютная алгебра. А в сетевых задачах очень часто используются алгоритмы сжатия информации. В сетевых технологиях не надо забывать про алгоритмы нахождения кротчайшего пути — все они построены на теории графов.
В отношении же баз данных могу сказать, что при построении базы знаний везьде используются предикаты — тоже объекты математической логики.
Мне кажется, что мы все по разному понимаем использование математики.У меня вообще такое впечатление, что я смогу найти математику в любой области. Вот, например, надо ли логику относить к математике — если да, то любой алгоритм становиться математическим, если нет.
Считаю, что к конструктивной позици в даном сабже мы не придем — помоему каждый выбирает для себя область программирования и на сколько глубоко он будет ей заниматься.
Взойти на гору можно разными путями, но само восхождение остается неизменным.
Здравствуйте Lefay, Вы писали:
L>Ага, а математики, которые пишут — это уже не программиты
Нет это такие специальные дяденьки которые плохо знают
фортран, а еще их человек 100 в мире.
L>Замечу, что человек, который инициировал сабж не говорил ничего о офисном web программировании — не одним же им покрыта вся область программирования
Но 95% покрыто
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Здравствуйте Aquary, Вы писали:
A>Здравствуйте Lefay, Вы писали:
L>>Ну тут я согласен конечно, просто сабж не из конфы про базы данных, а из философии программирования, а философия весьма обширна
A>Любая философия исследует и описывает жизнь вообще, в которой в частности местами и БД встречается...
и не только
Взойти на гору можно разными путями, но само восхождение остается неизменным.
Здравствуйте ToShA_2K, Вы писали:
T2>Т.е. таких знаний достаточно для 60-70% задач. Для остальных же 30-40% нужны более глубокие знания. (опять же IMO).
Согласен, но разделил бы задачи по правилу 95% — 5%
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Здравствуйте Anatolix, Вы писали:
A>Здравствуйте Lefay, Вы писали:
L>>Ага, а математики, которые пишут — это уже не программиты
A>Нет это такие специальные дяденьки которые плохо знают A>фортран, а еще их человек 100 в мире.
По этому поводу давайте заведем новый сабж о том кого относить к программистам, а кого нет
ИМХО,если человек в своей профессиональном деле использует программирование, то его уже можно назвать программистом, а пишет ли он там математические системы или нет — это уже вопрос класификации программистов
L>>Замечу, что человек, который инициировал сабж не говорил ничего о офисном web программировании — не одним же им покрыта вся область программирования
A>Но 95% покрыто
Наверняка ты эту цифру из головы взял. НАРОД у кого нить есть такая статистика???
Взойти на гору можно разными путями, но само восхождение остается неизменным.
Здравствуйте Lefay, Вы писали:
L>По этому поводу давайте заведем новый сабж о том кого относить к программистам, а кого нет L>ИМХО,если человек в своей профессиональном деле использует программирование, то его уже можно назвать программистом, а пишет ли он там математические системы или нет — это уже вопрос класификации программистов
Если он думает 2 года а потом за месяц пишет прототип на фортран
то наверное он всетаки больше математик.
L>>>Замечу, что человек, который инициировал сабж не говорил ничего о офисном web программировании — не одним же им покрыта вся область программирования
A>>Но 95% покрыто L>Наверняка ты эту цифру из головы взял. НАРОД у кого нить есть такая статистика???
Нет я ее взял из собственного опыта и опыта других знакомых
программистов.
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Здравствуйте Lefay, Вы писали:
L>..... А в сетевых задачах очень часто используются алгоритмы сжатия информации. В сетевых технологиях не надо забывать про алгоритмы нахождения кротчайшего пути — все они построены на теории графов.
Много ли народу сетевые протоколы пишут или проги-маршрутизаторы?
L>В отношении же баз данных могу сказать, что при построении базы знаний везьде используются предикаты — тоже объекты математической логики.
Ну про AI и иже с ним я ничего и не говорил... Там оно и так все ясно...
L>Мне кажется, что мы все по разному понимаем использование математики.У меня вообще такое впечатление, что я смогу найти математику в любой области. Вот, например, надо ли логику относить к математике — если да, то любой алгоритм становиться математическим, если нет.
Всепроникающее Дао ...
Конечно, под математику можно все подогнать, кто ж спорит, а вот надо ли?
Здравствуйте Aquary, Вы писали:
A>Здравствуйте Lefay, Вы писали:
L>>..... А в сетевых задачах очень часто используются алгоритмы сжатия информации. В сетевых технологиях не надо забывать про алгоритмы нахождения кротчайшего пути — все они построены на теории графов. A>Много ли народу сетевые протоколы пишут или проги-маршрутизаторы?
L>>В отношении же баз данных могу сказать, что при построении базы знаний везьде используются предикаты — тоже объекты математической логики. A>Ну про AI и иже с ним я ничего и не говорил... Там оно и так все ясно...
L>>Мне кажется, что мы все по разному понимаем использование математики.У меня вообще такое впечатление, что я смогу найти математику в любой области. Вот, например, надо ли логику относить к математике — если да, то любой алгоритм становиться математическим, если нет. A>Всепроникающее Дао ... A>Конечно, под математику можно все подогнать, кто ж спорит, а вот надо ли?
Вообще складывается впечатление, что каждый говорить о разном, так как у каждого свое представление о границе между математикой и информатикой
Взойти на гору можно разными путями, но само восхождение остается неизменным.
Здравствуйте Anatolix, Вы писали:
A>Здравствуйте Lefay, Вы писали:
.....
A>>>Но 95% покрыто L>>Наверняка ты эту цифру из головы взял. НАРОД у кого нить есть такая статистика???
A>Нет я ее взял из собственного опыта и опыта других знакомых A>программистов.
Нет, данная цифра сильно завивит от окружения. В моем окрыжении офисными задачами занимается порядка 15% программистов. Еще раз: У кого есть статистика ?
Здравствуйте Chorkov, Вы писали:
C>Нет, данная цифра сильно завивит от окружения. В моем окрыжении офисными задачами занимается порядка 15% программистов. Еще раз: У кого есть статистика ?
C>P.S. Может проведем голосование ?
Зависит сильно от того что считать офисной задачей.
Я вот сейчас пишу IP телефон и тоже считаю это офисной задачей.
Кроме того самая большая тусовка это всетаки web программисты.
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Здравствуйте Anatolix, Вы писали:
A>Здравствуйте Chorkov, Вы писали:
C>>Нет, данная цифра сильно завивит от окружения. В моем окрыжении офисными задачами занимается порядка 15% программистов. Еще раз: У кого есть статистика ?
C>>P.S. Может проведем голосование ?
A>Зависит сильно от того что считать офисной задачей. A>Я вот сейчас пишу IP телефон и тоже считаю это офисной задачей. A>Кроме того самая большая тусовка это всетаки web программисты.
Ага, может стенка на стенку?
Взойти на гору можно разными путями, но само восхождение остается неизменным.
Здравствуйте Lefay, Вы писали:
L>Здравствуйте Aquary, Вы писали:
A>>Всем привет!
A>>Чувствую, спровоцирую флейм, но уж сильно интересно...
A>>Часто слышу мнение, что для того, чтобы стать хорошим программистом, нужно хорошо знать математику. Соответственно, если знаешь на 3 — не быть тебе програмером никогда.
L>Ну на мой взгляд все зависит от того, чем ты собираешься заниматься, как программист, L>Вот начнешь ты заниматься обработкой изображений и без быстрого преобразования Фурье и теории свертки рядов тебе не обойтись, ты конечно можешь просто взять от куда-нибудь готовые алгоритмы преобразования, непонимая сути, но это ИМХО не правильно.Другой пример — VOIP — тут тоже не обойтись без математики — так что вот оценивайте обстановку.
L>Вообще считается, что у математиков складывается особый стереотип мышления, который полезен при программировании и проектировании, но это не значит, что гуманитарий не может программировать — помоему тут все зависит от личных качеств и желания =)
A>>Собстно, хотелось бы узнать мнение общественности по этому вопросу...
A>>P.S. ИМХО, программистом может быть даже гуманитарий Особенно это касается переводчиков — и там, и там — перевод с одного языка на другой
Мне кажется, что математика программитсу нужна — вот я закончил психологический факультет — гумманитарий и мне бывает трудно без математики
Не основным а самым большим.
Стоит больше задумываться над формулировками.
Да и от сайта это сильно зависит. Проведи голосование
на flasher.ru и у тебя будут другие результаты
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Здравствуйте Aquary, Вы писали:
A>Всем привет!
A>Чувствую, спровоцирую флейм, но уж сильно интересно...
A>Часто слышу мнение, что для того, чтобы стать хорошим программистом, нужно хорошо знать математику. Соответственно, если знаешь на 3 — не быть тебе програмером никогда.
A>Собстно, хотелось бы узнать мнение общественности по этому вопросу...
A>P.S. ИМХО, программистом может быть даже гуманитарий Особенно это касается переводчиков — и там, и там — перевод с одного языка на другой
Гумманитарий? Эко ты даёшь!!!
Хорошо, устраиваем разборы полётов.
Вообще говоря, если говорить о програмисте, как о человеке имеющем особый способ мышления, а вообще говоря, ключ к любой области это определённое строение психологии и мышления.
Программирование требует способности алгоритмировать ситуации
Математика -- это способность построения абстракций (ИМХО: высшая загадка разума нашего).
По своей сути, программирование — это так же абстракция выраженная в кодинге, поэтому можно сказать, что на уровне способов мышления, программирование — это один из подуровней математического мышления.
Не стоит забывать, что математики по своим наклоннастям бывают разные.
Поэтому, если вы программист, то как психолог я могу сказать, что вы уже имеетет склонности к математике.
А знать или не знать математику? И в правду зависит от рода деятельности. Программирование -- это то же математика, пусть со моной и не согласяться проффесора, на то они и проффесора..., однако это мой вердикт.
Здравствуйте ToShA_2K, Вы писали:
T2>Здравствуйте Aquary, Вы писали:
A>>Всем привет! A>>Чувствую, спровоцирую флейм, но уж сильно интересно... A>>Часто слышу мнение, что для того, чтобы стать хорошим программистом, нужно хорошо знать математику. Соответственно, если знаешь на 3 — не быть тебе програмером никогда. A>>Собстно, хотелось бы узнать мнение общественности по этому вопросу... A>>P.S. ИМХО, программистом может быть даже гуманитарий Особенно это касается переводчиков — и там, и там — перевод с одного языка на другой
T2>Может. Но здесь появляется опять же классификация программистов . Да, гуманитарий может стать программистом, но пока он не узнает простейших вещей, ему будет трудно. Здесь вопрос скорее ставится о складе ума человека. Где-то читал что есть примерно 20% людей, которые в принципе не способны понять фон Неймановское программирование.
Я про такое даже и не слышал, а что это такое, если не секрет
T2>А если уж человек способен, то он придет от программирования к математике, или от математики к программированию это значения не имеет (IMO).
T2>То есть вывод такой: изучать математику прийдется (либо сначала, либо потом).
T2>Хотя это все конечно рассуждения на тему. Я в своей жизни не встречал хороших программистов, у которых было бы очень плохо с математикой.
Здравствуйте lamer, Вы писали:
T2>>Может. Но здесь появляется опять же классификация программистов . Да, гуманитарий может стать программистом, но пока он не узнает простейших вещей, ему будет трудно. Здесь вопрос скорее ставится о складе ума человека. Где-то читал что есть примерно 20% людей, которые в принципе не способны понять фон Неймановское программирование.
L>Я про такое даже и не слышал, а что это такое, если не секрет
Оно все такое не пугайся страшных слов
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Здравствуйте OlegO, Вы писали:
OO>Я бы переформулировал вопрос, в голосование: Нужна ли *** наука для Программиста?
В слысле, какая наука нужна программисту?
OO>C другой стороны Ален И. Голуб пишет (Обратите внимание):
[сожрали демоны] OO>Есть разные мнения о возможности мышления вне языка, но я убежден, что аналитическое мышление того типа, который нужен в компьютерном программировании, тесно связано с языковыми навыками. Я не думаю, что является случайностью то, что многие из знакомых мне лучших программистов имеют дипломы по истории, филологии и схожим наукам. Также не является совпадением то, что некоторые из виденных мной худших программ были написаны инженерами, физиками и математиками, затратившими в университете массу энергии на то, чтобы держаться как можно дальше от занятий по языку и литературе.
Я про нечто подобное и говорил, когда в первой мессаге писал про лингвиста
Здравствуйте ToShA_2K, Вы писали:
T2>Здравствуйте Anatolix, Вы писали:
A>>Не основным а самым большим.
T2>А основным и самым большим это не одно и то же ?
A>>Стоит больше задумываться над формулировками.
T2>Стоит лучше понимать значения слов и внимательнее читать формулировки.
A>>Да и от сайта это сильно зависит. Проведи голосование A>>на flasher.ru и у тебя будут другие результаты
T2>Ага. А еще проведи соц опрос среди ОфисМенеджеров и еще будут другие результаты. Вообще получается что все сводится к репрезентативности выборки голосовавших. Будем считать что выборка по РСДН репрезентативна (т.е. ее результаты можно обобщить), т.к. на РСДН есть форумы по большинству тематик...
Абсолютно согласен — помоему на RSDN достаточно независимая выборка прграммистов и web и не web — поэтому давайте проголосуем и посмотрим
Взойти на гору можно разными путями, но само восхождение остается неизменным.
Здравствуйте Lefay, Вы писали:
T2>>Ага. А еще проведи соц опрос среди ОфисМенеджеров и еще будут другие результаты. Вообще получается что все сводится к репрезентативности выборки голосовавших. Будем считать что выборка по РСДН репрезентативна (т.е. ее результаты можно обобщить), т.к. на РСДН есть форумы по большинству тематик...
L>Абсолютно согласен — помоему на RSDN достаточно независимая выборка прграммистов и web и не web — поэтому давайте проголосуем и посмотрим
Пока получается что на RSDN нет вообще web программистов,
а по поводу формулировки мне кажется что вопрос "занимаешься ли ты
Web программированием был бы более правильным"
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Здравствуйте Anatolix, Вы писали:
A>Пока получается что на RSDN нет вообще web программистов, A>а по поводу формулировки мне кажется что вопрос "занимаешься ли ты A>Web программированием был бы более правильным"
А мне кажется что на мой вопрос существует однозначный ответ, а на твой — нет.
Здравствуйте ToShA_2K, Вы писали:
T2>Здравствуйте Anatolix, Вы писали:
A>>Пока получается что на RSDN нет вообще web программистов, A>>а по поводу формулировки мне кажется что вопрос "занимаешься ли ты A>>Web программированием был бы более правильным"
T2>А мне кажется что на мой вопрос существует однозначный ответ, а на твой — нет.
Хм. на твой существует однозначный и неправильный. Т.е. если человек
49% времени занимается web а 51% базами данных то он должен web
выбросить?
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Здравствуйте unintruder, Вы писали:
U>- если человек не способен прочитать/понять такой труд как "Искусство программирования", то не может в принципе считать себя Real Programmer , а читать его без глубоких познаний математики бессмысленно...
Извини, но его меньшая часть программистов полностью прочитала.
Если ты вынужден реализовывать алгоритмы из него, то это
значит что ты плохой программист, потому как не знаешь
что они есть уже реализованные в стандартной библиотеке
(не все конечно, а только полезные)
А читать или не читать Кнута это опционально.
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Здравствуйте unintruder, Вы писали:
U>- если человек не способен прочитать/понять такой труд как "Искусство программирования", то не может в принципе считать себя Real Programmer , а читать его без глубоких познаний математики бессмысленно...
Видишь ли, глубокие познания математики не совсем верно отражают суть. Вот пример.
Поиск чего-то с помощью дихотомии реализовывал (или использовал) почти каждый. Но задумывался ли кто при этом, что лежит в основе гарантии результата этого метода, почему этот метод всегда успешен? Вот для того, чтобы доказать сходимость метода, нужно очень глубоко знать предмет (математику), а чтобы использовать на практике (или доказать применимость этого сходящегося метода) — не обязательно иметь такие глубокие знания, достаточно знать сам факт существования этого метода.
Часто мы берём факты (алгоритмы, способы и т.п.), не задумываясь о глубинных процессах, которые в них задействуются. Действуем по аналогии, допустим, прочитав такую замечательную книгу как "ИП".
Здравствуйте Anatolix, Вы писали:
A>Хм. на твой существует однозначный и неправильный. Т.е. если человек A>49% времени занимается web а 51% базами данных то он должен web A>выбросить?
Вот и именно. Здесь главное найти более важную и весомую часть в своей работе. А если человек занимается 5% времени web'ом ? Он уже входит в многочисленную тусовку веб-программистов ? Тогда и я и ты ими являемся.
U>- если человек не способен прочитать/понять такой труд как "Искусство программирования", то не может в принципе считать себя Real Programmer , а читать его без глубоких познаний математики бессмысленно...
Ню-ню То есть ты хочешь сказать, что человек, не обладающий математическими знаниями т-ща Дональда Эврина Кнута не может быть хорошим программистом? Ню-ню.
Здравствуйте ToShA_2K, Вы писали:
T2>Здравствуйте Anatolix, Вы писали:
T2>Вот и именно. Здесь главное найти более важную и весомую часть в своей работе. А если человек занимается 5% времени web'ом ? Он уже входит в многочисленную тусовку веб-программистов ? Тогда и я и ты ими являемся.
Давай проведем различие так: ты видишь объявление требуется web-программист
(для разработки web портала например), если ты думаешь что тебя туда возьмут
если ты придешь, то ты считаешь себя web программситом.
Вообщем что такое web разработка все понимают в том числе и ты, и не
надо 'косить под дурака' и пытаться все запутать.
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
A>Если ты вынужден реализовывать алгоритмы из него, то это A>значит что ты плохой программист, потому как не знаешь A>что они есть уже реализованные в стандартной библиотеке A>(не все конечно, а только полезные)
Имхо, совершенно необоснованное обобщение. Во-первых, Кнут — это не справочник, а скорее, учебник.
А во-вторых, "стандартные библиотеки" совершенно не резиновые Найди мне в "стандартной библиотеке" какой-нибудь алгоритм факторизации или операции для работы с многочленами.
Re[2]: Математика + программирование
От:
Аноним
Дата:
16.08.02 08:15
Оценка:
Здравствуйте OlegO, Вы писали:
OO>Здравствуйте Aquary, Вы писали:
A>>Всем привет!
A>>Чувствую, спровоцирую флейм, но уж сильно интересно... :user:
A>>Часто слышу мнение, что для того, чтобы стать хорошим программистом, нужно хорошо знать математику. Соответственно, если знаешь на 3 — не быть тебе програмером никогда.
A>>Собстно, хотелось бы узнать мнение общественности по этому вопросу... :shuffle:
A>>P.S. ИМХО, программистом может быть даже гуманитарий :) Особенно это касается переводчиков — и там, и там — перевод с одного языка на другой ;)
OO>Я бы переформулировал вопрос, в голосование: Нужна ли *** наука для Программиста?
OO>Я считаю, что ДА. Так как сам заканчивал, МАТ.ФАК. в КГУ. У нас на работе есть ребята с Физического, хорошие программисты.
Собственно физикам математику не хуже преподают. И надо сказать что преподают ее как инструмент.
Здравствуйте unintruder, Вы писали:
U>Программер на Delphi говорит мне что 6-ка очень крутая, можно ттроян на ней быстро сколотить. А я его спросил что его навело на эту мысль уж не компонент ли TTroyan ?
Одно дела если искать TTroyan в инете(непонятно кем написаный, и возможно написаный
криво). А другое дело не знать что TTroyan например есть в составе с Delphi,
и его сначала группа из 10 программистов в стандарт вносила, а потом его
в Borland реализовали. Разница чувствуется?
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Re[2]: Математика + программирование
От:
Аноним
Дата:
16.08.02 08:18
Оценка:
Здравствуйте unintruder, Вы писали:
U>Здравствуйте Aquary, Вы писали:
A>>Часто слышу мнение, что для того, чтобы стать хорошим программистом, нужно хорошо знать математику. Соответственно, если знаешь на 3 — не быть тебе програмером никогда.
U>Выскажу свое мнение может резковато:
U>- если человек не способен прочитать/понять такой труд как "Искусство программирования", то не может в принципе считать себя Real Programmer :user:, а читать его без глубоких познаний математики бессмысленно...
Гм. Студент второго курса вполне понимает, что написано в первых двух томах.
Здравствуйте Anatolix, Вы писали:
A>Давай проведем различие так: ты видишь объявление требуется web-программист A>(для разработки web портала например), если ты думаешь что тебя туда возьмут A>если ты придешь, то ты считаешь себя web программситом.
Вот именно. Из ответа на мое голосование следует ответ на этот вопрос, а из ответа на твое — НЕТ.
A>Вообщем что такое web разработка все понимают в том числе и ты, и не A>надо 'косить под дурака' и пытаться все запутать.
Здравствуйте Igor Trofimov, Вы писали:
IT>Имхо, совершенно необоснованное обобщение. Во-первых, Кнут — это не справочник, а скорее, учебник. IT>А во-вторых, "стандартные библиотеки" совершенно не резиновые Найди мне в "стандартной библиотеке" какой-нибудь алгоритм факторизации или операции для работы с многочленами.
Если эти алгоритмы тебе нужны значит ты занимаешься достаточно
узкой областью программирования связанной с математикой, и
там тебе действительно неплохо почитать кнута.
А мне вот например еще не были нужны эти алгоритмы(имеется ввиду в профессиональной деятельности, курсовые я тоже на матмехе писал), и наверное не будут.
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Здравствуйте ToShA_2K, Вы писали:
T2>Здравствуйте Anatolix, Вы писали:
A>>Давай проведем различие так: ты видишь объявление требуется web-программист A>>(для разработки web портала например), если ты думаешь что тебя туда возьмут A>>если ты придешь, то ты считаешь себя web программситом.
T2>Вот именно. Из ответа на мое голосование следует ответ на этот вопрос, а из ответа на твое — НЕТ.
Врядли. Из твоего голосования человек занимающийся только perl-ом пол года
web программист, а человек у которого опыта 10 лет и из них он треть времени
занимался perl нет.
В моем случае галчку "web программирование" они оба поставят.
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Здравствуйте achp, Вы писали:
A>Во-первых, читать Кнута — все равно, что читать энциклопедию. Да это, собственно, и есть энциклопедия.
Абсолютно согласен.
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
A>Если эти алгоритмы тебе нужны значит ты занимаешься достаточно A>узкой областью программирования связанной с математикой, и A>там тебе действительно неплохо почитать кнута.
Верно. А ты говоришь — что это значит — плохой программист...
Здравствуйте unintruder, Вы писали:
U>Слушай, ты серьезно ? или шутиш, это ж почти анектдот был U>Нет там такого компонента... я ж над ним прикалывался
Да нет кончено я для примера. Но вот алгоритм сортировки там есть
и если ты его где-то ищещь отдельно или сам пишешь то что-то
ты не понимаешь в этой жизни.
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
A>Чересчур резко.
A>Что касается "глубоких познаний математики", — да не согласен я! Глубоких познаний не нужно, нужен здравый смысл, умение читать и анализировать прочитанное, да немного общей математической подготовки. Очень помогает общая эрудиция.
Извини, у меня с детства склонность к преувеличению
я с тобой согласен
A>Что касается "глубоких познаний математики", — да не согласен я! Глубоких познаний не нужно, нужен здравый смысл, умение читать и анализировать прочитанное, да немного общей математической подготовки. Очень помогает общая эрудиция.
И все-же...все-же... У Кнута очень часто фигурирует математика, выходящая за рамки... ммм... скажем так ВУЗовского курса математики на технической, но не математической специальности.
Здравствуйте Igor Trofimov, Вы писали:
A>>Если эти алгоритмы тебе нужны значит ты занимаешься достаточно A>>узкой областью программирования связанной с математикой, и A>>там тебе действительно неплохо почитать кнута.
IT>Верно. А ты говоришь — что это значит — плохой программист...
В STL есть 1% алгоритмов из кнута и они покрывают 99%
повседневной необходимости, если ты для реализованных
алгоритмов читаешь Кнута, а не руководство по STL
то ты плохой программист(хотя скорее всего хороший математик)
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Здравствуйте Anatolix, Вы писали:
A>Врядли. Из твоего голосования человек занимающийся только perl-ом пол года A>web программист, а человек у которого опыта 10 лет и из них он треть времени A>занимался perl нет.
A>В моем случае галчку "web программирование" они оба поставят.
Спор абсолютно бессмысленный и бесконечный. Посмотри на статистику — она одинакова.
А посему откланиваюсь.
Здравствуйте Аноним, Вы писали:
А>Собственно физикам математику не хуже преподают. И надо сказать что преподают ее как инструмент.
Согласен , ну так и должно быть иначе Физику в современном мире мне кажется делать нечего.
Я когда говорил про Физиков и Математиков, подразумевал то как они смотрят на мир и на ставящиеся проблемы. Все таки специфика обучения оказывает свое влияние.
Здравствуйте achp, Вы писали:
A>Здравствуйте unintruder, Вы писали:
A>Во-первых, читать Кнута — все равно, что читать энциклопедию. Да это, собственно, и есть энциклопедия. А их не читают, ими пользуются (а это, в свою очередь, тоже требует определенного умения).
Согласен Кнут своего рода энциклопедия, но не совсем, я бы сказал это шкатулка знаний, особенно, если учесть как достаточно подробно Кнут ставит задачи, анализирует их, а потом решает, это просто JAZZ, и вот этому у него и стоит обязательно поучиться.
А алгоритмы, которые Кнут приводит, часть запомнятся, часть забудутся, но их всегда можно будет вспомнить.
ЗЫ: Первый том Кнута, я прочитал после первого курса + пытался его задания решать, он мою эрудицию увеличил в разы
Здравствуйте ToShA_2K, Вы писали:
T2>Спор абсолютно бессмысленный и бесконечный. Посмотри на статистику — она одинакова. T2>А посему откланиваюсь.
Но судя по количеству проголосовавших моя всетаки более корректна.
А web программеров похоже на rsdn совсем нет.
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Здравствуйте Igor Trofimov, Вы писали:
A>>В STL есть 1% алгоритмов из кнута и они покрывают 99% A>>повседневной необходимости, если ты для реализованных
IT>Так...уже лучше... начинаем наше супер-пупер-обобщение уточнять... Все-таки вводим проценты и понятие повседневной необходимости
Да нет я абсолютно согласен что любое обобщение неверно,
в том числе и это(обобщение про то что любое обобщение неверно)
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Здравствуйте Anatolix, Вы писали:
A>Здравствуйте ToShA_2K, Вы писали:
T2>>Спор абсолютно бессмысленный и бесконечный. Посмотри на статистику — она одинакова. T2>>А посему откланиваюсь.
A>Но судя по количеству проголосовавших моя всетаки более корректна. A>А web программеров похоже на rsdn совсем нет.
Извини, но на твой вопрос можно дать несколько вариантов ответов и 26 это полное их количество.
Здравствуйте ToShA_2K, Вы писали:
T2>Извини, но на твой вопрос можно дать несколько вариантов ответов и 26 это полное их количество.
Хм. я то думал это количество человек проголосовавших
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Здравствуйте Aquary, Вы писали:
A>Просто большинство задач гораздо приземленней — те же БД, например. Там совсем не обязательно знать реляционную алгебру, чтобы проектировать реляционные базы :)
IMHO, совершенно не верно.
Получите спорщики задачу:
Есть две таблицы, вторая имеет два FK на первую:
create table CURRENCY /* Справочник валют */
(
CURRENCY_ID NUMBER(10) default 0 not null,
NAME VARCHAR2(80),
);
create table RATE_TYPE /* Таблица ТИПОВ кросс-курсов валют */
(
CURRENCY_ID_1 NUMBER(10) default 0 not null,
CURRENCY_ID_2 NUMBER(10) default 0 not null
);
/* первый FK */alter table RATE_TYPE
add constraint RTTP_CURR1_FK foreign key (CURRENCY_ID_1)
references CURRENCY (CURRENCY_ID);
/* второй FK */alter table RATE_TYPE
add constraint RTTP_CURR2_FK foreign key (CURRENCY_ID_2)
references CURRENCY (CURRENCY_ID);
Требуется построить на стороне сервера функциональный уникальный индекс RTTP_UNIQ_IDX над таблицей RATE_TYPE, разрешающий в типы кросс-курсов вводить только уникальные пары значений, т.е. если существует запись с парой (1;2), то ввести запись с парой (2;1) уже нельзя. Примечание: использование триггера(ов) при добавлении/изменении таблицы, который будет сканировать таблицу RATE_TYPE на предмет нахождения совпадающей пары будет дороже с точки зрения быстродействия, чем использование такого индекса.
Для ответа можно (и нужно) написать просто выражение, а не использовать синтаксис какого-либо из языков SQL.
Никогда не бойся браться делать то, что делать не умеешь. Помни, ковчег был построен любителем. Профессионалы построили Титаник...
Re[4]: Математика + программирование
От:
Аноним
Дата:
16.08.02 11:15
Оценка:
A>Оно все такое не пугайся страшных слов
Фон Неймовское считай императивное. А ведь есть еще функциональное и логическое. И то, что императивное распространено больше, лишь доказывает, что мир ущербен по своей сути.
Здравствуйте VVP, Вы писали:
A>>Просто большинство задач гораздо приземленней — те же БД, например. Там совсем не обязательно знать реляционную алгебру, чтобы проектировать реляционные базы VVP>IMHO, совершенно не верно.
[сожрали демоны] VVP>Для ответа можно (и нужно) написать просто выражение, а не использовать синтаксис какого-либо из языков SQL.
То есть, поставил задачу в терминах SQL, а отвечать надо выражением, не привязанным к нему? Какая связь с матемаиикой?
A>В STL есть 1% алгоритмов из кнута и они покрывают 99% A>повседневной необходимости, если ты для реализованных A>алгоритмов читаешь Кнута, а не руководство по STL A>то ты плохой программист(хотя скорее всего хороший математик)
Посмотрел я как-то в исходниках MS STL, как работает функция поиска подстроки. И, насколько можно понять из абсолютно нечитабельного кода, реализована она там была брут-форсом. И где гарантии, что остальные вещи реализованы не так же... эээ... халтурно?
Пришлось искать в сети и переписывать реализацию Бойера-Мура.
Программист, который не читал Кнута и не хочет этого делать принципиально, вызывает у меня недоумение. Т.е. зачем заниматься программированием, если это реально не интересует? ИП Кнута — это же не справочник алгоритмов, это именно об исскустве. Написано очень интересно, с юмором, интересные задачки... Это просто культовая книга, на мой взгляд. Не читать ее — и еще этим гордиться — IMHO, моветон :)
Что же до математики, то у того-же Кнута есть совершенно замечательная книга
"Конкретная математика". Очень рекомендую.
Здравствуйте Aquary, Вы писали:
VVP>>Для ответа можно (и нужно) написать просто выражение, а не использовать синтаксис какого-либо из языков SQL. A>То есть, поставил задачу в терминах SQL, а отвечать надо выражением, не привязанным к нему? Какая связь с матемаиикой?
Мда мил человек, печально.
Хочешь используй SQL, ничего от этого не поменяется, принципиально здесь само функциональное выражение, подставляемое в DDL предложение. Связь с математикой такова, что без нее такой индекс не построишь.
А сиквел я привел в ответ на твое "большинство задач гораздо приземленней — те же БД, например".
Никогда не бойся браться делать то, что делать не умеешь. Помни, ковчег был построен любителем. Профессионалы построили Титаник...
Здравствуйте Igor Trofimov, Вы писали:
IT>Ню-ню ;) То есть ты хочешь сказать, что человек, не обладающий математическими знаниями т-ща Дональда Эврина Кнута не может быть хорошим программистом? ;) Ню-ню.
А если ты не Михаэль Шумахер — значит ты фиговый водитель? :) Я все чаще замечаю, что люди пишущие софт по принципу "цапнул компонент — пололжил на форму" (и только!) не в состоянии написать хоть что нибудь вменяемое независимо от уровня смежной (я имею в иду технической) подготовки. А Кнут пишет не только об алгоритмах.
- Простите, профессор, не пса, а когда он уже был человеком.
— То-есть он говорил? Это еще не значит быть человеком. (с) Булгаков
Здравствуйте unintruder, Вы писали:
U>Здравствуйте Aquary, Вы писали:
A>>Часто слышу мнение, что для того, чтобы стать хорошим программистом, нужно хорошо знать математику. Соответственно, если знаешь на 3 — не быть тебе програмером никогда.
U>Выскажу свое мнение может резковато:
U>- если человек не способен прочитать/понять такой труд как "Искусство программирования", то не может в принципе считать себя Real Programmer , а читать его без глубоких познаний математики бессмысленно...
...Продолжу фразу... "...нечитавших и не желающих это делать считать всего лишь кодерами!!!
_____________________
С уважением,
Stanislav V. Zudin
Здравствуйте small_cat, Вы писали:
SC>Здравствуйте OlegO, Вы писали:
OO>>Здравствуйте achp, Вы писали:
A>>>Здравствуйте unintruder, Вы писали:
A>>>Во-первых, читать Кнута — все равно, что читать энциклопедию. Да это, собственно, и есть энциклопедия. А их не читают, ими пользуются (а это, в свою очередь, тоже требует определенного умения).
OO>>Согласен Кнут своего рода энциклопедия, но не совсем, я бы сказал это шкатулка знаний, особенно, если учесть как достаточно подробно Кнут ставит задачи, анализирует их, а потом решает, это просто JAZZ, и вот этому у него и стоит обязательно поучиться.
OO>>А алгоритмы, которые Кнут приводит, часть запомнятся, часть забудутся, но их всегда можно будет вспомнить.
OO>>ЗЫ: Первый том Кнута, я прочитал после первого курса + пытался его задания решать, он мою эрудицию увеличил в разы
SC>Кстати, он и сам не советует все уж очень глубоко закапывать и раскапывать
Что-то я не встречал от Кнут таких слов, особенно если смотреть по его работам, как он подробно и дасконально все разбирает по косточкам. Хотя согласен, что чуство меры нужно знать везде. Ну а это уже другая тема
Здравствуйте Аноним, Вы писали:
А>Фон Неймовское считай императивное. А ведь есть еще функциональное и логическое. И то, что императивное распространено больше, лишь доказывает, что мир ущербен по своей сути.
С миром-то как раз всё в порядке. Ну и что что самолёт быстрее летает, чем автомобиль едет. Однако у большинства людей всё-таки автомобили для передвижения, а не самолёты. Всё делается постепенно, через несколько веков, м.б., у каждого будет по персональному "самолёту" (или как он там будет называться!).
Не настало ещё время для них. Было время как-то, занимались немного оптическими "компьютерами", там и в помине Нейманом не пахло.
Здравствуйте OlegO, Вы писали:
OO>Здравствуйте small_cat, Вы писали:
SC>>Здравствуйте OlegO, Вы писали:
OO>>>Здравствуйте achp, Вы писали:
A>>>>Здравствуйте unintruder, Вы писали:
A>>>>Во-первых, читать Кнута — все равно, что читать энциклопедию. Да это, собственно, и есть энциклопедия. А их не читают, ими пользуются (а это, в свою очередь, тоже требует определенного умения).
OO>>>Согласен Кнут своего рода энциклопедия, но не совсем, я бы сказал это шкатулка знаний, особенно, если учесть как достаточно подробно Кнут ставит задачи, анализирует их, а потом решает, это просто JAZZ, и вот этому у него и стоит обязательно поучиться.
OO>>>А алгоритмы, которые Кнут приводит, часть запомнятся, часть забудутся, но их всегда можно будет вспомнить.
OO>>>ЗЫ: Первый том Кнута, я прочитал после первого курса + пытался его задания решать, он мою эрудицию увеличил в разы :super:
SC>>Кстати, он и сам не советует все уж очень глубоко закапывать и раскапывать :))
OO>:???: Что-то я не встречал от Кнут таких слов, особенно если смотреть по его работам, как он подробно и дасконально все разбирает по косточкам. Хотя согласен, что чуство меры нужно знать везде. Ну а это уже другая тема
Ну не конкртено так :)) Попробую найти, это где-то в начале у него открытым текстом сказано. Ну и по ходу книги тоже вроде попадалось. Я правда других его работ не читал :shuffle:
Здравствуйте Аноним, Вы писали:
А>Ну не конкртено так Попробую найти, это где-то в начале у него открытым текстом сказано. Ну и по ходу книги тоже вроде попадалось. Я правда других его работ не читал
Ок Вечером дома пороюсь в Кнуте, аж самому интересно.
С уважением, OlegO.
Re[6]: Всё будет, дай срок!
От:
Аноним
Дата:
16.08.02 13:57
Оценка:
Здравствуйте Vi2, Вы писали:
Vi2>Здравствуйте Аноним, Вы писали:
А>>Фон Неймовское считай императивное. А ведь есть еще функциональное и логическое. И то, что императивное распространено больше, лишь доказывает, что мир ущербен по своей сути.
Vi2>С миром-то как раз всё в порядке. Ну и что что самолёт быстрее летает, чем автомобиль едет. Однако у большинства людей всё-таки автомобили для передвижения, а не самолёты. Всё делается постепенно, через несколько веков, м.б., у каждого будет по персональному "самолёту" (или как он там будет называться!).
Vi2>Не настало ещё время для них. Было время как-то, занимались немного оптическими "компьютерами", там и в помине Нейманом не пахло. :-\
Не знаю, ресурсов современных компьютеров вполне достаточно, чтобы потянуть интерпретаторы функциональных языков. Java, например, намного тормознутей. Дело, я думаю, в том, что привыкли люди копаться с низкоуровневыми языками. Им легче претерпеть массу мучений, чтобы написать рабочую программу на c++ (заметим, что не каждому это под силу!). Зато они могут смело заявлять, что с++ позволяет использовать все ресурсы системы, хотя зачем эти ресурсы нужны в большинстве задач непонятно. Жаль, так и не настал золотой век, не создали функциональные процессоры, менеджеры в микрософт не прочитали нужных статей. Теперь остается ждать квантовых или еще каких компьютеров, когда все эти COM+, Oracleы и т.п. уйдут в историю и программисты снова смогут решать задачи, а не проводить недели штудируя километровые спецификации к системам, созданным бог знает кем с явного перепою.
Здравствуйте Аноним, Вы писали:
А>Жаль, так и не настал золотой век, не создали функциональные процессоры, менеджеры в микрософт не прочитали нужных статей. Теперь остается ждать квантовых или еще каких компьютеров, когда все эти COM+, Oracleы и т.п. уйдут в историю
А>и программисты снова смогут решать задачи, а не проводить недели штудируя километровые спецификации к системам, созданным бог знает кем с явного перепою.
Ну этого всегда будет с избытком. Может и не километровые, а мегаметровые в нашем исчислении. Будет, наверное, съел таблетку — и всё знаешь!
Но граница знание/не знание, как известно, только увеличивается. Так что учить всегда будет что.
A>>В STL есть 1% алгоритмов из кнута и они покрывают 99% A>>повседневной необходимости, если ты для реализованных A>>алгоритмов читаешь Кнута, а не руководство по STL A>>то ты плохой программист(хотя скорее всего хороший математик)
dmz>Посмотрел я как-то в исходниках MS STL, как работает функция поиска подстроки. И, насколько можно понять из абсолютно нечитабельного кода, реализована она там была брут-форсом. И где гарантии, что остальные вещи реализованы не так же... эээ... халтурно?
В смысле? А ты знаешь более эффективнй метод поиска чем
линейный просмотр строки?
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Здравствуйте ToShA_2K, Вы писали:
T2>Здравствуйте Anatolix, Вы писали:
A>>В смысле? А ты знаешь более эффективнй метод поиска чем A>>линейный просмотр строки?
T2>А ты не знаешь ?
Да теперь знаю
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Здравствуйте Vi2, Вы писали:
Vi2>Здравствуйте Aquary, Вы писали:
A>>Часто слышу мнение, что для того, чтобы стать хорошим программистом, нужно хорошо знать математику. Соответственно, если знаешь на 3 — не быть тебе програмером никогда. A>>Собстно, хотелось бы узнать мнение общественности по этому вопросу...
Vi2>Отсюда мораль: знаешь законы — быстрее придёшь к цели, не знаешь — потратишь время на их изучение на собственном опыте. Поэтому и незнающий математики будет постигать это таинство самостоятельно и неосознанно.
Здравствуйте ToShA_2K, Вы писали:
T2>А если уж человек способен, то он придет от программирования к математике, или от математики к программированию это значения не имеет (IMO).
T2>То есть вывод такой: изучать математику прийдется (либо сначала, либо потом).
Ну и на основании чего вы сделали такой вывод? Это было давно и неправда — сейчас все ж XXI век у меня на дворе...
T2>Хотя это все конечно рассуждения на тему. Я в своей жизни не встречал хороших программистов, у которых было бы очень плохо с математикой.
Здравствуйте Anatolix, Вы писали:
A>Здравствуйте Lefay, Вы писали:
L>>По этому поводу давайте заведем новый сабж о том кого относить к программистам, а кого нет L>>ИМХО,если человек в своей профессиональном деле использует программирование, то его уже можно назвать программистом, а пишет ли он там математические системы или нет — это уже вопрос класификации программистов
A>Если он думает 2 года а потом за месяц пишет прототип на фортран A>то наверное он всетаки больше математик.
Здравствуйте Igor Trofimov, Вы писали:
A>>Что касается "глубоких познаний математики", — да не согласен я! Глубоких познаний не нужно, нужен здравый смысл, умение читать и анализировать прочитанное, да немного общей математической подготовки. Очень помогает общая эрудиция.
IT>И все-же...все-же... У Кнута очень часто фигурирует математика, выходящая за рамки... ммм... скажем так ВУЗовского курса математики на технической, но не математической специальности.
Но прошедший курс "технической математики" все же сможет разобраться в этой "кнутовской математике"?
A>>>В смысле? А ты знаешь более эффективнй метод поиска чем A>>>линейный просмотр строки? T2>>А ты не знаешь ? A>Да теперь знаю
Ну, думаю, тезис о качестве программиста использующего алгоритмы из Кнута, а не алгоритмы из стандартных либ можно считать дискредетированным на конкретном примере на примере автора тезиса
Здравствуйте VVP, Вы писали:
A>>То есть, поставил задачу в терминах SQL, а отвечать надо выражением, не привязанным к нему? Какая связь с матемаиикой? VVP>Мда мил человек, печально. VVP>Хочешь используй SQL, ничего от этого не поменяется, принципиально здесь само функциональное выражение, подставляемое в DDL предложение. Связь с математикой такова, что без нее такой индекс не построишь.
Здравствуйте Igor Trofimov, Вы писали:
IT>Ну, думаю, тезис о качестве программиста использующего алгоритмы из Кнута, а не алгоритмы из стандартных либ можно считать дискредетированным на конкретном примере на примере автора тезиса
Нет не канает. Даже теперь я не буду применять не идин из них,
т.к. они работают просто медленнее если искать текст не в объеме
нескольких мегабайт. Кроме того для того чтобы почвствовать
эффект нужно большое количество обманных строк т.е. типа ищем abc
а строка abdabf и тп.
Вообщем пока я не начну писать что-то типа yandex я больше не вспомню
про эти алгоритмы. Т.е. я получил знания что они есть и этого вполне
достаточно, вообщем кнут здесь совсем не нужен.
Кстати можно тебе вопрос на засыпку: вот ты судя по твоему коммендарию
уже знал эти алгоритмы, во сколькох своих программах ты их использовал?
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
A>Кстати можно тебе вопрос на засыпку: вот ты судя по твоему коммендарию A>уже знал эти алгоритмы, во сколькох своих программах ты их использовал? A>
Да тоже не приходилось наверное никогда... (Бойера-Мура имеем в виду?)
Но это никак не может служить подтверждением твоим первым словам, против которых я взъярился.
А факт в том, что
а) кто-то использовал
б) в стандартной либе нет
в) при этом он хороший программист
Здравствуйте Igor Trofimov, Вы писали:
A>>Кстати можно тебе вопрос на засыпку: вот ты судя по твоему коммендарию A>>уже знал эти алгоритмы, во сколькох своих программах ты их использовал? A>>
IT>Да тоже не приходилось наверное никогда... (Бойера-Мура имеем в виду?)
Их там совсем много оказывается.
IT>Но это никак не может служить подтверждением твоим первым словам, против которых я взъярился.
Ты против каких именно взъярился? Ты не согласен с тем что любой
человек пишуший QSort на C++ например плохо знает C++ потому
как не может поюзать std::sort ?
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
A>Ты против каких именно взъярился? Ты не согласен с тем что любой A>человек пишуший QSort на C++ например плохо знает C++ потому A>как не может поюзать std::sort ?
Предположим соглашусь. но никак не могу согласиться на исходное обобщение этого частного случая.
Извини, но его меньшая часть программистов полностью прочитала.
Если ты вынужден реализовывать алгоритмы из него, то это
значит что ты плохой программист, потому как не знаешь
что они есть уже реализованные в стандартной библиотеке
(не все конечно, а только полезные)
Здравствуйте 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.
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
A>Будем голосовать сколько людей полностью прочитала кнута?
Зачем? Верю, что мало.
A>Давай я опять задам вопрос на засыпку: A>1) какие именно алгоритмы лично тебе приходилось реализовывать из Кнута?(из тех A>что нет в STL) A>2) какие из них тебе понадобились 2 или 3 раза? A>3) ты используешь какой-нибудь из них на столько же часто как например сортировку?
Независимо от того, каковы мои ответы на этот вопрос — я категорически не согласен с исходным тезисом.
И никакими опросами ты его доказать не сможешь. А вот опровергнуть его можно единственным контрпримером, который при желании можно найти.
Да вот хотя-бы. Берем исходники linux, отыскиваем там алгоритм из Кнута.
По твоему тезису, человек, который там этот алгоритм реализовал — плохой программист Ну не бред ли?
Здравствуйте Igor Trofimov, Вы писали:
IT>Да вот хотя-бы. Берем исходники linux, отыскиваем там алгоритм из Кнута. IT>По твоему тезису, человек, который там этот алгоритм реализовал — плохой программист Ну не бред ли?
Во первых: Linux написан 20 лет назад, написан он на C и ассемблере,
STL тогда еще не придумали. Но я абсолютно уверен что и там программисты
использовали функцию qsort из C rtl, а не писали ее сами.
Во вторых ты перевираешь мой тезис: перечитай его Если ты вынужден реализовывать алгоритмы из него, то это
значит что ты плохой программист
Обрати внимение на множественно число слова реализовывать, и на
слово вынужден. На счет того чтобы один раз реализовать упоминания не было.
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
A>Во первых: Linux написан 20 лет назад, написан он на C и ассемблере, A>STL тогда еще не придумали.
А ты про C++ и STL ничего и не говорил
Ну ладно, допустим.
A>Обрати внимение на множественно число слова реализовывать, и на A>слово вынужден. На счет того чтобы один раз реализовать упоминания не было.
Ок, два раза.
Еще тебе пример. Разработка SQL-сервера какого-нибудь. Или просто работа с большими объемами данных.
Одной сортировкой в памяти не обойдешься, типа quick sort. Нужна, например, сортировка на диске, сортировка слиянием — хоть ты на C++ их пиши, хоть на чем.
И потом.. реализация любого алгоритма не может быть отлита из бронзы на века. Представь, что тебе нужно не просто сортировать элементы или обходить дерево, но попутно и еще что-то делать, например, какую-то статистику собирать. Эту семантику ты в STL не встроишь, и будешь как миленький сам реализовывать эти алгоритмы. И ничего в этом плохого нету.
P.S. Надо заканчивать этот бесполезный спор. И так ясно, что истина тут не уродится — каждый останется при своем мнении.
Здравствуйте Igor Trofimov, Вы писали:
IT>И потом.. реализация любого алгоритма не может быть отлита из бронзы на века. Представь, что тебе нужно не просто сортировать элементы или обходить дерево, но попутно и еще что-то делать, например, какую-то статистику собирать. Эту семантику ты в STL не встроишь, и будешь как миленький сам реализовывать эти алгоритмы. И ничего в этом плохого нету.
Здесь стоит заметить 2 вещи
1) В мире примерно 2 десятка SQL серверов
2) Речь идет о стандартных алгоритмах. Мне кажется что в кнуте нет алгоритма сортировки с
подсчетом средней зарплаты по предприятию(я же не говорю что вообще не надо алгоритмя применят,
я просто говорю что стандартные алгоритмя которые должен знать программист уже написаны,
а с нестандартными Кнут не поможет, придется мозг использовать)
IT>P.S. Надо заканчивать этот бесполезный спор. И так ясно, что истина тут не уродится — каждый останется при своем мнении.
Ok.
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Здравствуйте Anatolix, Вы писали:
A>Здесь стоит заметить 2 вещи A>1) В мире примерно 2 десятка SQL серверов A>2) Речь идет о стандартных алгоритмах. Мне кажется что в кнуте нет алгоритма сортировки с A>подсчетом средней зарплаты по предприятию(я же не говорю что вообще не надо алгоритмя применят, A>я просто говорю что стандартные алгоритмя которые должен знать программист уже написаны, A>а с нестандартными Кнут не поможет, придется мозг использовать)
Я читаю твои заявления и улыбаюсь...
Сам Кнута наверняка дома на полку поставил и почитывает, а другим _категорически_ не советует Молодец в наше время жестокой конкуренции все средства хороши
Мое ИМХО кто не читал Кнута тот должен обязательно сделать, иначе будет очень часто чувствовать себя ущербным... особенно на вечеринках с коктейлями (с) кажется из Элджера (кстати его тоже советуешь не читать ? ведь это все давно реализовано )
Здравствуйте 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
Ну и совсем окончательный вывод — математический склад ума и основы математического (технического) образования необходимы для программирования. А эти два понятия и являют собой (осо)знание математики конкретным индивидумом.
Никогда не бойся браться делать то, что делать не умеешь. Помни, ковчег был построен любителем. Профессионалы построили Титаник...
Здравствуйте Aquary, Вы писали:
A>Часто слышу мнение, что для того, чтобы стать хорошим программистом, нужно хорошо знать математику. Соответственно, если знаешь на 3 — не быть тебе програмером никогда.
Понятие хороший программист растяжимое.
каждый трактует по-своему.
IMHO, для повышения хорошести программиста полезна не математика сама по себе и целиком, а некоторый набор наук, в основном (около)математических.
Корочки программиста дают после 5и месяцев обучения. Курсы бывают разные и по направленности и по длительности. И математику там не преподают. Если человек после этих курсов работает программистом и получает нормальные деньги он "хороший программист"?
А есть такой зверь как инженер-программист. Таких выводят 5 лет. Булева алгебра это математика? А реляционная?
А если человек не работает с БД, ему и рел. алгебра не нужна? Вот этим набором фундаментальных знаний и отличается инженер-программист от просто программиста.
Хорошим программистом можно стать и после прочтения книжки "программирование по-хорошему за 21 день", а можно и не стать после 5и лет всяких теорий графов и дискретных математик, этож дело такое...
A>Вставив пару (3; 24), ты, конечно, не сможешь уже вставить (24; 3). Но весь фокус в том, что и (4; 8) ты тоже уже не вставишь...
Действительно
A>Не проще ли не выпендриваться, а просто наложить ограничение: CURRENCY_ID_1 < CURRENCY_ID_2 (или как их там) — всегда, отслеживая это дело на уровне хранимых процедур и т. п.?
Еще можно создать ДВА уникальных индекса — один (a,b) а другой — (b,a). Это и при поиске поможет — не знаешь же заранее, как искать будешь. А так — симметричность производительности и уникальность обеспечится.
Здравствуйте 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 - натуральные, ограничены сверху неким разумным значением.
Никогда не бойся браться делать то, что делать не умеешь. Помни, ковчег был построен любителем. Профессионалы построили Титаник...
Здравствуйте Lloyd, Вы писали:
L>И опять не попал L>(1, 8) и (2, 2)
Есть одно ограничение, про которое я похоже ничего не говорил, значения не должны совпадать, т.е (2,2) это недопустимое значение, контролируется другим констрейном, хотя конечно...
Никогда не бойся браться делать то, что делать не умеешь. Помни, ковчег был построен любителем. Профессионалы построили Титаник...
Здравствуйте VVP, Вы писали:
VVP>Здравствуйте Lloyd, Вы писали:
L>>И опять не попал L>>(1, 8) и (2, 2) VVP>Есть одно ограничение, про которое я похоже ничего не говорил, значения не должны совпадать, т.е (2,2) это недопустимое значение, контролируется другим констрейном, хотя конечно...
Здравствуйте Lloyd, Вы писали:
L>(4, 5) и (3, 8)
Да-да, еще до того как я отправил сообщение о новой функции, я это видел. У меня в коде вместо единички должно стоять большое слагаемое.
Это не принципиально. Может быть пример не очень удачный, а если быть честным, то не до конца мною доведенный, но речь в треде идет не об этом. Речь идет о том нужна или нет программисту математика, хорошие ее знания. Я пытался привести один пример в области, где казалось-бы можно обойтись без нее, получилось не очень хорошо. Но все-же лучше, чем голые споры о том, надо читать Кнута или нет. А про свою задачку скажу, что попытаюсь ее решить строго, о чем непримерно сообщу...
Никогда не бойся браться делать то, что делать не умеешь. Помни, ковчег был построен любителем. Профессионалы построили Титаник...
Здравствуйте VVP, Вы писали:
VVP>Здравствуйте Lloyd, Вы писали:
L>>(4, 5) и (3, 8) VVP>Да-да, еще до того как я отправил сообщение о новой функции, я это видел. У меня в коде вместо единички должно стоять большое слагаемое. VVP>Это не принципиально. Может быть пример не очень удачный, а если быть честным, то не до конца мною доведенный, но речь в треде идет не об этом. Речь идет о том нужна или нет программисту математика, хорошие ее знания. Я пытался привести один пример в области, где казалось-бы можно обойтись без нее, получилось не очень хорошо. Но все-же лучше, чем голые споры о том, надо читать Кнута или нет. А про свою задачку скажу, что попытаюсь ее решить строго, о чем непримерно сообщу...
Можно попробовать такой вариант:
max(x, y) + min(x, y)/max(x, y)
Мне кажется для такой формулы повторений не будет.
Здравствуйте unintruder, Вы писали:
U>Здравствуйте Anatolix, Вы писали:
U>Я читаю твои заявления и улыбаюсь... U>Сам Кнута наверняка дома на полку поставил и почитывает, а другим _категорически_ не советует Молодец в наше время жестокой конкуренции все средства хороши
U>Мое ИМХО кто не читал Кнута тот должен обязательно сделать, иначе будет очень часто чувствовать себя ущербным... особенно на вечеринках с коктейлями (с) кажется из Элджера (кстати его тоже советуешь не читать ? ведь это все давно реализовано )
Вот Элджера как раз стоит, мейерса стоит, Design Patterns стоит. А кнута нет.
Потому как если ты DP 3 раза перечитаешь то пользы больше будет чем если ты
1 раз кнута прочитаешь. Просто эти знания будет куда применить а алгоритмы
из кнута нет. Ну не нужны мне алгоритмы сортировки на ленте. Есть вообще
всего 2 алгоритма сортировки которые применяются на практике, а знать
очтальные я смысла не вижу.
К тебе вопрос
1) Ты полностью Кнута прочитал?
2) Что из него ты используешь в работе?
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
A>Вот Элджера как раз стоит, мейерса стоит, Design Patterns стоит. А кнута нет. A>Потому как если ты DP 3 раза перечитаешь то пользы больше будет чем если ты A>1 раз кнута прочитаешь. Просто эти знания будет куда применить а алгоритмы A>из кнута нет. Ну не нужны мне алгоритмы сортировки на ленте. Есть вообще A>всего 2 алгоритма сортировки которые применяются на практике, а знать A>очтальные я смысла не вижу.
Я все-таки упорно не понимаю, как можно рассматривать Кнута как сборник алгоритмов...
Здравствуйте Igor Trofimov, Вы писали:
IT>Я все-таки упорно не понимаю, как можно рассматривать Кнута как сборник алгоритмов...
Ну да можно еще как учебник по математике.
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
A>Ну да можно еще как учебник по математике.
Ммм.. сомнительно. Там математика скорее как инструмент. Хотя... тут опять начинается вопрос — где начинается и заканчивается математика
Я бы еще назвал все-таки:
* Учебник по программированию, хотя и странноватый
* Учебник по алгоритмике и анализу алгоритмов.
* Учебник по некоторым разделам дискретной математики
Вообще труд настолько фундаментальный, что слово "Учебник" с трудом рука писать подымается
Не, понял, что сам толком определение не могу для Кнута подобрать
Но это тем более свидетельствует о том, что это не просто справочник по алгоритмам.
Здравствуйте Igor Trofimov, Вы писали:
IT>Я бы еще назвал все-таки: IT>* Учебник по программированию, хотя и странноватый IT>* Учебник по алгоритмике и анализу алгоритмов. IT>* Учебник по некоторым разделам дискретной математики
IT>Вообще труд настолько фундаментальный, что слово "Учебник" с трудом рука писать подымается IT> Не, понял, что сам толком определение не могу для Кнута подобрать
Кто-то правильно заметил что это энциклопедия.
IT>Но это тем более свидетельствует о том, что это не просто справочник по алгоритмам.
Да ради бога, для практической работы я не считаю нужным читать кнута ни в одной из эпостасей тобой названых. Алгоритмы полезны но я знаю необходимый минимум и смогу его пополнить если что-то мне понадобится. А время на чтение кнута я предпочитаю потратить на изучение чего-нибудь еще.
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Здравствуйте Anatolix, Вы писали:
IT>>Но это тем более свидетельствует о том, что это не просто справочник по алгоритмам.
A>Да ради бога, для практической работы я не считаю нужным читать кнута ни в одной из эпостасей тобой названых. Алгоритмы полезны но я знаю необходимый минимум и смогу его пополнить если что-то мне понадобится. А время на чтение кнута я предпочитаю потратить на изучение чего-нибудь еще.
Кнута стоит держать на работе под рукой. Полезно для общего развития его полистать, некоторые разделы (особенно из тома "Сортировка и поиск") стоит внимательно прочитать и осознать — помогает в работе. Выучивать — ни к чему! Тщательно изучать разделы стоит только по мере необходимости: начали реализовывать сложные математические расчеты — смотрим "Получисленные алгоритмы" и т. п.
Здравствуйте achp, Вы писали:
A>Кнута стоит держать на работе под рукой. Полезно для общего развития его полистать, некоторые разделы (особенно из тома "Сортировка и поиск") стоит внимательно прочитать и осознать — помогает в работе. Выучивать — ни к чему! Тщательно изучать разделы стоит только по мере необходимости: начали реализовывать сложные математические расчеты — смотрим "Получисленные алгоритмы" и т. п.
A>А вообще жаль, что у меня его сейчас нету.
Вообще спорно что от него на работе будет польза, но на полке дома
держать смысл имеет, чтобы все ходили и удивлялись
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Re[7]: Математика + программирование
От:
Аноним
Дата:
21.08.02 05:17
Оценка:
Здравствуйте Anatolix, Вы писали:
L>>Ага, а математики, которые пишут — это уже не программиты :)))
A>Нет это такие специальные дяденьки которые плохо знают A>фортран, а еще их человек 100 в мире.
А вот с этим я согласен. Многое, что используется сейчас в программировании было придумано не программистами. Например, решение уравнений (численные методы) были придуманы еще задолго даже до калькулятора. Теория графов, кажется тоже.
Здравствуйте Aquary, Вы писали:
A>Часто слышу мнение, что для того, чтобы стать хорошим программистом, нужно хорошо знать математику. Соответственно, если знаешь на 3 — не быть тебе програмером никогда.
A>P.S. ИМХО, программистом может быть даже гуманитарий :) Особенно это касается переводчиков — и там, и там — перевод с одного языка на другой ;)
Я считаю, что программистом может быть любой человек, независимо от его конкретной профессии. Самое главное, чтобы человек имел склооность к аналитическому мышлению, которое необходимо для разработки алгоритмов. Остальое определяется предметом его профессиональной деятельности и опытом. В том числе и знание математики.
Но дело в том, что математика как наука это настолько большая наука, что сами математики будучи специалистами в какой-то ее одной области могут плохо разбираться в другой области математики, которой они напрямую не занимаются. Хотя имея высокий (профессиональный) уровень в математике, они могут гораздо быстрее разобраться в новой для них области по сравнению с непрофессионалами.
Что касается программисов, то им конечно необходимы минимальные знания математики, хотя бы в объеме средней школы. Но даже если им и не нужны знания каких-то специальных разделов математики, то высокий уровень математической подготовки способствует росту прфессионального уровня, как программиста. Ведь те или иные алгоритмы можно разработать исходя, хотя бы, из простого здравого смысла или в результате "озарения" (муза посетила). Но часто бывает, что алгоритмы являются результатом каких-то теоритических исследований и, если человек знаком с этими исследованиями, то он просто берет готовые алгоритмы и не тратит время на "изобретение велосипеда".
Вся развернувшаяся полемика говорит только о том, что программисты работают в разных областях и пользуются разными разделами математики. Но даже если они и утверждают, что математика им не нужна, то они либо лукавят либо заблуждаются. Просто они действуют исходя и "житейского" здравого сыысла и не подозревают о наличии соответствующих теорий. Часто этого достаточно, но когда зравого сысла не хватает, то знание теории выручит. Хотя наверняка бывает и такое, когда теория появляется как результат потребностей практики.
Re[2]: Математика + программирование
От:
Аноним
Дата:
21.08.02 11:59
Оценка:
Здравствуйте Bill, Вы писали:
Хотя наверняка бывает и такое, когда теория появляется как результат потребностей практики.
Я бы сказал, что теории появляются, как результат потребностей практики (по крайней мере так должно быть). Абстрактные красивые теории хороши, только если они не становтся самоцелью. Впрочем, это очень сложный вопрос. Противостояние Бурбаки — Арнольд, тому пример.
Здравствуйте Аноним, Вы писали:
А>Я бы сказал, что теории появляются, как результат потребностей практики (по крайней мере так должно быть). Абстрактные красивые теории хороши, только если они не становтся самоцелью. Впрочем, это очень сложный вопрос. Противостояние Бурбаки — Арнольд, тому пример.
Наверное Вы полностью правы. Я только хотел сказать, что теория, которая вчера была чисто абстрактной, сегодня может найти практическое применение. Или, например, теория предназначенная для решения одних классов задач, может быть использована для решения других задач, о которых в момент создания теории просто не было известно. Все течет, все изменяется.
Re[4]: Математика + программирование
От:
Аноним
Дата:
21.08.02 14:13
Оценка:
Здравствуйте Bill, Вы писали:
B>Наверное Вы полностью правы. Я только хотел сказать, что теория, которая вчера была чисто абстрактной, сегодня может найти практическое применение. Или, например, теория предназначенная для решения одних классов задач, может быть использована для решения других задач, о которых в момент создания теории просто не было известно. Все течет, все изменяется.
Может, а может и не найти. Если все теории будут исключительно абстрактными математика потеряет свое значение. Арнольд правильно об этом говорит, когда приводит в пример неприятие абстракций обычными людми. Абстрактную теорию очень сложно понять, потому что сначала нужно понять, что стоит за этой теорией, а об этом очень редко пишут в учебниках. Обычный человек видит, что его заставляют учить непонятно что, то, что никак не соотносится с тем, что он видит вокруг, и проникается недоверием к математике.
Здравствуйте Aquary, Вы писали:
A>Всем привет!
A>Чувствую, спровоцирую флейм, но уж сильно интересно...
A>Часто слышу мнение, что для того, чтобы стать хорошим программистом, нужно хорошо знать математику. Соответственно, если знаешь на 3 — не быть тебе програмером никогда.
A>Собстно, хотелось бы узнать мнение общественности по этому вопросу...
A>P.S. ИМХО, программистом может быть даже гуманитарий Особенно это касается переводчиков — и там, и там — перевод с одного языка на другой
Математику уже затем учить надо, что она ум в порядок приводит.
(с) Ломоносов (по моему )
вот затем математика и нужна программисту, программисту, как никому другому, нужен очень упорядоченный ум.
Ну или если прикладная область программиста тесно связана с математикой, тоже надо.
А вообще, теорию языков создал лингвист, а не математик
Здравствуйте VVP, Вы писали:
VVP>Здравствуйте Aquary, Вы писали:
VVP>Требуется построить на стороне сервера функциональный уникальный индекс RTTP_UNIQ_IDX над таблицей RATE_TYPE, разрешающий в типы кросс-курсов вводить только уникальные пары значений, т.е. если существует запись с парой (1;2), то ввести запись с парой (2;1) уже нельзя.
Если эффективное решение еще требуется, то вот на мой взгляд очень неплохое т.к. использует только целочисленную арифметику:
((ID_1+ID_2)*(ID_1+ID_2+1))/2 + ID_2
Можете заметить, что формула различает пары (ID_1,ID_2) и (ID_2,ID_1). Избавиться от этого просто, надо ID_1 заменить на (ID_1+ID_2), а ID_2 на |ID_1-ID_2|. Не указал сразу, чтобы формула не была слишком громоздкой.
Здравствуйте, Aquary, Вы писали:
A>Всем привет!
A>Чувствую, спровоцирую флейм, но уж сильно интересно...
A>Часто слышу мнение, что для того, чтобы стать хорошим программистом, нужно хорошо знать математику. Соответственно, если знаешь на 3 — не быть тебе програмером никогда.
A>Собстно, хотелось бы узнать мнение общественности по этому вопросу...
A>P.S. ИМХО, программистом может быть даже гуманитарий Особенно это касается переводчиков — и там, и там — перевод с одного языка на другой
Программисты бывают разные... Например, если все, чем ты занимаешься в жизни — это создание GUI, передача данных и т. п., то без математики можно прекрасно обойтись.
А вот если ты занимаешься более серьезными системами, то приходиться и припоминать такие вещи как: дискретная оптимизация, теория автоматов, теория матроидов, математическая логика, криптография, теория чисел(это только тот список предметов, с которым я сталкивался в ходе своей(не такой уж и большой) программистской практики).
И еще: самое лучшее развлечение для студента-математика — это ACM, где любая задача, помимо навыков программирования, требует больших знаний математики
ИМХО:
Программист изучает информатику. Математику изучают математики. Что программировать программисту должно быть по-барабану, т.к. если язык это позволяет, то он хороший программист, если может этим воспользоваться. Но главное, что является БОЛЬШИМ плюсом — умение добывать информацию. Программист ты или математик. Корелляция — белый шум. Нашумели вы тут, а почитать было, однако, очень интересно! Много мудрых высказываний и цитирований.
Ваша программа работает корректно? Один звонок и я всё исправлю!
Здравствуйте, Aquary, Вы писали:
A>Всем привет!
A>Чувствую, спровоцирую флейм, но уж сильно интересно...
A>Часто слышу мнение, что для того, чтобы стать хорошим программистом, нужно хорошо знать математику. Соответственно, если знаешь на 3 — не быть тебе програмером никогда.
A>Собстно, хотелось бы узнать мнение общественности по этому вопросу...
A>P.S. ИМХО, программистом может быть даже гуманитарий Особенно это касается переводчиков — и там, и там — перевод с одного языка на другой
Чесслово правду говорят. Хотя все зависит от точки зрения. Если у человека, всю жизнь занимающегося кодированием простых решений хватает духу называть себя программистом — зачем ему математика? А если заниматься всерьез — то знать — не знать, но идеи чувствовать надо. Понятие формальных объектов и операций усвоить, да и исчисления дискретной математики — как минимум. А иначе — голова не так работает. Байты из ячейки в ячейку перекладывать — не проблема, а придумать МЕТОД — никак. ИМХО, разумеется.
А>Если все теории будут исключительно абстрактными математика потеряет свое значение....Абстрактную теорию очень сложно понять, потому что сначала нужно понять, что стоит за этой теорией, а об этом очень редко пишут в учебниках. Обычный человек видит, что его заставляют учить непонятно что, то, что никак не соотносится с тем, что он видит вокруг, и проникается недоверием к математике.
Согласен, считаю, чтот в первом сабже темы есть маленький подвох. Вообще, математика — самодостаточная наука, многие математики занимаются оч абстрактнымии вещами. Вспоминается байка такая: Один математик придумал некое функциональное пространство с уникальными экзотическими свойствамми, защитил по нему кандидатскую. Далее, на в докторской одну главу посвятил доказательству тому, что это ф. пространство является пустым множеством.
Менее абстрактная математика более приземленна: между математическими объектами и объектами из реальной жизни существует соответствие. Например: число (мат.) и количество яблок (жизнь). В математике для чисел введены операции -,+,*,/,... ; в жизни — было одно яблоко, сорвал с дерева еще 2 — у тебя 1+2=3. В математике можно было ввести другие операции над числамии, бредовые (в смысле, не связанные с жизнью), например: number_1+number_2 ---> log(number_1+number_2). И в итоге НАУКА математика была бы другой. Возможно, такую альтернативную математику можно было бы использовать при построении алгоритмов (для особо одаренных или умалишенных). Но человечество не пошло по этому пути — математику придумали люди, которым операция + нужна именно такая чтобы было "1+2=3". Аналогично можно было бы построить всякие альтернативные логики, ... хз что.
К чему я это — да к тому, что математика тесно связана с РЕАЛЬНОЙ ЖИЗНЬЮ, одни из ее разделов хоть и абстрактны, но продиктованы здравым смыслом (та же матричная алгебра). Пофиг программист ты или террорист. Математика сидит у нас в подсознании и связана с тем, что человек представляет мир как абстракции, объединенные с помощью той же логики, арифметики,..., хбз, может, некоторые мутанты добавят еще линейную алгебру (хотя я погорячился — я вот не мутант, не местами озаряет), а супербизонирующие мутанты — теорию операторов в гильбертовых пространствах.
И вопрос возникает такой — что понимать под математикой ?
— Интегрировать метотдом прмоугольником — а это математика ? Я без нее не могу что-ли допереть, что площадь под графиком можно (с некоторой точностью) представить с помощью суммы площадей прямоугольников ?
— Те формулы в задачке с (b,a) и (a,b) — это математика ? Сам ход решения подбирался эволюционно — придумывали формулы, опровергали. Я не против таких решений — но этот не математика, хз, смекалкой назвать можно
— Разностные схемы для решения диффуров ? хбз, единственное, что используется не из арифметики — так это утверждение, что если нач. условия заданы (зад. Коши) — то оно единственное (но об этом можно и не знать, и не беспокоиться, если решаешь физическую задачу, решение которой из некоторых рассуждений или представлений единственно), сами операторы дифференцирования ? — вроде и математика, но если спуститься на землю — то можно представить график функции и сказать, что производная — это скорость роста функции, сетка по переменной x — частая, дай ка я заменю производную на delta_y/delta_x (скорость).
Да можно много привести примеров, сортировку уже приводили, где нужна не столько математика сколько ТРЕЗВАЯ ЯСНАЯ ГОЛОВА.
З.Ы. Сам я принадлежу к тем, кто в программировании использует почти всю универовскую математику. Приложения потому что математические и физические. Но математиков не очень люблю — странные они (обо всех не говорю — на кафедре просто полно таких шизо), да и математику придумали физики как язык описания мира (вернее моделирования или упрощения).
Добавлю — в программировании скорее нужно не знать математику — а представлять (моделировать) объекты в какой-либо абстракции, если этого склад ума не позволяет делать (позволяет-то любой склад, но с разной скоростью ) легко, то и хорошим программистом сложно стать. Общался с людьми с сугубо "гуманитарными умами" — веселые ребята... с марса наверное
Если человек учится на филос. факе или еще где-нибудь в тойже степи гуманитарной — он не обязательно марсианин, встречаются и нормальные, но реже , чем среди естественно-научных факультетов, а есть талантливые люди-технари (программисты в том числе) и вообще без высшего образования.
Просто соотношения разные
B> Но дело в том, что математика как наука это настолько большая наука, что сами математики будучи специалистами в какой-то ее одной области могут плохо разбираться в другой области математики, которой они напрямую не занимаются.
Это скорее к физике и другим естественным наукам относится.
В математике фактический материал, конечно, различается в разных областях. Но методы работы совершенно одинаковые — хоть в планиметрии, хоть в дифурах, хоть в теории групп.
Поэтому вникнуть в любую область математики несложно, имея общую математическую культуру. А вот в физике каждой области сопутствует какой-то свой особый уклад мышления, чуть ли не религиозные догмы
А>Я бы сказал, что теории появляются, как результат потребностей практики (по крайней мере так должно быть). Абстрактные красивые теории хороши, только если они не становтся самоцелью.
Опять же, для математики всё наоборот. Теория должна быть красива (ну, и непротиворечива, конечно), а уж её приложения могут быть чисто умозрительными. Разные там топологические многомерные теоремы редко когда в деле пригодятся. Ну, может в квантовой механике. А всё равно люди ими занимаются, и это престижно.
Ну, или теорему Ферма возьми — практической ценности ноль, а люди изучают.
Здравствуйте, mihailik, Вы писали:
M>Ну, или теорему Ферма возьми — практической ценности ноль, а люди изучают.
Позволю себе не согласиться. Если вы имеете в виду малую теорему Ферма, то она довольно таки полезна и на краткое ознакомление с ней я бы порекомендовал потратить час драгоценного времени (теорию чисел вообще программистам знать полезно). А если Великую теорему Ферма, то она довольно таки проста в формулировке, имеет незатейливый смысл, а изучать ее доказательство никто и не заставляет.
M>>Ну, или теорему Ферма возьми — практической ценности ноль, а люди изучают.
SAV>Позволю себе не согласиться. <skip> А если Великую теорему Ферма, то она довольно таки проста в формулировке, имеет незатейливый смысл, а изучать ее доказательство никто и не заставляет.
Какая разница, заставляет или не заставляет. Люди-то доказывали, и труда угробили несметное количество. Это пример того, что в математике практическое приложение теорий вообще идёт лесом. Никого это особо не волнует, главное чтобы теория была остроумная и интерестная.
Здравствуйте, mihailik, Вы писали:
M>Какая разница, заставляет или не заставляет. Люди-то доказывали, и труда угробили несметное количество. Это пример того, что в математике практическое приложение теорий вообще идёт лесом. Никого это особо не волнует, главное чтобы теория была остроумная и интерестная.
Я думал вы говорили о математике в применении к программированию... Для программирования Великая теорема Ферма действительно не сильно важна. Но вот насчет напрасности 200-летних попыток ее доказательства вы зря. В процессе этих попыток было создано ряд теорий (например теория эллиптических кривых, которая в итоге и привела к доказательству) и доказательств других важных теорем.
SAV>Я думал вы говорили о математике в применении к программированию... Для программирования Великая теорема Ферма действительно не сильно важна. Но вот насчет напрасности 200-летних попыток ее доказательства вы зря. В процессе этих попыток было создано ряд теорий (например теория эллиптических кривых, которая в итоге и привела к доказательству) и доказательств других важных теорем.
Правильно, важных. Я о том, что важность в математике вещь внутренняя, мало касающаяся разных там ракет-самолётов.
Теорему Ферма ведь тоже доказывали не ради "ряда теорий", согласны? Ради самой теоремы Ферма её доказывали.
Здравствуйте, Igor Trofimov, Вы писали:
U>>- если человек не способен прочитать/понять такой труд как "Искусство программирования", то не может в принципе считать себя Real Programmer SVZ>...Продолжу фразу... "...нечитавших и не желающих это делать считать всего лишь кодерами!!!
iT>Чего мелочиться... сразу "если не решил самостоятельно всех упражнений, включая доказательство великой теоремы Ферма..."
iT>Чего мелочиться... сразу "если не решил самостоятельно всех упражнений, включая доказательство великой теоремы Ферма..."
D>Она уже 5 лет как доказана
Здравствуйте, Igor Trofimov, Вы писали:
iT>Чего мелочиться... сразу "если не решил самостоятельно всех упражнений, включая доказательство великой теоремы Ферма..."
D>Она уже 5 лет как доказана
iT>И что это меняет?
В контексте данного обсуждения фактически ничего, просто я сам об этом узнал на прошлой неделе
iT>>Чего мелочиться... сразу "если не решил самостоятельно всех упражнений, включая доказательство великой теоремы Ферма..."
D>Она уже 5 лет как доказана
Нет, раз сказано "самостоятельно" — то решай самостоятельно. Мало ли что доказана, ты и теорему Пифагора теперь будешь по учебнику списывать?
А так — правильная, вообще, идея. Если не знаешь математики — вон из программистов. У нас всегда открыты двери. Программизм — это святое, и сим высоким званием...
Э-э, и сим невероятно ответственным званием...
Короче, хватит гнать. Профессия как профессия. И без Кнута можно справиться.
Здравствуйте, Aquary, Вы писали:
A>Чувствую, спровоцирую флейм, но уж сильно интересно... A>Часто слышу мнение, что для того, чтобы стать хорошим программистом, нужно хорошо знать математику. Соответственно, если знаешь на 3 — не быть тебе програмером никогда.
А я просто замечу, что Д.Кнут, Дийкстра, Б.Страуструп — по образованию математики.
A>Часто слышу мнение, что для того, чтобы стать хорошим программистом, нужно хорошо знать математику. Соответственно, если знаешь на 3 — не быть тебе програмером никогда.
Знать матемитику весьма полезно. Это
1) Даёт богатый материал для аналогий. Конечно, гильбертовы пространства непосредственно не применяются, но многие математические абстракции оказываютс явесьма кстати.
2) Некоторые разделы математики напрямую связаны с программированием:
2.1 Численные методы
2.2 дискретная математика
2.3 Линейная алгебра (в графике)
2.4 список можно продолжать
3) Хорошее знание математики говорит о математической складе ума, что для программиста необходимо. Если с математикой плохо, значит, плохо с логикой
4) Просто развивает абстрактное и логическое мышление. Впрочем, этот пункт пересекается с первым.
Здравствуйте, Aquary, Вы писали:
A>Всем привет!
A>Чувствую, спровоцирую флейм, но уж сильно интересно...
A>Часто слышу мнение, что для того, чтобы стать хорошим программистом, нужно хорошо знать математику. Соответственно, если знаешь на 3 — не быть тебе програмером никогда.
Если в школе у тебя 3 по математике, то это не значит что при желании изучить ее невозможно. Это точная наука и для программирования просто необходима.
Измеряй высоту своего ума по тени, которую он отбрасывает...
Здравствуйте, Anatolix, Вы писали:
A>Нет в офисном и web программировании таких задач. А если кому-то она A>по исключению попадается, то человек лезет в yandex или rsdn и спрашивает.
Ну конечно если ты пишешь что-то для бухгалтерии на 1С то тебе хватит и скудных знаний арифметики и русского языка... А незнание математики приведет к тому что тебе и в голову никогда не придет что существующий алгоритм (выпрошенный у коллег или слитый при помощи yandex-а) можно модифицировать и усовершенствовать применимо к некой конкретной задаче.