Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> python

DSLs en Python: Soluciones a medida para dominios especializados

Cuando escribimos el programa, encontramos que los problemas que resolvemos pertenecen a áreas específicas, también llamadas dominios, tales como:

Al usar un Lenguaje de Propósito General (LPG) como Python o Java, podemos resolver estos problemas, pero el código se vuelve demasiado detallado y repetitivo. Por eso, usaremos el DSL (Lenguaje Específico de Dominio).

DSL - Lenguaje Específico de Dominio

El Lenguaje Específico de Dominio es un lenguaje de programación o especificación dedicado a un dominio particular. Es diferente del lenguaje de propósito general (LPG como Python, C++ o Java). Son de dos tipos:

DSL Externo

Para trabajar con bases de datos, usamos SQL, en lugar de escribir bucles para escanear datos manualmente, simplemente escribimos:

 SELECT name FROM users WHERE age > 10; 

Para diseñar páginas web, usamos HTML, en lugar de gestionar manualmente cadenas de texto y posiciones, simplemente declaramos:

 <h1>Bienvenido a Tutorialspoint</h1> 

DSL Interno

En Python, el lenguaje específico de dominio se construye sobre la sintaxis de Python. Frameworks como Flask o Pandas son ejemplos de librerías tipo DSL que ayudan a expresar los problemas claramente.

 @app.route('/home') def home(): return "¡Hola...!" 

¿Por qué DSLs en Python?

Python es la mejor opción para DSL porque:

Por ejemplo, los frameworks de testing como pytest o frameworks web como Flask son tipo DSL. En lugar de escribir lógica de bajo nivel, permiten escribir comandos expresivos.

Profundicemos en el ejemplo para aprender más sobre el lenguaje específico de dominio.

Ejemplo 1

Veamos el siguiente ejemplo, donde vamos a abstraer el lenguaje de las matemáticas en funciones nombradas.

 def add(x, y): return x + y def multiply(x, y): return x * y print(add(multiply(1, 3), multiply(2, 4))) 

A continuación se muestra la salida del programa anterior:

 11 

Ejemplo 2

Considere el siguiente ejemplo, donde vamos a usar el DSL en archivos de configuración.

 class demo: def __init__(self): self.settings = {} def set(self, key, value): self.settings[key] = value return self def get(self, key): return self.settings.get(key) result = demo() result.set("host", "Bienvenido").set("port", 1231) print(result.get("host")) 

La salida del programa anterior es:

 Bienvenido 

Ejemplo 3

En el siguiente ejemplo, vamos a observar el DSL para consultar datos usando sintaxis SQL dentro de Python.

 class demo: def __init__(x, dataset): x.dataset = dataset def where(x, condition): x.dataset = [item for item in x.dataset if condition(item)] return x def select(x, selector): return [selector(item) for item in x.dataset] users = [ {"name": "Ram", "age": 10}, {"name": "Ravi", "age": 24}, {"name": "Rahul", "age": 19}, ] result = demo(users).where(lambda u: u["age"] > 18).select(lambda u: u["name"]) print(result) 

A continuación se muestra la salida del programa anterior:

 ['Ravi', 'Rahul'] 

python

  1. Dominando Números, Conversión de Tipos y Matemáticas en Python
  2. Dominando Errores y Excepciones Integradas en Python
  3. Función print() en Python: Guía Práctica con Ejemplos
  4. Dominando la palabra clave global en Python: Cómo y cuándo usarla
  5. Dominando funciones en Python: Sintaxis, tipos y ejemplos prácticos
  6. Domine las Operaciones de Strings en Python: Replace, Join, Split, Reverse y Conversión de Mayúsculas/Minúsculas
  7. Convierta strings a Title Case en Python: rápido y fiable
  8. Dominando el Decorador @property de Python: Getters y Setters Limpios y Compatibles
  9. Acceso a MySQL con Python: Usando el Estándar DB-API
  10. Copiar archivos en Python con shutil.copy() y shutil.copystat()
  11. Python vs PHP: Diferencias clave, fortalezas y elección del lenguaje adecuado