최신 동적 언어에 비해 무거운 GUI 앱을 빌드하는 데 C ++이 여전히 선호되는 이유는 무엇입니까? [닫은]


46

무거운 GUI 컨텐츠를 포함하는 대부분의 앱은 일반적으로 C ++로 개발됩니다. 대부분의 게임 / 브라우저는 C ++로 코딩됩니다.

최신 동적 언어로 더 나은 GUI 앱을 개발할 수는 없습니까? 나는 자바가 좋은 선택이 아니라는 것을 안다. 그러나 C와 기본적으로 빌드되는 파이썬과 같은 언어는 어떻습니까? 최신 언어가 조상보다 낫지 않습니까? 왜 최신 언어보다 오래된 C ++를 선호해야합니까?

또한 GUI 처리 속도를 높이기 위해 C ++을 담당하는 것이 무엇인지 알고 싶습니다. 반면에 다른 최신 언어에는없는 것이 무엇입니까?


22
자바가 '동적'언어라고 생각한다면,이 문맥에서 그 단어의 의미에 대해 혼란스러워합니다.
Mike Baranczak

15
@ Mike Baranczak : 긴 이야기입니다. 기본적으로 스탠포드 (Stanford)에서 처음으로 자체 연구라는 Sun Research에서 연구 프로젝트가있었습니다. 자기는 간단 더 강력한, 더 표현이 가장 중요하다 스몰 토크 제품군의 프로그래밍 언어입니다 크게 스몰 토크보다 더 동적. 이 (모두 스몰 토크 방언과 마찬가지로)을 포함에 전체 시스템을 개발하는 프로그래밍 언어로 설계 (이에 국한되지 않음) 데스크톱 애플리케이션, 서버, 운영 체제, 장치 드라이버, 자체 되었기 때문에, 그것은 했다 엄청나게 빠른에. 그래서 Self 팀은 새로운
것들을

15
... 최적화 기술, 그리고 셀프 VM이 1987 년에 나왔을 때 (그리고 더 많은 1992 년 두 번째 세대 있도록), 그것은 이었다 빨리. 다른 스몰 토크 VM보다 빠릅니다. 셀프 시스템은 예를 들어, 많은 코드와 함께 제공, 그 예 중 하나는 심지어 스몰 토크 자동으로 작성 통역하고 있었다 빨리 다른 스몰 토크 VM 이상이었다. 그 당시 자체는 많은 C ++ 구현보다 빠르며 심지어 C와 경쟁하기까지했습니다. 그것은이었다 빨리 . 그러나 Sun은 객체 지향 프로그래밍 언어 나 빠른 VM이 필요하지 않다고 결정했습니다.
Jörg W Mittag

15
... 기본적으로 자금을 말려서 Self 프로젝트를 굶어 죽었습니다. Self VM 엔지니어들이 Sun을 좌절에서 빠 뜨렸을 때, 그들은 LongView (SmallTalk : StrongTalk를위한 정적 타입 시스템 옵션으로 가장 널리 알려진 제품)라는 Smalltalk 스타트 업에 빠르게 적응했습니다. LongView는 스몰 토크 용 정적 타이핑을 판매 할 수 없다는 것을 알고 있었기 때문에 지구상에서 가장 빠른 스몰 토크를 판매 한 다음 일종의 트로이 목마 게임에 StrongTalk를 패키지에 포함시킬 것이라고 생각했습니다. 그들은 또한 ... 멋진의 어느 것도 실현되지
요 르그 W MITTAG에게

15
셀프 VM이 한 ... 최적화는 자기 특히 어떤 식 으로든 있었지만, 거의 모든 객체 지향 언어 (또는 단지 모든 언어에 적용했다 모두에서 ). 따라서 셀프 VM 엔지니어는 애니 모픽 VM이라는 스몰 토크 VM에서 작업해야합니다. 다시 말하지만, Animorphic VM이었다 눈부시게 빠른 (여전히 코드베이스 15 년 정도에 접촉되지 않았음에도 불구하고, 실제로, 그것은 여전히 현대 고성능 Smalltalks,의 JVM과 .NET과 경쟁 할 수있는 , 특히 당신이 가지고가는 경우 그것은 20 메가와 486s를 위해 설계 되었기 때문에 그것보다 훨씬 적은 자원을 사용한다는 점을 고려하여 ...
Jörg W Mittag

답변:


58

저는 C ++ GUI 앱 (주로 Windows 용)을 작성하는 사람들 중 하나입니다. Qt로 정확하게 말하십시오. 내 이유 :

  • 나는 C ++을 좋아한다. 저는 프리랜서이며 일반적으로 도구를 선택할 수 있습니다 (행운합니다!)
  • 관리되는 환경에서는 관리되지 않는 코드를 사용해야 할 때 어려움을 겪을 수 있습니다 (C #의 긴 윈윈 드 선언은 누구입니까?).
  • 보다 쉽게 ​​배포되는 종속성이 적습니다.
  • 모든 것에 대한 통제력 강화.
  • RAII (vs. GC). 그리고로 할당하더라도 스마트 포인터 또는 계층 구조를 사용하기 때문에 명시 적으로 아무것도 new거의하지 않습니다 .deleteQObject
  • C ++은 요즘 매우 흥미 롭습니다. 컴파일러가 새로운 표준을 완전히 지원할 때까지 기다릴 수 없습니다.
  • 속도 (목록의 끝에서만. GUI 자체에는 그렇게 중요하지 않다는 것을 알고 있지만 C ++ 프로그램은 런타임, 바이트 코드 JIT 컴파일 및 유사한 기술이 추가하는 오버 헤드로 고통받지 않기 때문에 속도 빠릅니다. 프로그램.)

보시다시피, 이들은 주로 개인 취향입니다. 나는 내 일이 즐거워지는 것이 중요하다는 것을 알게되었고 C ++는 그것을 내게 제공합니다.


11
+1 속도는 개인 취향 외에는 가장 중요한 이유입니다. 그러나 저는 "C ++은 요즘 매우 흥미 롭습니다"를 좋아합니다. @ Tamás Szelei가 아니라 문제 를 해결하기 위해 : 새로운 아이디어, 패러다임, 기술, 제품으로 빠르게 변화를 계산하지만 최신이자 가장 큰 것은 미덕이 아닙니다. C ++은 오래 전부터 사용되어 오래되었다는 의미는 아니며 최신 기술과 비교하여 오랫동안 입증 된 실적을 가지고 있습니다. 오리지널 Stroustrup 텍스트 (발명가의 책)는 무겁지만 다른 사람들이 멋진 책을 가지고 있습니다-예를 들어 oreilly.com을 확인하십시오.
therobyouknow

1
@Tarnas 저는 "항상 더 빠를 것"이라고 생각합니다. 다소 협소하고 권위가 있지만 공감대를 보증하기에는 충분하지 않습니다 ...
Max

2
일화적인 지원으로서 저는 C ++과 JavaScript를 사용하여 Windows에서 상당히 큰 GUI를 만들기 위해 다른 프로젝트에 참여했습니다. C ++ 및 JavaScript의 다른 게임 콘솔 프로젝트에도 참여했습니다. 두 경우 모두 JavaScript에서 속도와 메모리 문제가 훨씬 더 많았습니다.
로봇 고트

2
파티에 늦었지만 "쉽게 배포하기 쉬운 종속성"에 대해 자세히 설명 할 수 있습니까?
weberc2

2
저는 20 년 이상 C ++을 사용해 왔습니다. 11, 14 및 17 이후 많은 새롭고 훌륭한 기능이 추가되었습니다. C ++을 스크립팅 언어로 거의 사용하면서도 빠른 속도의 이점을 얻을 수 있습니다. BIG 데이터로 작업 할 때 다른 언어는 10-1000 느리기 때문에 C ++을 거의 사용해야합니다.
Kemin Zhou

32

속도가 중요하기 때문입니다.

  • 게임 은 성능이 중요한 핵심 작업에 C ++을 사용합니다. 유연성이 중요한 스크립팅 작업에 동적 언어를 사용합니다.

  • 데스크톱 GUI 앱 : 예를 들어 Visual Studio는 네이티브 C ++가 아닌 .NET으로 작성됩니다. IDE 자체는 많은 성능 집약적 인 작업을 수행 할 필요가 없으므로 IDE에 대해 잘 작동하는 것 같습니다. (컴파일러, 링커 및 기타 도구는 반드시 .NET으로 작성되지는 않지만 wawa가 주석에서 지적한 것처럼 일부는 (예 : VB.NET)

  • 브라우저 도 빨라야합니다. 결국 그들은 일종의 보조 OS입니다. 반면에, Mozilla 프레임 워크는 자바 스크립트에 크게 의존하는 것처럼 보이기 때문에 Firefox의 많은 부분이 실제로 자바 스크립트로 "쓰기"되었다고 주장 할 수 있습니다.

요약하자면, C ++이 반드시 선호되는 것은 아니지만 성능 병목 현상이 발생하면 금속에 더 가까워지고 C ++ (웰 또는 C)을 충족시킵니다. 때로는 하나의 언어 인 C ++로 모든 것을하기가 더 쉬울 것입니다.


1
+1 최고의 답변 : 순전히 C ++를 사용하는 가장 큰 이유는 속도와 관련이 있습니다. 마이크로 소프트조차도 C ++이 C # 및 Visual Basic과 비교하여 성능에 가장 적합하다는 것을 인정합니다. Visual Studio 페이지에서 C ++을 참조하십시오. Qt와 같은 크로스 플랫폼 라이브러리를 사용하는 경우 휴대 성이 매우 빠릅니다. 또한 주관적인 것이 아니라 객관적인 것이기 때문에 최선의 대답입니다.
therobyouknow

2
두 번째 요점은 전적으로 사실이 아닙니다. VB.NET 컴파일러는 VB.NET으로 작성되고 F # 컴파일러는 F #으로 작성됩니다. C # 컴파일러는 Roslyn 프로젝트에 대해 공개 된 것이 아니라 C # 컴파일러가 C #으로 다시 작성되고 있다고 생각합니다.
웨슬리 와이저

5
Visual Studio GUI (Chrome)는 C # 및 WPF로 작성되었습니다 (vs2010부터). 솔루션 탐색기, 빌드 시스템, 코드 브라우저 및 도구 상자는 winforms와 함께 C # / C ++로 작성되었습니다. 컴파일러는 C ++로 작성되었습니다.
Martin Beckett

대부분의 데스크톱 앱의 경우 렌더링 및 레이아웃 엔진 (예 : 뷰) 만 빨라야합니다. 어쨌든 모델은 많은 시간을 소비하지 않는 경향이 있으며, 컨트롤러는 사용자가 무언가를하기를 기다리는 데 대부분의 시간을 소비합니다 (그리고 어떤 사용자도 초당 10 회 정도 클릭 할 수 있습니다).
Donal Fellows

@MartinBa : C # 및 VB (Roslyn)의 현재 컴파일러는 C #으로 작성되었습니다.
jmoreno

17

C ++로 작성된 GUI 앱은 일반적으로 레거시 이유로 인해 수행됩니다. 파이썬 (Qt 또는 Gtk 포함)은 Windows 응용 프로그램에서 작업하는 경우 C #과 마찬가지로 GUI 응용 프로그램에 매우 유용합니다. 뭔가 새로운 것을 시작할 때, 하나되는 아주 많이 있기 때문에 수행해야합니다 배관 작업의 부족 ++ C 선호.


5
기존 코드 +1이 중요합니다. 새로운 프로그램을 개발할 때 처음부터 완전히 시작하는 경우는 거의 없습니다

7
Qt와 함께 C ++을 사용하는 것보다 Qt와 함께 Python을 사용하는 것이 더 바람직합니까? 오늘 새 프로젝트를 시작한다면 여전히 GUI에 C ++을 사용합니다. 왜냐하면 : a) 그것은 내가 아는 것입니다. b) 잘 작동합니다. C ++이 오래전부터 "오래된"것은 아닙니다.
TZHX

2
@TZHX : "내가 아는 것"은 실행 가능한 주장이다. 만약 그것이 주어지지 않았다면, 더 이상 메모리 관리를 돌볼 필요가 없다는 것은 엄청난 성능 향상이며, 단일 프로젝트에서도 파이썬을 배우는 노력을 상쇄 할 수 있습니다. 파이썬을 사용하는 또 다른 이유는 크로스 플랫폼입니다. C ++에서는 조심하고 특별한 조치를 취해야하지만 파이썬은 효과가 있습니다.
tdammers

4
C ++을 아는 사람을 위해 C ++에서 Qt 대신 PyQt를 사용하면 어떤 이점도 얻지 못합니다.
BenjaminB

13
C ++도 잘 작동합니다. 파이썬을 사용하면 사용자가 설치 한 파이썬 버전에 대해 걱정하거나 번들로 묶을 걱정이 필요합니다. 어리석은 오류를 범하지 않는 한 "메모리를 돌보는"작업은 그리 많지 않습니다. 많은 사람들이 "메모리 관리"를 실제로 얼마나 큰 차이를 몰라도 C ++ 작업에 큰 장애로 생각합니다.
TZHX

16

.NET 및 이와 유사한 군중이 얼마나 많은 성능 테스트를 수행하더라도 벤치 마크에서 얼마나 가까운 지에 관계없이 결국 C ++ 앱이 시작됩니다. 콜드 부팅시 더 빠르며 더 빠르며 더 많은 방법으로 개선 할 수 있습니다.

프로젝트 시작 단계에서 .NET이 갈 길이라는 수많은 증거를 들었지만 일단 선택하면 항상 무거운 성패가되었습니다.

또한 현재 C ++은 특히 Qt 또는 WTL과 같은 프레임 워크에서 매우 안전하고 사용하기 쉽습니다.


2
+1 : "또한 현재 C ++은 특히 Qt와 같은 프레임 워크에서 사용하기에 매우 안전하고 사용하기 쉽습니다 ..."나는 전적으로 동의합니다. ) 기본 코드로 컴파일되며 (2) 합리적인 기능 세트 (OOP, 템플릿)가 있으며 (3) Qt와 같은 매우 우수한 프레임 워크가 있습니다. 이것은 언어가 다소 크고 배우기 어렵다는 사실을 보상합니다. 언어의 적절한 하위 세트와 일부 좋은 라이브러리를 마스터하면 실제로 생산성을 높일 수 있습니다.
Giorgio

10

대부분의 게임 엔진 은 C ++로 코딩됩니다. 또한 많은 브라우저 엔진 이 C ++로 코딩되어 있습니다. 그러나 브라우저 GUI는 종종 간단한 스크립트 (JavaScript, Python)를 사용하여 코딩됩니다. 소스 엔진을 제외하고 대부분의 게임 엔진은 스크립트 언어 (Lua 또는 Python)도 사용합니다. [참고 : 루아 스크립트 게임 목록 ]

또한 Qt와 같은 인기있는 C ++ GUI 라이브러리를 사용하십시오. 현재 버전 (4.7)에서는 GUI에 QML을 사용합니다. QML은 기본적으로 Qt 바인딩이있는 JavaScript입니다.

따라서 실제로 C ++ 동적 언어 는 없으며 혼합되어 있습니다.


[인용 필요]. 많은 게임에서 스크립팅 언어를 사용하여 사용자를 확장 할 수 있지만 릴리스 바이너리 기능에 스크립팅 언어를 사용하는 게임이 많지 않다는 것을 알고 있습니다.
ProdigySim

1
@ ProdigySim : 나는 몇 가지를 알고 있습니다. World of Warcraft (Lua + XML), Naughty Dog 's Uncharted series (Lisp), Unreal series (UnrealScript), Torque and Unity 엔진을 기반으로 한 게임, Dungeon Siege, NeverWinter Nights 및 기타 많은 것들을 머릿속에서 들었습니다. 스크립팅 호스트는 대부분의 UI 기능과 게임 상태를 위에서 아래로 가져 오는 데이터 중심 게임이 표준이되고 있습니다.
greyfade

@ProdigySim : 일반 사용자에게 숨겨져 있어도 내부적으로 스크립팅 엔진을 사용하지 않는다는 의미는 아닙니다. 기본적으로 게임 개발자는 두 가지 옵션이 있습니다. 모델에 고유 한 스크립트 언어를 만들거나 범용 언어 중 하나를 사용하는 것입니다. Lua는 일반적으로 실시간 시스템에 적합하므로 게임에 특히 좋습니다.
vartec

소스 엔진은 다람쥐 스크립팅 언어를 사용합니다.
cubuspl42

6

첫 번째 이유는 다음과 같습니다. (오래된) 습관

두 번째 이유 : 가상 머신, 설치해야하는 인터프리터 등의 안정성이 떨어집니다.

그리고 C ++로 코드를 개발하는 훌륭한 IDE가 여전히 있습니다.


1
' 아직 뛰어난 IDE'.. 나는 Visual Studio와 Eclipse가 최첨단이며 오랫동안 사용되어 왔다고 주장했다.
JBR 윌킨슨

@ JBRWilkinson : 나는 다른 언어들도 그들에게 없다고 말하지 않았다.
Roalt

6

그 이유는 발생하는 모든 것을 훨씬 더 많이 제어 할 수 있기 때문입니다. C #으로 Photoshop을 작성하려는 경우 일부 작업에서 심각한 성능 문제가 발생합니다. 통제력이 뛰어난 저급 언어에서는 단축키를 사용하고 더 강렬한 것들에 필요한 곳을 최적화 할 수 있습니다. 물론 이것은 .NET의 C ++가 아닌 비 관리 코드에서 C ++를 사용한다고 가정합니다.

간단한 예를 보려면 여기 를 참조 하십시오 .


2
기본적으로 Photoshop의 하위 세트 인 Adobe Lightroom은 Lua로 작성되었습니다.
Jörg W Mittag

4
@ Jörg : 나머지는 C ++입니다. 실제로 그것은 아마도 가장 좋은 조합 일 것입니다, 기초를 위해 C ++, 나머지를 위해 Lua (아직 저수준의 것들에 대해서는 C ++보다 C를 선호합니다).
Javier

2
@Javier : 예. Lightroom은 기본적으로 Photoshop (주로 MMX / SSE 어셈블리로 작성 됨) 및 SQLite3 (이전 ANSI C로 작성하여 이식성을 위해 제공)의 이미지 조작 알고리즘이며 Lua와 함께 붙어 있습니다. 또한 Adobe는 Lua에서 완전히 자체 Lua IDE를 개발했습니다. 누구든지 그들이 사용하는 그래픽 툴킷을 알고 있습니까? AFAIR Photoshop은 거의 모든 최신 툴킷보다 이전 버전이므로 아마도 집에서 재배 한 것일까 요?
Jörg W Mittag

4
공격은 없지만 ANSI C가 선사 시대라고 생각한다면 잘못된 코드 샘플을 읽은 것입니다.
Javier

6

C ++은 정적으로 유형이 지정됩니다. 이를 통해 컴파일러가 주어진 플랫폼에서 사용 가능한 시스템 프로세스에 추상화를 적용하여 미리 코드 실행을 최적화 할 수 있습니다. 지금까지 동적 언어에는 시스템 리소스에 대한 액세스 속도를 늦추는 추가 소프트웨어 계층 (= 인터프리터)이 필요합니다.


4

주어진 이유는 대부분 기술적이거나 "테이블 위"에 있습니다. 여기에는 비즈니스 이유 또는 "테이블 아래"가 있습니다.

컴파일 된 코드 배포와 소스 코드 배포 c / c ++로 개발할 때는 바이너리를 배포합니다. 현대 언어 중 하나로 개발하는 경우 소스를 배포합니다. 주주 / 투자자에게 답변해야하는 난 독자에 대한 아이디어를 경영진에게 판매하는 것은 어렵습니다.

어리석은 사용자 : 적어도 경영진의 마음에는. 그들은 여전히 ​​"setup.exe"를 거의 두 번 클릭 할 수있는 것으로 사용자를 인식합니다. 설치의 일부로 통역사의 설치를 포함 시키면, 머리가 좌우로 흔들립니다.

오래된 개발자 : 경험이있는 대부분의 사람들은 오랫동안 주변에 있었고 자신을 업데이트하지 않았습니다. 그들은 새로운 언어를 모르기 때문에 새로운 언어가 아닌 C ++로 프로그래밍합니다.


.NET 응용 프로그램을 릴리스 할 때 소스 코드를 배포한다고 주장합니다. Visual Studio를 보면 대부분의 인터페이스가 WPF 양식으로 설계되었습니다. 당신의 요점 중 일부는 물론 유효합니다. 오늘날의 관리의 대부분은 어제의 개발자였습니다. 오늘날의 프레임 워크의 대부분은 오늘날 컴퓨터의 변경으로 인해 유효하지 않을 것입니다.
Ramhound

많은 경험을 가진 많은 사람들이 자신을 최신 상태로 유지함으로써 그들의 경험을 얻었습니다. 그들은 뜨겁기 때문에 뜨거운 새로운 언어 (1980 년대 초 파스칼과 같은)를 배우지 않는 경향이 있지만, 그 언어에 익숙하거나 흥미로운 아이디어가있는 경우에만 (예를 들어, 하스켈).
David Thornley

4

GUI에서 경쟁이 예상되는 소프트웨어로 문제의 범위를 확장 할 것입니다. C ++는 처리 능력, 설치된 런타임, 프레임 워크 등과 관련하여 대상 플랫폼에 세금을 부과하지 않습니다. 따라서 관리 / 통역 언어로 작성된 유사한 솔루션보다 더 제한된 고객 하드웨어에서 작동합니다. 성공적인 상용 소프트웨어의 경우 개발 비용 (C ++의 경우 잠재적으로 더 높음)은 판매 횟수로 상각됩니다.

또한 C ++은 일반적으로 사용률을 최적화하고 유사한 솔루션과 차별화 할 수있는 최상의 기회를 제공하는 GUI와 같은 시스템 API에 직접 액세스 할 수 있습니다.


3

GUI 툴킷 용 API와 관련이 있다고 생각합니다. 그들 모두는 C / C ++ API를 가지고 있지만, 모두 파이썬 바인딩을 가지고있는 것은 아닙니다. 때로는 툴킷 자체가 C ++을 염두에두고 작성되었으므로 다른 언어를 지원하더라도 완전히 지원 하지 않습니다 (예 : tuple인수로 Python 을 지원하지 않음 ).


아, 그들은 그것을 원치 않거나 구현할 시간이 없기 때문에 완전히 지원하지 않습니다. 불가능하기 때문이 아닙니다.
cubuspl42

2

브라우저와 게임을 예로 들었습니다. 이 두 가지 모두 성능이 매우 중요한 응용 프로그램이므로 속도가 낮은 언어로 작성하는 것이 좋습니다.

다른 많은 응용 프로그램은 성능이 저하되어 다른 언어로 쉽게 작성할 수 있습니다. 특히 C #은 많이 사용되는 것 같습니다. (그리고 Obj-C,하지만 실제로는 높은 수준의 자격이되지는 않습니다. C ++보다 낫습니다.)

그러나 최신 프로그래밍 언어를위한 프레임 워크가 부족합니다. 예를 들어, 실제로 파이썬 용으로 사용할 수있는 기본 GUI 라이브러리는 없습니다. 물론 PyQt 또는 PyGtk를 사용할 수 있으며 잘 작동하지만 결국 C 코드와 다시 인터페이스 만됩니다. 다시 말하지만 C # (그리고 틀림없이 Obj-C)은 예외적 인 것처럼 보이며 MacRuby 또는 IronPython이 그 게임을 바꿀 수 있습니다.


0

C ++ 또는 Java를 대체하는 언어의 경우 자체 언어로 수행하는 것 외에도 이러한 언어에서 놓친 부분을 수행해야합니다. 또한 이러한 언어에 대한 막대한 투자가 이루어졌습니다. 즉, 많은 플랫폼에 표준 C ++ 라이브러리가 있으며 브라우저, 게임 및 이러한 프로그램에서 쉽게 사용할 수 있습니다. 따라서 약간의 관성이 있어야합니다. 언어는 다른 소프트웨어와 달리 느리게 이륙하는 경향이 있습니다.

이를 살펴보면 Anaconda (RedHat의 설치 프로그램)는 처음부터 Python으로 작성된 10 년 정도 왔습니다. Anaconda가 처음 등장했을 때 Python은 그렇게 인기가 없었습니다.

Google의 Go (golang.org)는 매우 빠르게 발전하고 있습니다. 컴파일러는 아직 부트 스트랩되지 않습니다. 인기가 높아지려면 라이브러리가 안정화되고 컴파일러를 부트 스트랩해야하며 더 많은 사람들이 사용해야합니다. Google 외부의 제작 프로그램 중 하나가 Go로 작성되었으며 아직 1 년 넘게 다운 타임이없는 것으로보고되었습니다.


1
사실, 이동로 작성된 Windows 용 상용 이동 컴파일러가있다, 그래서 거기에 있습니다 이동을위한 부트 스트랩 컴파일러. (그래도, 폐쇄 아직 베타 버전입니다.)
요 르그 W MITTAG

아, 그때 손이 닿지 않았습니다. 말해 주셔서 감사합니다 :)
vpit3833

2
그것은라고 ERGO 와라는 회사에 의해 생산됩니다 Newquist 솔루션 .
Jörg W Mittag 2018 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.