{"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\/lenguajes-de-programacion-clasificacion-tipos-y-recursos-de-aprendizaje\/","title":{"rendered":"Llenguatges de programaci\u00f3: classificaci\u00f3, tipus i recursos d\u2019aprenentatge"},"content":{"rendered":"<p><\/p>\n<h2><b style=\"font-size: 1.17em\">Introducci\u00f3<\/b><\/h2>\n<p>Lev Manovich\u00a0va definir els nous mitjans segons cinc principis b\u00e0sics: representaci\u00f3 digital, modularitat, automatitzaci\u00f3, variabilitat i transcodificaci\u00f3.<\/p>\n<p>D\u2019aquests principis la representaci\u00f3 digital \u00e9s la condici\u00f3 de possibilitat de tota la resta; si no hagu\u00e9ssim estat capa\u00e7os de codificar num\u00e8ricament la informaci\u00f3, no seria possible la revoluci\u00f3 digital com l\u2019entenem.<\/p>\n<p>La codificaci\u00f3 de la informaci\u00f3, la transformaci\u00f3 del llenguatge natural a dades num\u00e8riques que l\u2019ordinador pot interpretar, \u00e9s la base dels llenguatges de programaci\u00f3. Aquests llenguatges permeten comunicar a la m\u00e0quina la informaci\u00f3 en un format que pot interpretar i programar determinades accions amb un objectiu determinat.<\/p>\n<p>Els llenguatges de programaci\u00f3 permeten reproduir les relacions que s\u2019estableixen entre els objectes per a automatitzar processos amb un objectiu concret.<\/p>\n<h2><b>Tipus de llenguatges de programaci\u00f3<\/b><\/h2>\n<p>Un llenguatge de programaci\u00f3 \u00e9s un idioma artificial dissenyat per a expressar processos que poden ser reprodu\u00efts per m\u00e0quines. Es fan servir per a crear programes que controlen el comportament f\u00edsic i l\u00f2gic d\u2019una m\u00e0quina i per a expressar algorismes amb precisi\u00f3. <i><\/i><\/p>\n<p>En diem <i>llenguatge<\/i> perqu\u00e8<i> <\/i>est\u00e0 format per un conjunt de s\u00edmbols, regles sint\u00e0ctiques i sem\u00e0ntiques que en defineixen l\u2019estructura i el significat dels elements i expressions.<\/p>\n<p>Des de la creaci\u00f3 dels primers llenguatges s\u2019han formalitzat diferents classificacions que, a l\u2019hora de la veritat, s\u2019entrecreuen. Classifiquem els llenguatges de programaci\u00f3 segons el nivell d\u2019abstracci\u00f3, segons la forma d\u2019execuci\u00f3 i de processar ordres, segons el paradigma de programaci\u00f3 que usen, etc.<\/p>\n<p>Una de les classificacions m\u00e9s \u00fatils \u00e9s aquella que classifica els llenguatges segons el paradigma de programaci\u00f3. Tot seguit enumerarem alguns dels paradigmes m\u00e9s importants:<\/p>\n<p><b>Paradigma imperatiu<\/b>. Descriu la programaci\u00f3 com a una seq\u00fc\u00e8ncia d\u2019instruccions o ordres que canvien l\u2019estat d\u2019un programa. Es basa en les ordres condicionals que permeten al programa reprendre un bloc d\u2019ordres determinat si es compleix una condici\u00f3. Aquests van ser els primers llenguatges de programaci\u00f3 i \u00e9s el paradigma en qu\u00e8 es basa el llenguatge m\u00e0quina (0 i 1). Encara hi ha molts llenguatges que usen aquests principis. Un dels inconvenients principals \u00e9s la falta de flexibilitat a causa de la seq\u00fcencialitat de les instruccions. En aquest paradigma s\u2019inclou el paradigma procedimental i \u00e9s el contrari del paradigma declaratiu.<\/p>\n<p><b>Paradigma funcional\/estructurat<\/b>. La programaci\u00f3 es divideix en blocs (procediments i funcions) que es poden comunicar entre si o no. Cada funci\u00f3 recull un procediment tancat i es podria entendre com un petit programa en si mateix. Les funcions permeten, mitjan\u00e7ant la subdivisi\u00f3 dels processos en petites accions, l\u2019aprofitament del codi per a altres objectius o en altres parts d\u2019un programa.<\/p>\n<p>Altres paradigmes interessants s\u00f3n el paradigma orientat a objectes, el paradigma l\u00f2gic i el paradigma funcional.<\/p>\n<p>Una altra gran classificaci\u00f3 important \u00e9s entre els <b>llenguatges interpretats<\/b> i els <b>llenguatges compilats<\/b>:<\/p>\n<p><b>Llenguatges interpretats<\/b>. La m\u00e0quina nom\u00e9s ent\u00e9n el llenguatge binari. Els llenguatges interpretats s\u00f3n aquells que per definici\u00f3 no estan escrits en codi binari i que requereixen un programa auxiliar (l\u2019int\u00e8rpret) que tradueix el llenguatge per tal que la m\u00e0quina el pugui processar i executar.<\/p>\n<p>Exemples: BASIC, MADLAB, PHP, Perl, etc.<\/p>\n<p><b>Llenguatges compilats<\/b>. En aquests llenguatges, un programa annex anomenat <i>compilador<\/i> fa el proc\u00e9s de transformaci\u00f3 a un llenguatge intel\u00b7ligible per a la m\u00e0quina, abans de la finalitzaci\u00f3 del programa. L\u2019arxiu resultant es pot executar sense la necessitat de cap altre programa intermediari; \u00e9s el que s\u2019anomena <b><i>arxiu executable<\/i><\/b>.<\/p>\n<p>Exemples: C, C++, Cobol, ADA, Pascal, etc.<\/p>\n<p>Els llenguatges compilats tenen el gran avantatge que no necessiten cap suport extern per a executar-se; no obstant aix\u00f2, s\u00f3n menys flexibles, ja que cada modificaci\u00f3 en el codi, o en les fonts del programa, implica necess\u00e0riament una recompilaci\u00f3 del programa per a aplicar els canvis.<\/p>\n<h3><b>Els llenguatges de programaci\u00f3 m\u00e9s usats<\/b><\/h3>\n<p>El <b>C <\/b>\u00e9s un llenguatge de programaci\u00f3 orientat a la implementaci\u00f3 de sistemes operatius, concretament UNIX. El C \u00e9s un dels llenguatges m\u00e9s eficients quant a codi resultant i \u00e9s el llenguatge m\u00e9s popular per a crear programari de sistemes. \u00c9s un llenguatge molt adaptable ja que treballa tant a baix nivell com a alt nivell de manera que permet un alt control sobre la m\u00e0quina.<\/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>Hist\u00f2ria: <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>El <b>PHP<\/b> \u00e9s un llenguatge de programaci\u00f3 basat en <i>scripts<\/i> en el servidor, creat origin\u00e0riament per al desenvolupament de contingut din\u00e0mic a la web. Va ser un dels primers llenguatges que es podien incorporar en un document HTML. El servidor interpreta el codi i genera la p\u00e0gina web resultant.<\/p>\n<p>Informaci\u00f3 del grup PHP: <a href=\"http:\/\/es2.php.net\/\">http:\/\/es2.php.net\/<\/a><\/p>\n<p>Manual i preguntes m\u00e9s freq\u00fcents 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>Curs en catal\u00e0 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>Curs de PHP: <a href=\"http:\/\/www.phpya.com.ar\/\">http:\/\/www.phpya.com.ar\/<\/a><\/p>\n<p>Recull 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>Hist\u00f2ria del llenguatge: <a href=\"http:\/\/www.php.net\/history\">http:\/\/www.php.net\/history<\/a><\/p>\n<p>El <b>Python<\/b> \u00e9s un llenguatge de programaci\u00f3 interpretat, centrat a produir un codi net i llegible amb una sintaxi molt clara; aix\u00f2 el fa especialment interessant per a introduir-se en el m\u00f3n de la programaci\u00f3 ja que, si b\u00e9 \u00e9s molt senzill comen\u00e7ar a programar amb Python, les opcions de programaci\u00f3 avan\u00e7ada s\u00f3n tamb\u00e9 molt interessants.<\/p>\n<p>\u00c9s un llenguatge de programaci\u00f3 multiparadigma: orientaci\u00f3 a objectes, programaci\u00f3 imperativa, etc., i tamb\u00e9 \u00e9s multiplataforma. Est\u00e0 publicat amb una llic\u00e8ncia oberta.<\/p>\n<p>El <b>Java<\/b> \u00e9s un llenguatge de programaci\u00f3 que deriva principalment de C i C++, s\u2019ha de compilar i es pot executar en qualsevol arquitectura gr\u00e0cies a la m\u00e0quina virtual Java (JVM). El Java \u00e9s un llenguatge de prop\u00f2sit general basat en classes i orientat a objectes. La principal virtut del codi Java \u00e9s que \u00e9s compilat independentment de la m\u00e0quina on s\u2019hagi d\u2019executar, cosa que permet el que s\u2019anomena <i>WORA<\/i> (<i>write once, run anywhere<\/i>). Actualment \u00e9s un dels llenguatges m\u00e9s usats amb m\u00e9s de deu milions d\u2019usuaris i s\u2019usa principalment per a crear aplicacions de client-servidor en web.<\/p>\n<p>Web per a desenvolupadors en Java: <a href=\"http:\/\/learncodethehardway.org\/\">http:\/\/learncodethehardway.org\/<\/a><\/p>\n<p>Especificaci\u00f3 del llenguatge: <a href=\"http:\/\/docs.oracle.com\/javase\/specs\/\">http:\/\/docs.oracle.com\/javase\/specs\/<\/a><\/p>\n<p>Hist\u00f2ria: <a href=\"http:\/\/www.cad.com.mx\/historia_del_lenguaje_java.htm\">http:\/\/www.cad.com.mx\/historia_del_lenguaje_java.htm<\/a><\/p>\n<p>Classificaci\u00f3 de llenguatges m\u00e9s usats: <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>Actualment el nombre de llenguatges disponibles est\u00e0 en evoluci\u00f3 constant. De mica en mica els llenguatges evolucionen i donen lloc a nous llenguatges enfocats a tasques concretes: la programaci\u00f3 visual, la programaci\u00f3 per a sistemes operatius m\u00f2bils, l\u2019art, etc.<\/p>\n<p>Alguns exemples m\u00e9s s\u00f3n Processing, Ruby i JavaScript.<\/p>\n<h2><b><\/b>Recursos per a aprendre a programar de manera gratu\u00efta a la Xarxa<\/h2>\n<p>Avui dia hi ha molts portals dedicats a oferir de manera gratu\u00efta cursos de programaci\u00f3 i espais per a practicar de manera interactiva amb un servidor que verifica el codi i ens ajuda a aprendre a programar en els diferents llenguatges de programaci\u00f3 disponible.<\/p>\n<p>La majoria permeten crear un perfil personal i fer un seguiment de l\u2019evoluci\u00f3 i dels cursos que es fan:<\/p>\n<p><b>CodeAcademy<\/b>: <a href=\"http:\/\/www.codecademy.com\/#!\/exercises\/0\">http:\/\/www.codecademy.com\/#!\/exercises\/0<\/a><\/p>\n<p><b>Google Code University<\/b>: <a href=\"http:\/\/code.google.com\/edu\/\">http:\/\/code.google.com\/edu\/<\/a><\/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><\/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><\/p>\n<p><b>EloquentJavascript<\/b>: <a href=\"http:\/\/eloquentjavascript.net\/\">http:\/\/eloquentjavascript.net\/<\/a><\/p>\n<p><b>LearnRuby<\/b>: <a href=\"http:\/\/rubykoans.com\/\">http:\/\/rubykoans.com\/<\/a><\/p>\n<p><b>Codeschool<\/b>: <a href=\"http:\/\/www.codeschool.com\/\">http:\/\/www.codeschool.com\/<\/a><\/p>\n<div>\n<div>\n<p>&nbsp;<\/p>\n<\/div>\n<\/div>\n<p><\/p>","protected":false},"excerpt":{"rendered":"<p>Introducci\u00f3 Lev Manovich\u00a0va definir els nous mitjans segons cinc principis b\u00e0sics: representaci\u00f3 digital, modularitat, automatitzaci\u00f3, variabilitat i transcodificaci\u00f3. D\u2019aquests principis la representaci\u00f3 digital \u00e9s la condici\u00f3 de possibilitat de tota la resta; si no hagu\u00e9ssim estat capa\u00e7os de codificar num\u00e8ricament la informaci\u00f3, no seria possible la revoluci\u00f3 digital com l\u2019entenem. La codificaci\u00f3 de la informaci\u00f3, &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/multimedia.uoc.edu\/blogs\/fem\/lenguajes-de-programacion-clasificacion-tipos-y-recursos-de-aprendizaje\/\" class=\"more-link\">Continua llegint <span class=\"screen-reader-text\">\u00abLlenguatges de programaci\u00f3: classificaci\u00f3, tipus i recursos d\u2019aprenentatge\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\/wp-json\/wp\/v2\/posts\/137","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/multimedia.uoc.edu\/blogs\/fem\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/multimedia.uoc.edu\/blogs\/fem\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/multimedia.uoc.edu\/blogs\/fem\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/multimedia.uoc.edu\/blogs\/fem\/wp-json\/wp\/v2\/comments?post=137"}],"version-history":[{"count":5,"href":"https:\/\/multimedia.uoc.edu\/blogs\/fem\/wp-json\/wp\/v2\/posts\/137\/revisions"}],"predecessor-version":[{"id":500,"href":"https:\/\/multimedia.uoc.edu\/blogs\/fem\/wp-json\/wp\/v2\/posts\/137\/revisions\/500"}],"wp:attachment":[{"href":"https:\/\/multimedia.uoc.edu\/blogs\/fem\/wp-json\/wp\/v2\/media?parent=137"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/multimedia.uoc.edu\/blogs\/fem\/wp-json\/wp\/v2\/categories?post=137"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/multimedia.uoc.edu\/blogs\/fem\/wp-json\/wp\/v2\/tags?post=137"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}