{"id":331,"date":"2022-10-04T11:32:34","date_gmt":"2022-10-04T09:32:34","guid":{"rendered":"http:\/\/quadern-programacio.recursos.uoc.edu\/?page_id=331"},"modified":"2022-10-04T11:33:08","modified_gmt":"2022-10-04T09:33:08","slug":"1-4-lenguajes-de-programacion","status":"publish","type":"page","link":"http:\/\/quadern-programacio.recursos.uoc.edu\/es\/1-4-lenguajes-de-programacion\/","title":{"rendered":"1.4. Lenguajes de programaci\u00f3n"},"content":{"rendered":"<p>En el coraz\u00f3n de un ordenador, su procesador, conviven millones de peque\u00f1os transistores (podemos pensar en estos como interruptores) que son los encargados de realizar los c\u00e1lculos de nuestros algoritmos. Estos transistores operan con una <strong>l\u00f3gica binaria<\/strong>, por lo que \u00fanicamente pueden apagarse o encenderse, adoptar el valor de 1 o 0. Combinando muchos de estos valores binarios podemos representar todo tipo de valores y operaciones, por ejemplo, el n\u00famero 500 lo podemos representar en valores binarios como 111110100. En los albores de la programaci\u00f3n, los programas se pod\u00edan almacenar en tarjetas perforadas (perforaci\u00f3n = 0, no perforaci\u00f3n = 1). Por suerte para nosotros, los tiempos de tener que programar en lenguaje binario (lenguaje m\u00e1quina) han quedado atr\u00e1s y ahora disponemos de distintos lenguajes de programaci\u00f3n con los que podemos escribir nuestro c\u00f3digo en un lenguaje m\u00e1s \u00abnatural\u00bb que m\u00e1s tarde ser\u00e1 \u00abtraducido\u00bb para que lo entienda el ordenador. La primera categorizaci\u00f3n dentro de los lenguajes de programaci\u00f3n ser\u00eda entonces la que diferencia entre los lenguajes de bajo nivel (que dependen de cada m\u00e1quina) y los de alto nivel, que m\u00e1s tarde se traducen a lenguaje m\u00e1quina.<\/p>\n<p>La manera en la que se produce esta traducci\u00f3n marca otra de las principales diferencias entre distintos lenguajes de programaci\u00f3n. Estos pueden ser <strong>compilados<\/strong> o <strong>interpretados<\/strong>. Antes de ejecutar un programa escrito en un lenguaje compilado (C, C++, Swift, etc.), se necesita un paso previo, la compilaci\u00f3n, que convierte el programa a lenguaje m\u00e1quina. Sin embargo, en los lenguajes interpretados (Javascript, Python, Ruby, etc.), la traducci\u00f3n a lenguaje m\u00e1quina se realiza a medida que se ejecuta el programa. Tambi\u00e9n hay otros casos, como el de Java o C#, en los que el c\u00f3digo se traduce primero a un lenguaje intermedio que luego es interpretado.<\/p>\n<p>De manera muy general, podr\u00edamos decir que los lenguajes compilados est\u00e1n m\u00e1s optimizados y son m\u00e1s r\u00e1pidos en su ejecuci\u00f3n, con la contrapartida de ser m\u00e1s complejos, mientras que los interpretados facilitan la labor del programador, pero no alcanzan el rendimiento de los compilados. Igualmente, la brecha entre unos y otros en los \u00faltimos a\u00f1os se est\u00e1 estrechando.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En el coraz\u00f3n de un ordenador, su procesador, conviven millones de peque\u00f1os transistores (podemos pensar en estos como interruptores) que son los encargados de realizar los c\u00e1lculos de nuestros algoritmos. Estos transistores operan con una l\u00f3gica binaria, por lo que \u00fanicamente pueden apagarse o encenderse, adoptar el valor de 1 o 0. Combinando muchos de [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"acf":[],"_links":{"self":[{"href":"http:\/\/quadern-programacio.recursos.uoc.edu\/es\/wp-json\/wp\/v2\/pages\/331"}],"collection":[{"href":"http:\/\/quadern-programacio.recursos.uoc.edu\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/quadern-programacio.recursos.uoc.edu\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/quadern-programacio.recursos.uoc.edu\/es\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/quadern-programacio.recursos.uoc.edu\/es\/wp-json\/wp\/v2\/comments?post=331"}],"version-history":[{"count":1,"href":"http:\/\/quadern-programacio.recursos.uoc.edu\/es\/wp-json\/wp\/v2\/pages\/331\/revisions"}],"predecessor-version":[{"id":332,"href":"http:\/\/quadern-programacio.recursos.uoc.edu\/es\/wp-json\/wp\/v2\/pages\/331\/revisions\/332"}],"wp:attachment":[{"href":"http:\/\/quadern-programacio.recursos.uoc.edu\/es\/wp-json\/wp\/v2\/media?parent=331"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}