Hem UI (masaüstü, web değil) hem de iç bağırsakları yapıyorum.
Her ikisinden de hoşlandığım veya hoşlanmadığım miktar, etki alanına özgü bir dil (DSL) gibi bir şey kullanarak ne kadar yapabileceğime bağlıdır.
Kullanıcı Arabirimi alanında, kullanıcılara sunduğum ve onlardan aldığım bilgilerin karmaşıklığı, form tasarımcıları, birçok etkinlik işleyicisi, MVC gibi tipik araçlar kullanmak zorunda kalmam durumunda çıldırırdı. Tüm bu "son teknoloji ürünü" şeyler. Neyse ki, onlarca yıl önce, bunun için bir DSL yapmak ve bunun için çalışmak olduğunu düşündüğüm şeyin daha iyi bir yol olduğunu keşfettim. Şu anda buna Dinamik İletişim Kutuları diyorum ve bu Diferansiyel Uygulama olarak adlandırdığım bir kontrol yapısına dayanıyor . İyi haber şu ki, belirli bir işlevsellik için, kaynak kodu kabaca daha az büyüklükte ve kullanıcı arayüzüne daha fazla işlevsellik koymamı sağlıyor. Kötü haberse, öğretmeye çalıştığım kadarıyla, teknoloji transferinde pek şansım olmadı.
Kullanıcı Arabirimi olmayan etki alanında, daha sonra bir kullanıcı arabiriminin aşılandığı komut satırından kullanılabilen DSL'ler olarak başlayan bir dizi üründen ders aldım. Bu, uzman kullanıcıya UI'yi atlayabilecekleri bir şey verirken sıradan kullanıcıya raslantı kullanabilecekleri bir şey verir. (Örnekler: R, SPlus, Matlab, SAS, WinBugs.) Bu yüzden ürünümüzün uzmanlar için bir komut satırı dili var. Bir çözümleyici, kod üreteci, ön derleyici ve çalışma zamanı modelleme motoruyla bu tür şeyler geliştirmeyi seviyorum. Bunun için harcanan çaba, UI için harcanan çabadan en az 10 daha az bir güçtür.
UI çabalarının bu kadar önemli olmasının bir nedeni, DSL ile yapılamayan çok fazla "yapıştırıcı" - veri ızgaralarını yönetme, her türlü veri sıralama yöntemleri, esneme "çatlağına" giren her şey. saf kullanıcı arayüzü ve temel dil arasında.
Öyleyse sorunuz "Bazı programcılar neden UI'nın geliştirilmesinden nefret ediyor?" İdi. Sadece DSL kullanamadığım "tutkal" yüzünden nefret ediyorum.