Здравствуйте, FR, Вы писали:
FR>Конечно они полезны, но не необходимы, и точно не сильно помогут в том о чем писал автор темы:
FR>
FR>Для меня это звучит дико, поскольку считаю, что без глубокого понимания теории невозможно писать качественное ПО, с поддержкой масштабирования, с адекватной производительностью и т.д.
FR>
FR>Да чтобы не было не поняток я сам на старости лет ковыряю как раз то что ты выше описал.
Всё таки не могу согласится, так как понимание на математическом уровне деревьев, списков, автоматов, комбинаторики, рекурсии просто необходимо для некоторых программ, частей программ. Можно обойтись без математики, но без математического аппарата многие структуры программы окажутся безнадёжно примитивными, так как ты не сможешь без знания математики в голове прокрутить двести лет эволюции и найти оптимальный метод для давно решенной задачи.
Под этими словами по умолчанию подразумевается, что программист подходит к своей работе не как к ремеслу, а как к искусству или науке.
Re[2]: Многие думают, что математика и теория вообще не нужн
Здравствуйте, yumi, Вы писали:
Y>Повод задуматься о том, что ты не в том кругу/окружении и что может быть, стоит его поменять. Все выше перечисленное, это из части обязательного минимума необходимых знаний.
+1
Re[9]: Многие думают, что математика и теория вообще не нужн
Здравствуйте, _d_m_, Вы писали:
___>Поэтому и аналогия получилась некудышной.
Аналогия не точная, но хорошая. Как хороший гонщик справляется с авто без электронных помощников, так и хороший программист способен общатся с машиной "напрямую" на языке ассемблера. Оба примера содержат в себе более близкое общение человека с машиной.
Re[13]: Многие думают, что математика и теория вообще не нуж
Здравствуйте, Ikemefula, Вы писали: I>Т.е. если дать ему SICP то резко вырастет уровень логического мышления ?
Естественно.
I>Вот после такой подготовки можно давать общую теорию, которая и есть в SICP.
Сколько такой подготовки нужно? Рекомендую ознакомится с содержанием программы по предмету "информатика" за 10-11 классы. Тратить ценное время первых семестров на то, чтобы дотянуть тех, кто не учился в средней школе, до уровня тех, кто учился, я считаю бессмысленным. Тем более, что в SICP входит практика — те, кто не видел компьютера, тут же сядут за схему (ок, за питон) и начнут колбасить те самые задачи, которые ты и хотел им дать.
I>Т.е. сначала человек разбирается с конкретными случаями, которые по ряду причин проще, сли указателями не перегружены, а потом уже может браться за общие, тут можно хоть сикп, хоть не сикп, главное чтото общее.
К моменту, когда человек разобрался с "конкретными случаями", давать SICP может быть уже поздно. Получится что-то типа Павла Дворкина, который назубок разобрался с одним конкретным видом программирования, и даже его преподаёт, но такая простая штука как immutability просто не может попасть к нему в мозг. Не проходит сквозь намертво приваренную дифракционную решетку.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[3]: Многие думают, что математика и теория вообще не нужн
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, komaz, Вы писали:
K>>Есть, наверное, какой-то перечень фундаментальных знаний, которыми желательно владеть каждому программисту, но туда точно не входят конечные автоматы и умение писать компиляторы)
S>Это очень глубокий и фундаментальный вопрос, который, на мой взгляд, совершенно внезапно получил актуальность в последние годы. Грубо говоря, надо ли учить даты правления всех этих французских Луёв, если любой идиот со смартфоном ответит на такой вопрос за 30 секунд? Зачем учить где Кордильеры а где Анды, если есть гуглмапс, который еще и встроен в яблофон по дефолту? Получается, все находятся в одинаковых условиях — и заучки, и разгильдяи.
S>С другой стороны, знания зачастую оказываются несводимыми к словарю "название -> описание". S>Во-первых, для того, чтобы хоть что-то прочитать, нужно уметь читать. Скажем, лично нас в университете два первых года собсно и учили читать — потому, что стандартный десятиклассник, к примеру, хоть и знает ограниченно греческий алфавит, но прочесть с листа формулы с участием спиноров просто не сможет. S>Во-вторых, даже умея читать (то есть понимая отдельные лексемы), нужно еще и разбираться в применяемых идентификаторах. Ок, все непонятные слова можно рекурсивно смотреть в интернете — но скорость чтения будет весьма низкой.
S>В-третьих, всё-таки знания — это не плоский текст или картинка, это, прежде всего, некая модель в голове. Ну вот написал я вам уравнение Шредингера. Ну, прочитали вы его. Что, внезапно у вас появилось в голове понимание квантовой механики? Построить корректную модель — вот это и есть получение знаний. S>Хрен с ними с квантами, давайте вот о программированиии. Я, допустим, упоминаю в разговоре: "здесь может пригодиться R-дерево". Ок, любой невежда может быстренько сгуглить на тему R-деревьев. Но поможет ли ему это понять, действительно ли оно здесь пригодится, т.е. ответить на вопрос, на который нет готового ответа в сети. Для того, чтобы ответить на этот вопрос, нужно реально понять, как устроено R-дерево, как оно натягивается на существующую проблематику, и т.п. S>В итоге, новичка этот вопрос запросто отвлечёт на пару месяцев усиленного изучения. Программеру, который имеет опыт применения R-деревьев, для ответа потребуется секунда. Между этими полюсами лежат разные уровни подготовки профессионала — наличие либо отсутствие в голове готовых "строительных блоков", из которых будет строиться модель.
Очевидно что скорость чтения будет экспоненциально зависеть от того, насколько придется углубляться, студенты-второкурсники, зная такие страшные слова как лапласиан, гамильтониан и потенциальная энергия не тратят много времени для понимания уравнения Шрёдингера. Программист, знакомый с B-деревьями, быстро поймет что такое R-дерево, хотя, конечно, далеко не за секунду. В результате вместо простой ситуации наличие-отсутствие знаний/секунда-месяц на осмысление, получается довольно размытая картина.
S>Ок, теперь вернёмся к компиляторам. Вопрос, в итоге, сводится вот к чему: не окажется ли случайно курс разработки компиляторов полезным для формирования "сторонних умений", которые могут быть применимы к широкому классу задач, не связанных напрямую с компиляцией?
Безусловно окажется, и даже не случайно) но нужно все-таки помнить о чем мы говорим — о _необходимости_ этих знаний для написания качественного ПО, как заявляет топикстартер, или об общей полезности для развития ума и сравнительно редкого мгновенного практического выхлопа. Если речь о втором — то тут и спорить нечего, а если о первом — то ну никак не соглашусь, что человек, не знающий отличия LL от LR не может создавать качественные продукты и решать сложные задачи. Безусловно, чем больше строительных блоков в голове, тем лучше, но нет никакой необходимости знать в полном объеме весь computer science
Re[14]: Многие думают, что математика и теория вообще не нуж
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, Ikemefula, Вы писали: I>>Т.е. если дать ему SICP то резко вырастет уровень логического мышления ? S>Естественно.
Это как, задним числом будет преодолен входной барьер ?
I>>Вот после такой подготовки можно давать общую теорию, которая и есть в SICP. S>Сколько такой подготовки нужно? Рекомендую ознакомится с содержанием программы по предмету "информатика" за 10-11 классы.
Я в свое время прорешал вагон школьных задач олмпиадных.
Вот, оцени уровень сложность: дан лабиринт, один вход, много выходов, найти кратчайшие проходы от входа к каждому из выходов.
11 класс. Вот такие детки учатся в мит.
S>К моменту, когда человек разобрался с "конкретными случаями", давать SICP может быть уже поздно. Получится что-то типа Павла Дворкина, который назубок разобрался с одним конкретным видом программирования, и даже его преподаёт, но такая простая штука как immutability просто не может попасть к нему в мозг. Не проходит сквозь намертво приваренную дифракционную решетку.
Это называется разделение труда.
Re[4]: Многие думают, что математика и теория вообще не нужн
Можно реальный пример? В стиле "я не писал компилятор, парсер и т. п., а писал совсем другую вещь — ... — и вот тут-то мне очень пригодился курс компиляторостроения"
З.Ы.: курс компиляторостроения без конечных автоматов, они понятное дело встречаются часто.
... << RSDN@Home 1.2.0 alpha 4 rev. 1138>>
Re[3]: Многие думают, что математика и теория вообще не нужн
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, Sharowarsheg, Вы писали:
S>>Для Тру Программирования нужно сначала понимание предметной области. S>А еще сначалее нужно умение быстро понимать предметную область. Потому что то понимание, которое нужно, это совсем-совсем особое понимание.
Приличная предметная область требует на понимание пару лет минимум.
S> Сколько ни говорил с глубоким специалистом в предметной области (не-программистом, ессно) — столько раз убеждался: головой пользоваться не умеет почти никто.
Для того, чтобы не уметь пользоваться головой, не обязательно быть специалистом в какой-либо области. Это вообще довольно распространенное явление, которое не зависит ни от профессии, ни от специализации.
Re[4]: Многие думают, что математика и теория вообще не нужн
S>>>Для Тру Программирования нужно сначала понимание предметной области. S>>А еще сначалее нужно умение быстро понимать предметную область. Потому что то понимание, которое нужно, это совсем-совсем особое понимание.
S>Приличная предметная область требует на понимание пару лет минимум.
Что за предметные области такие, что просто для понимания требуется "пару лет минимум"? Обычно же достаточно несколько недель + постоянные консультации / контроль со стороны специалиста предметной области. Иными словами, чтоб написать ПО для управления АЭС вовсе не нужно быть доктором физических наук и досконально понимать все физические/химические и т.д. процессы внутри реактора...
S>> Сколько ни говорил с глубоким специалистом в предметной области (не-программистом, ессно) — столько раз убеждался: головой пользоваться не умеет почти никто.
S>Для того, чтобы не уметь пользоваться головой, не обязательно быть специалистом в какой-либо области. Это вообще довольно распространенное явление, которое не зависит ни от профессии, ни от специализации.
Головой можно по-разному пользоваться (как бы смешно это не звучало)... Так же как программист может сказать, что вот тот художник не умеет пользоваться головой только потому, что не понимает каких-то основ алгоритмики, так же и художник может сказать, что тот программист не умеет пользоваться головой потому, что не может изобразить простой натюрморт...
Re[5]: Многие думают, что математика и теория вообще не нужн
Здравствуйте, MescalitoPeyot, Вы писали:
MP>Можно реальный пример? В стиле "я не писал компилятор, парсер и т. п., а писал совсем другую вещь — ... — и вот тут-то мне очень пригодился курс компиляторостроения" MP>З.Ы.: курс компиляторостроения без конечных автоматов, они понятное дело встречаются часто.
Парсеры-то как раз нередко встречаются. И частенько видишь, как люди их пишут в лоб, без знания теории и без применения генераторов парсеров...
Re[4]: Многие думают, что математика и теория вообще не нужн
Здравствуйте, hal9000, Вы писали:
H>Уверен, что человек осиливший теорию суперструн со всеми выкладками, может стать очень продвинутым программером
Уверен, что человек осиливший теорию суперструн со всеми выкладками, мог бы стать очень продвинутым программером, если бы потратил это время на изучение computer science
Re[5]: Многие думают, что математика и теория вообще не нужн
Здравствуйте, gandjustas, Вы писали:
S>>Приличная предметная область требует на понимание пару лет минимум.
G>Пример? G>Какой уровень понмания требуется?
Требуется уровень для полноценной замены спецалиста который проработал n-лет и уволился/умер/заболел/ушел в армию/ушел отпуск по уходу за ребенком/ушел на повышение/ушел на понижение.
Re[5]: Многие думают, что математика и теория вообще не нужн
Здравствуйте, criosray, Вы писали:
S>>Приличная предметная область требует на понимание пару лет минимум. C>Что за предметные области такие, что просто для понимания требуется "пару лет минимум"? Обычно же достаточно несколько недель + постоянные консультации / контроль со стороны специалиста предметной области. Иными словами, чтоб написать ПО для управления АЭС вовсе не нужно быть доктором физических наук и досконально понимать все физические/химические и т.д. процессы внутри реактора...
Несколько недель это смешная цифра. Вот прикинь, работал девелопер в проекте по управлению АЭС 10 лет и спалился по разным причинам. Сколько тебе надо будет времени, что бы спокойно потянуть все задачи которые он мог потянуть ?
Re[6]: Многие думают, что математика и теория вообще не нужн
Здравствуйте, Ikemefula, Вы писали:
S>>>Приличная предметная область требует на понимание пару лет минимум. C>>Что за предметные области такие, что просто для понимания требуется "пару лет минимум"? Обычно же достаточно несколько недель + постоянные консультации / контроль со стороны специалиста предметной области. Иными словами, чтоб написать ПО для управления АЭС вовсе не нужно быть доктором физических наук и досконально понимать все физические/химические и т.д. процессы внутри реактора...
I>Несколько недель это смешная цифра. Вот прикинь, работал девелопер в проекте по управлению АЭС 10 лет и спалился по разным причинам. Сколько тебе надо будет времени, что бы спокойно потянуть все задачи которые он мог потянуть ?
Как это коррелируется с минимально необходимым временем для "понимания предметной области"?
Re[5]: Многие думают, что математика и теория вообще не нужн
Здравствуйте, MescalitoPeyot, Вы писали:
MP>Можно реальный пример? В стиле "я не писал компилятор, парсер и т. п., а писал совсем другую вещь — ... — и вот тут-то мне очень пригодился курс компиляторостроения" MP>З.Ы.: курс компиляторостроения без конечных автоматов, они понятное дело встречаются часто.
Как бы тебе сказать. А что если банан это не банан ?
Re[9]: Многие думают, что математика и теория вообще не нужн
Здравствуйте, mymuss, Вы писали:
НС>>Ну значит стадию перехода от асимптотики к реальному коду ты еще не прошел. Если что, на личности перешел ты первый.
M>Ок, лично с Вами у меня продолжать дискуссию желания нет. Я на личности не переходил и был предельно вежлив.
Вот, смотри, переход на личности с твоей стороны "Вы уверены, что понимаете, что такое О-большое?"
M>PS: На брудершафт с Вами не пили, так что, попрошу не тыкать. Спасибо.
Ути-пути, бедненький
Re[8]: Многие думают, что математика и теория вообще не нужн
Здравствуйте, komaz, Вы писали:
K>Ну ты первый начал про электролобзики и шуруповерты вместо уравнений Максвелла
Это была иллюстрация. А ты пытаешься аналогиями аргументировать.
K>А по теме — так уж ли нужны фундаментальные знания для того, чтобы пользоваться antlr и т.п.?
Фнндаментальные знания нужны, чтобы пользоваться antlr грамотно и там где нужно. Antlr не серебряная пуля, самую сложную часть работы тебе придется сделать самому. Посему, одно дело взять готовую грамматику и с нее отплодить парсер, и совсем другое спроектировать и отладить грамматику собственную.
K> Нельзя ли получить необходимый объем знаний в процессе решения конкретной задачи?
Вот конкретно в случае парсеров, как показывает моя практика, нельзя. Где то в design как то был топик, когда человек убил чуть ли не полгода на собственный парсер, и только тогда у него зачесалось, что что то идет не так.
Re[5]: Многие думают, что математика и теория вообще не нужн
Здравствуйте, MescalitoPeyot, Вы писали:
MP>Можно реальный пример? В стиле "я не писал компилятор, парсер и т. п., а писал совсем другую вещь — ... — и вот тут-то мне очень пригодился курс компиляторостроения"
Парсеры сами по себе встречаются весьма часто. А из, на первый взгляд, экзотики — мне неоднократно пригождался курс "Искусственный интеллект", в частности разделы про экспертные системы, функциональные машины, машины, управляемые данными и т.п. Позволяет, знаешь ли, взглянуть на ряд проблем под очень необычным углом.