¿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"
computer-science
coding
hilal
fuente
fuente
Respuestas:
En realidad no se sabe el algoritmo bien hasta que codificarlo.
fuente
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.
fuente
- Edsger Dijkstra
Tiendo a estar de acuerdo.
fuente
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.
fuente
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.
fuente
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.
fuente
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.
fuente
Tendría que decir "La lógica es importante"
fuente
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.
fuente
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.
fuente
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.
fuente
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.
fuente
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.
fuente
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É.
fuente
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.
fuente