¿Cuál es la diferencia entre informática, programación y codificación?

La codificación es una palabra para la programación que es popular hoy en día.

La programación es el término clásico para la codificación.

La informática es el estudio atemporal de lo que es o no es posible para un programa.

De acuerdo, un poco de explicación: la programación y la codificación son lo mismo, pero la informática es algo diferente . La informática está muy relacionada con las matemáticas, ya que con frecuencia se basa en pruebas rigurosas para establecer teoremas sobre lo que se puede lograr o no mediante un algoritmo que funciona, por ejemplo, en el equivalente a una máquina de Turing. (Función computable)

Por ejemplo, existe el resultado recientemente celebrado de que la determinación de si un número es primo se puede calcular en tiempo polinómico, que es principalmente de valor teórico porque la prueba constructiva implica un algoritmo que es mucho más lento que los más probabilísticos y prácticos. (Prueba de primalidad AKS)

Sin embargo, la informática también está aliada con las ciencias, particularmente la física, especialmente en lo que se refiere a los aspectos prácticos de la ingeniería, por ejemplo, cuando se trata de investigación sobre computación cuántica. A veces esto puede difuminarse en los campos de la ingeniería eléctrica y la ingeniería informática. (Computación cuántica)

He hablado sobre este tema muchas veces. Una cosa importante a tener en cuenta es que las personas diferentes a veces usan los mismos términos para significar cosas ligeramente diferentes. Usaré las definiciones que generalmente son reconocidas por profesionales en el campo y definidas por las dos principales sociedades técnicas en el campo de la computación: la Asociación para Maquinaria de Computación y la Sociedad de Computación IEEE. La mayoría de las universidades con programas educativos en el campo de la computación obtienen su terminología y conceptos de las dos sociedades mencionadas. Por ejemplo, esas sociedades producen programas de educación modelo en informática, ingeniería informática e ingeniería de software, así como ciencia de la información y tecnología de la información.

La informática es el estudio de todos los fenómenos que rodean a las computadoras. Por ejemplo, lo que las computadoras son y no son capaces de hacer, algoritmos para resolver problemas simples o complejos con las computadoras (por ejemplo, la mejor forma de clasificar datos), técnicas para seleccionar, diseñar y utilizar computadoras, la ética de la informática, lo legal problemas asociados con la informática, etc. Un científico informático podría estar estudiando nuevos tipos de diseños informáticos o desarrollar nuevos lenguajes de programación o probar que un algoritmo particular es más rápido o más lento que otro o idear una mejor manera de lograr la seguridad en los sistemas de software o idear una forma de presentar gráficos e imágenes. en una pantalla de computadora (esto implica muchas matemáticas y es más difícil de lo que piensas). El campo de la inteligencia artificial es una rama importante de la informática centrada en hacer que las computadoras se comporten de manera humana. La informática tiene fundamentos en matemática e ingeniería eléctrica, aunque el campo de la ingeniería informática está generalmente más centrado en las partes que requieren un amplio conocimiento de la ingeniería eléctrica, mientras que los estudios avanzados de informática dependen más de un amplio conocimiento de las matemáticas. Una observación secundaria interesante es que lo que hemos aprendido sobre algoritmos y computadoras de la informática ha sido de gran ayuda en otros campos. En biología, por ejemplo, ahora sabemos que el ADN es, esencialmente, el programa que le dice a un organismo cómo crecer y funcionar. Nuestro conocimiento de la informática también se ha beneficiado de lo que hemos aprendido en otros campos, lo que demuestra lo importante que es para un profesional en cualquier campo, especialmente un investigador, aprender una amplia gama de cosas y no limitarse a una rama estrecha. del conocimiento.

Una vez escribí un artículo afirmando que la esencia de la informática está estudiando los procesos. Es decir, estudiar cómo suceden las cosas: los procedimientos para lograr cosas (es decir, algoritmos). Esto es lo que distingue a la informática de las matemáticas y la ingeniería eléctrica y es el nuevo fenómeno que ha llevado a avances en biología, física y otros campos. Sin embargo, el campo de la informática se ha desarrollado de tal manera que abarca muchas otras cosas.

Cuando las ciencias de la computación se imparten en el nivel secundario o universitario, a menudo se centran solo en los aspectos básicos básicos de la implementación de algoritmos en las computadoras, es decir, en la programación, y no en el alcance más amplio descrito anteriormente.

La ingeniería de software es un campo que no mencionó, pero lo definiré aquí porque es importante. Es la aplicación de los principios informáticos y de ingeniería al diseño y desarrollo de sistemas intensivos en software. Menciono esto porque se podría pensar en la ingeniería de software como una rama de la informática que se centra en la aplicación del conocimiento desarrollado por el informático. También es el campo más amplio del que forman parte la programación y la codificación. La ingeniería de software tiene fundamentos en informática e ingeniería informática, así como en ingeniería de sistemas. Algunos científicos informáticos piensan que la ingeniería de software es parte de la informática, mientras que otros dicen que combina la informática con la ingeniería informática y la ingeniería de sistemas. Esta es una objeción por la que los académicos podrían luchar batallas, pero para el mundo real, la clave para tener en cuenta es que la informática es la teoría y la ingeniería del software es la práctica. Tenga en cuenta también que muchos programas y cursos académicos de “ciencias de la computación” enseñan muchos temas fundamentales de ingeniería de software porque, de hecho, son una parte de la ciencia de la computación que es relativamente fácil de explicar y que les da a las personas una buena comprensión de lo que hacen las computadoras y cómo ellos lo hacen.

Para resumir los dos anteriores: la informática desarrolla nuevas formas de resolver problemas con las computadoras, mientras que la ingeniería de software realmente construye soluciones utilizando ese conocimiento, y lo hace de una manera que produce sistemas de software robustos, confiables y confiables. (De vuelta en la antigua Roma, cuando los ingenieros (civiles) construían puentes, los romanos requerían que los ingenieros se pararan debajo del puente mientras los soldados cruzaban sobre él. Esta era una manera de asegurar que los ingenieros construyeran un puente realmente sólido. Un ingeniero de software sería capaz de hacer algo comparable en relación con el software que él o ella desarrolla. En otras palabras, crean software realmente sólido).

La programación es la implementación de un algoritmo escribiendo un programa de computadora. Es una habilidad básica de nivel básico necesaria para la ingeniería de software. Los programas son implementaciones de algoritmos, por lo que también es una habilidad básica de nivel básico para la informática. Es el proceso de tomar lo que se conoce sobre un problema (requisitos, restricciones, etc.) y lo que se necesita en el camino de una solución e implementar esa solución mediante el diseño y la escritura de programas de computadora. Es una parte importante y fundamental de la ingeniería de software. Sin embargo, está lejos de todo lo que un verdadero ingeniero de software necesita saber. Por ejemplo, supongamos que se le asignó el trabajo de escribir el software para un nuevo sistema de control de tráfico aéreo. Necesitaría saber mucho más que solo cómo diseñar y escribir un programa. Necesitaría saber cómo diseñar un sistema de control de tráfico aéreo efectivo, necesitaría saber algo sobre cómo hacer sistemas de software de alta complejidad, robustos, compatibles y mantenibles de esta complejidad y magnitud (varios millones de líneas de código), y cómo desarrollar algo este complejo en un período de tiempo razonable (puede requerir la participación de miles de programadores junto con personas en ingeniería de calidad, gestión de configuración, ingeniería de sistemas, logística y muchos otros campos).

La codificación es en realidad escribir el código o el programa. La programación implica mucho más, como diseñar, probar y comprender los requisitos. El lugar exacto en el que trazas la línea entre un codificador y un programador puede depender de para quién trabajas, pero lo esencial es que el codificador escribe el código (el programa), mientras que el programador hace el trabajo más amplio. La ingeniería de software, a su vez, implica más que eso, como diseñar sistemas complejos, desarrollar métodos para verificar que esos sistemas sean correctos y administrar proyectos para implementar esos sistemas. Una vez más, dónde trazas la línea entre un ingeniero de software y un programador puede depender de dónde trabajas. Muchos empleadores “inflan” los títulos de trabajo, de modo que un codificador tiene el título de “programador” y un programador tiene el título de “ingeniero de software”. Desafortunadamente, esto lleva a algunas personas a pensar que saben más de lo que saben. Aprendí esta lección temprano en mi vida cuando me pidieron que administrara un gran proyecto de software y tuve que calcular con precisión el costo, el cronograma y la cantidad de personas que necesitaríamos para hacer el trabajo. De repente me di cuenta de que mi doctorado en informática, con énfasis en el desarrollo de software, no me había preparado para una tarea de esta magnitud.

Aquí hay una analogía. Considera construir una casa. Un arquitecto puede diseñar la casa, determinar las partes y los procedimientos correctos, y producir un plan de la casa en el que pueda confiar que funcionará. Un supervisor de construcción puede tomar ese plan y dirigir un equipo de trabajadores para construir la casa. El ingeniero de software es esencialmente el arquitecto y el supervisor de construcción del software. Un enmarcador, un electricista o un albañil pueden seguir el plan y las instrucciones para construir partes de la casa. Eso corresponde aproximadamente al codificador o alguna de las otras habilidades básicas de desarrollo de software. El programador está en algún lugar entre el codificador y el ingeniero de software, tal vez capaz de diseñar y construir programas simples, pero no puede diseñar y construir algo tan complejo como un sistema de control de tráfico aéreo.

La informática es una solución de tareas científicas: por ejemplo, cómo aumentar el algoritmo de clasificación …
La programación es una creación de sistemas reales: arquitectura, algoritmos …
La codificación es una realización de la arquitectura de existencia. Solo necesita escribir código para esto …

Informática: es de primer nivel. Que incluye el estudio de programación, redes, informática, web, inteligencia artificial, matemáticas y muchos otros subcampos.

Programación / codificación: lo mismo. Solo un subcampo de la informática. En el que aprende a interactuar con la computadora a través del software o puede decir instrucciones codificadas. La computadora sigue tus órdenes exactamente como escribes en el programa. La computadora es como un tonto tonto. Tienes que enseñarle a la computadora cada paso de la programación / codificación. Si eres un buen programador / codificador, puedes hacer magia.

More Interesting

¿Cuáles son los trabajos de los ingenieros informáticos, incluida la programación?

¿Cuándo fue la última vez que hiciste algo solo porque lo aprendiste de una clase de informática / ingeniería, curso o título? ¿Qué era?

¿Por qué elegiste la ingeniería informática? ¿Cuál es el alcance actual en el mercado?

¿La ingeniería informática es débil en comparación con las telecomunicaciones?

¿Qué busca el comité de admisiones de ECE en UT Austin en los posibles candidatos?

¿Existen cursos de informática que enseñen a los no codificadores los conceptos básicos de los componentes de hardware, los aspectos estructurales / organizativos del software, etc.?

¿Cómo se usa el aprendizaje automático en óptica?

¿Cuáles son las maestrías en ingeniería que se enfocan en biología después de terminar la ingeniería informática de BE?

¿Cuáles son las ventajas y desventajas (si las hay) del Sistema Operativo Robot (ROS)?

¿Debo elegir Ingeniería Informática o Negocios con Ingeniería Eléctrica?

¿Qué tan buena es la Universidad de New Brunswick en Canadá para Ingeniería en Computación?

¿Cuál de los siguientes institutos es mejor para la ingeniería informática: BITS Hyderabad, BITS GOA, BIT Mesra, Thappar University, IIIT, Allahabaad, NIT Kurukshetra o NIT Jamshedpur?

¿Qué es bueno, ingeniería informática o ingeniería mecánica? ¿Por qué?

¿Cuántas partes tiene una computadora?

¿Debería estar estudiando ingeniería informática solo porque me encantan las computadoras?