Por que ir para a pesquisa / ciência da computação teórica?

36

Atualmente, estou começando na universidade [ciência da computação] e temos muitas oportunidades para começar a pesquisar. Antes de encontrar este site, eu não tinha intenção de seguir esse caminho [eu queria trabalhar com a IA, provavelmente desenvolvedor de jogos], mas agora eu posso [ou preciso] fazer uma escolha.

Você pode me convencer a participar desse "mundo"? Quais "segmentos" posso seguir? Existe algo sobre quais tipos de tópicos um cientista da computação ou pesquisador trabalha?

JulioC
fonte
18
Estamos honrados que o site já tenha inspirado você a pensar em teoria! E você veio ao lugar certo, se você quer saber no que um cientista da computação teórico trabalha ... continue lendo e descobrirá!
Ryan Williams
6
Este deve ser um wiki da comunidade.
Dave Clarke
Acabei de entrar hoje e tinha a mesma pergunta ... Eu fiz minha engenharia em engenharia eletrônica, mas enquanto na faculdade comecei a sentir inclinação para o CS ... Nunca tive uma introdução formal à teoria, mas agora estou feliz por ter encontrado este site ... @ Júlio Souza obrigado por fazer esta pergunta. Vou monitorar isso a partir de hoje :)
Alan Turing
@supercooldave o alterou para wiki da comunidade.
JulioC
Epílogo: JulioC tornou-se desenvolvedor de software.
domotorp 22/10

Respostas:

32

Posso relacionar minhas razões como estudante de graduação que se inscreve nos programas de pós-graduação do TCS neste próximo inverno (tão pouco tempo resta!).

  • Há a beleza. Isso não é algo que eu possa explicar (e testemunhei outros matemáticos não explicando). É como "amarelo". Se você ainda não viu, não tenho certeza se poderia lhe comunicar o que é. Mas desde que você se interessou por teoria, suponho que talvez você a experimente.
  • Existe universalidade. Universalidade além da tese de Church-Turing . O TCS em seu núcleo investiga fenômenos de alto e baixo nível na informação - é a "física" da informação. E como a informação é qualitativamente atômica , a teoria da informação tem algo a dizer sobre física (meu professor de QM me disse especificamente que ama a teoria da informação). Tudo isso dito, é algo entre Pure Math e Engineering. Tem a capacidade e flexibilidade de contribuir diretamente para ambos e de contribuir diretamente para ambos. Ainda assim, luta por sua própria fronteira.
  • Existe o escopo. Isso foi sugerido na bala anterior. Informática encontra seu caminho em muitas aplicações diferentes - coisas todos, desde o DHD para startups está interessado em Você não vai encontrar-se. Como fome de financiamento como Matemática Pura. (Você sempre ficará faminto por financiamento.)
  • Existe o desafio. Dê uma olhada em uma lista de problemas em aberto na Ciência da Computação Teórica (e busque uma compreensão deles até o final da investigação). Eles são muito difícil - aqui estão algumas razões por que . Realmente não entendemos o TCS - a maioria de nossas provas se resume a evidências crescentes. Ainda há muito trabalho a fazer!
Ross Snider
fonte
19

De fato, se você decide fazer uma pesquisa em ciência da computação teórica é uma questão de escolha. Mas mesmo lendo as perguntas deste site (como você provavelmente já fez), espero que você tenha uma noção da amplitude, abrangência e beleza do campo. Eu nem sei por onde começar apontando você para fontes que você pode ler para apreciar o tipo de trabalho que os teóricos fazem, mas há uma pergunta neste site que eu acho que pode lhe interessar.

A questão é:

Paul Erdos falou sobre o "Livro", onde Deus guarda a prova mais elegante de cada teorema matemático. Isso até inspirou um livro (que eu acredito que está agora em sua 4ª edição): Provas do livro.

Se Deus tivesse um livro semelhante para algoritmos, quais algoritmos você acha que seriam candidatos?

Atualmente, existem 64 respostas para essa pergunta, cobrindo algoritmos para pequenos problemas, grandes problemas, quebra-cabeças e matemática profunda. Acredito firmemente que, se tudo o que você fez foi examinar esta lista e ler mais sobre qualquer um dos algoritmos que chamam sua atenção, você aprenderia muito sobre o que os cientistas teóricos da computação fazem e por que fazemos isso.

Boa sorte !

Suresh Venkat
fonte
16

A razão pela qual muitos de nós pesquisamos é que achamos que forçar os limites do que é conhecido tanto intelectualmente gratificante quanto agradável. Fazer pesquisas também nos dá liberdade quase sem paralelo para trabalhar em problemas que consideramos significativos e interessantes, e isso nos mantém constantemente desafiados (dos quais gostamos).

O TCS (ao contrário de outros campos) é um estudo matemático da ciência da computação. Você pode trabalhar no aspecto teórico de muitos campos diferentes, desde sistemas distribuídos até aprendizado de máquina. A escolha entre o TCS e outros campos da ciência da computação depende de onde estão seus gostos e habilidades. Se seus interesses e habilidades naturais estão mais na programação ou no design do sistema do que na análise matemática, talvez você não deva entrar no TCS. Por outro lado, se suas habilidades e interesses residem mais nos aspectos matemáticos, você deve considerar o TCS.

Além disso, você nem sempre precisa escolher uma área sobre todas as outras. Muitas pessoas trabalham em problemas dos lados teórico e prático. Isso é comum, por exemplo, no aprendizado de máquina, onde primeiro projetamos e analisamos algoritmos (geralmente a teoria) e depois os testamos no mundo real (design experimental, aplicativos etc.).

Uma boa maneira de descobrir o que você quer fazer é ter aulas em muitas áreas diferentes e, talvez, tentar a indústria e a pesquisa nos seus verões. Ao final de seus estudos, você provavelmente terá uma boa idéia do que deseja fazer.

Lev Reyzin
fonte
Eu realmente gosto de matemática, mas eu amo programação. Talvez eu pudesse encontrar uma maneira de trabalhar com os dois "lados" ao mesmo tempo, como o aprendizado de máquina [que está na área de IA, certo?]. No próximo ano, vou me inscrever em algumas aulas da minha universidade, como AI e Análise de Algoritmos, que podem me ajudar.
JulioC
O aprendizado de máquina (pelo menos da minha perspectiva) não é uma subárea da IA, mesmo que haja alguma sobreposição. Grosso modo, a IA se concentra em resolver problemas que os humanos normalmente resolvem. O aprendizado de máquina se concentra no desenvolvimento de algoritmos e sistemas que alteram o comportamento à medida que veem os dados. Portanto, há claramente sobreposição entre os dois campos, mas eles estão longe de serem os mesmos. O aprendizado de máquina claramente dá às pessoas a oportunidade de fazer teoria e programação, mas tenho certeza de que não é o único subcampo do CS em que é verdadeiro.
Lev Reyzin
11

A teoria da linguagem de programação é divertida para jovens e idosos. Está aplicando lógica ao mundo real. Venha se juntar ao desfile !!

Mais seriamente, para mim, a teoria da linguagem de programação é interessante pelos seguintes motivos:

  • impacto percebido no mundo real: o extenso trabalho de sistema de tipos em Haskell e outras linguagens funcionais, originário de idéias puramente lógicas (Sistema F), influencia significativamente o desenvolvimento de linguagens como Java (seus horríveis genéricos, fechamentos) e Scala (o moderno dia em que a teoria se encontra com o playground infantil).

  • beleza: muitas das ferramentas empregadas na teoria da linguagem de programação são baseadas na lógica. Muito disso decorre da correspondência de Curry-Howard, que demonstra uma estreita conexão entre regras de prova lógica e regras de digitação para linguagens de programação e entre eliminação de cortes na lógica e avaliação em uma linguagem de programação. Dois belos exemplos recentes de aplicações da lógica na pesquisa de linguagem de programação são o extenso trabalho sobre lógica de separação na verificação e a aplicação de idéias de prova com foco no entendimento de conceitos de linguagem de programação, como ordem de avaliação e correspondência de padrões .

  • divertido: você pode fazer programação e teoria ao mesmo tempo, especialmente se estiver formalizando e verificando suas teorias usando um assistente de prova como o Coq.

  • e muitos mais.

Dave Clarke
fonte
11

Uma das principais razões pelas quais eu acho fascinante e vale a pena estudar a teoria da computação (“meu” ramo da ciência da computação teórica) é a seguinte: ela nos fornece uma maneira de investigar algumas questões filosóficas profundas (e às vezes intrigantes).

Um dos fundadores da teoria da computação, Alan Turing, tentou definir o significado de "calcular uma função" para um ser humano equipado com um pedaço de papel, fornecendo uma descrição matemática do processo. Eu não sou o único a pensar que ele foi extremamente bem-sucedido, e as máquinas de Turing provaram ser um modelo preciso de muitos outros processos de computação.

Agora que possuímos uma classe de objetos matemáticos que descrevem cálculos, podemos realmente provar teoremas sobre eles, tentando descobrir o que pode ser calculado e como ele pode ser calculado; descobriu-se imediatamente que muitas funções perfeitamente legítimas não podem ser computadas e que podem ser classificadas de acordo com um grau de desconformidade (algumas funções são apenas "mais desconfortáveis" que outras).

Alguns outros, os primeiros geralmente identificados com Juris Hartmanis e Richard E. Stearns, tentaram descrever matematicamente o que significa uma função (resp., Um problema) ser difícil ou fácil de calcular (resp., Resolver). Existem várias medidas de complexidade segundo as quais a dureza dos problemas pode ser descrita; o mais comum é quanto tempo precisamos para resolvê-los. Alan Cobham e Jack Edmonds foram bem sucedidos na identificação de uma noção razoável de "computação eficiente".

Dentro da estrutura de complexidade computacional, agora podemos provar alguns resultados que são consistentes com nossa noção intuitiva de computação. Meu exemplo favorito é o teorema da hierarquia de tempo: se tivermos mais tempo para calcular, podemos resolver problemas mais difíceis.

O problema central aberto da teoria da complexidade, P vs NP , é apenas uma formalização de outra questão filosoficamente significativa: é realmente mais difícil resolver um problema do que verificar se uma suposta solução está realmente correta? Acredito que vale a pena perguntar e responder a esta pergunta, independentemente de seu significado prático.

Antonio E. Porreca
fonte
+1: gostei :) ps: alguém expressou opiniões semelhantes no blog de Scott .
Kaveh
6

Não podemos "convencê-lo", pois a ciência da computação não é matematicamente melhor que a IA ou qualquer outro campo. Portanto, não podemos realizar uma prova de seu domínio! OMI, é mais uma questão de gosto do que qualquer outra coisa.

Incrível
fonte
11
Eu concordo com você, mas provavelmente ele quer saber por que "você" (ou todos os outros aqui) escolheram esse campo.
MS Dousti 22/09/10
@ Júlio Souza: No título, deve ser "teórico" e não "teórico".
MS Dousti 22/09/10
Não quero saber se é melhor, mas quero saber por que você escolheu esse campo, como disse Sadeq.
JulioC
6

É difícil responder a essa pergunta com certeza, mas há algumas coisas a serem lembradas aqui.

Se você faz carreira como cientista da computação, seu trabalho provavelmente envolverá não apenas o processamento e a estruturação de dados de uma maneira que os torna úteis e eficientes de usar, mas também pensando em como e por que o que você está fazendo funciona, bem como em quais limites ele opera (se não por outro motivo, a não ser entendê-lo o suficiente para implementá-lo). Esse é ESPECIALMENTE o caso da IA ​​/ PNL / IR, que é MUITO intensiva em pesquisa, mesmo se você não estiver na academia. De fato, entrar na IA praticamente garante que você lide pesadamente com problemas "teóricos" e, de fato, pode ser difícil encontrar um emprego sem esse pano de fundo. Portanto, esse pode ser um motivo convincente para você considerá-lo.

Não só isso, mas provavelmente seria muito difícil passar a maior parte de sua vida em qualquer campo CS, onde você teria que manter esse contato íntimo com processos tão delicado e caprichoso (e para não mencionar difícil) e, simultaneamente, manter nenhuma qualquer interesse, mesmo no básico de por que as coisas funcionam. Em outras palavras, suponho que você possa colar as bibliotecas pelo resto da vida, mas se isso não parecer o seu caso, você precisará conhecer pelo menos os fundamentos dos problemas com os quais se relaciona.

Embora participar ativamente da pesquisa da TCS seja uma pergunta que provavelmente só você possa responder, um bom ponto de partida (OMI) é começar com uma visão dos problemas que você está interessado em analisar e partir daí. Você também pode não ter informações suficientes para responder a essa pergunta; portanto, uma maneira melhor de proceder pode ser apenas ver aonde seus interesses o levam.

apc
fonte
Obrigado pela resposta. Eu concordo totalmente com o seu ponto de vista, trabalho em algo apenas para fazê-lo, sem saber por que funciona, como funciona e se eu poderia torná-lo melhor não é o que eu quero. Acho que posso tentar manter meus planos com a IA [ou outra coisa, que é mais como "pesquisa prática"], mas continuarei tentando aprender sobre outros tópicos sobre o TCS.
JulioC
6

O que mais me intriga é a capacidade de aplicar a teoria da ciência da computação a outras disciplinas, especialmente biologia e biologia celular. Se essa noção também o intriga, sugiro que você dê uma olhada no seguinte: um ensaio de Jeannette Wing sobre a importância do Pensamento Computacional ; e um relatório da NSF sobre a aplicação da lente algorítmica em outras disciplinas científicas.

Aaron Sterling
fonte