Може ли някой да ми обясни употребата/значението на изучаването на Теория на изчисленията.
Имах курс по същия предмет по време на дипломирането, но не съм учил сериозно.
Намерих също следната връзка, където има достъпна видео лекция.
Може ли някой да ми обясни употребата/значението на изучаването на Теория на изчисленията.
Имах курс по същия предмет по време на дипломирането, но не съм учил сериозно.
Намерих също следната връзка, където има достъпна видео лекция.
Класовете на Shai Simonson са наистина много добри. Слушал съм ги. Както той казва в началната лекция, „Теория на изчисленията“ е изследване на абстрактни понятия. Но тези абстрактни понятия са наистина много важни за по-доброто разбиране на областта на компютърните технологии, тъй като повечето от понятията, с които се занимаваме, имат много абстрактни и логически елементи. Както Джон Сондърс каза в горния отговор, можете да станете програмист, дори добър, ако знаете добре езика за програмиране. Но знанието за това, което се случва отдолу, винаги ще ви прави просветлен. Така че продължете и го научете отново (NB: Разбирам защо не сте го изучавали сериозно в колежа. Повечето от учителите в нашите колежи не са толкова добри в обяснението на тази тема (аз също имах скапан учител), но аз уверявам ви, че учителят тук е най-добрият, който можете да получите,)
Мисля, че всеки студент по компютърни науки трябва да знае част от теорията на изчисленията, дори и вие да не правите никакви изследвания.
Някои концепции са просто универсални и ще ги срещате отново и отново в други курсове. напр. крайни автомати, трябва да ги знаете, когато изучавате алгоритми за съвпадение на низове и компилатори. Друг пример, ще научите някои редукционни алгоритми (преобразуване от един модел в друг модел) в теорията на изчисленията, тези неща ви учат как да мислите абстрактно и алгоритмично.
Най-голямата от всички човешки способности е силата на абстракцията. Това е, което ни отличава от животното. Колкото повече упражняваме тази сила, толкова по-успешни сме в решаването на проблеми.
Играта на шах може да изглежда безполезно забавление за някои и без практическа полза за никого, но в голяма степен дава възможност на играча да мисли напред всеки път, когато трябва да се вземе важно решение.
Освен това разкрива елегантността и простотата, които са скрити под слоевете грозен синтаксис и мозъчно мъртъв код, който преглеждаме всеки ден, само за да си изкарваме прехраната.
Значението на теорията на изчисленията ще зависи от това какво правите с живота си. Ако искате да бъдете компютърен специалист, тогава това е важна основа за бъдещите ви проучвания.
Ако просто искате да бъдете програмист или софтуерен инженер, вероятно никога повече няма да използвате знанията.
В допълнение към полезността на различни инструменти (регулярни изрази, граматика без контекст, държавни машини и т.н.) в ежедневието ви като програмист, един добър теоретичен курс по компютърни науки ще ви научи как да моделирате определени проблеми по начин, по който можете се справят ефективно.
Решенията, които изглеждат умни за хората без обучение в тази дисциплина, ще изглеждат естествени и "правилният път" за хората, които имат. Препоръчвам ви да обърнете голямо внимание на това, което се случва във вашия курс, тъй като той ще ви даде много мощен набор от инструменти, който ще ви помогне като програмист и като абстрактен мислител.
Наистина не е без своите практически аспекти по отношение на софтуерното инженерство.
Например, може да се изкушите да анализирате някакъв език за програмиране като вход към вашата програма с регулярни изрази. Теорията на CS доказва защо това е лоша идея (повечето синтаксиси на езиците за програмиране не са обикновени) и никога не може да бъде преодоляна, независимо колко искате да опитате.
Други примери могат да включват проблеми с NPC и т.н.
По принцип теорията на CS може да ви научи на много важни неща по отношение на разсъжденията. Но също така описва основните ограничения на програмирането и алгоритмите.
„Знай своите граници“
Теорията на изчисленията е нещо като свързваща точка между компютърните науки, лингвистиката и математиката. Ако имате интелектуално любопитство, тогава се изложете на основната теория. Ако просто искате да се потопите леко в това да накарате компютрите да правят определени неща, вероятно можете да го пропуснете. аз? Харесва ми. Но също така харесах топологията, така че може да не съм типичен разработчик в това отношение.
Някои практически примери:
Преди да отделите много време за проблем, ще искате да знаете:
Ако проблемът не може да бъде решен.
Ако има „добро“ (полином) решение, тъй като някои проблеми може да нямат добри“ решения (или поне не такива, които в момента познаваме ;))
(Малко по-малко практично) ще искате да знаете дали проблемът е "по-труден" от други, тоест отнема повече време/пространство.