it-swarm-tr.com

C++ tercümanlarından herhangi birini kullandınız mı (derleyici değil)?

Herhangi birinin UnderC, Cint, Cling, Ch veya başka herhangi bir C++ yorumlayıcısı kullanıp kullanmadığını merak ediyorum.

65
Allan Wind

NOT: aşağıdakiler CINT'e özgüdür, ancak en çok yaygın olarak kullanılan C++ yorumlayıcısı olması durumunda, hepsi için geçerli olabilir.

CINT'i yoğun olarak kullanan parçacık fiziği üzerine yüksek lisans öğrencisi olarak, sizi uyarmalıyım. “Çalışıyor” iken, ayrılma sürecinde) ve parçacık fiziğinde bir yıldan fazla zaman harcayanlar genellikle birkaç nedenden kaçınmayı öğrenirler: 

  1. Bir C yorumlayıcısı olarak kökleri nedeniyle, C++ 'nın en kritik bileşenlerinden bazılarını yorumlayamıyor. Örneğin, şablonlar her zaman çalışmaz, bu nedenle C++ 'ı bu kadar esnek ve kullanışlı kılan şeyleri kullanmaktan çekinirsiniz. 

  2. Minimum düzeyde optimize edilmiş C++ 'dan daha yavaş (en az 5 faktöre göre). 

  3. Hata ayıklama mesajları, g ++ tarafından üretilenlerden çok daha şifrelidir. 

  4. Kapsamlama, derlenmiş C++ ile tutarsız: formun kodunu görmek oldukça yaygın 

    if (energy > 30) { 
        float correction = 2.4;
    }
    else {
        float correction = 6.3;
    }
    
    somevalue += correction; 
    

    Çalışan herhangi bir C++ derleyicisi correcton'nin kapsam dışına çıkmasından şikayet ederse, CINT buna izin verir. Sonuç olarak, CINT kodunun gerçekten C++ olmaması, sadece ona benzeyen bir şey olması. 

Kısacası, CINT, C++ 'nın avantajlarından hiçbirine ve bazı dezavantajlara ve bazılarına sahiptir. 

CINT'in hala tümüyle kullanılması gerçeği, KÖK çerçevesine dahil edilmesinden dolayı büyük olasılıkla tarihi bir kazaydı. 20 yıl önce yazıldığı zaman, interaktif komplo/montaj için tercüme edilmiş bir dile ihtiyaç vardı. Şimdi bu rolü yerine getiren, çoğu yüzlerce aktif geliştiricinin bulunduğu birçok paket var. 

Bunların hiçbiri C++ dilinde yazılmaz. Niye ya? Oldukça basit, C++ yorumlanması amaçlanmadı. Statik yazım, örneğin, derleme sırasında optimizasyonda büyük kazanımlar elde eder, ancak çoğunlukla bilgisayarın yalnızca çalışma zamanında görmesine izin veriliyorsa, kodunuzu karmakarışık hale getirmek ve aşırı kısıtlamak için kullanılır. Tercüme edilmiş bir dili kullanabilme lüksüne sahipseniz, Python veya Ruby'yi öğrenin, öğrenmek için harcadığınız zaman CINT'te tökezlemekten daha az olacaktır, Zaten C++ bilseniz bile. 

Deneyimlerime göre, ROOT (CINT'i çalıştırmak için yüklemeniz gereken paket) ile çalışan eski araştırmacılar, CINT'den kaçınmak için ROOT kitaplıklarını normal C++ çalıştırılabilir dosyalarında derlemeye başladı. Genç nesildeki kişiler bu ipucunu takip ediyor ya da komut dosyası yazmak için Python kullanıyor. 

Bu arada, KÖK (ve böylece CINT) oldukça modern bir bilgisayarda derlemek için yaklaşık yarım saat sürer ve zaman zaman gcc'nin yeni sürümlerinde başarısız olur. Yıllar önce önemli bir amaca hizmet eden bir paket, ama şimdi açıkça yaşını gösteriyor. Kaynak kodu incelendiğinde, yüzlerce kullanımdan kaldırılmış c-tarzı yayın, güvenlik türünde büyük delikler ve genel değişkenlerin yoğun kullanımı göreceksiniz. 

C++ yazacaksanız, C++ yazılması gerektiği gibi yazın. C++ yorumlayıcısına mutlaka sahip olmanız gerekiyorsa, CINT muhtemelen iyi bir bahistir. 

29
Shep

sarılmak Cern'in clang - 'e dayanan C++ yorumcusu projesi = - bu yeni yaklaşımROOT cint ​​'daki 20 yıllık deneyime dayanarak ve Cern adamları tarafından oldukça istikrarlı ve tavsiye edilir.

İşte Güzel Google Talk: Sarılmak, clang/LLVM'ye dayanan bir C++ yorumcus .

23

cint, parçacık fiziği analiz paketi için ROOT komut işlemcisidir. Düzenli kullanıyorum ve benim için çok iyi çalışıyor.

Oldukça tamamlandı ve derlenmiş kodla iyi işliyor (yorumlayıcıda kullanmak için derlenmiş modülleri yükleyebilirsiniz ...)

late edit :: Daha sonraki bir kopyadan kopyalandı, çünkü bu soruların posteri burada yayınlanmak istemedi: igcc . Kişisel olarak hiç denemedim, ama web sayfası umut verici görünüyor.

19
dmckee

(Yaklaşık bir yıl önce) Ch ile oynamış ve oldukça iyi buldum.

4
Alan

Uzun zaman önce, CodeCenter adlı bir C++ yorumlayıcısı kullandım. Oldukça güzeldi, ancak bitfields ya da süslü pointer takma gibi şeylerle başa çıkamıyordu. Bununla ilgili iki harika şey, değişkenler değiştiğinde izleyebilmeniz ve hata ayıklama sırasında anında C/C++ kodunu değerlendirebilmenizdi. Bugünlerde GDB gibi bir hata ayıklayıcının temelde aynı derecede iyi olduğunu düşünüyorum.

2
jfm3

Ayrıca uzun zaman önce Instant C ürününü kullandım ama daha da geliştirildiğini bilmiyorum

2
user11269

Kodunuzu tekrar tekrar GCC kullanarak paylaşılan kütüphanelere derleyerek ve ardından elde edilen nesneleri yükleyerek çalışan c-repl adlı bir program var. Ubuntu deposundaki sürümü , Ruby'de yazıldığından (elbette GCC'yi saymaz), en son git Haskell'deyken, hızla gelişiyor gibi görünüyor. :)

0

Bir süre önce ch'ı kullanmaya karar verdim, bunun için sorumlu olduğum dll'leri kara kutu testinde kullanıp kullanamayacağımı gördüm. Ne yazık ki, DLL'lerden işlevleri yüklemek ve çalıştırmak için nasıl elde edeceğimi bilemedim. Sonra tekrar, o kadar motive değildim ve bir yolu olabilir. 

0
Jon Trauntvein