python
프로그램을 작성할 때 우리가 해결하는 문제는 다음과 같은 도메인이라고도 불리는 특정 영역에 속한다는 것을 알게 됩니다.
Python이나 Java와 같은 범용 언어(GPL)를 사용하면 이러한 문제를 해결할 수 있지만 코드가 너무 자세하고 반복적이 됩니다. 따라서 DSL(도메인 특정 언어)을 사용하겠습니다.
도메인 특정 언어는 특정 도메인 전용 프로그래밍 또는 사양 언어입니다. 범용 언어(Python, C++, Java와 같은 GPL)와는 다릅니다. 두 가지 유형이 있습니다:
데이터베이스 작업을 위해 우리는 SQL을 사용하고 데이터를 수동으로 스캔하는 루프를 작성하는 대신 다음과 같이 작성합니다.
SELECT name FROM users WHERE age > 10;
웹페이지를 디자인하기 위해 HTML을 사용합니다. 텍스트 및 위치 문자열을 수동으로 관리하는 대신 간단히 다음을 선언합니다.
<h1>Welcome To Tutorialspoint</h1>
Python에서는 도메인별 언어가 Python 구문 위에 구축됩니다. 플라스크나 팬더와 같은 프레임워크는 문제를 명확하게 표현하는 데 도움이 되는 DSL 유사 라이브러리의 예입니다.
@app.route('/home')
def home():
return "Hello...!"
Python은 다음과 같은 이유로 DSL에 가장 적합한 선택입니다.
예를 들어 pytest와 같은 테스트 프레임워크나 Flask와 같은 웹 프레임워크는 DSL과 유사합니다. 낮은 수준의 논리를 작성하는 대신 표현 명령을 작성하도록 허용했습니다.
도메인별 언어에 대해 자세히 알아보기 위해 예제를 살펴보겠습니다.
수학 언어를 명명된 함수로 추상화하는 다음 예를 살펴보겠습니다.
def add(x, y): return x + y def multiply(x, y): return x * y print(add(multiply(1, 3), multiply(2, 4)))
다음은 위 프로그램의 출력입니다.
11
구성 파일에서 DSL을 사용하는 다음 예를 고려해 보세요.
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"))
위 프로그램의 출력은 -
Welcome
다음 예에서는 Python 내부에서 SQL 구문을 사용하여 데이터를 쿼리하는 DSL을 살펴보겠습니다.
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)
다음은 위 프로그램의 출력입니다.
['Ravi', 'Rahul']
python
특정 유형의 재료는 함께 문지른 후 신비롭게 서로를 끌어당긴다는 것이 수세기 전에 발견되었습니다. 예를 들어, 실크 조각을 유리 조각에 문지른 후에는 실크와 유리가 서로 달라붙는 경향이 있습니다. 실제로 두 재료가 분리되어 있어도 발휘할 수 있는 인력이 있었습니다. 유리와 실크는 이와 같이 작용하는 것으로 알려진 유일한 재료가 아닙니다. 라텍스 풍선에 손을 대다가 겨우 붙으려는 것을 발견한 사람이라면 누구나 이와 같은 현상을 경험했을 것입니다. 파라핀 왁스와 양모 천은 초기 실험자들이 함께 문지른 후 매력적인 힘을 나타내는 것
초록 심자외선 AlGaN 기반 나노로드(NR) 어레이는 나노임프린트 리소그래피와 완전한 구조의 LED 웨이퍼에서 하향식 건식 에칭 기술로 제작되었습니다. 주사전자현미경과 투과전자현미경을 통해 고도로 정렬된 주기적인 구조적 특성과 형태를 확인하였다. 평면 샘플과 비교하여 음극 발광 측정은 NR 샘플이 약 277 nm에서 다중 양자 우물로부터의 방출에 대해 1.92배 광 추출 효율(LEE) 향상 및 12.2배 내부 양자 효율(IQE) 향상을 나타냄을 보여주었습니다. LEE 향상은 공기와 에피층 사이의 잘 제작된 나노구조 인터페이스에