Теория на изчисленията

Може ли някой да ми обясни употребата/значението на изучаването на Теория на изчисленията.

Имах курс по същия предмет по време на дипломирането, но не съм учил сериозно.

Намерих също следната връзка, където има достъпна видео лекция.

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


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


Отговори (8)


Класовете на Shai Simonson са наистина много добри. Слушал съм ги. Както той казва в началната лекция, „Теория на изчисленията“ е изследване на абстрактни понятия. Но тези абстрактни понятия са наистина много важни за по-доброто разбиране на областта на компютърните технологии, тъй като повечето от понятията, с които се занимаваме, имат много абстрактни и логически елементи. Както Джон Сондърс каза в горния отговор, можете да станете програмист, дори добър, ако знаете добре езика за програмиране. Но знанието за това, което се случва отдолу, винаги ще ви прави просветлен. Така че продължете и го научете отново (NB: Разбирам защо не сте го изучавали сериозно в колежа. Повечето от учителите в нашите колежи не са толкова добри в обяснението на тази тема (аз също имах скапан учител), но аз уверявам ви, че учителят тук е най-добрият, който можете да получите,)

person Christy John    schedule 28.12.2009

Мисля, че всеки студент по компютърни науки трябва да знае част от теорията на изчисленията, дори и вие да не правите никакви изследвания.

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

person Yin Zhu    schedule 28.12.2009
comment
@Yin ​​Zhu: лично мен теорията за изчислимостта не ме научи на почти нищо. Беше интересно, но без практическа стойност. Научих държавни машини повече от изучаването на UML, отколкото от изучаването на теорията зад тях. Все пак всекиму неговото. - person John Saunders; 28.12.2009
comment
@John, съгласен съм с теб. За първи път научих държавни машини, когато учех алгоритми. Но курсът по теория на изчисленията има официално третиране на това, което показва друг аспект на знанието. - person Yin Zhu; 28.12.2009
comment
@Yin ​​Zhu: отново, ако се интересувате от това, тогава го научете. Другият аспект представляваше интерес за мен, но нямаше практическа стойност. - 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 може да ви научи на много важни неща по отношение на разсъжденията. Но също така описва основните ограничения на програмирането и алгоритмите.

„Знай своите граници“

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 PhD - като временен служител. - person John Saunders; 28.12.2009
comment
@John Saunders, за съжаление някои хора не подозират - Вижте публикацията 14 април 2009 г. в 16:37 от ATuring от: ming.tv/flemming2.php/__show_article/_a000010-001018.htm - person Liran Orevi; 28.12.2009