Кто-нибудь может объяснить мне важность / важность изучения теории вычислений.
У меня был курс по этому же предмету во время выпуска, но я серьезно не учился.
Я также нашел следующую ссылку, где доступны некоторые видео-лекции.
Кто-нибудь может объяснить мне важность / важность изучения теории вычислений.
У меня был курс по этому же предмету во время выпуска, но я серьезно не учился.
Я также нашел следующую ссылку, где доступны некоторые видео-лекции.
Классы Шай Симонсон действительно очень хорошие. Я их слушал. Как он сказал в начальной лекции, «Теория вычислений» - это исследование абстрактных понятий. Но эти абстрактные концепции действительно очень важны для лучшего понимания области вычислений, поскольку большинство концепций, с которыми мы имеем дело, имеют много абстрактных и логических выводов. Как сказал Джон Сондерс в ответе выше, вы можете стать программистом, даже хорошим, если хорошо знаете язык программирования. Но знание того, что происходит внутри, всегда сделает вас просветленным. Так что продолжайте и изучите это снова (NB: я понимаю, почему вы не изучали его серьезно в колледже. Большинство учителей в наших колледжах не очень хорошо объясняют эту тему (у меня тоже был плохой учитель), но я уверяю вас, учитель здесь лучший, что вы можете получить)
Я думаю, что каждый студент, изучающий информатику, должен немного знать теорию вычислений, даже если вы не будете проводить никаких исследований.
Некоторые концепции просто универсальны, и вы будете сталкиваться с ними снова и снова на других курсах. Например. конечные автоматы, вам необходимо знать их, когда вы изучаете алгоритмы сопоставления строк и компиляторы. Другой пример: вы изучите некоторые алгоритмы редукции (преобразование одной модели в другую) в теории вычислений, эти вещи научат вас мыслить абстрактно и алгоритмически.
Величайшая из человеческих способностей - сила абстракции. Это то, что отличает нас от животного. Чем больше мы пользуемся этой властью, тем успешнее мы решаем проблемы.
Кому-то игра в шахматы может показаться бесполезным времяпрепровождением и никогда никому не пригодится, но дает игроку возможность думать наперед каждый раз, когда необходимо принять важное решение.
Кроме того, он раскрывает элегантность и простоту, которые скрыты за слоями уродливого синтаксиса и мертвого кода, который мы просматриваем каждый день, просто чтобы заработать на жизнь.
Важность теории вычислений будет зависеть от того, что вы делаете со своей жизнью. Если вы хотите стать компьютерным ученым, это важная основа для вашей будущей учебы.
Если вы просто хотите стать программистом или инженером-программистом, вы, вероятно, никогда больше не воспользуетесь этими знаниями.
Помимо полезности различных инструментов (регулярных выражений, контекстно-свободных грамматик, конечных автоматов и т. Д.) В повседневной жизни программиста, хороший теоретический курс информатики научит вас моделировать определенные проблемы таким образом, чтобы вы могли эффективно справляться.
Решения, которые кажутся разумными людям, не имеющим навыков в этой дисциплине, будут казаться естественными и «правильным путем» тем, у кого есть знания. Я рекомендую вам уделять пристальное внимание тому, что происходит в вашем курсе, поскольку это даст вам очень мощный набор инструментов, который поможет вам как программисту и как абстрактному мыслителю.
Это действительно не без его практических аспектов в отношении разработки программного обеспечения.
Например, у вас может возникнуть соблазн проанализировать какой-либо язык программирования в качестве входных данных для вашей программы с помощью регулярных выражений. Теория CS доказывает, почему это плохая идея (синтаксис большинства языков программирования не является регулярным), и ее невозможно преодолеть, как бы вы ни старались.
Другие примеры могут включать проблемы с NPC и т. Д.
По сути, CS Theory может научить вас многим важным вещам в отношении рассуждений. Но он также описывает фундаментальные ограничения программирования и алгоритмов.
«Знай свои пределы»
Теория вычислений - это своего рода стержень между компьютерными науками, лингвистикой и математикой. Если у вас есть интеллектуальное любопытство, откройте для себя основную теорию. Если вы просто хотите слегка погрузиться в то, чтобы заставить компьютеры делать определенные вещи, вы, вероятно, можете пропустить это. Мне? Я люблю это. Но мне также понравилась топология, так что я не могу быть типичным разработчиком в этом отношении.
Несколько практических примеров:
Прежде чем тратить много времени на решение проблемы, вам нужно знать:
Если проблема не может быть решена.
Если есть "хорошее" (полиномиальное) решение, поскольку некоторые проблемы могут не иметь хорошие "решения (или, по крайней мере, не те, о которых мы в настоящее время знаем;))
(Немного менее практично) вы захотите узнать, является ли проблема «сложнее», чем другая, то есть требует больше времени / места.