Haskell'de bir GUI kütüphanesi için öneriler [kapalı]


14

As Haskell Wiki kendisi belirtiyor :

Haskell için çok sayıda GUI kütüphanesi var. Ne yazık ki standart bir standart yoktur ve hepsi az ya da çok eksiktir. Genel olarak, düşük seviyeli kaplamalar iyi gidiyor, ancak düşük seviyededir. Üst düzey soyutlamalar oldukça deneyseldir. Desteklenen orta düzey bir GUI kütüphanesine ihtiyaç vardır.

Üniversitemdeki bir profesör benden ve diğer üç bilgisayar bilimi dalından Haskell için bir GUI kütüphanesi üzerinde çalışmamızı istedi. Proje için ilk fikri, OpenGL üzerine Smalltalk'ta bulunan morphic kütüphanesini taklit eden bir katman yazmaktı ; Ancak, bu sadece bir öneri ve diğer sistem kesinlikle dikkate değer.

Bu bizi asıl, çok parçalı soruya getiriyor.

  1. Kütüphanemiz hangi düzeyde soyutlamaya çalışmalı? Haskell Wiki, orta düzey bir GUI kütüphanesinin tercih edileceğini güçlü bir şekilde gösteriyor; ancak, üst düzey bir kütüphane yine de hoş karşılanacaktır.
  2. Bunun üzerine kütüphanemiz ne yapılmalı? (Örn. OpenGL)
  3. Var olan GUI kütüphanesinin hangi kütüphane taklitini (varsa) görmek ister misiniz ve neden? (Örn. PyGame, Morphic, Swing, vb.)
  4. Kütüphanemizin uygulandığını veya kaçındığını görmek istediğiniz özellikler nelerdir? Örneğin, Gnome'daki iyi insanlar simge durumuna küçült düğmesinin gereksiz olduğunu iddia edebilirler.
  5. Genel bir öneriniz var mı?
  6. Bu hayali kütüphaneye hangi akıllı adı verirdiniz? (Örn. HOT - Haskell Opengl Toolkit; HAWT - Haskell Gelişmiş Pencere Oluşturma Takımı)

2
Mimic Qt veya GTK, bunlar harika
Anto

Yanıtlar:


7

Haskell ile şık ve kullanımı kolay bir kütüphane görmek istiyorum. Geri kalanı, bu amaca hizmet etmeli, onu yeniden tanımlamamalı teknik detaylardır. Böylece benim 0.02 $.

Qt veya GTK veya FLTK veya ... gibi mevcut bir araç setine dayandırmayın - bu sizi ciddi şekilde sınırlar ve muhtemelen kardan çok daha fazla acı verir. PyQt, erm, eğlenceli ve yeterince yapışık ve hem Python hem de C ++ son derece esnek zorunlu OO dilleri. Haskell örneğinde, sanırım işler çok daha kaba olurdu.

Sadece en temel grafik ilkellerine bağlı , o zaman bunun üzerine inşa et. OpenGL güzel, ama daha basit bir şey bile (sadece 2D, örneğin SDL) de iyi olurdu. Bu size maksimum esneklik ve maksimum taşınabilirlik sağlayacaktır . Bkz. Smalltalk / Morphic, Java / Swing, TCL / Tk.

Kavramsal olarak küçük yapın. GUI'ler oldukları gibi zor, tırmanmak için başka bir Everest eklemeye gerek yok. Haskell, umarım, şeyi kompakt ve modüler hale getirmeye yardımcı olabilir.

Bonus puanları için kaplanabilir yapın. En azından, tüm kontrol repertuarınızı boyamak için sistem renklerini (ve yalnızca sistem renklerini) nasıl uygulayacağınızı öğrenin, böylece bu araç kiti ile oluşturulan bir uygulama göze batan bir şey değildir. Maksimum olarak, Win32 / Gtk / Qt / Cocoa'nın kontrollerinizi nasıl tamamen doğal görünecek şekilde çizeceğini öğrenin. Temel ciltlenebilirlik basit ve mantıklıdır; tam doğal görünüme ulaşmak oldukça zordur.

Ayrıca, lütfen köksüz çalıştırın ve pencere yönetimini temel grafik sistemine (X, Windows, ne olursa olsun) bırakın . Bunu yapmamak kullanıcıların akıl sağlığına meydan okuyacak ve benimsenmeyi büyük ölçüde engelleyecektir.

Her zamanki gibi, 'basit şeyleri basit ve karmaşık şeyleri mümkün kılın' + 'her şeyin mümkün olduğu ancak ilgi çekici hiçbir şeyin basit olmadığı Turing tarpitinden kaçının' + 'mümkün olduğunca basit ama basitleştirin'.

Adı en az önemli olan şeydir. Tüm popüler GUI araç takımlarından sadece Qt bir şekilde akıllı bir isme sahiptir. Bazı popüler projeler uçuşta bile isimleri değiştirdi (Firefox, née Firebird). İsimlendirilecek bir şey var ve adını vereceksin.

İyi şanslar!


1

İlgili tüm öğrenciler arasında konuştuktan ve bu soruyu ilgi uyandırmak için yeterli zaman verdikten sonra, orijinal yazımdaki birkaç önemli soru üzerinde fikir birliğine vardığımıza inanıyorum.

Kütüphanemiz hangi düzeyde soyutlamaya çalışmalı? Haskell Wiki, orta düzey bir GUI kütüphanesinin tercih edileceğini güçlü bir şekilde gösteriyor; ancak, üst düzey bir kütüphane yine de hoş karşılanacaktır.

Haskell Wiki'nin önerisi doğrultusunda orta düzey bir kütüphane hedeflemeye karar verdik.

Bunun üzerine kütüphanemiz ne yapılmalı? (Örn. OpenGL)

Popülerliği ve desteği nedeniyle OpenGL'yi seçtik. GLUT veya GLFW Haskell ambalaj projelerini temel olarak kullanacağız .

Var olan GUI kütüphanesinin hangi kütüphane taklitini (varsa) görmek ister misiniz ve neden? (Örn. PyGame, Morphic, Swing, vb.)

PyGame ile arasındaki önemli tartışmalardan sonra Morphic'i seçtik. Her ikisinde de aktif gelişimde zaten bir veya daha fazla Haskell kütüphanesi projesi olduğu için QT veya GTK'yı dikkate almadık .

Bu hayali kütüphaneye hangi akıllı adı verirdiniz? (Örn. HOT - Haskell Opengl Toolkit; HAWT - Haskell Gelişmiş Pencere Oluşturma Takımı)

Bu hala tartışmaya açık. HAWT'yi düşünmemeye karar verdik ve bunun yerine şunlara bakıyoruz:

  • HOT - Haskell Opengl Araç Takımı
  • HOG - Haskell Opengl Graphics (Projenizi HOG ile güçlendirin!)
  • schön
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.