¿es importante la codificación? [cerrado]

9

¿Es importante la codificación para ser bueno en informática? ¿Se debe implementar el algoritmo para conocerlo bien?

Recuerdo el idioma de un profesor cs que " nunca codifico"

hilal
fuente
32
Le preguntas a un grupo de programadores si la codificación es importante ... es posible que no obtengas una respuesta imparcial.
Rachel
25
Con el debido respeto al idioma de su profesor, si él no escribe código, no está calificado para enseñar a otros cómo escribir código. Si su enseñanza es puramente teórica, aún se beneficiaría de tener habilidades de codificación.
Robert Harvey
19
¿Tomarías lecciones de natación de alguien que no podía nadar?
Steven A. Lowe
55
@ Steven A. Lowe: creo que el profesor no nadador enseña fisiología acuática, no nada. Aún así, si no nada, dudaría que sepa cómo se siente la narcosis por nitrógeno.
Javier
44
@Javier: lo más probable es que esté enseñando demoliciones bajo el agua, pero ni siquiera tiene certificación SCUBA. El término técnico para personas así (aparte de "profesor") es "poseur" ;-)
Steven A. Lowe

Respuestas:

27

En realidad no se sabe el algoritmo bien hasta que codificarlo.

Steven A. Lowe
fuente
3
esto no es necesariamente cierto, uno puede entender un algoritmo y aplicarlo a una situación o problema sin realmente codificarlo.
aggietech
10
@aggietech: Creo que la palabra clave aquí es "bien".
Robert Harvey
2
@aggietech, Robert tiene razón. Puedo repetir los algoritmos, pero cuando realmente trato de hacer que funcionen, descubro cuánto tengo que aprender al respecto.
3
si estás hablando de for-loops y bubble-sort, entonces no es gran cosa, pero hay una gran diferencia entre leer un libro sobre el algoritmo genético y realmente resolver problemas del mundo real con él
Steven A. Lowe
2
@ Steven, sí, la complejidad tiene mucho que ver con eso.
19

La codificación no es importante para su profesor, pero debe tener en cuenta que no se le paga por HACER cosas. Se le paga por DECIR cosas (y ESCRIBIR cosas).

Soy un ex profesor de matemáticas, así que entiendo bien esta dinámica.

Si quieres seguir su camino y ser un científico de la computación teórico, entonces sí, la codificación es de menor importancia. Pero si lo hace, recuerde mantener la humildad, sabiendo que su salario se paga con los recursos ganados por aquellos que optaron por HACER las cosas.

Eric Wilson
fuente
3
La voz de la experiencia. Este es el mejor resumen de profesorado que creo haber visto.
TehShrike
1
Sí, y agregaría que necesita practicar el "hacer" si va a enseñar a otros a "hacer" bien.
Beth Whitezel
@ BitOff: Estoy de acuerdo, pero el "si" también es un "solo si". Un profesor que nunca codifica no tiene negocios en el desarrollo de software de enseñanza, pero puede ser perfectamente adecuado para enseñar, digamos, teoría de la complejidad. En este caso, lo que les está enseñando a los estudiantes es cómo probar teoremas, por lo que el único requisito es que necesita tener práctica para probar teoremas (no codificación).
ShreevatsaR
@ShreevatsaR Sí, estoy de acuerdo. Y en realidad no soy tan estricto con el hecho de que codifican mucho en la práctica. Los buenos programadores rara vez son buenos maestros. Si el maestro conoce sus puntos semanales, puede compensarlo. Tenemos un programa local que atrae a personas de la industria al aula. El maestro es un experto en enseñanza, puede codificar y sabe cómo extraer la información de la persona de la industria para el beneficio de los estudiantes.
Beth Whitezel
16

La informática no tiene más que ver con las computadoras que la astronomía con los telescopios

- Edsger Dijkstra

Tiendo a estar de acuerdo.

ElGringoGrande
fuente
2
Ok, pero ¿cómo se relaciona esto con la pregunta?
Robert Harvey
2
"¿Es importante la codificación para ser bueno en informática?" Si una computadora no está relacionada, ¿cómo podría ser importante la codificación física de la computadora?
ElGringoGrande
1
@Robert Harvey: la informática no se trata explícitamente de computadoras, y muchos astrónomos pasan poco tiempo mirando a través de lentes de vidrio. Algunos solo analizan los resultados. La mitad de los descubrimientos importantes en la programación de computadoras se conocían antes de que la computadora llegara a existir.
Orbling
2
@Robert Harvey: la informática simplemente no se trata de cómo programar, es la ciencia de la computación. Fuera de la codificación binaria pura, utiliza un lenguaje, que es una abstracción, para implementar las teorías y los hallazgos de la informática. Hay muchas ideas en ciencias de la computación (por ejemplo, computación cuántica) que la programación no puede realizar completamente. Todo lo que digo es que todas las ideas de la informática pueden expresarse completa y elegantemente sin utilizar un lenguaje de programación. Nombra uno que no pueda.
ElGringoGrande
3
@Orbling: Muy cierto. Por ejemplo, recuerde que Turing inventó la noción de la máquina universal de Turing incluso antes de que se creara la primera computadora electrónica. ¿El hecho de que no haya escrito toneladas de código lo convierte en un informático incompetente?
mipadi
11

Si está hablando de ser un académico de informática pura que se especializa en conceptos abstractos y fundamentales de informática, entonces no necesariamente.

Para hacer una analogía: esto es como preguntar si todos los científicos de cohetes de la NASA deberían volar en el espacio para ser un "buen científico de cohetes". Por supuesto no. Ser astronauta es parte de la industria de los vuelos espaciales, y una parte muy práctica, pero eso no significa que los científicos terrestres no sean tan importantes a su manera.

Dicho esto, probablemente sea una buena idea APLICAR el algoritmo que creó, si no lo escribe en un lenguaje de programación real. En este sentido, puede pensar en el diseño de algoritmos como una rama de las matemáticas.

Mesas Bobby
fuente
1
Creo que es justo decir que todos los científicos de cohetes de la NASA tienen una base sólida en la ciencia de cohetes y una experiencia práctica y profunda en ingeniería mecánica y eléctrica. Ah, y generalmente también saben cómo escribir código.
Robert Harvey
3
Creo que han calculado trayectorias muchas veces, no solo teorizaron sobre cómo.
3
+1, agregaría otro ejemplo: no es necesario tener experiencia en la elaboración del vino para ser un gran somellier (o como se llame a los chicos de cata).
Jas
2
@Jas: terrible analogía. Los informáticos no son los receptores del producto final. Ellos son los enólogos.
doppelgreener
1
@Axidos No, no, son los productores de uva .
Mark C
9

La codificación no es súper importante para ser un verdadero científico de la computación. Y pensar en código puede restringir el pensamiento mientras buscan desarrollar conceptos abstractos útiles. La mayoría de los codificadores excelentes no tienen las habilidades intelectuales para analizar algoritmos complejos o desarrollar conceptos como lenguajes de programación, algoritmos de búsqueda avanzada y clasificación, teoría de autómatas finitos, teoría de computación distribuida, R-Trees, protocolos de tolerancia a fallas, protocolos de comunicación confiables, digital algoritmos de procesamiento de señales, teoría criptográfica, análisis de rendimiento y optimización, almacenamiento en caché eficiente, reducción de mapas, protocolos de seguridad confiables, etc. Los excelentes codificadores e ingenieros informáticos generalmente pueden usar estas teorías en los sistemas que están tratando de construir y hacerlo de manera bastante efectiva, pero ese es realmente el ámbito del ingeniero de sistemas informáticos o programador informático.

La codificación es de vital importancia para ser un programador informático. También es útil comprender cómo codificar los conceptos abstractos útiles producidos por los informáticos en código de trabajo.

Un gran problema en la informática es que a menudo tienen que encontrar soluciones a los problemas matemáticos que tienen poca utilidad para resolver los problemas de programación actuales. Incluso si codificaran una solución, nadie realmente podría usarla. Piensa en la teoría del procesamiento de señales digitales. Fue inventado por personas como Fourier, Hilbert y Shannon, pero la aplicación a los problemas de DSP computarizados no fue ampliamente posible hasta hace unos 20 años.

El gran problema en la educación informática es que la mayoría de las personas que enseñan los informáticos no se convertirán en informáticos. Pero demasiados informáticos no entienden esto. La codificación puede no ser importante para ellos, pero si usted está en su clase, seguramente será importante para usted.

Otro gran problema en la educación informática es que muchos verdaderos científicos informáticos carecen de la experiencia industrial para ser útiles en la enseñanza del desarrollo de software. Básicamente están tratando de enseñar algo que realmente no saben. Eso hace que pierdan credibilidad. Las cosas que son importantes en un entorno industrial a menudo no se registran con algunos de estos científicos informáticos.

La codificación larga y corta es importante para la mayoría de las personas que se convierten en "informáticos" porque la mayoría de esas personas se convertirán en programadores e ingenieros de sistemas informáticos.

Jay Godse
fuente
Excelente respuesta, directo al corazón del problema. El problema es que necesita aprender ambos: Ciencias de la Computación e Ingeniería de Software relevantes para la industria. La mayoría de las universidades enseñan una mejor que la otra, generalmente la primera: no es demasiado fácil lograr la segunda ya que una universidad es inherentemente un instituto de investigación, que promueve la primera y tiene poco que ver con la segunda. Este es un problema en la mayoría de los campos prácticos.
Orbling
3

Depende del subcampo en el que se encuentre el profesor.

Cualquier persona competente en análisis numérico es probablemente un genio de Fortran. Cualquier profesor de IA codificará en Lisp o Prolog o algo así.

En algunas de las áreas más matemáticas, realmente no hay necesidad de codificar. Todavía sería un poco sospechoso, yo mismo.

David Thornley
fuente
2

Suena como un tipo de tipo de matemática discreta ... solo en las matemáticas y la teoría detrás de la informática. Tome lo que estos tipos de profesores tienen que decir con un grano de sal.

Steven Striga
fuente
55
Soy entusiasta de las matemáticas y adicto a los algoritmos. Siempre disfruto codificando. Sin embargo, los algoritmos están detrás de la codificación. 1 bolígrafo y 1 papel son suficientes para los algoritmos y también la teoría de la computación, creo. Lo que hago hoy en día es solo pensar y escribir algoritmos pero no codificar
hilal
55
Tome lo que dice cualquier profesor con un grano de sal. Si es un tipo de matemática discreta, tómalo en serio cuando habla de matemática discreta, no cuando habla de programación o ingeniería de software.
David Thornley
1
Los chicos de matemáticas discretas se encuentran entre los más importantes en el campo, la teoría es implementada por codificadores, no es necesario implementarla para demostrar que es correcta. Una pizca de sal de hecho.
Orbling
@Orbling Y tome lo que dicen los que programan (un grupo amplio) con una dosis similar de juicio suspendido y sentido común.
Mark C
@ Mark C: Bueno, sí, exhortaría a todos a que tomen todo lo que digan cualquiera con esas dosis.
Orbling
2

Tendría que decir "La lógica es importante"

John Hartsock
fuente
2
Ok, pero ¿cómo se relaciona esto con la pregunta?
Robert Harvey
2

Puede salirse con la suya al comprender la teoría solamente, pero siempre descubrí que entendía los algoritmos y 1000 veces mejor después de haberlos codificado (clasificación de burbujas frente a Quicksort, por ejemplo, es genial conocer el Big-O pero verlo en la práctica con grandes datos -sets le da una cierta apreciación del mundo real para medir la complejidad computacional).

Una cosa interesante que he encontrado es que cuanto más estudias los aspectos teóricos de la informática, más fácil se vuelve la codificación. En algún momento dejas de pensar en las cosas en un idioma en particular, sino que las ves como los conceptos más amplios de la ciencia informática.

Kurtis
fuente
2

Esto es como preguntar si todos los profesores de inglés deberían ser capaces de escribir películas, series de televisión, novelas, obras de teatro y poemas en mi opinión. Del mismo modo, imagine un profesor de matemáticas que nunca usa números para una idea igualmente extravagante. Es decir que hay algunos elementos básicos que dan cierta importancia a la codificación para poder enseñar informática básica. Por lo tanto, el profesor debe conocer la sintaxis básica del lenguaje y cómo escribir programas tan sofisticados como los cursos que el profesor está enseñando. Si el profesor está enseñando sobre el diseño del compilador y nunca antes escribió un compilador, este sería un problema importante. Imagine a un chef cocinando un pastel que nunca ha cocinado o comido un pastel anteriormente. Aye Carumba.

Si bien puedo ver algunas ventajas de implementar un algoritmo para conocerlo, dudo que sea un requisito. Después de todo, uno podría preguntarse ¿hasta dónde llega el agujero de la implementación para comprender cómo se implementa un algoritmo? Por ejemplo, ¿alguien tiene que tomar algún algoritmo e implementarlo bajo varios paradigmas como la programación procesal, orientada a objetos y funcional para realmente conocerlo? ¿Tienen que saber cómo los compiladores traducen todo el código y mueven los bits a nivel de electrón por electrón para ser más pedantes al respecto?


Sin embargo, "nunca codifico" tiene una implicación de contener el pasado y el presente. También puede haber una suposición implícita de "codificación" como algo bajo que está debajo del profesor para otra forma de ver la declaración que puede tener un tono bastante negativo que puede no funcionar bien en algunos círculos.

JB King
fuente
3
Los profesores de inglés deben saber cómo escribir guiones de películas si están enseñando a otros cómo escribir guiones de películas. Pero todos los profesores de inglés deberían ser capaces de escribir una muy buena tesis, si no un libro real.
Robert Harvey
2
@Robert Harvey: El profesor del OP no dijo que no puede codificar, solo que no lo hace. Podría ser un informático teórico que pasa la mayor parte de su tiempo investigando. Como señaló JB King, mientras no esté dando conferencias sobre, por ejemplo, diseño de compiladores o ingeniería de software, podría muy bien ser experimentado y competente en su campo.
mipadi
@Robert Harvey: Creo que @mipadi tiene razón allí, el profesor acaba de decir "nunca codifico " , no es que sea incapaz.
Orbling
@JB King, @Orbling: apostaría a que la cita es una traducción, así que no la analice en exceso literalmente.
Javier
@Javier: Bien podría ser, en cuyo caso sería aún menos claro.
Orbling
2

Su profesor puede tener razón un poco, ya que para ser profesor no necesita codificar, pero sabe mucho sobre la teoría. Pero eso no funcionará fuera de los perímetros de la universidad.

Manoj R
fuente
1

A pesar de ser un desarrollador de software profesional, obtuve un título en Ingeniería Mecánica.

Puede ser un buen diseñador mecánico con muy poca experiencia en la construcción y mecanizado de piezas, dejando ese trabajo a los maquinistas. Pero saber cómo construir y mecanizar piezas lo convertirá en un ingeniero significativamente mejor, porque puede predecir las dificultades relacionadas con la fabricación y el montaje de lo que esté diseñando.

Lo mismo vale para el software. Un "codificador" es un maquinista o técnico, mientras que un ingeniero de software es, bueno, el ingeniero. Para muchos lugares, una persona hace ambos trabajos. No es imposible, y para algunos asuntos muy abstractos, una posición de "solo ingeniería" podría funcionar.

Pero para la gran mayoría, no hay absolutamente ningún beneficio en negarse a codificar.

whatsisname
fuente
2
Pero, como dijiste, eres ingeniero mecánico y estás hablando de ingeniería de software . Los ingenieros construyen cosas. Pero el profesor en cuestión enseña informática la ciencia .
mipadi
1

A menos que esté contemplando y termine el problema de detención, siempre hay un uso para la codificación en todos los aspectos de la informática.

La única clase de CS que tomé sin ninguna programación fue la teoría. Me imagino que hay muchos físicos que dicen: "Nunca experimento", pero probablemente también son los que dicen: "Nunca descubro nada". Y me sorprendería si les importara.

Peter Turner
fuente
1
En mi licenciatura en Informática (con una universidad entre los 10 mejores a nivel internacional, por lo que no es algo lamentable), diría que al menos un tercio de mis clases no tenían programación alguna. La computación es mucho más que código.
Orbling
Ok, bueno, aparentemente también fui a una de las diez mejores universidades, incluso podríamos haber ido a la misma universidad y haber tomado diferentes clases en función de nuestros propios gustos o disgustos u obtener profesores de un tipo u otro al azar.
Peter Turner
0

Como estudiante de informática, creo que al principio es mejor comprender los conceptos que involucran el desarrollo de software. Una vez que haya aprendido la idea detrás del software y cómo interactúa con una computadora, es hora de comenzar a codificar y tratar problemas de implementación específicos.

Esto es como las "Excepciones de software", al principio solo las manejas porque hiciste algo que no estaba permitido. Luego, cuando los aprenda, comience a hacer lo mismo con su código para hacerlo más detallado.

Bueno, creo que las personas que no se preocupan por conceptos como los programadores que usan Excepciones como un flujo de trabajo normal en sus aplicaciones. Ellos saben CÓMO pero realmente no entienden POR QUÉ.

Guiman
fuente
-6

Tengo otro idioma para tu profesor:

Los que pueden, hacen, los que no pueden, enseñar.

OMI, hablar es barato. Cualquiera puede hablar sin parar sobre la "teoría" y llamarla "informática". Pero hasta que se ponga en práctica, la teoría no es muy útil porque no hay forma de validarla. Tomaría la opinión de un profesor sobre algo mucho más en serio si supiera que realmente ha resuelto un problema particular en el código que si solo está regurgitando la 'teoría' que puede o no tener evidencia de respaldo para respaldar su punto de vista.

Gran maestro B
fuente
66
Einstein, Aristóteles, Webster, Ayn Rand, Thoreau, Confucio y Booker T. Washington fueron maestros. Qué declaración sin educación.
JeffO
44
-1 Por un comentario enormemente insultante para los maestros. Oft citó lo sé, pero siempre es ridículo. El comentario original de George Bernard Shaw fue "El que puede, hace. El que no puede, enseña". de Man and Superman, 1903 : también dijo: "Para mí, la única esperanza de la salvación humana reside en la enseñanza". y fue cofundador de la London School of Economics (LSE), por lo que juzgas su punto de vista.
Orbling
2
Einstein nunca realizó un experimento físico en su vida: describió algunos experimentos de pensamiento, que fueron realizados por otros y (con una excepción) salieron exactamente como lo predijo. ¿Diría que Einstein no tuvo un "logro sustancial fuera del aula"? ¿Por qué supones que sólo porque el profesor no ha implementado nada directamente utilizable por los usuarios finales, que no tiene, digamos, investigado un nuevo algoritmo que se utiliza por los programadores en el campo? De hecho, ¡parece que incluso asumes que el trabajo del profesor es enseñar a los estudiantes cómo codificar !
ShreevatsaR
3
El tipo, muchos de mis profesores de informática (MIT) eran impresionantes y han contribuido enormemente a la sociedad, y que hacen "hacen cosas en su campo" - un montón! Pero su campo tiene muy poco que ver con la codificación, y codifican muy raramente, si es que lo hacen. (En serio, ¿espera que alguien que trabaja en computación cuántica escriba código para computadoras cuánticas que ni siquiera existen?) Parece que tiene una visión muy limitada de la informática. (Recuerde que es equipo de ciencia , no la ingeniería .)
ShreevatsaR
2
@GrandmasterB: Si un profesor de ciencias de la computación se enfoca en la teoría de la computación, es muy probable que rara vez tenga que escribir código. Eso no significa que no esté haciendo nada en su campo, ¡es probable que esté publicando artículos sobre teoría computacional! Estás combinando programación con informática .
mipadi