| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Флейм > Поверхностность и понимание |
| Автор: SergeCpp 20.1.2007, 20:31 | ||
| Есть такая книга: Никлаус Вирт. Систематическое программирование. Введение На первой странице этой книги есть цитата. Вот она:
Из писем Гаусса Шумахеру 15 мая 1843 года и 1 сентября 1850 года. Приглашаю высказаться по существу |
| Автор: nerezus 20.1.2007, 20:39 |
| Я не согласен ) Это если не по профилю. Хотя если это по профилю, то через некоторое время уже будешь знать предпосылки. Даже если не хочешь. На уроке геометрии препод нам сказал: "Это верхушка айсберга, я лишь сказал вам результат и вы должны основываться на нем. Вывод всего этого потребовал у людей много времени, а вам свое время на это убивать не стоит." |
| Автор: Kuvaldis 20.1.2007, 21:13 | ||
| ИМХО, нужно в данном вопросе разделять прикладную и фундаментальную науку Применительно к дифф. исчислению...
Вот выдержка из 1-го тома "Мат. анализа" Фихтенгольца (1966 г.). Исторический очерк. " В одной из своих полемических статей он (Лейбниц) высказывался так: "Я высоко ценю старательность тех, которые стремятся все доказать, вплоть до первоначальных положений, и нередко сам прилагаю к этому старания; однако я не советовал бы чрезмерной тщательностью ставить преграды искусству открытия или под этим предлогом отбрасывать наилучшие открытия и самим себя лишать их плодов..." Таким образом, даже не имея уверенности в возможности обосновать созданное их исчистелние, Лейбинц считает применение его оправданным теми результатами, к которым оно приводило" А так и получается. Большинству специалистов инженерного профиля не очень интересно, ОТКУДА берутся результаты, а интересно КАК применять. И если все нормально, то вопросов не возникает |
| Автор: Sun 20.1.2007, 21:51 |
| Мне эти высказывания очень напомнили ситуацию с современным программированием. Сейчас мы точно также опираемся на фреймворки, хотя даже не задумываемся на каких они алгоритмах построены (разве что во время собеседования Книги Вирта и Кнута у многих просто пылятся на полках, а еще больше программистов даже никогда их не открывали. Здесь конечно большое благо но и большая ловушка. Фактически идет использование прошлых наработок и ум лениться искать более интересные решения. Понимаю связанные с этим опасения. Особенно это касается мира Java и .Net. За Unix и С я спокоен, так как в этом мире до сих пор царит свобода и здоровое стремление в поиске новых решений. Даже изобретая по тысячному разу велосипед можно в конце концов изобрести антигравитационный летательный аппарат. По этому друзья, давайте не зацикливаться на существующих решених. а искать новые. |
| Автор: maxim1000 20.1.2007, 21:55 |
| ИМХО на всё, что ниже для себя я представляю ситуацию так (в применении к какой-нибудь теории, например): есть какие-то базовые понятия и результаты из них выводятся вещи более высокого уровня например, пределы последовательностей и интеграл функции (R -> R) второе (при знании некоторых свойств) - позволяет решать значительно более сложные задачи (площадь находить, расстояние по скорости и т.д.) по сравнению с первым, я бы даже сказал, более практические можно представить себе, что человека научили механически брать интегралы, которые есть в таблицах или сводятся к ним несложными преобразованиями, а пределам не научили так вот, этот человек, возможно, заметит кучу разных свойств интеграла, может, даже начнёт применять его для сглаживания функций введения меры различий между ними и т.д., в общем, выведет кучу полезных результатов более высокого уровня, но вот до пределов ему будет добраться очень сложно (я вообще не уверен, что возможно), как и до других понятий более низкого уровня а вот от пределов последовательностей до интегралов, не то чтобы рукой подать, не и не очень далеко но попутно с этим выводится понятие производных, дифференциальных уравнений, а там уже и до спектра недалеко т.е. потенциально человеку, знакомому с понятиями боле низкого уровня открыто больше направлений, почти всегда больше, чем человеку знакомому только с понятиями высокого уровня более того, есть ещё один интересный момент: если дать обоим ещё комплексные числа, то первому это мало, что даст, а второй может вывести понятие аналитической комплексной функции, от него - к теории вычетов, которая в том числе позволяет решать некоторые интегралы вещественных функций, при чём стандартными методами такое не всегда берётся (да, конечно, в некоторые результаты этого подхода могут оказаться в таблицах, но все случаи всё равно не опишешь) и получается, что второй начинает решать такие интегралы, которые первый не может (хотя это как раз специализация первого) вывод, который я для себя делаю и подобных примеров, (или скорее просто мысль, т.к. чётким выводом здесь и не пахнет) такой: чем мельче твои базовые понятия, тем плотнее можно будет покрыть множество результатов в области, которая выводится из этих понятий при этом само знание/незнание интеграла здесь роли не играет (первый его знает изначально, второй его выводит через некоторое время), важно знание/незнание именно более мелкого понятия - предела но это всё только одна сторона, как обычно без второй не обойтись а вторая - время, необходимое на выведение вторым человеком результатов, доступных первому оно зависит от того, какая "разница уровней" их базовых понятий, и если это время сравнимо с жизнью человека, то первый попросту успеет больше пользы извлечь из своих знаний, пока второй будет изучать путь "из глубин" к уровню второго (пределы и интегралы, конечно, не такой случай) кроме того, думаю, здесь немало зависит и от склада ума человека: кому-то комфортно на одном уровне, кому-то - на другом вооооот... длинно что-то получилось P.S. если применить эти рассуждения к области программирования, ИМХО, оно ещё не достигло того развития, чтобы на путешествие от уровня битов и структуры простых процесоров до уровня паттерна "фабрика" уходила вся жизнь так что я придерживаюсь мнения, что если хочешь сделать из человека хорошего программиста, начинай рассказывать ему про биты и логические операции (если не про транзисторы Добавлено @ 22:04 вот, кстати, нашёл статью Джоела Спольски, которая высказывает похожие вещи http://www.joelonsoftware.com/articles/fog0000000319.html думаю, она была одним из тех факторов, который привёл меня к мыслям, описанным выше впрочем немало примеров было и при обучении в университете, особенно на старших курсах |
| Автор: SergeCpp 20.1.2007, 23:50 |
| К этой теме близко по смыслу высказанное в опросе http://forum.vingrad.ru/topic-114858.html Также, очень большая дискуссия по поводу Интернета и влияния его развернулась на RSDN — http://rsdn.ru/Forum/?mid=2267021 |
| Автор: esperant0 21.1.2007, 09:23 | ||
Думаю это как раз знание алгоритмов и других теоретических предметов, то что отличает програмиста фельдшера от програмиста врача. И те и другие лечат но квалификация и потенциал разный. Не зная алгоритмов достойные вещи можно писать, но множество других достойных вещей никогда не написать, так же как фельдшеру не сделать сложнейшую операцию. Что уже говорить горе-прогамисты не знающие например теории вычислимости, под час готовы писать программы, существование которых не возможно - как доказано в теории. А программист класса фельдшер быстренько согласиться написать программу которую нельзя написать. Вообщем имхо каждому свое. Но не знающие теории прогрывают во многом тем кто ее знает. Вопрос: Кто готов написать программу "С" получающую на вход программу "А" , С возвратит 1 если в процессе работы программы "А" на экран будет выведено "ПРИВЕТ МИР" иначе "С" вернет 0. |
| Автор: Sun 21.1.2007, 11:32 | ||
Но тебе ведь не нужно знать, как устроен хэш или список, чтобы его использовать. Не нужно знать каким образом информация хранится в базе данных, чтобы писать к ней запросы. На каких алгоритмах построен поиск и сортировка. Не нужно знать про прерывания и системные вызовы, чтобы прочитать файл. И самое интересное, что знание всех этих алгоритмов практически не дает тебе никакого преимущества в разработке. Абстракция всё больше растет и программисты все дальше отдаляются от низкоуровневых алгоритмов, используя черные ящики классов. Программист всё больше превращается в архитектора или дизайнера. В конце концов нас ждет отказ от писания кода вручную. Это голубая мечта Майкрософта |