{"id":137,"date":"2013-03-08T00:56:12","date_gmt":"2013-03-08T00:56:12","guid":{"rendered":"http:\/\/multimedia.uoc.edu\/blogs\/fem\/?p=137"},"modified":"2013-04-03T11:09:59","modified_gmt":"2013-04-03T11:09:59","slug":"lenguajes-de-programacion-clasificacion-tipos-y-recursos-de-aprendizaje","status":"publish","type":"post","link":"https:\/\/multimedia.uoc.edu\/blogs\/fem\/es\/lenguajes-de-programacion-clasificacion-tipos-y-recursos-de-aprendizaje\/","title":{"rendered":"Lenguajes de programaci\u00f3n: clasificaci\u00f3n, tipos y recursos de aprendizaje"},"content":{"rendered":"<p><\/p>\n<h2><b style=\"font-size: 1.17em\">Introducci\u00f3n<\/b><\/h2>\n<p><a title=\"Post Lev Manovich\" href=\"http:\/\/multimedia.uoc.edu\/blogs\/fem\/fundamentos-teorias-autores-lev-manovich\/\" target=\"_blank\">Lev Manovich<\/a>\u00a0defini\u00f3 los nuevos medios seg\u00fan cinco principios b\u00e1sicos: representaci\u00f3n digital, modularidad, automatizaci\u00f3n, variabilidad y transcodificaci\u00f3n. De estos principios, la representaci\u00f3n digital es la condici\u00f3n de posibilidad de todo el resto; si no hubi\u00e9ramos sido capaces de codificar num\u00e9ricamente la informaci\u00f3n, la revoluci\u00f3n digital como la entendemos no ser\u00eda posible.<\/p>\n<p>La codificaci\u00f3n de la informaci\u00f3n, la transformaci\u00f3n del lenguaje natural en datos num\u00e9ricos que el ordenador puede interpretar, es la base de los lenguajes de programaci\u00f3n. Estos lenguajes permiten comunicar a la m\u00e1quina la informaci\u00f3n en un formato con el que esta puede interpretar y programar determinadas acciones con un objetivo determinado.<\/p>\n<p>Los lenguajes de programaci\u00f3n permiten reproducir las relaciones que se establecen entre los objetos para automatizar procesos con un objetivo concreto.<\/p>\n<h2><b>Tipos de lenguajes de programaci\u00f3n <\/b><\/h2>\n<p>Un lenguaje de programaci\u00f3n es un idioma artificial dise\u00f1ado para expresar procesos que pueden reproducir m\u00e1quinas. Se usan para crear programas que controlan el comportamiento f\u00edsico y l\u00f3gico de una m\u00e1quina y para expresar algoritmos con precisi\u00f3n. Los llamamos lenguaje porque<i> <\/i>est\u00e1n formados por un conjunto de s\u00edmbolos, reglas sint\u00e1cticas y sem\u00e1nticas que definen su estructura y el significado de los elementos y expresiones.<i> <\/i><\/p>\n<p>Desde la creaci\u00f3n de los primeros lenguajes se han formalizado diferentes clasificaciones, que, a la hora de la verdad, se entrecruzan entre s\u00ed. Clasificamos los lenguajes de programaci\u00f3n seg\u00fan el nivel de abstracci\u00f3n, seg\u00fan la forma de ejecuci\u00f3n y de procesar pedidos, seg\u00fan el paradigma de programaci\u00f3n que usan, entre otros.<\/p>\n<p>Una de las clasificaciones m\u00e1s \u00fatiles es aquella que clasifica los lenguajes seg\u00fan el paradigma de programaci\u00f3n. A continuaci\u00f3n, se enumeran algunos de los paradigmas m\u00e1s importantes.<\/p>\n<p><b>Paradigma imperativo:<\/b> Describe la programaci\u00f3n como una secuencia de instrucciones o pedidos que cambian el estado de un programa. Se basa en las \u00f3rdenes condicionales que permiten retomar en el programa un bloque de \u00f3rdenes determinado si se cumple una condici\u00f3n. Estos ser\u00edan los primeros lenguajes de programaci\u00f3n y es el paradigma en el que se basa el lenguaje m\u00e1quina (0 y 1). Todav\u00eda muchos lenguajes usan estos principios. Uno de sus principales inconvenientes es la falta de flexibilidad debido a la secuencialidad de las instrucciones. En este paradigma, se incluye el paradigma procedimental y es contrario al paradigma declarativo.<\/p>\n<p><b>Paradigma funcional\/estructurado: <\/b>La programaci\u00f3n se divide en bloques (procedimientos y funciones) que pueden comunicarse entre s\u00ed o no hacerlo. Cada funci\u00f3n recoge un procedimiento cerrado y se podr\u00eda entender como un peque\u00f1o programa en s\u00ed mismo. Las funciones permiten, mediante la subdivisi\u00f3n de los procesos en peque\u00f1as acciones, el aprovechamiento del c\u00f3digo para otros objetivos o en otras partes de un programa.<\/p>\n<p>Otros paradigmas interesantes son el paradigma orientado a objetos, el paradigma l\u00f3gico o el paradigma funcional. Por su parte, otra gran clasificaci\u00f3n importante se da entre los <b>lenguajes interpretados <\/b>y los<b> lenguajes compilados<\/b>.<\/p>\n<p><b>Lenguajes interpretados<\/b>: La m\u00e1quina solo entiende el lenguaje binario. Los lenguajes interpretados son aquellos que por definici\u00f3n no est\u00e1n escritos en c\u00f3digo binario y que requieren de un programa auxiliar (el int\u00e9rprete), que traduce el lenguaje para que la m\u00e1quina lo pueda procesar y ejecutar. Son ejemplos de ello BASIC, MADLAB, PHP y Perl.<\/p>\n<p><b>Lenguajes compilados<\/b>: En los lenguajes compilados, un programa anexo llamado compilador hace el proceso de transformaci\u00f3n a un lenguaje inteligible por la m\u00e1quina, antes de la finalizaci\u00f3n del programa. El archivo resultante se puede ejecutar sin la necesidad de ning\u00fan otro programa intermediario, es lo que se denomina <b>archivo ejecutable<\/b>. Son ejemplos de ello C, C++, Cobol, ADA y Pascal.<\/p>\n<p>Los lenguajes compilados tienen la gran ventaja de no necesitar de ning\u00fan apoyo externo para ejecutarse; no obstante, son menos flexibles, puesto que cada modificaci\u00f3n en el c\u00f3digo original, o en las fuentes del programa, implica necesariamente una recompilaci\u00f3n del programa para aplicar los cambios.<\/p>\n<h2><b>Los lenguajes de programaci\u00f3n m\u00e1s usados<\/b><\/h2>\n<p><b>C <\/b>es un lenguaje de programaci\u00f3n orientado a la implementaci\u00f3n de sistemas operativos, concretamente UNIX. C es uno de los lenguajes m\u00e1s eficientes en cuanto a c\u00f3digo resultante y es el lenguaje m\u00e1s popular para crear software de sistemas. Es un lenguaje muy vers\u00e1til, ya que trabaja tanto a bajo como a alto nivel y permite un alto control sobre la m\u00e1quina.<\/p>\n<p>Manual de C <a href=\"http:\/\/www.fismat.umich.mx\/mn1\/manual\/\">http:\/\/www.fismat.umich.mx\/mn1\/manual\/<\/a><\/p>\n<p>Historia<b> <\/b><a href=\"http:\/\/www.faqs.org\/docs\/artu\/c_evolution.html\">http:\/\/www.faqs.org\/docs\/artu\/c_evolution.html<\/a><b><\/b><\/p>\n<p><b>\u00a0<\/b><b><\/b><b>PHP<\/b> es un lenguaje de programaci\u00f3n basado en <i>scripts<\/i> en el servidor. Fue creado originariamente para el desarrollo de contenido din\u00e1mico en la web y fue uno de los primeros lenguajes que se pod\u00edan incorporar en un documento HTML. El servidor interpreta el c\u00f3digo y genera la p\u00e1gina web resultante.<\/p>\n<p>Informaci\u00f3n del grupo PHP <a href=\"http:\/\/es2.php.net\/\">http:\/\/es2.php.net\/<\/a><\/p>\n<p>Manual y FAQ de PHP <a href=\"http:\/\/us.php.net\/manual\/en\/faq.general.php\">http:\/\/us.php.net\/manual\/en\/faq.general.php<\/a><\/p>\n<p>Curso en catal\u00e1n de PHP <a href=\"http:\/\/ca.programacionweb.net\/cursos\/curso.php?num=10\">http:\/\/ca.programacionweb.net\/cursos\/curso.php?num=10<\/a><\/p>\n<p>Curso de PHP <a href=\"http:\/\/www.phpya.com.ar\/\">http:\/\/www.phpya.com.ar\/<\/a><\/p>\n<p>Recopilaci\u00f3n de cursos de PHP <a href=\"http:\/\/www.aulaclic.net\/cursos\/mostrar.php?id=25&amp;texto=PHP&amp;clase=c\">http:\/\/www.aulaclic.net\/cursos\/mostrar.php?id=25&amp;texto=PHP&amp;clase=c<\/a><\/p>\n<p>Historia del lenguaje <a href=\"http:\/\/www.php.net\/history\">http:\/\/www.php.net\/history<\/a><\/p>\n<p><b>Python <\/b>es un lenguaje de programaci\u00f3n interpretado, centrado en producir un c\u00f3digo limpio y legible con una sintaxis muy clara, lo que lo hace especialmente interesante para introducirse en el mundo de la programaci\u00f3n puesto que, si bien es muy sencillo empezar a programar con Python, las opciones de programaci\u00f3n avanzada son tambi\u00e9n muy interesantes. Es un lenguaje de programaci\u00f3n multiparadigma (orientaci\u00f3n a objetos, programaci\u00f3n imperativa) y tambi\u00e9n es multiplataforma. Est\u00e1 publicado bajo una licencia abierta.<\/p>\n<p><b>Java <\/b>es un lenguaje de programaci\u00f3n que deriva principalmente de C y C++, necesita ser compilado y se puede ejecutar en cualquier arquitectura gracias a la m\u00e1quina virtual Java (JVM). Java es un lenguaje de prop\u00f3sito general basado en clases y orientado a objetos. La principal virtud del c\u00f3digo Java es que se compila independientemente de la m\u00e1quina donde se tenga que ejecutar, lo que permite lo que se denomina <i>WORA<\/i> (<i>write once, run anywhere<\/i>). En la actualidad, es uno de los lenguajes m\u00e1s usados con m\u00e1s de 10.000.000 de usuarios y se usa principalmente para crear aplicaciones de cliente-servidor en web.<\/p>\n<p>Web para desarrolladores en Java <a href=\"http:\/\/learncodethehardway.org\/\">http:\/\/learncodethehardway.org\/<\/a><\/p>\n<p>Especificaci\u00f3n del lenguaje <a href=\"http:\/\/docs.oracle.com\/javase\/specs\/\">http:\/\/docs.oracle.com\/javase\/specs\/<\/a><\/p>\n<p>Historia <a href=\"http:\/\/www.cad.com.mx\/historia_del_lenguaje_java.htm\">http:\/\/www.cad.com.mx\/historia_de el_lenguaje_java.htm<\/a><\/p>\n<p>Clasificaci\u00f3n de los lenguajes m\u00e1s usados <a href=\"http:\/\/blog.uchceu.es\/informatica\/indice-tiboe-ranking-de-lenguajes-de-programacion-mas-utilizados\/\">http:\/\/blog.uchceu.es\/informatica\/indice-tiboe-ranking-de-lenguajes-de-programacion-mas-utilizados\/<\/a><\/p>\n<p>Hoy en d\u00eda, el n\u00famero de lenguajes disponibles est\u00e1 en constante evoluci\u00f3n. Poco a poco, los lenguajes evolucionan y dan lugar a nuevos lenguajes enfocados a tareas concretas como la programaci\u00f3n visual, la programaci\u00f3n para sistemas operativos m\u00f3viles o el arte. Algunos ejemplos m\u00e1s son Processing, Ruby y Javascript.<\/p>\n<h2><b><\/b><b>Recursos para aprender a programar de forma gratuita en la Red<\/b><\/h2>\n<p>Hoy en d\u00eda, hay muchos portales dedicados a ofrecer de forma gratuita cursos de programaci\u00f3n y espacios para practicar de forma interactiva con un servidor que verifica el c\u00f3digo y nos ayuda a aprender a programar en los diferentes lenguajes de programaci\u00f3n disponible. La mayor\u00eda permiten crear un perfil personal y hacer un seguimiento de la evoluci\u00f3n y de los diferentes cursos emprendidos.<\/p>\n<p><b>CodeAcademy<\/b> <a href=\"http:\/\/www.codecademy.com\/#!\/exercises\/0\">http:\/\/www.codecademy.com\/#!\/exercises\/0<\/a><b><\/b><\/p>\n<p><b>Google Code University<\/b> <a href=\"http:\/\/code.google.com\/edu\/\">http:\/\/code.google.com\/edu\/<\/a><b><\/b><\/p>\n<p><b>Mozilla Developer Network<\/b> <a href=\"https:\/\/developer.mozilla.org\/en-US\/learn\">https:\/\/developer.mozilla.org\/en-us\/learn<\/a><b><\/b><\/p>\n<p><b>Khan Academy<\/b> <a href=\"https:\/\/www.khanacademy.org\/cs\/tutorials\/programming-basics\">https:\/\/www.khanacademy.org\/cs\/tutorials\/programming-basics<\/a><b><\/b><\/p>\n<p><b>EloquentJavascript<\/b> <a href=\"http:\/\/eloquentjavascript.net\/\">http:\/\/eloquentjavascript.net\/<\/a><b><\/b><\/p>\n<p><b>LearnRuby<\/b> <a href=\"http:\/\/rubykoans.com\/\">http:\/\/rubykoans.com\/<\/a><b><\/b><\/p>\n<p><b>Codeschool<\/b> <a href=\"http:\/\/www.codeschool.com\/\">http:\/\/www.codeschool.com\/<\/a><b>\u00a0<\/b><\/p>","protected":false},"excerpt":{"rendered":"<p>Introducci\u00f3n Lev Manovich\u00a0defini\u00f3 los nuevos medios seg\u00fan cinco principios b\u00e1sicos: representaci\u00f3n digital, modularidad, automatizaci\u00f3n, variabilidad y transcodificaci\u00f3n. De estos principios, la representaci\u00f3n digital es la condici\u00f3n de posibilidad de todo el resto; si no hubi\u00e9ramos sido capaces de codificar num\u00e9ricamente la informaci\u00f3n, la revoluci\u00f3n digital como la entendemos no ser\u00eda posible. La codificaci\u00f3n de la &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/multimedia.uoc.edu\/blogs\/fem\/es\/lenguajes-de-programacion-clasificacion-tipos-y-recursos-de-aprendizaje\/\" class=\"more-link\">Seguir leyendo<span class=\"screen-reader-text\"> \u00abLenguajes de programaci\u00f3n: clasificaci\u00f3n, tipos y recursos de aprendizaje\u00bb<\/span><\/a><\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[48,50,46,44,47,45,49],"class_list":["post-137","post","type-post","status-publish","format-standard","hentry","category-languages","tag-c","tag-java","tag-lenguajes","tag-llenguatges-de-programacio","tag-php","tag-programacion","tag-python","entry"],"_links":{"self":[{"href":"https:\/\/multimedia.uoc.edu\/blogs\/fem\/es\/wp-json\/wp\/v2\/posts\/137","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/multimedia.uoc.edu\/blogs\/fem\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/multimedia.uoc.edu\/blogs\/fem\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/multimedia.uoc.edu\/blogs\/fem\/es\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/multimedia.uoc.edu\/blogs\/fem\/es\/wp-json\/wp\/v2\/comments?post=137"}],"version-history":[{"count":5,"href":"https:\/\/multimedia.uoc.edu\/blogs\/fem\/es\/wp-json\/wp\/v2\/posts\/137\/revisions"}],"predecessor-version":[{"id":500,"href":"https:\/\/multimedia.uoc.edu\/blogs\/fem\/es\/wp-json\/wp\/v2\/posts\/137\/revisions\/500"}],"wp:attachment":[{"href":"https:\/\/multimedia.uoc.edu\/blogs\/fem\/es\/wp-json\/wp\/v2\/media?parent=137"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/multimedia.uoc.edu\/blogs\/fem\/es\/wp-json\/wp\/v2\/categories?post=137"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/multimedia.uoc.edu\/blogs\/fem\/es\/wp-json\/wp\/v2\/tags?post=137"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}