{"id":1518,"date":"2022-03-29T19:20:01","date_gmt":"2022-03-29T18:20:01","guid":{"rendered":"https:\/\/blog.uclm.es\/josejesuscastro\/?p=1518"},"modified":"2024-09-17T17:39:10","modified_gmt":"2024-09-17T17:39:10","slug":"dando-ordenes-a-las-maquinas","status":"publish","type":"post","link":"https:\/\/blog.uclm.es\/josejesuscastro\/2022\/03\/29\/dando-ordenes-a-las-maquinas\/","title":{"rendered":"Dando \u00f3rdenes a las m\u00e1quinas"},"content":{"rendered":"\n<p>Los m\u00f3viles, tabletas, port\u00e1tiles y ordenadores o computadores personales que usamos en nuestro d\u00eda a d\u00eda, en esta publicaci\u00f3n nos referiremos a ellas como m\u00e1quinas, no dejan de ser un conjunto de circuitos integrados en chips conectados entre s\u00ed, que nos permiten hacer una gran variedad de cosas en nuestras actividades cotidianas. En el \u00e1mbito laboral y escolar son un instrumento de trabajo y en el personal son un instrumento de relaci\u00f3n, desarrollo personal y de entretenimiento. Sin duda alguna estas m\u00e1quinas o dispositivos inform\u00e1ticos son hoy d\u00eda unas herramientas fundamentales en nuestra vida diaria.&nbsp;<\/p>\n\n\n\n<p>La generalidad de uso de los dispositivos inform\u00e1ticos o m\u00e1quinas, necesario por otra parte si se considera la diversidad de problemas o \u00e1reas en los cuales son aplicables, implica un trabajo adicional cuando se quiere que resuelvan problemas particulares. Este trabajo consiste en decirle a la m\u00e1quina o dispositivo qu\u00e9 es lo que debe hacer. Nos tenemos que comunicar con ellas, para ordenarle que es lo que deben hacer.&nbsp;<\/p>\n\n\n\n<p>Al acto de convertir la funcionalidad que posee una aplicaci\u00f3n en instrucciones u \u00f3rdenes para la m\u00e1quina se le denomina <strong>programar<\/strong>. Por medio de la programaci\u00f3n ordenamos a la m\u00e1quina c\u00f3mo se debe de comportar.&nbsp;Y al conjunto de instrucciones y \u00f3rdenes que contienen la funcionalidad deseada para la aplicaci\u00f3n que se est\u00e1 desarrollando se le denomina <strong>programa<\/strong>. Cada aplicaci\u00f3n que ejecutamos en nuestra m\u00e1quina es un programa con instrucciones que debe ejecutar. Instrucciones que ser\u00e1n ejecutadas de manera secuencial, con cambios en el flujo de ejecuci\u00f3n causados por las propias instrucciones o por eventos que se produzcan de manera externa.<\/p>\n\n\n\n<p>Pero no olvidemos que una m\u00e1quina est\u00e1 formada por un conjunto de chips, circuitos y componentes electr\u00f3nicos, la pregunta que nos podemos hacer en este punto es \u00bfc\u00f3mo podemos comunicarnos o dar instrucciones a ese conjunto de elementos electr\u00f3nicos que conforman la m\u00e1quina? <\/p>\n\n\n\n<p>Estos circuitos trabajan con dos niveles de tensi\u00f3n, por lo que se dicen que son digitales, simboliz\u00e1ndose dichos niveles, por abstracci\u00f3n, con los n\u00fameros 0 y 1. De este modo, las acciones que pueden realizar un dispositivo inform\u00e1tico consistir\u00e1n en un conjunto de cadenas de 0 y 1. Un programa consistir\u00e1 por tanto en un conjunto de instrucciones formadas por cadenas de 0 y 1. A ese sistema de c\u00f3digos directamente interpretable por la m\u00e1quina se le denomina&nbsp;<strong>lenguaje m\u00e1quina<\/strong>.&nbsp;<\/p>\n\n\n\n<p>Cada m\u00e1quina tiene su propio lenguaje m\u00e1quina con el que se puede programar, que es espec\u00edfico para la estructura interna de la m\u00e1quina. Es decir, una m\u00e1quina solo puede reconocer estas instrucciones o c\u00f3digos de operaciones programada para \u00e9l.&nbsp;Aunque todos los lenguajes m\u00e1quina dispondr\u00e1n de un conjunto de instrucciones similares (operaciones simples, operaciones aritm\u00e9ticas, decisiones l\u00f3gicas y operaciones de entrada\/salida). Por tanto, una m\u00e1quina solo podr\u00e1 reconocer estas instrucciones o c\u00f3digos de operaciones programada para ella.<\/p>\n\n\n\n<p>Los programas en lenguaje m\u00e1quina se ejecutan muy eficientemente, ya que el programador los redacta espec\u00edficamente para los circuitos que los han de interpretar y ejecutar, y es directamente interpretable por el procesador central, no requiere de transformaciones previas para ser ejecutado. Sin embargo, la programaci\u00f3n en lenguaje m\u00e1quina es un trabajo dif\u00edcil y engorroso para el hombre, necesitando \u00e9ste conocer la arquitectura f\u00edsica de la m\u00e1quina con cierto detalle. La programaci\u00f3n en lenguaje m\u00e1quina, en palabras de John Backus, era&nbsp;<em>un arte oscuro, una materia arcana, solo al alcance de unos pocos que comenzaron a considerarse como miembros de una clase sacerdotal guardiana de ciertas habilidades y misterios demasiado complejos para los mortales normales, que se opon\u00edan a ning\u00fan cambio revolucionario que pudiese hacer la programaci\u00f3n tan simple que cualquiera pudiera realizarla<\/em>.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-style-large is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Los lenguajes de programaci\u00f3n de alto nivel pretenden democratizar la tarea de programar los ordenadores<\/p>\n<\/blockquote>\n\n\n\n<p>No obstante, el objetivo era ese: \u201cdemocratizar la tarea de programar los ordenadores\u201d, reducir el periodo de formaci\u00f3n de los programadores y hacer esta tarea m\u00e1s f\u00e1cil, alej\u00e1ndola para ello de la m\u00e1quina y acerc\u00e1ndola al hombre, permitiendo que no fuera necesario conocer la arquitectura para poder elaborar los programas. El primer avance que se hace en esta direcci\u00f3n es por medio del uso de una notaci\u00f3n simb\u00f3lica o mnem\u00f3nica, para representar cada instrucci\u00f3n o c\u00f3digo de operaci\u00f3n de la m\u00e1quina. Estas claves mnemot\u00e9cnicas eran m\u00e1s f\u00e1ciles de recordar que los c\u00f3digos num\u00e9ricos, pero por el contrario requer\u00edan que, una vez establecida la secuencia de instrucciones en mnem\u00f3nico que solucionaban el problema, fueran traducidos a lenguaje m\u00e1quina. A este lenguaje se le denomin\u00f3&nbsp;<strong>lenguaje ensamblador<\/strong>.&nbsp;<\/p>\n\n\n\n<p>Al existir una correspondencia estrecha, generalmente uno a uno, entre las claves del lenguaje ensamblador y los c\u00f3digos de las operaciones de las m\u00e1quinas, la programaci\u00f3n contin\u00faa estando pr\u00f3xima a la m\u00e1quina y sigue siendo un proceso minucioso y complicado. En este contexto, se hace necesaria la creaci\u00f3n de un lenguaje lo m\u00e1s cercano posible al hombre que permita expresar las distintas acciones que se pretend\u00eda que la m\u00e1quina realizara, son los&nbsp;<strong>lenguajes de alto nivel<\/strong>.<\/p>\n\n\n\n<p>La creaci\u00f3n y desarrollo de un lenguaje de alto nivel implica definir: (1) su vocabulario o l\u00e9xico, es decir el conjunto de palabras del lenguaje junto con sus categor\u00edas; (2) su estructura o sintaxis, es decir las reglas que establecen c\u00f3mo construir frases v\u00e1lidas del lenguaje usando los elementos del vocabulario; y (3) su significado o sem\u00e1ntica, es decir determinar el significado o interpretaci\u00f3n de cada una de las construcciones y frases del lenguaje.&nbsp;<\/p>\n\n\n\n<p>En la creaci\u00f3n y desarrollo de estos lenguajes juega un papel fundamental la Ling\u00fc\u00edstica, la Teor\u00eda de los Lenguajes y las Gram\u00e1ticas, y m\u00e1s concretamente las investigaciones del ling\u00fcista norteamericano Noam Chomsky, y su&nbsp;<strong><em>Teor\u00eda de las Gram\u00e1ticas Transformacionales<\/em><\/strong><em>,&nbsp;<\/em>que es la piedra angular de la ling\u00fc\u00edstica matem\u00e1tica. Sus estudios sobre las gram\u00e1ticas, su tipolog\u00eda y su utilidad para generar todas las oraciones de un lenguaje proporcionaron una herramienta esencial para el estudio y la formalizaci\u00f3n de los lenguajes de programaci\u00f3n de alto nivel y lo que es m\u00e1s importante hacia la sistematizaci\u00f3n y estructuraci\u00f3n del proceso de transformaci\u00f3n de los programas escritos en lenguaje de alto nivel, interpretable por los humanos, al lenguaje m\u00e1quina que es el que puede ejecutar la m\u00e1quina. Este proceso de transformaci\u00f3n se puede realizar por medio de un compilador o mediante un int\u00e9rprete, pero esto es otro tema\u2026&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"660\" height=\"659\" data-id=\"1520\" src=\"https:\/\/blog.uclm.es\/josejesuscastro\/wp-content\/uploads\/sites\/53\/2022\/03\/14608079139804.jpg\" alt=\"\" class=\"wp-image-1520\" style=\"aspect-ratio:1\" srcset=\"https:\/\/blog.uclm.es\/josejesuscastro\/wp-content\/uploads\/sites\/53\/2022\/03\/14608079139804.jpg 660w, https:\/\/blog.uclm.es\/josejesuscastro\/wp-content\/uploads\/sites\/53\/2022\/03\/14608079139804-300x300.jpg 300w, https:\/\/blog.uclm.es\/josejesuscastro\/wp-content\/uploads\/sites\/53\/2022\/03\/14608079139804-150x150.jpg 150w, https:\/\/blog.uclm.es\/josejesuscastro\/wp-content\/uploads\/sites\/53\/2022\/03\/14608079139804-624x623.jpg 624w\" sizes=\"auto, (max-width: 660px) 100vw, 660px\" \/><figcaption class=\"wp-element-caption\">Noam Chomsky, padre de la <strong><em>Teor\u00eda de las Gram\u00e1ticas Transformacionales<\/em><\/strong><\/figcaption><\/figure>\n<\/figure>\n\n\n\n<p>As\u00ed que podemos concluir que los miles de lenguajes de programaci\u00f3n de alto nivel que existen en la actualidad, que permiten programar las aplicaciones que usas en tu m\u00f3vil, tablet y port\u00e1til u ordenador personal, as\u00ed como los compiladores e int\u00e9rpretes asociados que permiten que puedan ejecutarse en esos dispositivos tienen, entre otras, su base y fundamento en los conocimientos de la Teor\u00eda de Lenguajes y las Gram\u00e1ticas.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-default\"><a href=\"https:\/\/blog.uclm.es\/josejesuscastro\/wp-content\/uploads\/sites\/53\/2022\/03\/Infografia_PL_JJCastroSchez.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"1024\" src=\"https:\/\/blog.uclm.es\/josejesuscastro\/wp-content\/uploads\/sites\/53\/2022\/03\/Infografia_PL_JJCastroSchez-624x1024.png\" alt=\"\" class=\"wp-image-1535\" srcset=\"https:\/\/blog.uclm.es\/josejesuscastro\/wp-content\/uploads\/sites\/53\/2022\/03\/Infografia_PL_JJCastroSchez-624x1025.png 624w, https:\/\/blog.uclm.es\/josejesuscastro\/wp-content\/uploads\/sites\/53\/2022\/03\/Infografia_PL_JJCastroSchez-183x300.png 183w, https:\/\/blog.uclm.es\/josejesuscastro\/wp-content\/uploads\/sites\/53\/2022\/03\/Infografia_PL_JJCastroSchez-768x1261.png 768w, https:\/\/blog.uclm.es\/josejesuscastro\/wp-content\/uploads\/sites\/53\/2022\/03\/Infografia_PL_JJCastroSchez-935x1536.png 935w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/a><figcaption class=\"wp-element-caption\">Infograf\u00eda realizada para el proyecto <strong><a href=\"https:\/\/cienciasmasletrasfecyt.es\/\">Ciencias + Letras=CLAP (Ciencias y ling\u00fc\u00edstica: Aplicaciones pr\u00e1cticas) FCT-20-15816<\/a><\/strong>,&nbsp;financiado por el Ministerio de Ciencia e Innovaci\u00f3n en la Convocatoria de Ayudas para el Fomento de la Cultura Cient\u00edfica, Tecnolog\u00eda y de la Innovaci\u00f3n<\/figcaption><\/figure>\n\n\n\n<p>En los estudios del Grado de Ingenier\u00eda Inform\u00e1tica aprender\u00e1s a solucionar problemas, usando un pensamiento computacional, programando soluciones en lenguajes de alto nivel que luego ser\u00e1n traducidas a lenguaje m\u00e1quina para que sean ejecutadas por las m\u00e1quinas, empleando la tecnolog\u00eda disponible para ello en todo el proceso. En la asignatura de Procesadores de Lenguajes conocer\u00e1s qu\u00e9 hay tras el dise\u00f1o de un lenguaje de alto nivel y qu\u00e9 ocurre cuando lo compilas o interpretas pero tambi\u00e9n aprender\u00e1s a dise\u00f1ar lenguajes espec\u00edficos de un dominio y a construir sus procesadores asociados orientados a la soluci\u00f3n de problemas. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Los m\u00f3viles, tabletas, port\u00e1tiles y ordenadores o computadores personales que usamos en nuestro d\u00eda a d\u00eda, en esta publicaci\u00f3n nos referiremos a ellas como m\u00e1quinas, no dejan de ser un conjunto de circuitos integrados en chips conectados entre s\u00ed, que nos permiten hacer una gran variedad de cosas en nuestras actividades cotidianas. En el \u00e1mbito [&hellip;]<\/p>\n","protected":false},"author":85,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13,4],"tags":[],"class_list":["post-1518","post","type-post","status-publish","format-standard","hentry","category-icc","category-pl"],"_links":{"self":[{"href":"https:\/\/blog.uclm.es\/josejesuscastro\/wp-json\/wp\/v2\/posts\/1518","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.uclm.es\/josejesuscastro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.uclm.es\/josejesuscastro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.uclm.es\/josejesuscastro\/wp-json\/wp\/v2\/users\/85"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.uclm.es\/josejesuscastro\/wp-json\/wp\/v2\/comments?post=1518"}],"version-history":[{"count":3,"href":"https:\/\/blog.uclm.es\/josejesuscastro\/wp-json\/wp\/v2\/posts\/1518\/revisions"}],"predecessor-version":[{"id":1549,"href":"https:\/\/blog.uclm.es\/josejesuscastro\/wp-json\/wp\/v2\/posts\/1518\/revisions\/1549"}],"wp:attachment":[{"href":"https:\/\/blog.uclm.es\/josejesuscastro\/wp-json\/wp\/v2\/media?parent=1518"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.uclm.es\/josejesuscastro\/wp-json\/wp\/v2\/categories?post=1518"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.uclm.es\/josejesuscastro\/wp-json\/wp\/v2\/tags?post=1518"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}