¿Por qué ir a la informática teórica / investigación?

36

Actualmente estoy comenzando en la universidad [informática] y allí tenemos muchas oportunidades para comenzar a investigar. Antes de encontrar este sitio web, no tenía intención de seguir este camino [quería trabajar con IA, probablemente desarrollador de juegos], pero ahora puedo [o necesito] hacer una elección.

¿Puedes convencerme de unirme a este "mundo"? ¿Qué "segmentos" puedo seguir? ¿Hay algo sobre qué tipo de temas trabaja un científico informático o investigador?

JulioC
fuente
18
¡Nos honra que el sitio ya lo haya inspirado a pensar en teoría! Y has venido al lugar correcto, si quieres saber en qué trabaja un informático teórico ... ¡sigue leyendo y lo descubrirás!
Ryan Williams
66
Esto debería ser wiki comunitario.
Dave Clarke
Me uní hoy y tuve la misma pregunta ... Hice mi ingeniería en ingeniería electrónica, pero mientras estaba en la universidad comencé a sentir inclinación hacia CS ... Nunca tuve una introducción formal a la teoría, pero ahora me alegro de haber encontrado este sitio ... Y @ Júlio Souza gracias por hacer esta pregunta. Voy a monitorear esto desde hoy :)
Alan Turing
@supercooldave lo cambió a wiki de la comunidad.
JulioC
Epílogo: JulioC se convirtió en desarrollador de software.
domotorp

Respuestas:

32

Puedo relatar mis razones como estudiante universitario que se postula a los programas de posgrado de TCS este próximo invierno (¡queda muy poco tiempo!).

  • Ahí está la belleza. Esto no es algo que pueda explicar (y he sido testigo de la falla de otros matemáticos). Es como "amarillo". Si no lo ha visto, no estoy seguro de poder comunicarle lo que es. Pero dado que te has interesado en la teoría, supongo que quizás la experimentes.
  • Hay universalidad. La universalidad más allá de la tesis de la Iglesia-Turing . TCS en su núcleo investiga fenómenos de alto y bajo nivel en la información: es la "física" de la información. Y dado que la información es cualitativamente atómica , la teoría de la información tiene cosas que decir sobre la física (mi profesor de QM me ha dicho específicamente que ama la teoría de la información). Dicho todo esto, está en algún lugar entre Pure Math e Engineering. Tiene la capacidad y flexibilidad de contribuir directamente a ambos, y de ser contribuido directamente por ambos. Aún así, lucha en su propia frontera.
  • Ahí está el alcance. Esto fue insinuado en la bala anterior. La informática se abre camino en muchas aplicaciones diferentes, cosas en las que todos, desde el DHD hasta las nuevas empresas, están interesados. No se encontrará tan hambriento de fondos como Pure Mathematics. (Todavía siempre se encontrará hambriento de fondos).
  • Ahí está el desafío. Eche un vistazo a una lista de problemas abiertos en Ciencias de la Computación Teórica (y persiga su comprensión hasta el final de la investigación). Son muy difíciles, aquí hay algunas razones por las cuales . Realmente no entendemos el TCS: la mayoría de nuestras pruebas se reducen a pruebas crecientes. ¡Queda mucho trabajo por hacer!
Ross Snider
fuente
19

De hecho, si decides investigar en la informática teórica es una cuestión de elección. Pero incluso leer las preguntas en este sitio (como probablemente lo haya hecho) con suerte le dará una idea de la amplitud, alcance y belleza del campo. Ni siquiera sé por dónde empezar al señalarle las fuentes que puede leer para apreciar el tipo de trabajo que hacen los teóricos, pero hay una pregunta en este mismo sitio que creo que podría interesarle.

La pregunta es:

Paul Erdos habló sobre el "Libro" donde Dios guarda la prueba más elegante de cada teorema matemático. Esto incluso inspiró un libro (que creo que ahora está en su cuarta edición): Pruebas del libro.

Si Dios tuviera un libro similar para algoritmos, ¿qué algoritmo (s) crees que sería un candidato (s)?

Actualmente hay 64 respuestas a esta pregunta, que cubren algoritmos para problemas pequeños, problemas grandes, rompecabezas y matemáticas profundas. Creo firmemente que si todo lo que hiciste fue revisar esta lista y leer más sobre cualquiera de los algoritmos que te llaman la atención, aprenderías mucho sobre lo que hacen los científicos teóricos de la informática y por qué lo hacemos.

Buena suerte !

Suresh Venkat
fuente
16

La razón por la que muchos de nosotros fuimos a la investigación es porque encontramos que empujar los límites de lo que se conoce es intelectualmente gratificante y agradable. Investigar también nos brinda una libertad casi incomparable para trabajar en problemas que consideramos significativos e interesantes, y nos mantiene constantemente desafiados (lo que disfrutamos).

TCS (a diferencia de otros campos) es un estudio matemático de la informática. Puede trabajar en el aspecto teórico de muchos campos diferentes, desde sistemas distribuidos hasta aprendizaje automático. La elección entre TCS y otros campos de la informática depende de dónde se encuentran sus gustos y habilidades. Si sus intereses y habilidades naturales residen más en la programación o el diseño del sistema que en el análisis matemático, entonces quizás no debería entrar en TCS. Por otro lado, si sus habilidades e intereses se centran más en los aspectos matemáticos, entonces debe considerar TCS.

Además, no siempre tiene que elegir un área sobre todas las demás. Muchas personas trabajan en problemas tanto desde el lado teórico como práctico. Esto es común, por ejemplo, en el aprendizaje automático, donde primero diseñamos y analizamos algoritmos (a menudo teoría) y luego los probamos en el mundo real (diseño experimental, aplicaciones, etc.).

Una buena manera de descubrir lo que quieres hacer es tomar clases en muchas áreas diferentes, y quizás probar la industria y la investigación en tus veranos. Al final de sus estudios, probablemente tendrá una buena idea de lo que quiere hacer.

Lev Reyzin
fuente
Realmente me gustan las matemáticas, pero me encanta la programación. Tal vez podría encontrar alguna forma de trabajar con ambos "lados" al mismo tiempo, como el aprendizaje automático [que está en el área de IA, ¿verdad?]. El próximo año, postularé a algunas clases en mi universidad, como IA y Análisis de Algoritmos, que pueden ayudarme.
JulioC
El aprendizaje automático (al menos desde mi perspectiva) no es una subárea de IA, a pesar de que hay cierta superposición. En términos generales, la IA se enfoca en resolver problemas que los humanos normalmente resuelven. El aprendizaje automático se centra en el desarrollo de algoritmos y sistemas que cambian el comportamiento a medida que ven los datos. Por lo tanto, existe una clara superposición entre los dos campos, pero están lejos de ser lo mismo. El aprendizaje automático claramente brinda a las personas la oportunidad de hacer teoría y programación, pero estoy seguro de que no es el único subcampo de CS para el que es cierto.
Lev Reyzin
11

La teoría del lenguaje de programación es divertida para jóvenes y mayores. Está aplicando lógica al mundo real. Ven y únete al desfile!

Más en serio, para mí, la teoría del lenguaje de programación es interesante por las siguientes razones:

  • impacto percibido en el mundo real: el extenso trabajo del sistema de tipos en Haskell y otros lenguajes funcionales, originados de ideas puramente lógicas (Sistema F), influye significativamente en el desarrollo de lenguajes como Java (sus genéricos horribles, cierres) y Scala (el moderno día donde la teoría se encuentra con el campo de práctica).

  • belleza: muchas de las herramientas empleadas en la teoría del lenguaje de programación se basan en la lógica. Gran parte se deriva de la correspondencia de Curry-Howard, que demuestra una estrecha conexión entre las reglas de prueba lógica y las reglas de tipeo para lenguajes de programación, y entre la eliminación de cortes en la lógica y la evaluación en un lenguaje de programación. Dos hermosos ejemplos recientes de aplicaciones de la lógica en la investigación del lenguaje de programación son el extenso trabajo sobre la lógica de separación en la verificación y la aplicación de ideas de prueba enfocadas para comprender los conceptos del lenguaje de programación, como el orden de evaluación y la coincidencia de patrones .

  • diversión: puede hacer programación y teoría al mismo tiempo, especialmente si está formalizando y verificando sus teorías utilizando un asistente de prueba como Coq.

  • y muchos más.

Dave Clarke
fuente
11

Una de las razones principales por las que la teoría de la computación ("mi" rama de la ciencia teórica de la computación) me parece fascinante y merece la pena estudiar es la siguiente: nos proporciona una forma de investigar algunas cuestiones filosóficas profundas (y a veces desconcertantes).

Uno de los fundadores de la teoría de la computación, Alan Turing, trató de precisar el significado de "calcular una función" para un ser humano equipado con una hoja de papel, dando una descripción matemática del proceso. No soy el único que piensa que tuvo mucho éxito, y las máquinas Turing demostraron ser un modelo preciso de muchos otros procesos informáticos.

Ahora que poseemos una clase de objetos matemáticos que describen cálculos, podemos probar teoremas sobre ellos, tratando de descubrir lo que se puede calcular y cómo se puede calcular; De inmediato resultó que muchas funciones perfectamente legítimas no se pueden calcular en absoluto, y que se pueden clasificar de acuerdo con un grado de indisputabilidad (algunas funciones son simplemente "más indiscutibles" que otras).

Algunos otros, los primeros generalmente identificados con Juris Hartmanis y Richard E. Stearns, intentaron describir matemáticamente lo que significa que una función (resp., Un problema) sea difícil o fácil de calcular (resp., Resolver). Existen varias medidas de complejidad según las cuales se puede describir la dureza de los problemas; el más común es cuánto tiempo necesitamos para resolverlos. Alan Cobham y Jack Edmonds tuvieron bastante éxito en identificar una noción razonable de "cálculo eficiente".

Dentro del marco de complejidad computacional, ahora podemos probar algunos resultados que son consistentes con nuestra noción intuitiva de cálculo. Mi ejemplo favorito es el teorema de la jerarquía de tiempo: si se nos da más tiempo para calcular, podemos resolver problemas más difíciles.

El problema central abierto de la teoría de la complejidad, P vs NP , es solo una formalización de otra pregunta filosóficamente significativa: ¿es realmente más difícil resolver un problema que verificar si una supuesta solución es realmente correcta? Creo que vale la pena formular y responder esta pregunta, independientemente de su importancia práctica.

Antonio E. Porreca
fuente
+1: le gustó :) ps: alguien expresó opiniones similares en el blog de Scott .
Kaveh
6

No podemos "convencerlo", ya que la informática no es matemáticamente mejor que la IA o cualquier otro campo. ¡Entonces, no podemos llevar a cabo una prueba de su dominio! OMI, es más una cuestión de gustos que otra cosa.

Increíble
fuente
1
Estoy de acuerdo con usted, pero probablemente él quiera saber por qué "usted" (o todos los demás aquí) eligieron este campo.
MS Dousti
@ Júlio Souza: En el título, debe ser "teórico", no "teórico".
MS Dousti
No quiero saber si es mejor, pero quiero saber por qué elegiste este campo, como dijo Sadeq.
JulioC
6

Es difícil responder esa pregunta con certeza, pero hay algunas cosas a tener en cuenta aquí.

Si realiza una carrera como científico de la computación, su trabajo probablemente incluirá no solo procesar y estructurar datos de una manera que sea útil y eficiente de usar, sino también pensar en cómo y por qué funciona lo que está haciendo, así como en qué límites opera (aunque no sea por otra razón que no sea comprenderlo lo suficiente como para implementarlo). Este es el caso ESPECIALMENTE para AI / NLP / IR, que es MUY intensivo en investigación, incluso si no está en la academia. De hecho, entrar en la IA prácticamente garantiza que lidiarás en gran medida con problemas "teóricos", y de hecho puede ser difícil encontrar un trabajo sin esos antecedentes. Entonces esa podría ser una razón convincente por la que lo considerarías.

No solo eso, sino que probablemente sería muy difícil pasar la mayor parte de tu vida en cualquier campo de CS, donde tendrías que mantener un contacto tan íntimo con procesos tan delicados y caprichosos (y por no mencionar difíciles), al mismo tiempo que no interés en los conceptos básicos de por qué funcionan las cosas. En otras palabras, supongo que podría unir las bibliotecas por el resto de su vida, pero si eso no suena como lo suyo, tendrá que tener al menos un conocimiento pasajero de los fundamentos de los problemas que enfrenta.

Si bien participar activamente en la investigación de TCS es una pregunta que probablemente solo usted pueda responder, un buen punto de partida (IMO) es comenzar con una visión de los problemas que le interesa analizar y continuar desde allí. Es posible que ni siquiera tenga suficiente información para responder esa pregunta, por lo que una mejor manera de proceder podría ser simplemente ver a dónde lo llevan sus intereses.

apc
fuente
Gracias por la respuesta. Estoy totalmente de acuerdo con tu POV, trabajar en algo solo haciéndolo, sin saber por qué funciona, cómo funciona y si podría mejorarlo no es algo que quiera. Creo que puedo tratar de mantener mis planes con IA [o algo más, que es más como "investigación práctica"], pero seguiré tratando de aprender sobre otros temas sobre TCS.
JulioC
6

Lo que más me intriga es la capacidad de aplicar la teoría de la informática a otras disciplinas, especialmente la biología y la biología celular. Si esta noción también te intriga, te sugiero que eches un vistazo a lo siguiente: un ensayo de Jeannette Wing sobre la importancia del pensamiento computacional ; y un informe de la NSF sobre la aplicación de la lente algorítmica a otras disciplinas científicas.

Aaron Sterling
fuente