Чисто из любопытства — как вы будете решать математически сформулированную задачу без помощи математики? Пример можно? Или как вы без математики докажите что задача неразрешима?
Да, в вузах в других странах похожая проблема тоже. Многие люди получают неплохие оценкци и выпускаются, а при этом знаний почти нет. Но универы в других странах всё же больше заботятся о своей репутации, поэтому критерии приёма и выпуска по жёсче у них. Да и структура классов другая.
Да это даже мелочи. Было ведь множество серьёзных случаев, когда например рентгеновский аппарат давал десятикратную дозу за раз (или больше, я уже не помню) потому что не проставили ограничение мощности. Или когда шасси самолёта не выдвинулось при посадке из-за сильного ветра, и софт думал что самолёт на высоте летит, а не садится. Список довольно длинный. Только в этих индустриях ввели довольно строгий режим разработки и тестирования теперь.
Только вот 100 ваттным лазером вы меня удивили… в россии было наверно?
Да я работаю с целой командой таких вот "программистов", которых наша компания держит через фирму оутсорса для поддержки продуктов. Я когда смотрю на таких людей, у меня седые волосы появляются от мысли, что они каким-то образом могут попасть в команду, которая будет писать софт для автомобилей, мед. обородувания, или других устройств, от которых может зависеть жизнь или здоровье. А некоторые из них потом вероятно могут устроится преподавателями… вот уж ужас...
А основная проблема я считаю в том, что ВУЗы выпускают людей, которые не удовлетворяют даже минимальным требованиям. Каким-то образом они проходят из года в год, и даже сдают дипломы. Почему-то проваливать и исключать студентов не принято… Ну и качество самого образования во многих вузах страдает
Gimp конечно классная вещь, если ничего другого не иметь, но фотошоп давно ушёл далеко вперёд и по функционалу и удобству. Особенно в плане удобства open source к сожалению чаще отстаёт от коммерческого софта, хотя свои проблемы есть везде
Ещё большая проблема в разработке — кривая спецификация задания. Часто клиент сам не знает что и как будет, а команда, которая берётся за разработку не заставляет писать детальное ТЗ. Отсюда и получаются эти самые проблемы, когда вылезают непонятные баги из-за среды, в которой используется продукт. Или не все use cases покрыты, и потом нужно делать костыли, когда в конце оказывается что заказчик забыл указать/хочет поменять одну из главный функций
В этом плане да. В книжках по дизайну много красивых паттернов и воспетие архитектур, а на деле приходится кодить в проекте, написанном по очереди шестью разработчиками независимо друг от друга, которые мало того, что о дизайне не слышали, так ещё и костылей понаделали. А поменять как следует времени нет — сроки и деньги горят. Или ТЗ такое, что никакие паттерны не подойдут, и выкручивайся как хочешь :) Поэтому понимание принципов ООП я ценю обычно больше, чем знание паттернов наизусть. Тем более у меня были примеры, когда человек лепил паттерны куда не попадя, и коверкал ими проект.
Да я тоже за уважение коллег, и если человек пишет код, который идёт в продукцию — буду называть его программистом :) Другое дело что бывают хорошие или плохие профессионалы, и вот тут как раз идёт разделение по знаниям теории.
А есть ещё люди, которые имеют звание программиста на работе, а вот писать код не могут. С такими сложнее — как их называть :)
Наука в computer science вещь вполне практичная кстати. Чтобы написать о производительности или крутости какого-нибудь "открытия", нужно сделать немало опытов и привести доказательства.
Согласен, мы же не разрабатываем продукты в вакууме. В реальности приходится брать во внимание среду, железо, и способы использования продукта пользователями. Плюс не всякие теоритетически крутые штуки будут работать в реальности (кучи Фибоначчи тому пример). И для того чтобы, например, стать хорошим разработчиком сетевых приложений, нужно будет кроме принципов работы сети выучить язык и его интерфейс в сетевой протокол. Но для тех, кто знает как работает сеть это будет намного легче, по сравнению с теми, кто не знает :)
Ни разу не утверждал, что кроме алгоритмов ничего знать не надо. Почему-то все сразу думают об общеизвестных алгоритмах сортировок и обхода графов. Тем менее алгоритмы намного более широкое понятие, чем список известных решений типовых задач. На основе теории вычислений строится всё остальное, и как вы по-настоящему поймёте строение ОС или сети без знания алгоритмов — не совсем понятно.
В сетях например используют множество алгоритмов из теории графов. Как вы разберётесь в STP без затрагивания алгоритма остовного дерева? Как вы будете обсуждать протоколы роутнга без затрагивания Беллмана-Форда? Конечно можно разбираться поверхностно, на уровне "такая ошибка скорее всего показывает проблему там-то", и этого часто достаточно. Но имея более глубокие знания такие вещи будут всёравно очевидны.
Как вы можете узнать принципы работы ОС, не говоря о LRU, FIFO, WSClock, RB-trees и B-Trees? Объясните адресацию памяти в 64-битных система без затрагивания инвертированных таблиц. Новые версии файловых систем всё больше переходят на B-Trees. В ОС вообще множество своих алгоритмов и структур данных. А динамическое программирование используется постоянно.
А безопасность без криптографии? Это разве не алгоритмы?
Говорить об оптимизации и масштабировании, при этом утверждать что это не алгоритмическая задача — вообще смешно, честно говоря. Если понимать как рабоает СУБД, то какие запросы будут работать быстрее, а какие медленнее — вопрос достаточно лёгкий. А разницу между отдельными движками и их настройкой можно узнать в процессе работы довольно быстро.
Все технлогии, какими бы магическими они не казались, основаны на относительно небольшом количестве концепций, многие из которых появились десятки лет назад, и только сейчас начали быть популярными. Зная эти концепции освоить новые технлогии будет намного легче, а также будут очевидны их преимущества и недостатки.
Конечно не всем нужны детальные знания всего этого, и кроме самой теории вычислений нужно знать много другого. Но большинство этих знаний всёравно основывается на той самой теории вычислений — это фундамент всей информатики.
А всякие инструменты и как их использовать можно освоить по ходу работы, и на это как правило не уходит много времени, если есть голова на плечах и багаж знаний :)
Теория вычислений — это основа программирования. Как можно утверждать, что программисту не нужно знать фундамент своей профессии?
Я теперь уверен что вы вообще не читали написанного
Только вот 100 ваттным лазером вы меня удивили… в россии было наверно?
А основная проблема я считаю в том, что ВУЗы выпускают людей, которые не удовлетворяют даже минимальным требованиям. Каким-то образом они проходят из года в год, и даже сдают дипломы. Почему-то проваливать и исключать студентов не принято… Ну и качество самого образования во многих вузах страдает
А как вы собираетесь дать определение кратчайшего пути не используя математики? :)
А есть ещё люди, которые имеют звание программиста на работе, а вот писать код не могут. С такими сложнее — как их называть :)
Есть такая вещь, как теория алгоритмов/вычислений, вот оно и является базой.
В сетях например используют множество алгоритмов из теории графов. Как вы разберётесь в STP без затрагивания алгоритма остовного дерева? Как вы будете обсуждать протоколы роутнга без затрагивания Беллмана-Форда? Конечно можно разбираться поверхностно, на уровне "такая ошибка скорее всего показывает проблему там-то", и этого часто достаточно. Но имея более глубокие знания такие вещи будут всёравно очевидны.
Как вы можете узнать принципы работы ОС, не говоря о LRU, FIFO, WSClock, RB-trees и B-Trees? Объясните адресацию памяти в 64-битных система без затрагивания инвертированных таблиц. Новые версии файловых систем всё больше переходят на B-Trees. В ОС вообще множество своих алгоритмов и структур данных. А динамическое программирование используется постоянно.
А безопасность без криптографии? Это разве не алгоритмы?
Говорить об оптимизации и масштабировании, при этом утверждать что это не алгоритмическая задача — вообще смешно, честно говоря. Если понимать как рабоает СУБД, то какие запросы будут работать быстрее, а какие медленнее — вопрос достаточно лёгкий. А разницу между отдельными движками и их настройкой можно узнать в процессе работы довольно быстро.
Все технлогии, какими бы магическими они не казались, основаны на относительно небольшом количестве концепций, многие из которых появились десятки лет назад, и только сейчас начали быть популярными. Зная эти концепции освоить новые технлогии будет намного легче, а также будут очевидны их преимущества и недостатки.
Конечно не всем нужны детальные знания всего этого, и кроме самой теории вычислений нужно знать много другого. Но большинство этих знаний всёравно основывается на той самой теории вычислений — это фундамент всей информатики.
А всякие инструменты и как их использовать можно освоить по ходу работы, и на это как правило не уходит много времени, если есть голова на плечах и багаж знаний :)
Я теперь уверен что вы вообще не читали написанного