Lenguajes de programación posmodernos

Cómo y qué aprender a programar en el siglo XXI

esLibre, Xouba City, 2022

Servidor

Programador desde 1983

💝 Raku 💝 Perl, Javascript, Python...

Profe UGR + ingeniero software senior @ polypoly

Un lenguaje para dominarlos a todos

lenguajes polypoly

... no ni ná

La postmodernidad nos rodea

¿Existen los lenguajes de programación postmodernos?

Posmodernismo es

Corriente artística/cultural

Antidualista

Lenguaje moldea pensamiento

El antidualismo promueve el pluralismo y la diversidad

¿Como la diversidad en el repo anterior?

Pero ¿cómo?

¿No vas a decir que Raku es el mejor lenguaje?

Pero el posmodernismo hay que hacerlo

Empezando por el futurismo

Hablemos del futurismo

Severini,
                    canoni in azioni

Escultura, pintura, cine

Goncharova: Paisaje con un tren

¿Os voy a dar mucho la chapa con esto?

El futurismo desarrolla nuevos lenguajes

Artísticos

Depero, festa della sedia

Que incorporan el entorno

Entorno actual de desarrollo

Web, concurrencia, distribuida

Elm: nacido para webear

import Browser
import Html exposing (Html, Attribute, div, input, text)
import Html.Attributes exposing (..)
import Html.Events exposing (onInput)

main = Browser.sandbox { init = init, update = update, view = view }

type alias Model =  { que : String  }

init : Model
init = { que = "" }
type Msg = Change String

update : Msg -> Model -> Model
update msg modelo =
  case msg of
    Change donde -> { modelo | que = donde }

view : Model -> Html Msg
view modelo =  div []
    [ input [ placeholder "Que", value modelo.que, onInput Change ] []
    , div [] [ text (if modelo.que == "Rock" then "en Samil" else "de qué") ]
    ]

Hete aquí el programa


                    

Lenguaje moldea pensamiento

say (١,١,* + *...∞)[١..٣٣].trans( [0..9] => ['٠'..'٩'] )
١ ٢ ٣ ٥ ٨ ١٣ ٢١ ٣٤ ٥٥ ٨٩ ١٤٤ ٢٣٣ ٣٧٧ ٦١٠ ٩٨٧ ١٥٩٧ ٢٥٨٤ ٤١٨١ ٦٧٦٥ ١٠٩٤٦ ١٧٧١١ ٢٨٦٥٧ ٤٦٣٦٨ ٧٥٠٢٥ ١٢١٣٩٣ ١٩٦٤١٨ ٣١٧٨١١ ٥١٤٢٢٩ ٨٣٢٠٤٠ ١٣٤٦٢٦٩ ٢١٧٨٣٠٩ ٣٥٢٤٥٧٨ ٥٧٠٢٨٨٧

El mundo es web

import { serve } from "https://deno.land/std@0.144.0/http/server.ts";
import { h, renderSSR } from "https://deno.land/x/nano_jsx@v0.0.32/mod.ts";

function App(url) {
    let pachanga;
    const thisUrl = new URL( url.children[0] );
    switch (thisUrl.pathname) {
      case "/silbo" : pachanga="Rockabilly"; break;
      case "/rock" : pachanga="En Samil"; break;
      case "/vitrasa" : pachanga="Hacia Samil"; break;
      default: pachanga="Diga qué le debo";
    }
    return (   Qué pasa por la calle
                         

{pachanga}

); } serve( (req) => { const html = renderSSR({req.url}); return new Response(html, { headers: { "content-type": "text/html; charset=utf-8", }, }); });

Incorporando el paralelismo en Julia

function time_mutations(number,length)
    inicioTiempo = time()

    fitness = @distributed for i in 0:1:number
        indi = random_chromosome(length)
        reduce( +, indi)
    end
    println(fitness)
    time()-inicioTiempo

end

Abrirse al entorno

Si no se testea, no funciona

Tests unitarios forman parte del lenguaje

import test from 'node:test';
import assert from 'assert/strict';
import { rock, vamosABailar } from "../src/rock-en-samil.js";
const elRockDonde = "En Samil";
test("Rock", () => {
    assert.equal( rock(),  elRockDonde );
});

test("Vamos a bailar", () => {
    assert.equal( vamosABailar("El Rock"), elRockDonde );
});

Los objetos se abren al entorno

console, IndexedDB

Los proyectos no se hacen en un solo lenguaje

Integración continua, contenedores, gestores de tareas.

Los lenguajes seguros se cierran al entorno

deno run --allow-net rock-en-samil.ts 

Stackoverflow es la documentación de muchos lenguajes

Los lenguajes posmodernos son multi-paradigma

Los lenguajes posmodernos se abren al entorno

Comunidad, documentación, ecosistema son el lenguaje

Perl fue el primer lenguaje posmoderno

La cebolla es su símbolo

El lenguaje (intérprete, sintaxis)...

... se abre al entorno (comunidad, ecosistema)

De stackoverflow a Raku en dos días

La comunidad crea el lenguaje

Los lenguajes posmodernos viven en un entorno de producción posmoderno

Que tus programas no huelan a C

Ningún lenguaje es totalmente posmoderno

Pero existe el desarrollo posmoderno

Es imposible aprender desarrollo con un solo lenguaje

Ni siquiera se puede aprender un lenguaje usando un solo lenguaje

El desarrollo posmoderno deconstruye

Las aplicaciones tienen que ser examinadas, testeadas, compiladas, desplegadas...

No al lenguaje único❢

Capítulo 5
                    boccioni, Contro l'ossessione della cultura e contro il
                              monumento nazionale

*Flame wars* de lenguajes

¿Para qué sirven?

Abraza la diversidad

No a la dualidad

Posmoderniza el desarrollo de software

Muchas gracias