초 고급 언어가 있습니까? [닫은]


20

역사적으로 HLL은 C, Fortran 또는 Pascal과 같고 VHLL은 Ruby 나 Python과 같습니다. 나는 4GL, 5GL, DSL 및 LOP라는 용어와 익숙하지 않은 사람들은 Wikipedia를 읽어야합니다. UHLL을 찾고 있습니다.

내 질문은 : 더 생산적인 컴퓨터 언어가 있고 거기에서 작업하는 사람이 있습니까?

생산성이 높을수록 코드 작성 횟수가 줄어들고 프로그래머 시간이 단축되어 버그가 적고 디버깅 횟수가 줄어들며 코드와 요구 사항 간의 밀접한 개념적 연결, 수정 및 유지 관리 노력이 줄어 듭니다.

관심있는 주요 도메인은 GUI 또는 브라우저 프론트 엔드, 데이터 지속성 및 인쇄 및 전자 메일과 같은 다른 시스템과의 연결을 갖춘 범용 비즈니스 및 소비자 응용 프로그램입니다. 다른 사람들은 다른 곳에 집중할 수 있습니다.

이러한 언어 중 일부는 도메인에 따라 다를 수 있으며, 대규모 응용 프로그램의 구성 기능 이상일 수 있습니다. Excel 스프레드 시트가이 범주에 속합니다.

이러한 언어 중 일부는 일반적으로 보일 수 있지만 범위가 좁고 많은 문제에 부적합 할 수 있습니다. 예를 들어 Matlab은 주로 사용자 상호 작용 및 텍스트 데이터를 다루는 프로그램에 적합하지 않을 수 있습니다.

VHLL과 유사하게 UHLL에있을 수있는 기능 중 일부를 알고 있습니다. 다음 중 하나 이상을 찾을 것으로 예상합니다 (목록에 자유롭게 추가하십시오).

  • GUI 양식의 그림은 GUI 양식을위한 프로그램입니다.
  • 행, 열 및 헤더를 포함하는 테이블은 데이터베이스의 테이블에 대한 프로그램입니다.
  • 선언적 논리에 따라 IF 문없이 수행해야 할 작업과시기
  • FOR 루프없이 데이터 집합에 대한 작업
  • 비 연속 실행 (예 : 데이터 구동, 패턴 일치, 나무 보행)

문제의 동기는 상대적으로 간단한 비즈니스 요구 사항을 대량의 코드로 변환하여 컴퓨터가 원하거나 필요로하는 것을 충족시키는 데 많은 노력을 기울이고 있다는 것입니다. 문제는 실제로 내 고통을 공유하고 언어 수준을 높이고 컴퓨터가 더 많은 노력을 기울 이도록 노력하는 다른 사람들을 찾는 것입니다. 이것은 1970 년대에서 80 년대에 주요 초점 이었지만 여전히 일어나고 있습니까?

이것들은 내가 알고있는 언어를 요약하거나 열거하기 위해 여기에 제공된 내 질문에 대한 제안 된 답변이며, 내 견해로는 부족합니다.

HLL 또는 VHLL이며 더 높은 수준에 속하는 개별 기능을 포함하는 많은 언어가 있습니다. 나는 그들 중 대부분을 사용했습니다 (종종 나쁘게). 그들은 포함

  • 매크로와 자체 수정 기능이있는 리스프
  • 데이터 의존성과 패턴 매칭을 가진 Haskell
  • 행과 테이블을 다루는 SQL
  • 영리 해 보이지만 실제로는 얻지 못하는 Rebol
  • 다차원 배열 및 초소형 연산자가 포함 된 APL (및 J)
  • LINQ를 사용한 C #
  • 멋진 컬렉션과 정규식이 내장 된 AWK / Perl / Python / Ruby

이 언어에는 하위 수준 기능이 너무 많아 UHLL이 아닙니다. 프로그래머는 여전히 유용한 프로그램을 위해 많은 저수준 구조를 작성해야합니다.

RAD / 4GL 패키지가 있습니다. 나는 몇 가지를 사용했다 :

  • dBase / Foxpro
  • Dataflex / Powerflex (내 제품)
  • 접속하다
  • 파워 빌더

그리고 나는 더 많이 사용하지 않았습니다. 언어는 대부분 HLL이지만 패키지에는 언어와 패키지 간의 특권 연결이 포함되어있어 애플리케이션을 빠르게 구축 할 수 있습니다. 왜이 접근법에 증기가 부족했는지는 확실하지 않지만 어쨌든 UHLL은 아닙니다.

원시 프레임 워크 / 라이브러리가 있습니다. 나는 몇 가지를 사용했다 :

  • 울타리
  • 자바 awt 및 스윙
  • .NET Windows Forms, WPF 및 ASP.NET.

이들은 현재 최첨단 기술입니다. 그들은 프로그래머가 구현 언어에 얽매이지 않고 매번 복잡성을 처리합니다. 이것은 UHLL이 아니지만 UHLL은 이들 중 하나 위에 구축 될 수 있습니다.

UML 및 Rational의 툴셋과 같은 디자인 툴이 있습니다. 내가 알 수있는 한, 비즈니스 요구 사항을 명확하게 설명하지만 프로그래밍 단계를 결코 대체 할 수는 없습니다. 프로그래머를 없애고 싶지 않고 단위와 시간당 더 많은 작업을 수행하십시오.

따라서 내가 생각할 수있는 모든 경쟁자를 제거하고 다른 사람이 더 나은 후보를 제공 할 수 있기를 바랍니다.

늦은 편집 : 나는 대답 : Wolfram Language라고 생각합니다. http://www.wolfram.com/wolfram-language/


2
@Phoshi-마지막 3 점도 SQL로 다룹니다. DWIM 방식이 아닙니다.
kdgregory

10
GUI 폼의 그림은 물론 GUI 폼을위한 프로그램 이지만 버튼 클릭, UI 새로 고침 등을 처리하는 코드는 어디에 있습니까? Visual Studio의 폼 디자이너와 함께 일한 적이 있습니까? 그들은 여전히 ​​표지 아래에 코드를 작성하지만 일반적으로 개발자는 코드를 볼 필요가 없습니다. 그들은 단지 "시각적으로"형태를 개발합니다. 이벤트 처리기 본문과 같은 사용자 지정 코드를 제외하고 ... 행, 열 및 헤더를 포함하는 테이블은 데이터베이스의 테이블에 대한 프로그램입니다. 데이터베이스 테이블의 모든 트리거, 인덱스 및 제약 조건은 어떻습니까?
FrustratedWithFormsDesigner

3
@FrustratedWithFormsDesigner : 그리고 아직 ... 좌절했습니다.
Robert Harvey

4
@RobertHarvey : 그렇습니다. 그러나 모든 코드를 직접 작성 해야하는 것처럼 좌절하지 않았습니다. ;)
FrustratedWithFormsDesigner

7
특정 문제 영역에 맞는 DSL보다 더 높은 수준의 언어 ( "가장 추상적 인")가 될 수있는 것은 무엇입니까? 물론 그러한 DSL을 효율적으로 구축하기 위해 특별히 설계된 언어가 있습니다.
SK-logic

답변:


33

나열한 거의 모든 기준은 MS Access, Sybase Power Builder, Oracle Forms, Ruby-on-Rails (웹 애플리케이션의 최신 표본) 및 기타 여러 가지 ( 위키 백과 참조)와 같은 4GL / RAD 도구에서 이미 시도한 것들 입니다. 매우 긴 공급 업체 목록). 실제로 이러한 도구를 사용하면 비교적 간단한 비즈니스 요구 사항을 어떤 종류의 프로그램으로 변환 할 수 있습니다. 그렇기 때문에 대부분의 RAD 도구 공급 업체는 모든 사용자가 자신의 의미에서 이미 UHLL을 발명했다고 생각하는 방식으로 제품을 광고하는 이유입니다.

문제는 요구 사항의 근거가 " 상대적으로 단순 " 하다는 사실을 떠나 자마자 이러한 환경으로 작성된 프로그램을 유지 관리하고 발전시키는 즉시 한계에 쉽게 도달하고 그 단점을 알 수 있다는 것입니다. 또는 요구 사항을 구현하는 것은 다른 "VHLL"보다 간단하지 않습니다. IMHO 프로그램의 버전 1.1, 1.2 및 1.3으로 넘어갈 때 버전 1.0의 효율성 향상을 죽일 가능성이 높습니다.

복잡한 요구 사항에 맞는 소프트웨어를 구축하려면 복잡한 프로그래밍 환경이 필요합니다. 아직은 탄환 은 없지만 , 우리는 이전의 프로그래밍 언어 (최소 30 년 동안의 시간 인 브룩의 기사가 출판 된 과거).


9
일에 대한 relatively simple. 실제 비즈니스 로직은 스파게티를 매우 빠르게 돌리는 경향이 있습니다.
Bobson

1
땅을 떠나 자마자 +1. 나에게 그들은 종종 "코드를 작성하지 않고 5 분 안에 블로그를 구축합니다!"와 매우 흡사합니다. 유형 광고. 실제 프로그램과 비슷한 것을 구현해야 할 때까지는 훌륭하지만 갑자기 간단한 것으로 생각했던 것은 아닙니다. 어쩌면 그들은 훌륭하고 이해하지 못할 수도 있습니다.하지만 마케팅은 더 멀리 갈수록 더 큰 혼란이 아니라고 믿기 어렵습니다.
BrianH

예, 알아요 나는 대부분의 4GL과 다른 몇 가지 코드를 작성했습니다. 내가 사용한 것들은 확장이 가능하지만 VBA와 같은 좋지 않은 HLL이 포함되어 있기 때문에 그렇게합니다. 그리고 모든 제품에는 한계가 있으며 폐쇄 제품이므로 이러한 한계를 변경할 수 없습니다. 네, 프레드 브룩스가 맞습니다. 그래서 UHLL에는 총알이 필요합니다.
david.pfx

이것을 "드림위버 효과"라고합니다. UHLL은 매우 추상적 인 추상화입니다
Charles Salvia

14

내가 아는 최고 수준의 프로그래밍 언어는 APL 입니다. 필요한 모든 기호를 나타내려면 특수 키보드가 필요합니다. 저자가 약 7 분 안에 Conway의 Game of Life를 완벽하게 구현 한 비디오를 확인하십시오 .

물론 실제 질문은 "실용적입니까?"입니다. 이런 방식으로 비즈니스를 유지하기 위해 전 세계에 충분한 APL 프로그래머를 찾을 수 있습니까? APL은 휴대 전화와 태블릿에서 실행됩니까? 소프트웨어 개발자 모두 새 키보드를 구입해야합니까?

실제로 생산성 향상을 원한다면 가장 좋은 방법은 Lisp 변형 일 것입니다. Clojure는 JVM에서 실행되며 .NET 포트가 있습니다. 사람들이 이미 해냈 기 때문에 이것을 말합니다. Orbitz 검색 엔진은 Lisp에서 실행되며 Paul Graham은 Lisp를 사용하여 전체 비즈니스를 운영하면서 자신이 경쟁 업체 (모두 Java를 사용하는)에 비해 상당한 이점을 제공한다고 주장했습니다.

프로그래밍 언어가 높을수록 실제 하드웨어에서 더 많이 제거되며 성능 문제가 발생할 가능성이 높아집니다. 정말 정교한 컴파일러가 없다면, 때때로 성능이 낮은 하위 언어로 응용 프로그램의 성능에 중요한 부분을 코딩 할 수 있습니다.

그리고 언어에 정통한 비판적인 개발자가 여전히 문제가되고 있습니다. 모든 사마귀에도 불구하고 Java 프로그래머를 찾는 데 아무런 문제가 없습니다.


주류 언어는 여전히 발전하고 있습니다. Linq는 데이터 중심 프로그래밍을보다 선언적 으로 만들기위한 특정 목적으로 만들어졌습니다 . Linq가 작동하도록 몇 가지 새로운 기능이 C # 언어에 추가되었습니다. 그들 모두는 개발자 생산성 향상과 관련이 있습니다.

평균을 치는 추가 자료


Linq는 내가 의미하는 코드 종류의 훌륭한 예입니다. 나는 한 줄로 ifs와 loops를 언제 어디서나 선택하는 것을 좋아합니다. 그런 다른 예가 있습니까?
david.pfx

1
@ david.pfx : C #은 그 당사자보다 다소 늦었고 구문이 거꾸로되어 있습니다 (SQL 키워드를 사용하지만 다른 사람이 SQL 순서와 더 간단한 키워드 / 기호를 사용하는 순서는 다릅니다). 그러나 SQL로 컴파일 할 수있는 방법은 대부분의 언어가 할 수있는 것보다 낫습니다.
Jan Hudec

4
@ david.pfx :리스트 이해력이있는 거의 모든 기능 언어가 Linq가하는 일을 할 수 있습니다.
Robert Harvey

7

초고 수준 언어의 존재를 제한하는 교차점에서 약간의 힌트를 주었다고 생각합니다. 언젠가는 더 이상 프로그래밍 언어로 언어를 식별하지 않습니다.

내가 알고 있고 여기서 큰 관심을 가질만한이 특정 현상의 가장 좋은 예는 Unified Modeling Language 입니다. 실제로, 여러분이 요구하는 것을 구체적으로 수행하기 위해 개발 된 특정 소프트웨어 응용 프로그램 스택이 있습니다. 그것은 많은 요구 사항을 충족하지만 반드시 생각하는 방식은 아닙니다. 그래도 비슷한 느낌이 들었고 나의 경험 (따라서)이이 문제에 대해 생각하는 방식을 바꾸었기 때문에이 상황에 대한 교육은 매우 교육적입니다.

필자는 개인적으로 Ultra High Level 개발을 허용하려는 IBM의 Rational Software Architect에 대해 이야기 할 것이다 . 목표는 철학자 비즈니스 개념을 행위자 또는 클래스와 같은 객체로 작성하고 엔티티 속성을 제공하며 연결을 정의하며 정보가 작업하는 동안 시스템을 통해 정보가 흐르는 방식을 정의하고이를 수행하는 것입니다. 모두 GUI가 있습니다.

예를 들어 DataStore 객체, Actor, 폼, Customer와 같은 몇 가지 관련 클래스를 드래그하고 그래프 등을 사용하여 객체 사이에 연결선을 그리고 붐을 생성 할 수 있습니다. 완료되면 작업 프로그램을 게시 할 수 있습니다. (이것은 분명히 매우 간단합니다)

실제로, 복잡한 GUI의 형성, UML의 매우 철저한 구현 / 해석, 그리고 UML 그래프 정보를 보유한 완전한 XML 문서를 사용하여 Java / C # / VB 코드로 컴파일하고, 구현 / 활성화합니다. Round-Trip Engineering을 사용하면 모델과 코드 간을 전환 할 수 있으므로 매우 높은 코피 철학 수준과 매우 낮은 수준의 플랫폼 별 코드 모두에서 항목을 제어 할 수 있습니다.

그것은 당신이 원하는 모든 것 이상이며, 당신은 교환에서 아무것도 포기하지 않습니다! 권리?

왜 모두가 그것을 사용하지 않습니까?!?!

글쎄, 그게 다야. 당신이 실제로 끝내는 것은 모 놀리 식 사업이며, 모든 것은 움직이는 많은 부분과 마술을 포함하며, 모든 다른 장소 (GUI, XML, 하위 레벨)의 변화에 ​​의해 영향을 받거나 때로는 영향을받지 않습니다. 코드, UML 모델 자체가 많은 다른 모델 레벨에서 작성 / 정의 / 유지 보수됩니다).

그것은 정말 놀랍습니다. 그러나 ... 이걸 어떻게 넣는가 ... 매우 높은 학습 곡선을 가지고 있으며 여러 분야를 염두에두고 설계되었으며 완전히 새로운 것으로 취급해야합니다. 당신이 이미 가지고있는 다른 기술들에 대한 일반화 가능성은 거의 없습니다.

결론은 수십만 개의 회사에서 수백만의 사람들이 프로젝트에 부어 넣었고 그 뒤에는 매우 큰 이름이 있어도 여전히 직접 편집해야하는 실행 가능 계층에서 C 스타일 코드로 끝납니다. 일부 객체 지향 클래스 설명과 UML을 프로그래밍 / 기계 수준으로 변환하지 않고 자동화가 완전히 완료되지 않기 때문입니다.

내 경험은 비계를 생성하는 매우 복잡한 방법이었습니다. 그것은 아마도 그러한 거대한 기술 사업에 대해 내가 말할 수있는 가장 잔인한 일이지만, 그것이 내가 얻은 것입니다.

내가 이야기 한 산업계 사람들로부터 슬프게도 같은 말을했습니다. 그들은 몇 달과 몇 달에 걸쳐 문서, 수많은 다이어그램, 모델, 회의, 분석을 작성하는 데 많은 노력을 기울 였다는 생각이 들었고 개발 팀은 코드를 작성하고 종종 아직 코드를 작성하지 않았습니다. 또 다른 사양 바인더 (더 이상 읽지 않는 사람). 이제는 Java와 일부 특수 목적 다이어그램 / 시각화 소프트웨어와 Agile을 사용하기 만하면 그 이야기의 끝입니다.

어쩌면 이것은 불공평하며 올바르게 수행하면 효과가 있습니다. 어쩌면 컨설턴트와 교수들과 대화를 나누면서 그들은 시스템을 배우고 더 많은 훈련을 받기 위해 몇 주 동안 특별한 여러 주간 개발 워크샵에서 많은 시간을 보냈다고 말하며 시스템을 만드는 방법을 배우는 데 실제로 몇 년을 보냈다고 주장했습니다. 일과 어디로 가는가.

그러나 아마도 모든 프로그래머의 잘못 일 것입니다. 시스템 작동을 거부하고 컴퓨터 프로그래밍과는 전혀 다릅니다. 아마도 순수 코드 프로그래머는 양초 제작자 및 예전의 직공처럼 작업을 교체하는 것을 거부하기 때문에 구현 사양의 제한된 작업을 거부하고 다른 모든 사람들이 좌절하고 나쁜 말을 할 수 있습니다. 그리고 그것은 거의 완벽했습니다.

그러나 ... 나는 그것에 진실이있을 수 있다고 생각하지만, 나는 그것이 실제로 실제로 잘 작동하지 않는다고 생각합니다. 나는 그것이 정말로 힘들지 않은 무언가를 바꾸고 (컴퓨터 프로그래밍), 그것이 작동한다면 그것이 좋을 것이라는 점까지 더 어려워 지지만 성스러운 쓰레기는 아무 것도없는 오랜 시간을 보낸다고 생각합니다. 그것을 위해 그것을 보여줘!

아마도 수천 명 이상의 팀이있는 기업에서만 작동 할 수도 있고 아직 없을 수도 있습니다.

난 몰라

그러나 Ultra High Level Languages에 대한 이러한 접근 방식을 사용하여 옳고 그른 것에 대한 연구-UML 종류의 요구 사항을 그러한 고려 사항에 포함시켜야한다고 생각합니다. 실제로 Rational Software Architect와 같은 것을 고려해야합니다. 잠재적 인 바보 심부름.

아니면 20-50 년 동안 또 다른 노력을 기울여야 할 것입니다. 나는 더 이상 프로그래밍 언어가 더 이상 제약이라는 낙관적이지 않다.

그리고 프로그래밍 언어가 이전에 제약이 되었기 때문에 개선으로 인해 잠재적 인 규모의 개선이 이루어졌습니다. 그들이 더 이상 그런 제약이 없다면, 어떤 혁신이라도 그러한 개선의 순서를 제공 할 수 없을 가능성이 훨씬 높습니다. 그러나 나는 미래를 말할 수 없다! 그래서 나는 나머지가 "작품 안에"있지 않다고 확실히 말할 것이다.


정말로 코딩을 제거한다고 생각하십니까? 컴퓨터가 우리처럼 똑똑해질 때까지 비즈니스 요구 사항이 코드로 직접 변환 될 것이라는 전망은 없습니다.
david.pfx

1
Rhapsody (IBM이 다른 유사한 도구를 구입하고 IBM Rational 브랜드로 두 개의 유사한 애플리케이션 세트를 보유한 이유가 궁금합니다.)와 함께 일하는 것에 대해 모호한 기쁨을 느꼈으 며, 그 경험에 의하면 스케일이 맞지 않습니다. 동일한 코드에서 작업하는 여러 사람이 잘 연구되고 해결 된 문제이지만 동일한 UML에서 작업하는 여러 사람이 작동하지 않습니다.
Jan Hudec

"왜 모든 사람이 그것을 사용하지 않습니까?!?!"-나쁜 결과를 낳기 때문입니다. 이것은 생애 1 인치 이내에 막힌 말입니다. UML은 실패입니다.
duffymo

1

잠시 생각해 보면, 높은 수준의 프로그래밍은 기본적으로 쉽게 구할 수 있고 입증 된 작은 부품을 구성 할 수 있습니다. 프로그램이 다양한 라이브러리의 매우 간단한 접착제 코드 인 시점까지. 아마도 접착제는 매우 표현적인 DSL 일 것입니다. 모든 프로그래밍 언어에서이 작업을 수행 할 수 있습니다.

개인적으로, 나는 작곡가에 대한 해결책이 당신이 본능적으로 느끼는 것과는 반대로 객체 지향 프로그래밍에서 발견되지 않는다는 것을 점점 더 많이 느끼기 시작했습니다. 이 패러다임과 명령형 프로그래밍은 프로그래머에게 너무 많은 자유를 제공하므로 재사용하기 쉬운 코드를 작성하기가 너무 어렵습니다.

오히려 함수형 프로그래밍은 구성성에 훨씬 적합한 프리미티브를 제공한다고 생각합니다. 순수 함수형 프로그래밍 언어를 사용하면 부작용이있는 함수를 정의 할 수 없으므로 버그를 줄이거 나 더 쉽게 발견 할 수있을뿐만 아니라 버그를보다 쉽게 ​​구축 할 수 있습니다 (더 큰 시스템으로 구성).

함수형 프로그래밍에 관심이 있다면 Haskell 과 같은 최신 함수형 언어를 살펴볼 수 있습니다 . Parsec 모듈은 구문 분석에 멋진 고급 DSL (기능 전문 용어로 콤비 네이터 라이브러리라고 함)을 제공 한다고 생각합니다 . 또한 몇 줄의 코드로 강력한 GUI를 구축 할 수있는 Haskell을위한 기능적 반응성 프로그래밍 프레임 워크가 있습니다.


1
예 또는 아니오를 말하지 않고 "예 / 아니오"질문에 대답하는 경우 -1입니다. (OP의 질문에서 특정 어휘를 무시합니다.)
DougM

사실, 나는 이것이 옳다고 생각합니다. UHLL은 이미 존재하는 기능을 구현하기위한 것이 아니라 하위 수준에서 생각하기 어려운 방식으로 기능을 결합한 것입니다. 아시나요? 하스켈이 아닙니다.
david.pfx

긍정적 인 답변에 감사드립니다. DougM에 동의하면서 실제로 답변 삭제에 대해 생각하고있었습니다. 나는 Haskell 자체가 그 자체라고 제안하는 것이 아니라 오히려 기능 프로그래밍 언어 (Haskell과 같은)에서 결합기 라이브러리를 사용하는 것이 기성품 구성 요소를 결합하는 방법이라고 생각합니다.
Matthias P.

0

게임에서 퀘스트와 인터페이스를 스크립팅하는 데 사용되는 Lua가이 기준을 충족 할 것으로 기대합니다. 레벨 디자이너가 "플레이어가 밥과 대화 할 때 밥의 에픽 퀘스트를 시작할 때"라고 쉽고 빠르게 말할 수 있도록하는 유사한 도메인 특정 언어 (및 맵 빌더 유틸리티)도 있습니다.

나는 설명에 코드를 이동에 초점을하는 몇 가지 더 난해한 언어를 알고 어떻게 진행되고가 아니라 어떻게 그것을 할하기로했다. 일부는 매우 선언적인 논리 기반 접근 방식에 중점을 둡니다. 그 중 일부는 반응 형 프로그래밍에 중점을 둡니다. 일부는 액터에 초점을 맞 춥니 다 (특히 병렬화가 필요한 것들). 일부는 단순히 구문을보다 자연스럽게 만드는 데 중점을 둡니다. 자연 구문은 자연 언어와 코드 사이의 번역으로 인한 버그가 줄어든다는 주장입니다.

순위 및 파일 개발자를 위해 훨씬 더 많은 생산성을 제공하는 한 실제로 유망한 것은 없습니다.


1
루아가 UHLL의 범위 아래에서 낮은 수준의 세부 사항을 코딩하는 언어로 더 적합하지 않습니까?
david.pfx

0

REBOL이 모든 기준에 맞는 것 같습니다. 여러 줄의 코드로 비교적 복잡한 GUI 앱을 만들 수 있지만 "특수"는 DSL 작성입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.