C ++ neden en yeni dinamik diller üzerine ağır GUI uygulamaları oluşturmayı tercih ediyor? [kapalı]


46

Ağır GUI içeriği içeren uygulamaların çoğunun genellikle C ++ ile geliştirildiğini görüyorum. Oyunların / tarayıcıların çoğu C ++ ile kodlanmıştır.

En yeni dinamik dillerle daha iyi GUI uygulamaları geliştiremez miyiz? Java'nın mükemmel bir seçim olmayacağını biliyorum. Peki ya doğal olarak C üzerine inşa edilmiş python gibi diller? En son dillerin atalarından daha iyi olması gerekmiyor mu? Neden hala eski C ++ 'ı en son dillerden tercih etmeliyiz?

Ayrıca şunu da bilmek isterim; C ++ 'da GUI işlemenin daha hızlı olmasından sorumlu olan nedir? Öte yandan, diğer son dillerin eksikliği nedir?


22
Java'nın 'dinamik' bir dil olduğunu düşünüyorsanız, o zaman bu kelimenin bu bağlamda ne anlama geldiği konusunda kafan karışır.
Mike Baranczak

15
@ Mike Baranczak: Bu uzun bir hikaye. Temel olarak, önce Stanford'da, daha sonra Self adlı Sun Research'te bir araştırma projesi vardı. Öz, daha basit, daha güçlü, daha etkileyici ve en önemlisi olan Smalltalk aile içinde bir programlama dilidir anlamlı Smalltalk daha dinamik. Masaüstü uygulamaları, sunucular, işletim sistemleri, aygıt sürücüleri de dahil olmak üzere (ancak bunlarla sınırlı olmamak üzere) tüm sistemleri (tüm Smalltalk lehçelerinde olduğu gibi) geliştirmek için bir programlama dili olarak tasarlandığından, cayır cayır yanan hızlı olması gerekiyordu . Böylece, Öz takım bir sürü yeni icat etti ...
Jörg W Mittag

15
... optimizasyon tekniklerini ve Öz VM 1987 yılında çıktığında (ve hatta daha 1992 yılında ikinci nesil böylece), bu oldu hızlı. Diğer Smalltalk VM'den daha hızlıydı. Kendinden sistemi örnek kodu bir sürü sevk ve bu örneklerden biri bile Smalltalk Öz yazılı tercüman ve oldu hızlı diğer Smalltalk VM daha oldu. Kendisi o zamanlardaki birçok C ++ uygulamasından daha hızlıydı ve hatta C ile rekabet ediyordu. Öyleydi hızlı . Bununla birlikte, Sun nesneye yönelik bir programlama diline veya hızlı bir VM'ye ihtiyaç duymadıklarına karar verdiler, bu yüzden onlar ...
Jörg W Mittag

15
... temel olarak, özveriyi, fonu kurutmakla ölümüne aç bıraktı. Self VM mühendisleri Sun'ı hayal kırıklığına uğrattıktan sonra, LongView adlı bir Smalltalk başlangıcı tarafından hızla yakalandılar (daha genel olarak en çok ürünü olan Smalltalk için isteğe bağlı bir statik tür sistemi olan StrongTalk). LongView, Smalltalk için statik yazmayı asla satamayacaklarını biliyordu, bu yüzden gezegendeki en hızlı Smalltalk'i satmayı tercih ettiklerini ve ardından bir Truva Atı türünde pakete StrongTalk'u dahil edeceklerini düşündüler. Ayrıca serinlerin hiçbirinin farkına
varmadıklarını

15
Öz VM yaptığı ... optimizasyonlar Self özellikle herhangi bir şekilde, ama hemen hemen her nesne yönelimli dil (ya da sadece herhangi bir dili için geçerli olan hiç ). Böylece, Self VM mühendisleri, Animorphic VM adında bir Smalltalk VM üzerinde çalıştılar. Yine, Animorphic VM göz kamaştırıcı bir şekilde hızlıydı (ve hala, kod bankasına 15 yıldan beri dokunulmamış olsa da, aslında hala yüksek performanslı Smalltalks, JVM'ler ve .NET ile rekabet edebilir, özellikle de 20 megabaytla 486'lar için tasarlandığından, bunlardan çok daha az kaynak kullandığını göz önünde bulundurun ...
Jörg W Mittag

Yanıtlar:


58

C ++ GUI uygulamaları yazan kişilerden biriyim (çoğunlukla Windows için). Qt ile kesin olmak gerekirse. Sebeplerim:

  • C ++ 'ı severim. Ben bir serbest çalışanım ve genellikle araçlarımı seçebilirim (şanslıyım!)
  • Yönetilen bir ortamda, bazı yönetilmeyen kodları kullanmanız gerektiğinde zor anlar yaşayabilirsiniz (C #, herkesin uzun soluklu WinAPI bildirimleri?)
  • Daha kolay konuşlandırılan daha az bağımlılık
  • Her şey üzerinde daha fazla kontrol.
  • RAII (GC'ye karşı). Ve tahsis etsem bile new, nadiren deleteaçıkça hiçbir şey yapmam, çünkü akıllı işaretçiler veya QObjecthiyerarşi kullanıyorum.
  • C ++ bugünlerde çok heyecan verici, bir derleyicinin yeni standardı tam olarak desteklemesini bekleyemiyorum.
  • Hız (sadece listenin sonunda. GUI'nin kendisi için o kadar önemli olmadığını biliyorum, ama daha hızlı olma eğilimindedir çünkü C ++ programları çalışma zamanları, bayt kodu JIT derleme ve benzeri teknolojilerin eklediği ek yükten zarar görmez. program.)

Gördüğünüz gibi, bunlar çoğunlukla kişisel tercihler. Çalışmalarımın keyifli geçmesini önemli buluyorum ve C ++ bunu bana sağlıyor.


11
+1 Hız, kişisel tercihlerden başka, kesinlikle buradaki en önemli sebep. Ancak, "C ++ bugünlerde çok heyecan verici". @ Tamás Szelei'ye değil , soru- sorucuya hitap etmek için: Elbette, yeni fikirlerle, paradigmalarla, teknolojilerle, ürünlerle hızlı bir şekilde bilgi işlem değişikliği yapın ancak en son ve en iyisi bir erdem değildir. C ++ bir süredir buralardaydı ve eski olduğu anlamına gelmiyor, daha yeni teknolojilere kıyasla kanıtlanmış uzun bir geçmişe sahip. Orijinal Stroustrup metni (mucit kitabının kitabı) çok ağır oluyor ancak başkaları tarafından çok güzel kitaplar var - örneğin oreilly.com'u kontrol edin.
therobyouknow

1
@Tarnas, "her zaman daha hızlı olacağına inanıyorum" biraz dar görüşlü / yetkili, ancak bir olumsuz oy kullanmak için yeterli değil ...
Max

2
Fıkra desteği olarak: Windows'ta C ++ ve JavaScript kullanarak önemli ölçüde GUI oluşturmak için farklı projelerde yer aldım. Ayrıca C ++ ve JavaScript'te farklı oyun konsolu projelerinde yer aldım. Her iki durumda da, JavaScript'te önemli ölçüde daha fazla hız ve bellek sorunu vardı.
Robot

2
Partiye geç kaldı, ancak "daha az / kolayca konuşlandırılabilir bağımlılıklar" hakkında ayrıntılı bilgi verebilir misiniz?
weberc2

2
C ++ 'ı 20 yıldan beri kullanıyorum. 11, 14 ve 17'den beri birçok yeni ve harika özellik ekleniyor. Neredeyse C ++ 'ı bir betik dili olarak kullanabilir ve hala hızlı hızdan yararlanabilirsiniz. BIG verilerle çalışırken neredeyse C ++ kullanmak zorunda kalıyorum, çünkü diğer diller 10-1000 daha yavaş olacak.
Kemin Zhou

32

Çünkü hız önemlidir.

  • Oyunlar , performansın önemli olduğu çekirdek görevler için C ++ 'ı kullanır. Esnekliğin önemli olduğu senaryo işleri için dinamik dilleri kullanırlar.

  • Masaüstü GUI uygulamaları : Örneğin, Visual Studio. NET'te yazılmıştır ve yerli C ++ değil. Bir IDE için oldukça iyi çalışıyor gibi gözüküyor, çünkü IDE'nin yoğun performans gerektiren birçok işi yapması gerekmiyor. (Derleyici, bağlayıcı ve diğer araçlar mutlaka .NET'e yazılmamıştır - wawa bir açıklamada belirtildiği gibi, bazıları gibi görünmektedir (örneğin VB.NET).

  • Tarayıcıların da hızlı olması gerekir. Sonuçta bunlar ikincil bir işletim sistemidir. Öte yandan, Firefox’un büyük bölümlerinin aslında javascript’te yazıldığını iddia edebilirsiniz, çünkü Mozilla çerçevesi büyük ölçüde javascript’e bağlı görünüyor.

Özetle: C ++ 'ın mutlaka tercih edildiğini söyleyemem ama bir performans darboğazına sahipseniz, metale daha yakın olmanız ve ardından C ++ (iyi veya C) ile tanışmanız gerekir. Bazen her şeyi C ++ 'da yapmak tek bir dilde daha kolay olacaktır.


1
+1 En iyi cevap: Tamamıyla C ++ 'u kullanmanın en önemli nedeni olarak hız yapmaktır. Microsoft kendileri bile C ++ 'ın c # ve visual basic ile karşılaştırıldığında performans için en iyisi olduğu konusunda hemfikirdir - Visual Studio sayfalarına bakın. Çok yakın bir saniye taşınabilirlik - Qt gibi platformlar arası kütüphaneler kullanıyorsanız. En iyi cevap aynı zamanda öznel olmaktan çok nesnel olduğu için.
therobyouknow

2
İkinci noktan tamamen doğru değil. VB.NET derleyicisi VB.NET'te yazılmıştır ve F # derleyicisi F # ile yazılmıştır. C # derleyicisi Roslyn projesi ile ilgili yayınlanmış olanlardan değil, C # derleyicisinin C # dilinde yeniden yazılmış olduğunu düşünüyorum.
Wesley Wiser

5
Görsel stüdyo gui (krom) (#2010'dan) c # ve WPF ile yazılmıştır. Çözüm gezgini, derleme sistemi, kod tarayıcı ve araç kutusu winforms ile c # / c ++ ile yazılmıştır. Derleyici c ++ ile yazılmıştır.
Martin Beckett

Çoğu masaüstü uygulaması için yalnızca oluşturma ve düzen motorlarının (yani, Görünüm) hızlı olması gerekir. Model zaten içinde fazla zaman geçirme eğiliminde değildir ve Kontrolör, zamanının çoğunu sadece kullanıcının bir şeyler yapmasını bekleyerek geçirir (ve çok az kullanıcı saniyede 10 kez, herhangi bir güvenilirlikte 10 kez tıklayabilir).
Donal Fellows,

@ MartinBa: C # ve VB (Roslyn) için geçerli derleyicinin C # ile yazılmış olduğunu unutmayın.
jmoreno

17

C ++ ile yazılmış gördüğünüz GUI uygulamaları genellikle eski nedenlerden dolayı yapılır. Python (Qt veya Gtk ile birlikte), bir Windows evinde çalışıyorsanız, CI gibi GUI uygulamaları için çok uygundur. Yeni bir şeye başlarken , yapılması gereken tesisat işlerinin eksikliğinden dolayı C ++ 'a çok daha çok tercih edilir.


5
+1 mevcut kod önemlidir. Yeni programlar geliştirirken tamamen sıfırdan başlamak nadirdir

7
Qt ile Python kullanmak, Qt ile C ++ kullanmaktan daha çok nasıl tercih edilir? Bugün yeni bir projeye başlasaydım, yine de GUI için C ++ 'ı kullanırdım. Çünkü: a) Bildiğim şey bu, b) işi iyi yapıyor. C ++ 'ın bir süredir var olması, onu "modası geçmiş" yapmıyor.
TZHX

2
@TZHX: "Bildiğim şey bu" geçerli bir argümandır. Bu verilmezse, artık bellek yönetimine bakmak zorunda kalmamak büyük bir performans artışıdır ve Python'u tek bir proje için bile öğrenme çabasını dengeleyebilir. Python'u kullanmanın diğer bir nedeni çapraz platform olabilir - C ++ ile dikkatli olmanız ve özel önlemler almanız gerekir, oysa python'un sadece çalışması muhtemeldir.
tdammers

4
C ++ 'ı tanıyan biri için C ++ ile Qt yerine PyQt kullanmanın hiçbir avantajı görmüyorum.
BenjaminB

13
C ++ 'ın sadece çalışması da muhtemel. Python ile, kullanıcının hangi python versiyonunun kurulu olduğu konusunda endişelenmeniz veya bir araya getirme konusunda endişelenmeniz gerekir. Aptalca hatalar yapmazsan, "hafızaya bakma" yapılacak çok iş yok. Bence pek çok insan, “hafıza yönetimini”, C ++ ile çalışmanın aslında ne kadar fark yarattığını bilmeden büyük bir engel teşkil ettiğini söylüyor.
TZHX

16

Çünkü ne kadar performans testi .NET ve benzeri kalabalığın gösterdiği önemli değil, testlerde ne kadar yaklaşırlarsa gelsin, sonunda C ++ uygulaması zirvede. Soğuk açılışta daha hızlı, daha keskin ve daha iyi hale getirilebilecek yolları var.

Projenin başlangıç ​​aşamalarında, .NET’in yolunun geldiğine dair çok sayıda kanıt duydum, ancak bir kez seçildiklerinde, her zaman ağır bir tıkanıklık oldu.

Ayrıca, bugünlerde C ++, özellikle Qt veya WTL gibi çerçevelerle oldukça güvenli ve kullanımı oldukça kolaydır.


2
+1: "Ayrıca, C ++ bugünlerde oldukça güvenli ve kullanımı oldukça kolay, özellikle de Qt gibi çerçevelerle ..." Tamamen katılıyorum: Bence büyük bir güç kendi başına C ++ değil, aslında (1). yerel kodla derlenir, (2) makul özelliklere sahiptir (OOP, şablonlar), (3) Qt gibi çok iyi çerçevelere sahiptir. Bu, dilin oldukça büyük ve öğrenmesi zor olduğu gerçeğini telafi eder: dilin ve alt kitaplıkların iyi bir alt kümesine hakim olduğunuzda, onunla gerçekten verimli olabilirsiniz.
Giorgio

10

Oyun motorlarının çoğu C ++ ile kodlanmıştır. Ayrıca birçok tarayıcı motoru C ++ ile kodlanmıştır. Ancak GUI tarayıcısı sıklıkla hafif bir script (JavaScript, Python) kullanılarak kodlanır. Önemli Source Engine istisnası dışında, oyun motorlarının çoğu da komut dosyası dillerini kullanır (Lua veya Python gibi). [referans için: Lua scriptli oyunların listesi ]

Ayrıca Qt gibi popüler C ++ GUI kütüphanesini alın. Mevcut sürümde (4.7) GUI için QML kullanılmaktadır. QML, temelde Qt bağlantıları ile JavaScript'tir.

Yani gerçekten C ++ vs dinamik dil yok, karışık.


[Kaynak belirtilmeli]. Birçok oyunun kullanıcıların dillerini genişletmesine izin vermek için kodlama dilleri kullandığını biliyorum;
ProdigySim

1
@ProdigySim: Bunu birkaç tanesini biliyorum. Başımın üstünde, World of Warcraft (Lua + XML), Yaramaz Köpeğin Uncharted serisi (Lisp), Unreal serisi (UnrealScript), Tork ve Birlik motorlarına dayalı oyunlar, Zindan Kuşatması, NeverWinter Nights ve diğerleri. Veriye dayalı oyunlar, komut dosyası sunucusunun çoğu (hepsi olmasa da) kullanıcı arabirimi özelliklerini ve oyun durumunu yukarıdan aşağıya devraldığı norm haline geliyor.
greyfade

@ProdigySim: normal kullanıcılardan gizlenmiş olsa bile, dahili olarak komut dosyası çalıştırma motorları kullanmadıkları anlamına gelmez. Temel olarak oyun geliştiricilerin iki seçeneği vardır - modeller için kendi kodlama dillerini oluşturun veya genel amaçlı olanlardan birini kullanın. Lua, özellikle gerçek zamanlı sistemler için iyi olduğu için özellikle oyunlar için iyidir.
vartec

Kaynak motor, Sincap komut dosyası dilini kullanır.
cubuspl42

6

İlk sebep şöyle olacaktır: (eski) alışkanlık

İkinci sebep: Sanal Makinelerde daha az güvenilirlik, kurulması gereken tercümanlar vb.

Ve hala C ++ 'da kod geliştirmek için bazı mükemmel IDE'ler var.


1
' Hala mükemmel IDE'ler' .. Visual Studio ve Eclipse’in son derece gelişmiş ve uzun süredir var olduklarını savunuyorum.
JBRWilkinson

@JBRWilkinson: Başka bir dilin de onlara sahip olmadığını söylemedim.
Roalt

6

Bunun nedeni, gerçekleşen her şey üzerinde çok daha fazla kontrol sahibi olmanızdır. C # ile photoshop yazacak olsaydınız, bazı görevler için ciddi performans problemleriniz olurdu. Daha fazla kontrole sahip daha düşük bir dilde kısayollar alabilir, daha yoğun olan şeyler için gereken yeri optimize edebilirsiniz. Elbette bu, C ++ 'ı yönetilmeyen kodda kullandığınızı varsayar, .NET'te C ++ kullanmaz.

Hızlı bir örnek için buraya bakın .


2
Temel olarak Photoshop'un bir alt kümesi olan Adobe Lightroom, Lua'da yazılmıştır.
Jörg W Mittag

4
@ Jörg: ve geri kalanı C ++. Aslında mevcut en iyi kombinasyon budur, kuruluş için C ++, geri kalanlar için Lua (düşük seviyeli şeyler için hala C ++ 'ı tercih ediyorum).
Javier

2
@Javier: Evet, Lightroom temelde Lua ile yapıştırılmış Photoshop (muhtemelen çoğunlukla MMX / SSE montajında ​​yazılmıştır) ve SQLite3'ten (taşınabilirlik için önceden tarihi ANSI C'de yazılmıştır) görüntü işleme algoritmalarıdır. Adobe ayrıca Lua'da tamamen kendi Lua IDE'sini geliştirdi. Hangi grafik araçlarını kullandıklarını bilen var mı? AFAIR Photoshop hemen hemen tüm modern araç setlerinden önce gelir, bu yüzden muhtemelen evde yetiştirilen bir şey mi?
Jörg W Mittag

4
alınma ama ANSI C'nin tarih öncesi olduğunu düşünüyorsanız, yanlış kod örneklerini
Javier

6

C ++ statik olarak yazılmıştır. Bu, bir derleyicinin belirli bir platformdaki mevcut sistem işlemlerine soyutlamalarınıza uymasını sağlayarak kod yürütülmesini önceden optimize etmenize olanak sağlar. Şimdiye kadar, dinamik dillerin sistem kaynaklarına erişimi yavaşlatan ek bir yazılım katmanına (= tercüman) ihtiyacı vardır.


4

Verilen nedenlerin çoğu teknik veya "masanın üstünde" ... burada iş nedenleri veya "masanın altında" bulunur:

derlenmiş kod dağıtma vs kaynak kodu dağıtma. c / c ++ ile geliştirilirken ikili dosyaları dağıtırsınız. modern dillerden birinde gelişiyorsanız, kaynağı dağıtabilirsiniz. Engelleyenlerin fikrini, hissedarlara / yatırımcılara cevap vermek zorunda olan yönetime satmak zordur, bu yüzden rahatsız etmeyin.

aptal kullanıcılar: en azından yönetimin kafasında. hala kullanıcılarını "setup.exe" ye çift tıklayabileceklerini algılıyorlar. Bir tercümanın kurulumunu kurulumun bir parçası olarak eklerseniz, kafalarını bir yandan diğer yana sallarlar.

eski geliştiriciler: deneyime sahip çoğu kişi uzun süredir var ve kendilerini güncel tutmuyor. C ++ 'da programlıyorlar, çünkü yeni dilleri bilmiyorlar, çünkü yeni dilleri bilmiyorlar.


Bir .NET uygulaması yayınladığınızda kaynak kodunu dağıtmakta olduğunuz tartışılır. Visual Studio'ya bakın, arayüzün çoğu WPF formları ile tasarlandı. Puanlarınızdan bazıları elbette geçerlidir, bugünün yönetiminin çoğu dünün geliştiricileriydi, kötü haberlerin bugünkü çerçevelerdeki bilgisayarların bugünkü değişiklikleri nedeniyle geçerli olması pek mümkün değil.
Ramhound

Çok fazla deneyime sahip birçok insan, kendilerini güncel tutarak deneyimlerini edinmiştir. Sıcak dilleri (1980'lerin başında Pascal gibi) sadece sıcak oldukları için öğrenme eğiliminde değiller, ancak onlar için kullanmaları veya ilginç fikirleri olması durumunda (örneğin Haskell).
David Thornley

4

Sorunun kapsamını GUI'den rekabetçi olması beklenen yazılıma genişletirim. C ++, işlem gücü, kurulu çalışma zamanı, çerçeveler vb. İle ilgili olarak hedef platforma herhangi bir vergi getirmiyor. Dolayısıyla, yönetilen / yorumlanan bir dilde yazılmış benzer bir çözümden daha sınırlı müşteri donanımı üzerinde çalışacak. Başarılı bir ticari yazılım durumunda, geliştirme maliyeti (C ++ 'da potansiyel olarak daha yüksek) satışların sayısına göre itfa edilmektedir.

Ek olarak C ++, kullanımı optimize etmek ve kendisini benzer çözümlerden farklılaştırmak için en iyi fırsatı sağlayan sistem apilerine (GUI gibi) doğrudan erişim sağlar.


3

Birçoğunun GUI araç setleri için API'lerle ilgisi olduğunu düşünüyorum. Hepsinde bir C / C ++ API var, fakat hepsinde (diyelim) Python bağları yok. Ve bazen araçların kendileri C ++ ile yazılmıştır, bu yüzden diğer dilleri destekleseler bile onları tam olarak desteklemiyorlar (örneğin, bir Python'u tupleargüman olarak desteklemiyorlar ).


Oh, onları tam olarak desteklemiyorlar, çünkü istemiyorlar veya bunu uygulamak için zamanları yok. Bu imkansız olduğu için değil.
cubuspl42

2

Örnek olarak tarayıcılardan ve oyunlardan bahsediyorsunuz. Bunların her ikisi de oldukça kritik performans gerektiren uygulamalardır, bu nedenle hız için düşük seviyeli bir dilde olmaları anlamlıdır.

Diğer birçok uygulama daha az performans gösterir ve başka dillerde de kolayca yazılabilir. Özellikle C # çok kullanılmış görünüyor. (Ve Obj-C, ama sanırım gerçekten yüksek seviye olarak nitelendirilemiyor. Yine de C ++ 'dan daha iyi.)

Ancak, en son programlama dilleri için belirli bir çerçeve eksikliği vardır. Örneğin, Python için gerçekten uygun bir yerel GUI kütüphanesi yok. Elbette, PyQt veya PyGtk kullanabilirsiniz ve iyi çalışırlar, ancak sonuçta bu sadece C kodu ile tekrar etkileşime girer. Yine, C # (ve tartışmalı Obj-C) istisna gibi görünüyor ve belki MacRuby veya IronPython bu oyunu değiştirebilir.


0

C ++ veya Java'nın yerini alacağı bir dil için, bu dillerde sıkça kaçırılan şeyleri yapmak, bunları kendi güçlü yönleriyle yerine getirmek zorundadır. Ayrıca, bu dillere dev yatırımlar yapıldı. Bu, birçok platformda tarayıcıların, oyunların ve bu tür programların kolaylıkla kullanabileceği standart bir C ++ kütüphanesi olduğu anlamına gelir. Yani atalet olma zorunluluğu var. Diller, diğer yazılım parçalarının aksine yavaş yavaş kaybolma eğilimindedir.

Eğer bakarsanız, Anaconda (RedHat'ın kurulum programı) 10 yıldan beri Python'da başından beri yazılmış. Anaconda yeniyken Python bu kadar popüler değildi.

Google'ın Git (golang.org) çok hızlı bir şekilde gelişiyor. Derleyici henüz önyüklenmedi. Popülaritesinin üstesinden gelmek için, kütüphanesi dengelenmeli, derleyici önyüklenmeli ve daha fazla insan onu kullanmalı. Google’ın dışındaki bir üretim programının Go’da yazıldığını ve henüz bir yıldan daha uzun bir süredir çalışmadığı bildirildi.


1
Aslında, Go için yazılmış, Windows için ticari bir Go derleyicisi var, bu yüzden Go için bir bootstrapped derleyici var. (Yine de hala kapalı beta durumunda.)
Jörg W Mittag

O zaman temassızdım. Söylediğiniz için teşekkür ederim :)
vpit3833

2
Buna erGo adı verilir ve Newquist Solutions adlı bir şirket tarafından üretilir .
Jörg W Mittag
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.