계산 이론 분야에서 람다 미적분학의 기여는 무엇입니까?


85

람다 미적분학을 읽고 "알아라"는 것입니다. 나는 그것을 튜링 머신과는 다른 대안적인 계산 방식으로 본다. 함수 / 감소 (엄청나게 말해서)로 일을하는 흥미로운 방법입니다. 그래도 몇 가지 질문이 계속 나에게 잔소리합니다.

  • 람다 미적분의 요점은 무엇입니까? 왜 이러한 모든 기능 / 감소를 수행해야합니까? 목적은 무엇입니까?
  • 그 결과 람다 미적분학이 CS 이론을 발전시키기 위해 정확히 무엇을 했는가? 그것이 존재의 필요성을 이해하는 "aha"순간을 가질 수있게하는 것이 기여한 것은 무엇입니까?
  • 람다 미적분학이 오토마타 이론의 텍스트에서 다루지 않는 이유는 무엇입니까? 일반적인 경로는 다양한 오토마타, 문법, 튜링 머신 및 복잡성 수업을 거치는 것입니다. Lambda 미적분학은 SICP 스타일 강좌의 강의 계획서에만 포함됩니다 (아마도 아닐까요?). 그러나 나는 그것이 CS의 핵심 교과 과정의 일부라는 것을 거의 보지 못했습니다. 이것이 그다지 귀중하지 않다는 것을 의미합니까? 어쩌면 아니고 여기에 뭔가 빠졌습니까?

함수형 프로그래밍 언어는 람다 미적분학을 기반으로한다는 것을 알고 있지만 프로그래밍 언어를 사용하기 훨씬 전에 만들어 졌기 때문에 유효한 기여로 간주하지 않습니다. 그렇다면 람다 미적분학을 알고 / 이해하는 요점은 무엇입니까?


6
관련 답변은 -calculus와 TM 의 차이를 설명합니다 . cstheory.stackexchange.com/questions/1117/…λ
Suresh Venkat


5
어떤 방식으로, 그 기여는 필드 를 만드는 것이 었습니다 . 교회가 먼저 람다 미적분학을 생각 해낸 것을 잊지 마십시오. 그러나 처음에는 보편적 인 계산 모델로 여겨지지 않았습니다.
Dan Hulme

내 핵심 연구에서 나는 Functional ProgrammingHaskell과 약간의 Lisp에 대해 논의했습니다. 그 후임은 Principles of Programming LanguagesML을 사용하고 람다 미적분학을 도입 한 것입니다. 일부 답변에서 알 수 있듯이 람다 미적분학이 속하는 곳 : 프로그래밍 언어, 타이핑 등에 관한 수업
Shaz

이 질문은 TMs와 Lambda 미적분학 사이의 유사한 관계 이며 Lambda 미적분의 역사적 우선 순위에 대해 논의합니다
vzn

답변:


96

λ -calculus에는 두 가지 주요 역할이 있습니다.

  • 순차적, 기능적, 고차 계산 동작의 간단한 수학적 기초입니다.

  • 구성 논리의 증거를 나타냅니다.

이것은 Curry-Howard 대응 이라고도 합니다 . 공동으로, -calculus 의 이중 관점은 증명과 (순차적, 기능적, 고차적) 프로그래밍 언어로서, -calculus 의 대수적 느낌 (튜링 머신과 공유하지 않음)으로 강화되었습니다. 논리, 수학의 기초 및 프로그래밍 간의 기술 이전. 이러한 이동은 예를 들어 호모 토피 유형 이론 에서 여전히 진행 중이다 . 특히 프로그래밍 언어의 개발과 특히 타이핑 규칙은 없이는 상상할 수 없다 λ λ λ λλλλ-계산법. 대부분의 프로그래밍 언어는 -calculus 의 직계 후손 인 Lisp 및 ML (예 : Lisp를 위해 가비지 콜렉션이 만들어 짐 )에 대해 어느 정도의 부채를지고 있습니다 . calculus의 영향을 크게받는 두 번째 작업 은 대화식 증명 보조자 입니다.λλ

유능한 프로그래머이거나 심지어 컴퓨터 과학 이론가가되기 위해서는 -calculus 를 알아야 합니까? 아니요. 고차 기능을 갖춘 유형, 검증 및 프로그래밍 언어에 관심이 없다면 아마도 그다지 유용하지 않은 계산 모델 일 것입니다. 특히 복잡도 이론에 관심이있는 경우 기본 축소 단계 가 강력 하기 때문에 -calculus는 이상적인 모델이 아닙니다 . 에 임의의 수의 사본을 만듭니다. 따라서 λ( λ x . M ) N β M [ N / x ] N β λ λ M N M Nλ

(λx.M)NβM[N/x]
Nβ미세한 계산 비용을 고려할 때 비현실적인 기본 개념입니다. 이것이 이론 A가 -calculus에 매혹되지 않는 주된 이유라고 생각합니다 . 반대로, 튜링 머신은 프로그래밍 언어 개발에 큰 영감을주지 않습니다. 머신 컴포지션에 대한 자연스러운 개념이 없기 때문에 calculus에서는 과 이 프로그램이면 마찬가지입니다 . 이 대수 계산 계산법은 실제로 사용되는 프로그래밍 언어와 자연스럽게 관련되어 있으며 많은 언어 개발은 ​​새로운 프로그램 구성 연산자를 찾고 조사하는 것으로 이해 될 수 있습니다.λλMNMN

-calculus 의 역사에 대한 백과 사전 개요는 Cardone 및 Hindley의 Lambda-calculus 및 조합 논리의 역사를 참조하십시오 .λ


8
이것은 매우 좋은 답변입니다.
Suresh Venkat

9
reduction 의 "비 현실성"에 관하여 : Beniamino Accattoli와 Ugo Dal Lago는 최근 표준 감소 전략 (예 : 가장 왼쪽에서 가장 바깥 쪽)에있는 steps의 수는 변하지 않는 복잡함을 나타내는 놀라운 결과를 입증했습니다. 법안. 즉, reduction 자체를 구현하는 데 비용이 많이 들더 라도 감소 횟수를 계산하는 것은 비현실적인 복잡성 측정이 아닙니다 (예 : 클래스의 정의에 영향을 미치지 않음 ). β β PβββP
Damiano Mazza

5
@DamianoMazza 새로운 결과이기 때문에 그것은 이론 A의 역사에 영향을 줄 수 없었습니다. 또한,이 resuld는 일부 축소의 개념에 대해서만 유효하다고 생각합니다. IIRC Asperti의 논문 P = NP, 공유 까지는 J.-J.의 의미에서 '최적의'축소 전략이있는 경우 P와 NP가 무너짐을 보여줍니다. 부과.
Martin Berger

6
@MartinBerger : 물론입니다. 내 의견은 -reduction 의 복잡성에 대한 정보를 추가하는 것이지 이론 A에 대한 영향이 없다는 것에 대한 진술을 "수정"하는 것이 아닙니다. 그건 그렇고, Accattoli와 Dal Lago의 결과는 보통의 가장 왼쪽에있는 -reduction ( 참조, p.2, c.2, l.11)입니다. 그것이 너무 흥미롭고 언급 할 가치가있는 이유입니다. Asperti의 결과는 말했듯이 Lévy-optimal reduction은 -reduction 전략 이 아닙니다 (특히 가장 왼쪽은 Lévy-optimal이 아닙니다). β ββββ
Damiano Mazza

27

나는 -calculus가이 분야에 많은 방법으로 기여했으며 여전히 그것에 기여한다고 생각합니다. 세 가지 예가 뒤 따르는 것은 아니며 철저하지는 않습니다. 나는 -calculus 의 전문가가 아니기 때문에 몇 가지 중요한 점을 분명히 놓칩니다.λλλ

  • 첫째,이 기능의 동일한 집합을 의미 판명 계산의 다른 모델을 가지고 생각하는 것은의 기원에 있었다 교회 튜링의 논문 및 -calculus은 튜링 기계와 함께, 중요한 역할을했다 -recursive 기능.μλμ

  • 둘째, 함수형 프로그래밍 언어와 관련하여 나는 타당한 기여 로 이해하지 못합니다 . 기본적으로 모든 계산 모델은 컴퓨터 과학에서 어떤 일이 일어나기 오래 전에 발명 되었습니다! 따라서 -calculus는 어떤 의미에서 튜링 머신과 직교하는 계산에 대한 또 다른 관점을 가져 왔습니다.λ

  • 마지막으로,보다 구체적인 예로, 전용 언어를 사용하여 복잡한 클래스를 특성화하는 것을 목표로하는 암시 적 계산 복잡성을 생각합니다. Bellantoni-Cook의 정리 와 같은 첫 번째 결과 는 recursive 함수 와 관련하여 언급 되었지만보다 최근의 결과는 -calculus 의 어휘와 기술을 사용합니다 . 자세한 내용 이나 DICE 워크샵 의 진행 사항에 대해서는이 암시 적 계산 복잡성에 대한 짧은 소개를 참조하십시오 .λμλ


20

λ

CS 이론을 발전시키기 위해 람다 미적분학은 정확히 무엇을 했습니까?

λλλ

λ

λ


2
λλππ

5
나 자신을 복제 할 수 있다면 BLL과 실현 가능성을 사용하여 P / NP를 조사하기 위해 복제본을 만들 것입니다. 논리적 관계는 "자연적인 증거"가 아닌 것으로 보이며, 선형 유형의 훈련은 당신이 상대화 할 수없는 것을 보장하며, BLL의 다중 시간 완전성 이론은 당신이 놓친 알고리즘의 클래스가 있는지에 대한 걱정을 피하게하는 것처럼 보입니다. 선형성과 표현 이론 사이의 관계는 GCT와의 연결을 제안합니다. 그래도이 모든 것이 당신이 감탄하고 좌절하는 이유라고 생각합니다. :)
Neel Krishnaswami

1
@NeelKrishnaswami 님, BLL (bounded linear logic) 및 자연 증명에 관한 자료를 읽어 주시겠습니까?
Martin Berger

Re B vs. A : lambda-calculus는 동일한 계산을 더 잘 구성하는 것과 관련이 있지만 더 좋은 알고리즘을 생성 할 수는 없습니다. 결과에 대한 잘라 내기 제거 및 하위 수식 속성을 사용하면 1 차 유형의 모든 프로그램을 일급 함수없이 작성할 수 있습니다. 그러나 잘라 내기 제거는 중복 코드에 해당합니다. 따라서 충분한 복사 붙여 넣기를 수행하려는 경우 고차 함수가 필요하지 않다는 것을 다시 알 수 있습니다. (Reynolds의 비 기능화는 복사 붙여 넣기조차도 피할 수 있지만 전역 변환이므로 컴파일러에 맡기는 것이 좋습니다).
Blaisorblade

일화 적으로 말하면, 내 의견은 알고리즘 전문가와의 프로그래밍에 의해 동기 부여됩니다. 그는 훌륭하지만, 내가 생각하는 것보다 훨씬 덜 추상화되는 것처럼 보입니다. 나는 그것이 일반적인 것이라고 주장하지는 않지만, 알고리즘을 작성할 때 코드의 추상화가 종종 필요하지 않거나 강조되지 않는다고 주장합니다. (파티션 함수에 몇 가지 빠른 정렬 구현을 고려하십시오-나는 그것을 받아 들일 수 없습니다.)
Blaisorblade

13

여러 측면에서 질문에 접근 할 수 있습니다. 나는 역사적이고 철학적 인 측면을 남겨두고 당신의 주요 질문을 다루고 싶습니다.

람다 미적분의 요점은 무엇입니까? 왜 이러한 모든 기능 / 감소를 수행해야합니까?

부울 대수, 관계 대수, 1 차 논리, 유형 이론 또는 기타 수학적 형식주의 / 이론의 요점은 무엇입니까? 답은 디자이너가 어떤 목적 으로든 다른 목적 으로든 만들었더라도 그들에게 고유 한 목적 이 없다는 것입니다. 부울 대수의 기초를 세울 때 라이프니츠는 특정한 철학적 프로젝트 를 염두에 두었습니다. Boole은 자신의 이유로 그것을 연구했습니다. 관계형 대수학에 관한 de Morgan의 연구는 그의 다양한 프로젝트에 의해 동기를 부여 받았다. Peirce와 Frege는 현대 논리를 만드는 데 동기를 부여했습니다.

요점은 람다 미적분학을 만들 때 교회가 가질 수 있었던 이유에 관계없이 람다 미적분학의 요점은 실무자마다 다릅니다.

  • 누군가에게 이것은 계산에 관해 이야기하기에 편리한 표기법 입니다. Turing Machines 등의 대안.

  • 또 다른 방법 으로는보다 정교한 프로그래밍 언어 (예 : McCarthy, Stanley)를 구축 할 수 있는 확실한 수학적 기초 입니다.

  • 세 번째 사람에게는 자연과 프로그래밍 언어 (예 : Montague, Fitch, Kratzer)의 시맨틱을 제공하기위한 엄격한 도구 입니다.

람다 미적분학은 스스로 공부할 가치가있는 공식 언어라고 생각합니다. 형식화되지 않은 람다 미적분학에는 'Y-combinators'라는 작은 짐승이 있으며 재귀 함수를 정의하고 결정 불가능한 증거를 그렇게 우아하고 간단하게 만드는 데 도움이되는 방법을 배울 수 있습니다. 당신은 친밀한 존재한다는 놀라운 사실을 배울 수있는 대응 사이에 간단하게 입력 람다 계산법 과의 유형 직관 논리를 . 탐구해야 할 다른 흥미로운 주제가 많이 있습니다 (예 : 람다 미적분 의 의미론 을 어떻게 제공해야 합니까? 람다 미적분을 FOL과 같은 연역적 시스템으로 어떻게 바꿀 수 있습니까?)


Hindley & Seldin의 컴비 네이터 소개 및 λ–Calculus 소개를 확인하십시오 . Barendregt의 Lambda 미적분학 은 성경이므로 Hindley & Seldin에 매료되면 의미와 구문 적 성격에 관한 많은 주제가 있습니다.


6
나는 이것을 "자신을 위해"인수하지 않고있다. 수학적 형식주의의 요점은 일부 개념에 대한 우리의 이해를 밝히는 것입니다. 해명 된 것은 시간이 지남에 따라 발전 할 수 있지만, 형식주의가 어떤 아이디어에 대해 더 명확하게 생각하도록 도와주지 않으면 일반적으로 사라집니다. 그런 의미에서 람다 미적분이 TM에 의해 포함되지 않은 방식으로 계산 개념을 어떻게 설명하는지는 유효합니다.
Sasho Nikolov

1
나는 계산으로 환원과 치환을 생각하지 않고 람다 미적분학을 연구 할 수 있다고 생각 합니다. 내가 옳고 그것이 실제로 가능하다면, 우리는 계산에 전혀 관심이 없더라도 람다 미적분학에 관심을 가질 수 있습니다. 그러나 귀하의 의견에 감사드립니다. 기회가 생기면 그에 따라 답변을 수정하려고합니다.
후난 Rostomyan

@SashoNikolov — "TM에 포함되지 않은 방식으로" LC와 TM이 동등하므로 정의상 불가능합니다. 당신이 하나를 표현하거나 증명할 수있는 것은 무엇이든, 다른 것과 함께 할 수 있습니다. 그래서 그들은 서로를 중복시킵니다 (둘 다 일반적인 재귀 이론과 마찬가지로 또 다른 TM 등가 형식화). 그것은 TM과 동등한 시스템을 제외하고 TM 자체를 모두 폐기해야한다는 것을 의미합니까? 때로는 LC보다 TM에서 표현 하기더 쉽 거나 그 반대의 경우도 있기 때문에 그렇게 말하지 않을 것 입니다. 계산성에 대해 이야기하는 또 다른 방법입니다.
가브리엘 L.

1
@GabrielL. 당신은 전체 문장을 읽는다면, 그것은 "어떻게 람다 계산법은 않습니다라고 해명 개의 TM에 의해 포섭되지 않는 방법으로 계산의 개념을". 공식적으로 동등한 두 개의 수학적 정의는 여전히 다른 기본 개념을 상이하고 보완적인 방식으로 설명 할 수 있습니다. 내 의견은 TM에 대한 것이 아니라 람다 미적분학의 관점에서 계산 성을 표현함으로써 어떤 명확성을 얻는 지 묻는 것이 합리적이라는 것을 의미했습니다. 이것은 공식적인 동등성에 관한 것이 아닙니다.
Sasho Nikolov

어쨌든 핵심 단어를 놓쳤습니다. 답장을 보내 주셔서 감사합니다.
Gabriel L.

12

튜링은 수학이 유한 세트에서 선택된 읽기 / 쓰기 기호와 유한 한 수의 정신적 '상태'사이의 전환으로 조합 될 수 있다고 주장했다. 그는 자신의 Turing Machines에서 이것을 테이프의 셀에 기록하고 오토 마톤은 상태를 추적합니다.

그러나 튜링의 기계는 이러한 감소에 대한 건설적인 증거가 아닙니다. 그는 어떤 '유효한 절차'가 일부 Turing Machine에 의해 구현 될 수 있다고 주장했으며 Universal Turing Machine은 다른 모든 기계를 구현할 수 있지만 실제로 수학을 구현하는 일련의 기호, 상태 및 업데이트 규칙을 제공하지는 않았 음을 보여주었습니다. 그가 주장하는 방식으로. 다시 말해, 그는 우리가 수학을 적는 데 사용할 수있는 표준 기호 세트가있는 '표준 Turing Machine'을 제안하지 않았습니다.

반면에 람다 미적분학은 바로 그 것입니다. 교회는 구체적으로 우리 수학을 기록하는 데 사용 된 표기법을 통일하려고했습니다. LC와 TM이 동등한 것으로 밝혀지면 LC를 '표준 Turing Machine'으로 사용할 수 있으며 모든 사람이 우리의 프로그램을 읽을 수 있습니다 (이론적으로;;)).

이제 LC를 TM 방언이 아닌 원시로 취급하는 이유를 물을 수 있을까요? 답은 LC의 의미론이 부정적 이라는 것입니다. LC 용어는 '내재적'의미를 갖습니다. 교회 숫자가 있고, 더하기, 곱하기, 재귀 등을위한 함수가 있습니다. 이렇게하면 LC가 (공식) 수학이 수행되는 방식과 매우 잘 일치하므로 많은 (기능적) 알고리즘이 LC에 직접 표시됩니다.

반면에 TM 프로그램 의 의미는 작동합니다 . 의미는 기계의 동작으로 정의됩니다. 이런 의미에서 테이프의 일부 섹션을 잘라 내고 "이것은 추가입니다"라고 할 수 없습니다. 상황에 따라 달라지기 때문입니다. 테이프의 해당 부분에 닿을 때의 기계 동작은 기계의 상태, 길이 / 오프셋 등에 따라 다릅니다. 인수의 결과, 결과에 사용될 테이프의 양, 이전 작업으로 인해 테이프의 해당 섹션이 손상되었는지 등이 있습니다. 이는 끔찍한 작업 방식 ( "아무도 튜링 머신을 프로그래밍하고 싶지 않습니다")입니다. 많은 (제국적인) 알고리즘은 의사 코드로 표시됩니다.


5

다른 답변이 좋습니다. 여기에 다른 메쉬와 메쉬가 더 명확 할 수 있다는 추가 고려 사항 / 이유가 있습니다. 그럼에도 불구하고 오래된 기원은 시간이 지남에 따라 다소 손실되므로 명확하게 기억하기가 더 어려울 수 있습니다.

역사적 우선 순위!

람다 미적분학 은 다음의 심판 에서 적어도 1932 년 초 에 도입 되었습니다 .

  • A. 교회, "논리의 기초에 대한 가정", Annals of Mathematics, Series 2, 33 : 346-366 (1932).

튜링 기계 에 도입 된 1936 ~ 람다 계산법이 몇 년으로 TM의 모습을 간직한, 그래서!

  • 튜링, AM (1936). "Entscheidungs ​​문제에 대한 응용 프로그램이있는 계산 가능한 숫자" London Mathematical Society의 절차. 2 (1937) 42 : 230-265. doi : 10.1112 / plms / s2-42.1.230

다시 말해, 기본 답은 Lambda Calculus가 여러면에서 TCS 의 궁극적 인 레거시 시스템이라는 것 입니다. 코볼 이 언어에서 새로운 개발이 많이 진행되지는 않았지만 여전히 똑같습니다 . 그것은 최초의 Turing Complete 계산 시스템으로 나타 났으며 심지어 Turing Completeness의 기본 아이디어보다 앞서 있습니다. 람다 미적분학, 튜링 머신 및 포스트 대응 문제가 동등하고 튜링 동등성 및 교회 튜링 논문 의 개념을 도입 한 것은 단지 후 향적 분석이었습니다 .

람다 미적분학은 단순히 수학 중심논리 및 수학 공식 및 논리 공식 파생 등으로 표현하는 관점에서 논리 중심 POV 로부터 계산을 연구하는 방법 입니다. 또한 계산과 재귀 사이의 깊은 관계 와 수학적 유도 와의 밀접한 결합을 보여줍니다 .

이것은 여러 가지 측면에서 컴퓨팅 의 (적어도 이론적 인 ) 기원이 기본적으로 논리 / 수학에 있다고 제안했기 때문에 Davis가 그의 저서 인 Logic / Mathematicians의 엔진과 컴퓨터 . (물론 대수 대수학 의 기원과 기본적 역할은 그 개념적 역사적 틀을 더욱 강화시킵니다.)

따라서 극적으로, Lambda 미적분학은 컴퓨팅의 기원을 탐구 하는 교육 시간 기계 와 조금 비슷하다고 말할 수도 있습니다 !


1
부록, Lambda 미적분학은 Whitehead / Russell의 Principia mathematica의 영향을 많이받은 것으로 보이며, 이는 Godels thm에게도 큰 영감을 주었습니다 . 이 연구 중 일부는 세기의 전환 시점힐버트의 10 번째 문제 에서 영감을 얻어 "알고리즘" 이 정확하게 (수학적으로) 정의 되기 전에 알고리즘 솔루션 을 요구 했으며 실제로 퀘스트는 나중에 정확한 기술적 정의를 이끌어냅니다.
vzn

btw / clarification / iiuc 그것은 실제로 Post에 의해 1 차적 으로 연구 된 Post 표준 시스템 이었고, 명백히 더 단순한 Post Correspondence Problem 은 특별한 경우입니다. 또한 3 개의 주요 시스템 (TM, Lambda Calculus, Post 표준 시스템)을 모두 증명할 수 있도록함으로써 튜링 완전성 (그 이름으로 nec가 아님)의 개념을 개발하는 데 도움을 준 Kleene이었습니다.
vzn

또한 많은 역사적 세부 사항 / 상호 관계를 추적 하는 교회 역사 여행 위키 백과를보십시오
vzn

4
Cobol 비교에서 기분이 상하지 않는 데 어려움을 겪고 있습니다.
닐 토론토

-2

방금이 게시물을 보았고 내 게시물이 늦게 (년!) 늦어 졌음에도 불구하고 내 "페니의 가치"가 다소 유용하다고 생각했습니다.

대학에서 과목을 공부하는 동안 나는 그 문제에 대해서도 비슷한 생각을했습니다. 그래서 나는 "왜"라는 질문을 강사에게 제기했고 그 대답은 "컴파일러"였습니다. 그녀가 언급하자마자 축소의 배후의 힘과 그것을 조작하는 최선의 방법을 평가하는 기술은 왜 그것이 잠재적이고 유용한 도구인지에 대한 전체 목적을 갑자기 만들었습니다.

음, 그렇게 말하는 것은 나의 "아하"순간이었습니다.

제 생각에 우리는 종종 고급 언어, 패턴, 오토마타, 알고리즘 복잡성 등을 유용한 '태스크'와 연관시킬 수 있기 때문에 유용하다고 생각합니다. 반면에 lamdba 미적분학은 너무 추상적 인 것처럼 보입니다. 그러나 저급 언어로 작업하는 사람들이 여전히 있습니다. 람다 미적분학, 객체 미적분학 및 기타 관련 공식화로 인해 일반 프로그래머가 이익을 얻을 수있는 새로운 이론과 기술을 이해하고 개발하는 데 도움이되었다고 생각합니다. 실제로, 그것은 그런 이유로 핵심 모듈이 아닐 수도 있지만 (내가 언급 한 이유로) 학계 이외의 다른 사람들은 컴퓨팅에서 선택한 경력 경로에 필수 요소가 될 수 있습니다.


컴파일러 의 "aha"는 무엇입니까 ?
박사

마지막 단락은 완전히 추측적인 것처럼 보이며 실제로 "컴파일러"라는 단어가 왜 그 질문에 대답하는지 설명하지 않습니다.
David Richerby 2014

@PhD : 베타 감소 및 대체는 프로그램을 실행할 때 사용되지 않지만 최적화 컴파일러 내부에서 사용됩니다. 그건 아니에요 람다 계산법의 주요 중요하지만, 그것은 매우 구체적인 응용 프로그램입니다.
Blaisorblade
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.