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

DSL de Python:soluciones personalizadas para dominios especializados

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

Al utilizar el lenguaje de propósito general (GPL) como Python o Java, podemos resolver estos problemas, pero el código se vuelve demasiado detallado y repetitivo. Por lo tanto, utilizaremos DSL (lenguaje específico de dominio).

DSL:lenguaje específico del dominio

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

DSL externo

Para trabajar con las 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 las páginas web, utilizamos HTML. En lugar de gestionar las cadenas de texto y las posiciones manualmente, simplemente declaramos:

<h1>Welcome To Tutorialspoint</h1>

DSL interno

En Python, el lenguaje específico del dominio se construye sobre la sintaxis de Python. Marcos como flask o Pandas son ejemplos de bibliotecas similares a DSL que ayudan a expresar los problemas con claridad.

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

Por qué DSL en Python

Python es la mejor opción para DSL porque:

Por ejemplo, los marcos de prueba como pytest o los marcos web como Flask son similares a DSL. En lugar de escribir la lógica de bajo nivel, dejaron escribir los comandos expresivos.

Profundicemos en el ejemplo para aprender más sobre el idioma específico del dominio.

Ejemplo 1

Miremos el siguiente ejemplo, donde vamos a abstraer el lenguaje matemático en las funciones nombradas.

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

El siguiente es el resultado del programa anterior:

11

Ejemplo 2

Considere el siguiente ejemplo, donde vamos a utilizar DSL en los 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", "Welcome").set("port", 1231)
print(result.get("host")) 

El resultado del programa anterior es -

Welcome

Ejemplo 3

En el siguiente ejemplo, vamos a observar el DSL para consultar datos usando la 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)

El siguiente es el resultado del programa anterior:

['Ravi', 'Rahul']

python

  1. Python CALENDARIO Tutorial con ejemplo
  2. Python mientras bucle
  3. Clase de datos de Python:una mejor manera de almacenar datos
  4. Python vs C++:¿Cuál es la diferencia?
  5. Python - Operadores básicos
  6. El Zen de Python (pep-20 easter egg)
  7. Hello World:crea tu primer programa en Python
  8. Usando IPython
  9. Manejo de excepciones de Python Uso de la instrucción try, except y finalmente
  10. Python time.sleep():agregue retraso a su código (ejemplo)
  11. Instalación de PIP en Windows:una guía completa paso a paso