Здравствуйте, hal9000, Вы писали:
H>Когда чел креативен и у него есть фундаметальные знания и практический опыт, то он сможет продвинутся по иерархии ИТ в качестве специалиста и будет очень ценен.
Тот, кто может делать — делает. Тот, кто не может делать — учит. Тот, кто не может учить — руководит.
(c) Народная мудрость.
Т.о. знания и опыт могут только помешать в продвижении по иерархии.
Re: Многие думают, что математика и теория вообще не нужна!
Здравствуйте, hal9000, Вы писали:
H>Заметил, что большинство ИТ-специалистов и программистов с которыми я общался считают, что математика (в частности дискретная математика, которая играет большую роль в теории алгоритмов), теория алгоритмов (в частности асимптотический анализ, конечные автоматы, классы сложности) вообще не нужны современному программисту.
Повод задуматься о том, что ты не в том кругу/окружении и что может быть, стоит его поменять. Все выше перечисленное, это из части обязательного минимума необходимых знаний.
H>Нужно ли понимание общих теоретических концепций для тру программирования?
Естесственно, я бы еще добавил, что не только понимание, но и умение применять это на практике.
Lisp is not dead. It’s just the URL that has changed: http://clojure.org
Re[2]: Многие думают, что математика и теория вообще не нужн
Здравствуйте, Sharowarsheg, Вы писали:
S>Для Тру Программирования нужно сначала понимание предметной области. А потом уже можно думать, нужен ли в этой области асимптотический анализ, и если да, то в каком объеме.
Неправда. Понимание предметной области на втором плане должно быть. Ибо предметных областей у программиста может быть до кучи. А его основная предметная область в виде разделов дискретки и нужна как раз для успешного их применения в остальных предметных областях.
Lisp is not dead. It’s just the URL that has changed: http://clojure.org
Re[8]: Многие думают, что математика и теория вообще не нужн
H>На счёт формулы 1 ошибся, так как "Позднее стала широко применяться в обычных серийных машинах, а в 2008 году была запрещена в Формуле-1.", но суть не меняется. Например, в одном из многочисленных выпусков Top Gear ведущий сначала обсирал машину, как он обычно любит это делать, а потом отключил подобную систему (я не специалист, но насколько знаю, там несколько видов автоматического управления) и показал настоящие возможности машины. Вообщем поищи Top Gear в youtube.
Поэтому и аналогия получилась некудышной.
Re[4]: Многие думают, что математика и теория вообще не нужн
H>А почему бы и нет! Можно и теорию суперструн изучать, кому что по вкусу. Уверен, что человек осиливший теорию суперструн со всеми выкладками, может стать очень продвинутым программером
Самый корявый говнокод который я видел написан кандидатом физико-математических наук, умнейшим и толковым специалистом в своей области.
Еще раз повторяю способности к математике и программированию совершенно разные способности.
Re[5]: Многие думают, что математика и теория вообще не нужн
Здравствуйте, FR, Вы писали:
FR>Здравствуйте, hal9000, Вы писали:
H>>А почему бы и нет! Можно и теорию суперструн изучать, кому что по вкусу. Уверен, что человек осиливший теорию суперструн со всеми выкладками, может стать очень продвинутым программером
FR>Самый корявый говнокод который я видел написан кандидатом физико-математических наук, умнейшим и толковым специалистом в своей области.
FR>Еще раз повторяю способности к математике и программированию совершенно разные способности.
Есть разные области математики. Одна область — непрерывная метаематика очень далека от компьютеров и специалист в этой области вряд ли сможет написать хорошую программу.
Другая область — дискретная математика, теория вычислимости, формальные грамматики, теория категорий. Знания этих областей очень пригодились бы любому программисту.
Re[3]: Многие думают, что математика и теория вообще не нужн
Здравствуйте, yumi, Вы писали:
S>>Для Тру Программирования нужно сначала понимание предметной области. А потом уже можно думать, нужен ли в этой области асимптотический анализ, и если да, то в каком объеме.
Y>Неправда. Понимание предметной области на втором плане должно быть. Ибо предметных областей у программиста может быть до кучи. А его основная предметная область в виде разделов дискретки и нужна как раз для успешного их применения в остальных предметных областях.
Это всё хорошо, если предметная область требует хоть сколько-то дискретки.
Re[6]: Многие думают, что математика и теория вообще не нужн
G>Есть разные области математики. Одна область — непрерывная метаематика очень далека от компьютеров и специалист в этой области вряд ли сможет написать хорошую программу. G>Другая область — дискретная математика, теория вычислимости, формальные грамматики, теория категорий. Знания этих областей очень пригодились бы любому программисту.
Конечно они полезны, но не необходимы, и точно не сильно помогут в том о чем писал автор темы:
Для меня это звучит дико, поскольку считаю, что без глубокого понимания теории невозможно писать качественное ПО, с поддержкой масштабирования, с адекватной производительностью и т.д.
Да чтобы не было не поняток я сам на старости лет ковыряю как раз то что ты выше описал.
Re[3]: Многие думают, что математика и теория вообще не нужн
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, _d_m_, Вы писали:
___>>Смею тебя заверить, Билл Гейтс не был этаким гением программирования.
L>Те, кто с ним работал, были другого мнения.
Он скорее стратег — как Маршал Жуков, но смог бы Жуков взять живым диверсанта ака волкодав Таманцев? Разницу чуствуешь?
Re[9]: Многие думают, что математика и теория вообще не нужн
Здравствуйте, Ikemefula, Вы писали:
I>Вот студенческий код (1 курс второй семестр последняя лабораторная) — код этот взялся не потому, что студент книгку не может осилить, а потому что еще навыки не прокачаны.
А вот лично мне кажется, что такой код — суть неизбежное следствие дурацкого подхода к преподаванию программирования. Когда сначала студенту дают Управляющие Конструкции, потом Готовые Структуры, потом Забудьте Всё Это Потому Что Теперь Объекты.
SICP как раз даёт понимание в структурной форме, чтобы человек видел устройство программы, а не отдельные операторы.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: Многие думают, что математика и теория вообще не нужн
Здравствуйте, komaz, Вы писали:
K>Есть, наверное, какой-то перечень фундаментальных знаний, которыми желательно владеть каждому программисту, но туда точно не входят конечные автоматы и умение писать компиляторы)
Это очень глубокий и фундаментальный вопрос, который, на мой взгляд, совершенно внезапно получил актуальность в последние годы. Грубо говоря, надо ли учить даты правления всех этих французских Луёв, если любой идиот со смартфоном ответит на такой вопрос за 30 секунд? Зачем учить где Кордильеры а где Анды, если есть гуглмапс, который еще и встроен в яблофон по дефолту? Получается, все находятся в одинаковых условиях — и заучки, и разгильдяи.
С другой стороны, знания зачастую оказываются несводимыми к словарю "название -> описание".
Во-первых, для того, чтобы хоть что-то прочитать, нужно уметь читать. Скажем, лично нас в университете два первых года собсно и учили читать — потому, что стандартный десятиклассник, к примеру, хоть и знает ограниченно греческий алфавит, но прочесть с листа формулы с участием спиноров просто не сможет.
Во-вторых, даже умея читать (то есть понимая отдельные лексемы), нужно еще и разбираться в применяемых идентификаторах. Ок, все непонятные слова можно рекурсивно смотреть в интернете — но скорость чтения будет весьма низкой.
В-третьих, всё-таки знания — это не плоский текст или картинка, это, прежде всего, некая модель в голове. Ну вот написал я вам уравнение Шредингера. Ну, прочитали вы его. Что, внезапно у вас появилось в голове понимание квантовой механики? Построить корректную модель — вот это и есть получение знаний.
Хрен с ними с квантами, давайте вот о программированиии. Я, допустим, упоминаю в разговоре: "здесь может пригодиться R-дерево". Ок, любой невежда может быстренько сгуглить на тему R-деревьев. Но поможет ли ему это понять, действительно ли оно здесь пригодится, т.е. ответить на вопрос, на который нет готового ответа в сети. Для того, чтобы ответить на этот вопрос, нужно реально понять, как устроено R-дерево, как оно натягивается на существующую проблематику, и т.п.
В итоге, новичка этот вопрос запросто отвлечёт на пару месяцев усиленного изучения. Программеру, который имеет опыт применения R-деревьев, для ответа потребуется секунда. Между этими полюсами лежат разные уровни подготовки профессионала — наличие либо отсутствие в голове готовых "строительных блоков", из которых будет строиться модель.
Ок, теперь вернёмся к компиляторам. Вопрос, в итоге, сводится вот к чему: не окажется ли случайно курс разработки компиляторов полезным для формирования "сторонних умений", которые могут быть применимы к широкому классу задач, не связанных напрямую с компиляцией?
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: Многие думают, что математика и теория вообще не нужна!
Здравствуйте, hal9000, Вы писали:
H>Здравствуйте.
H>Заметил, что большинство ИТ-специалистов и программистов с которыми я общался считают, что математика (в частности дискретная математика, которая играет большую роль в теории алгоритмов), теория алгоритмов (в частности асимптотический анализ, конечные автоматы, классы сложности) вообще не нужны современному программисту.
H>Для меня это звучит дико, поскольку считаю, что без глубокого понимания теории невозможно писать качественное ПО, с поддержкой масштабирования, с адекватной производительностью и т.д., если только не идёт речь пожизненном написании быдло-сайтиков или криворукого билинга для какой нибудь шаражки.
H>Нужно ли понимание общих теоретических концепций для тру программирования?
Думаю, что вы правы, но считаю, что под "пониманием общих теоретических концепций" нужно подразумевать не только знание математику и теорию алгоритмов. Большая часть споров по поводу вашего вопроса на самом была спором на тему "программист должен знать только один уровень абстракции или несколько?"
Re[10]: Многие думают, что математика и теория вообще не нуж
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, Ikemefula, Вы писали:
I>>Вот студенческий код (1 курс второй семестр последняя лабораторная) — код этот взялся не потому, что студент книгку не может осилить, а потому что еще навыки не прокачаны. S>А вот лично мне кажется, что такой код — суть неизбежное следствие дурацкого подхода к преподаванию программирования. Когда сначала студенту дают Управляющие Конструкции, потом Готовые Структуры, потом Забудьте Всё Это Потому Что Теперь Объекты.
Я вобще то сказал уже давно, что преподают программуху на данной специальности _очень_ плохо, потому что все основные моменты я лично объяснял повторно.
У чела проблема не с управляющими конструкциями, а с мышлением. С конструкциями проблем нет абсолютно никаких.
Посмотри внимательно на код и посмотри что где делается. После того, как он родил этот алгоритм у него формирутся новое понимание, следующую версию алгоритма он сделает гораздо лучше.
Если ты в целях обучения сообщаешь правильный алгоритм удаления из дерева, то это тоже самое что в школе давать готовые ответы вместо самостоятельных и контрольных работ.
S>SICP как раз даёт понимание в структурной форме, чтобы человек видел устройство программы, а не отдельные операторы.
Т.е. сразу вбить студенту в голову мышление определенного уровня ? Эдак можно и в школе сразу давать математику без арифметики.
Понимание невозможно вложить в голову, это можно сформировать задачами и только задачами. Ничем больше оно не формируется.
Не бывает проблем с конструкциями, бывают преблемы с логическим мышлением.
Сикп это примерно так "бывают R-деревья, делается вот так, вот так и вот так". Нужно вложить в голову более простые вещи, тогда кучка студентов при решении какой то задачи уже сами родят нечто похожее.
Проходит все потому, что контингент в МИТ это уровня олимпиадников, у которых мышление прокачано очень сильно, а вузах попроще нужно чем то компенсировать.
Re[2]: Многие думают, что математика и теория вообще не нужн
Здравствуйте, Sharowarsheg, Вы писали:
S>Для Тру Программирования нужно сначала понимание предметной области.
А еще сначалее нужно умение быстро понимать предметную область. Потому что то понимание, которое нужно, это совсем-совсем особое понимание. Сколько ни говорил с глубоким специалистом в предметной области (не-программистом, ессно) — столько раз убеждался: головой пользоваться не умеет почти никто. Ну не заморачиваются люди выстраиванием у себя в мозгу сколь-нибудь стройной модели. Две штуки, которые отличаются малозначительным атрибутом, для них "ты чо, это же совсем разные вещи, их никак путать нельзя".
Зато две другие штуки, которые связаны отношением "частное-общее" у них сливаются в одну, которая по-разному себя ведёт в зависимости от контекста.
Такому специалисту никакое понимание предметной области не поможет стать программистом. Так и будет в коде всё, как и в голове:
if (a == 0 and b != 0)
{
x = b;
if (a != 0)
x = x + a;
}
else if (a != 0)
{
x = a;
if (b != 0)
x = a + b;
}
else
{
x = a;
if (a == 0)
x = b;
else
x = b + a;
}
Подставьте на место a и b "идентификаторы из предметной области" вроде kolvoDneiOtpuska или urovenVodyVBake и получите реальную программу, написанную таким понимальщиком.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[5]: Многие думают, что математика и теория вообще не нужн
Здравствуйте, Ikemefula, Вы писали: I>Я вобще то сказал уже давно, что преподают программуху на данной специальности _очень_ плохо, потому что все основные моменты я лично объяснял повторно.
Правильно. I>У чела проблема не с управляющими конструкциями, а с мышлением. С конструкциями проблем нет абсолютно никаких.
У чела проблема с тем, что ему не прочитали SICP. I>Если ты в целях обучения сообщаешь правильный алгоритм удаления из дерева, то это тоже самое что в школе давать готовые ответы вместо самостоятельных и контрольных работ.
SICP — не про ответы. SICP — про вопросы. I>Т.е. сразу вбить студенту в голову мышление определенного уровня ? Эдак можно и в школе сразу давать математику без арифметики. I>Понимание невозможно вложить в голову, это можно сформировать задачами и только задачами. Ничем больше оно не формируется. I>Не бывает проблем с конструкциями, бывают преблемы с логическим мышлением. I>Сикп это примерно так "бывают R-деревья, делается вот так, вот так и вот так". Нужно вложить в голову более простые вещи, тогда кучка студентов при решении какой то задачи уже сами родят нечто похожее.
Какие конкретно "более простые вещи" ты хочешь рассказать перед SICP?
I>Проходит все потому, что контингент в МИТ это уровня олимпиадников, у которых мышление прокачано очень сильно, а вузах попроще нужно чем то компенсировать.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[3]: Многие думают, что математика и теория вообще не нужн
Здравствуйте, Sinclair, Вы писали:
S>Это очень глубокий и фундаментальный вопрос, который, на мой взгляд, совершенно внезапно получил актуальность в последние годы. Грубо говоря, надо ли учить даты правления всех этих французских Луёв, если любой идиот со смартфоном ответит на такой вопрос за 30 секунд? Зачем учить где Кордильеры а где Анды, если есть гуглмапс, который еще и встроен в яблофон по дефолту? Получается, все находятся в одинаковых условиях — и заучки, и разгильдяи.
S>С другой стороны, знания зачастую оказываются несводимыми к словарю "название -> описание". S>Во-первых, для того, чтобы хоть что-то прочитать, нужно уметь читать. Скажем, лично нас в университете два первых года собсно и учили читать — потому, что стандартный десятиклассник, к примеру, хоть и знает ограниченно греческий алфавит, но прочесть с листа формулы с участием спиноров просто не сможет. S>Во-вторых, даже умея читать (то есть понимая отдельные лексемы), нужно еще и разбираться в применяемых идентификаторах. Ок, все непонятные слова можно рекурсивно смотреть в интернете — но скорость чтения будет весьма низкой.
S>В-третьих, всё-таки знания — это не плоский текст или картинка, это, прежде всего, некая модель в голове. Ну вот написал я вам уравнение Шредингера. Ну, прочитали вы его. Что, внезапно у вас появилось в голове понимание квантовой механики? Построить корректную модель — вот это и есть получение знаний. S>Хрен с ними с квантами, давайте вот о программированиии. Я, допустим, упоминаю в разговоре: "здесь может пригодиться R-дерево". Ок, любой невежда может быстренько сгуглить на тему R-деревьев. Но поможет ли ему это понять, действительно ли оно здесь пригодится, т.е. ответить на вопрос, на который нет готового ответа в сети. Для того, чтобы ответить на этот вопрос, нужно реально понять, как устроено R-дерево, как оно натягивается на существующую проблематику, и т.п. S>В итоге, новичка этот вопрос запросто отвлечёт на пару месяцев усиленного изучения. Программеру, который имеет опыт применения R-деревьев, для ответа потребуется секунда. Между этими полюсами лежат разные уровни подготовки профессионала — наличие либо отсутствие в голове готовых "строительных блоков", из которых будет строиться модель.
+1 С одной стороны жаль, что мало кто это понимает (например, твой будущий руководитель), с другой стороны хорошо, что это мало кто понимает (например, твои будущие конкуренты).
S>Ок, теперь вернёмся к компиляторам. Вопрос, в итоге, сводится вот к чему: не окажется ли случайно курс разработки компиляторов полезным для формирования "сторонних умений", которые могут быть применимы к широкому классу задач, не связанных напрямую с компиляцией?
Однозначно этот курс окажется полезным! Качество программирования возрастёт в любой области программирования (как минимум бы на уровне небольших кусочков-методов программ).
Re[12]: Многие думают, что математика и теория вообще не нуж
Здравствуйте, Sinclair, Вы писали:
I>>У чела проблема не с управляющими конструкциями, а с мышлением. С конструкциями проблем нет абсолютно никаких. S>У чела проблема с тем, что ему не прочитали SICP.
Т.е. если дать ему SICP то резко вырастет уровень логического мышления ?
I>>Понимание невозможно вложить в голову, это можно сформировать задачами и только задачами. Ничем больше оно не формируется. I>>Не бывает проблем с конструкциями, бывают преблемы с логическим мышлением. I>>Сикп это примерно так "бывают R-деревья, делается вот так, вот так и вот так". Нужно вложить в голову более простые вещи, тогда кучка студентов при решении какой то задачи уже сами родят нечто похожее. S>Какие конкретно "более простые вещи" ты хочешь рассказать перед SICP?
Все предметы обычно изучаются так — сначала даётся нечто конкретное, вроде y=kx+b для прямой а потом дается общее, вроде параметрического уравнения для прямой.
Соответсвенно перед сикп нужно освоить хоть какой ЯП для гарантии что нет проблем в простейшими логическими рассуждениями например и на этом ЯП решть n-задач , простейшие структуры данных, простейшие алгоритмы и тд и тд.
Вот после такой подготовки можно давать общую теорию, которая и есть в SICP.
Т.е. сначала человек разбирается с конкретными случаями, которые по ряду причин проще, сли указателями не перегружены, а потом уже может браться за общие, тут можно хоть сикп, хоть не сикп, главное чтото общее.