Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> Python

Python DSL's:oplossingen op maat voor gespecialiseerde domeinen

Wanneer we het programma schrijven, ontdekken we dat de problemen die we oplossen tot de specifieke gebieden behoren, ook wel domeinen genoemd, zoals:

  • Een banksysteem moet transacties en rentetarieven beschrijven.
  • Een webapplicatie moet de routes, sjablonen en reacties definiëren.

Door gebruik te maken van de General Purpose Language (GPL) zoals Python of Java kunnen we deze problemen oplossen, maar de code wordt te gedetailleerd en repetitief. Daarom zullen we de DSL (Domain Specific Language.

) gebruiken

DSL - Domeinspecifieke taal

De domeinspecifieke taal is een programmeer- of specificatietaal die speciaal voor het specifieke domein is bedoeld. Het verschilt van de algemene taal (GPL zoals Python, C++ of Java). Er zijn twee soorten:

  • Externe DSL − Het is een volledig nieuwe taal met zijn eigen syntaxis en compiler
  • Interne DSL (Embedded DSL) - Een DSL die in de hosttaal is gebouwd, met gebruikmaking van de syntaxis en constructies.

Externe DSL

Voor het werken met de databases gebruiken we de SQL, in plaats van lussen te schrijven om gegevens handmatig te scannen, schrijven we eenvoudigweg:

SELECT name FROM users WHERE age > 10;

Voor het ontwerpen van de webpagina's gebruiken we HTML. In plaats van de reeksen tekst en posities handmatig te beheren, declareren we eenvoudigweg:

<h1>Welcome To Tutorialspoint</h1>

Interne DSL

In Python is de domeinspecifieke taal bovenop de Python-syntaxis gebouwd. Frameworks zoals flask of Pandas zijn voorbeelden van DSL-achtige bibliotheken die helpen de problemen duidelijk uit te drukken.

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

Waarom DSL's in Python

Python is de beste keuze voor de DSL omdat:

  • De syntaxis is eenvoudig en expressief.
  • Hiermee kunnen de functies en klassen als bouwstenen worden gebruikt.

De testframeworks zoals pytest of webframeworks zoals Flask zijn bijvoorbeeld DSL-achtig. In plaats van de logica op laag niveau te schrijven, lieten ze de expressieve commando's schrijven.

Laten we in het voorbeeld duiken om meer te leren over de domeinspecifieke taal.

Voorbeeld 1

Laten we naar het volgende voorbeeld kijken, waar we de taal van de wiskunde gaan abstraheren in de genoemde functies.

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

Hieronder volgt de uitvoer van het bovenstaande programma -

11

Voorbeeld 2

Beschouw het volgende voorbeeld, waarbij we de DSL gaan gebruiken in de configuratiebestanden.

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")) 

De uitvoer van het bovenstaande programma is -

Welcome

Voorbeeld 3

In het volgende voorbeeld gaan we de DSL observeren voor het opvragen van gegevens met behulp van de SQL-syntaxis in 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)

Hieronder volgt de uitvoer van het bovenstaande programma -

['Ravi', 'Rahul']

Python

  1. Python range() Functie:Float, List, For loop Voorbeelden
  2. Python-tekenreekslengte | len() methode Voorbeeld
  3. Python time.sleep():voeg vertraging toe aan uw code (voorbeeld)
  4. Python - Afhandeling van uitzonderingen
  5. Python Basics Cheat Sheet:essentiële gegevenstypen, woordenboeken, lijsten en functies
  6. Python strptime()
  7. Python-operators
  8. Python-recursie
  9. Python beheersen:6 effectieve manieren om het kwadraat van een getal te berekenen
  10. Versnelde Python-leertrajecten:beheers Python van beginner tot gevorderd
  11. Python - Cijfers