Теория вычислений

Кто-нибудь может объяснить мне важность / важность изучения теории вычислений.

У меня был курс по этому же предмету во время выпуска, но я серьезно не учился.

Я также нашел следующую ссылку, где доступны некоторые видео-лекции.

http://aduni.org/courses/theory/index.php?view=cw


person Avinash    schedule 28.12.2009    source источник


Ответы (8)


Классы Шай Симонсон действительно очень хорошие. Я их слушал. Как он сказал в начальной лекции, «Теория вычислений» - это исследование абстрактных понятий. Но эти абстрактные концепции действительно очень важны для лучшего понимания области вычислений, поскольку большинство концепций, с которыми мы имеем дело, имеют много абстрактных и логических выводов. Как сказал Джон Сондерс в ответе выше, вы можете стать программистом, даже хорошим, если хорошо знаете язык программирования. Но знание того, что происходит внутри, всегда сделает вас просветленным. Так что продолжайте и изучите это снова (NB: я понимаю, почему вы не изучали его серьезно в колледже. Большинство учителей в наших колледжах не очень хорошо объясняют эту тему (у меня тоже был плохой учитель), но я уверяю вас, учитель здесь лучший, что вы можете получить)

person Christy John    schedule 28.12.2009

Я думаю, что каждый студент, изучающий информатику, должен немного знать теорию вычислений, даже если вы не будете проводить никаких исследований.

Некоторые концепции просто универсальны, и вы будете сталкиваться с ними снова и снова на других курсах. Например. конечные автоматы, вам необходимо знать их, когда вы изучаете алгоритмы сопоставления строк и компиляторы. Другой пример: вы изучите некоторые алгоритмы редукции (преобразование одной модели в другую) в теории вычислений, эти вещи научат вас мыслить абстрактно и алгоритмически.

person Yin Zhu    schedule 28.12.2009
comment
@ Инь Чжу: лично меня теория вычислимости почти ничему не научила. Это было интересно, но не имело практической ценности. Я изучил машины состояний больше, изучая UML, чем изучая лежащую в их основе теорию. Все-таки каждому свое. - person John Saunders; 28.12.2009
comment
@ Джон, я согласен с тобой. Я впервые изучил конечные автоматы, когда изучал алгоритмы. Но в курсе теории вычислений есть формальная трактовка этого, которая показывает другой аспект знания. - person Yin Zhu; 28.12.2009
comment
@ Инь Чжу: опять же, если тебе это интересно, то учись. Другой аспект интересовал меня, но не имел практического значения. - person John Saunders; 28.12.2009

Величайшая из человеческих способностей - сила абстракции. Это то, что отличает нас от животного. Чем больше мы пользуемся этой властью, тем успешнее мы решаем проблемы.

Кому-то игра в шахматы может показаться бесполезным времяпрепровождением и никогда никому не пригодится, но дает игроку возможность думать наперед каждый раз, когда необходимо принять важное решение.

Кроме того, он раскрывает элегантность и простоту, которые скрыты за слоями уродливого синтаксиса и мертвого кода, который мы просматриваем каждый день, просто чтобы заработать на жизнь.

person Square Rig Master    schedule 28.12.2009

Важность теории вычислений будет зависеть от того, что вы делаете со своей жизнью. Если вы хотите стать компьютерным ученым, это важная основа для вашей будущей учебы.

Если вы просто хотите стать программистом или инженером-программистом, вы, вероятно, никогда больше не воспользуетесь этими знаниями.

person John Saunders    schedule 28.12.2009
comment
просто программист? Сэр, я призываю вас к 1 и 0 на рассвете! - person Peter Rowell; 28.12.2009
comment
Я считаю, что теория вычислений важна для любого серьезного программиста / разработчика программного обеспечения. Это что-то вроде изучения геометрии, чтобы стать архитектором; есть инструменты, которые помогут вам выполнять свою работу, но хорошо знать, почему это так работает. - person orokusaki; 28.12.2009
comment
@orokusaki: если вам нравится знать, почему все работает, то вперед. Я хочу сказать, что я никогда не использовал ничего из этого CS-материала за последние 30 лет, и не ожидаю, что буду делать это и в следующие 30 лет. - person John Saunders; 28.12.2009

Помимо полезности различных инструментов (регулярных выражений, контекстно-свободных грамматик, конечных автоматов и т. Д.) В повседневной жизни программиста, хороший теоретический курс информатики научит вас моделировать определенные проблемы таким образом, чтобы вы могли эффективно справляться.

Решения, которые кажутся разумными людям, не имеющим навыков в этой дисциплине, будут казаться естественными и «правильным путем» тем, у кого есть знания. Я рекомендую вам уделять пристальное внимание тому, что происходит в вашем курсе, поскольку это даст вам очень мощный набор инструментов, который поможет вам как программисту и как абстрактному мыслителю.

person Noufal Ibrahim    schedule 28.12.2009

Это действительно не без его практических аспектов в отношении разработки программного обеспечения.

Например, у вас может возникнуть соблазн проанализировать какой-либо язык программирования в качестве входных данных для вашей программы с помощью регулярных выражений. Теория CS доказывает, почему это плохая идея (синтаксис большинства языков программирования не является регулярным), и ее невозможно преодолеть, как бы вы ни старались.

Другие примеры могут включать проблемы с NPC и т. Д.

По сути, CS Theory может научить вас многим важным вещам в отношении рассуждений. Но он также описывает фундаментальные ограничения программирования и алгоритмов.

«Знай свои пределы»

person Willi Ballenthin    schedule 28.12.2009

Теория вычислений - это своего рода стержень между компьютерными науками, лингвистикой и математикой. Если у вас есть интеллектуальное любопытство, откройте для себя основную теорию. Если вы просто хотите слегка погрузиться в то, чтобы заставить компьютеры делать определенные вещи, вы, вероятно, можете пропустить это. Мне? Я люблю это. Но мне также понравилась топология, так что я не могу быть типичным разработчиком в этом отношении.

person Joe Mabel    schedule 28.12.2009

Несколько практических примеров:

Прежде чем тратить много времени на решение проблемы, вам нужно знать:

  • Если проблема не может быть решена.

  • Если есть "хорошее" (полиномиальное) решение, поскольку некоторые проблемы могут не иметь хорошие "решения (или, по крайней мере, не те, о которых мы в настоящее время знаем;))

  • (Немного менее практично) вы захотите узнать, является ли проблема «сложнее», чем другая, то есть требует больше времени / места.

person Liran Orevi    schedule 28.12.2009
comment
@Liran Orevi: Думаю, я прожил защищенную жизнь - мне никогда не предлагали решить проблему, которая оказалась неразрешимой. Это никогда не было моей работой. Если бы я подозревал, что проблема неразрешима, в мою задачу не входило бы доказывать это - если бы мы вообще потрудились доказать это, мы бы наняли доктора философии CS - в качестве временного сотрудника. - person John Saunders; 28.12.2009
comment
@John Saunders, к сожалению, некоторые люди не подозревают - проверьте сообщение от 14 апреля 2009 г. @ 16:37, автор: ming.tv/flemming2.php / __ show_article / _a000010-001018.htm - person Liran Orevi; 28.12.2009