Yoix - Yoix

Yoix
Yoixlogo.png
ParadigmaÇoklu paradigma, Nesne tabanlı, prosedürel
Tarafından tasarlandıZengin Drechsler ve John Mocenigo
İlk ortaya çıktı2000
Kararlı sürüm
2.3.1 / 25 Kasım 2011; 9 yıl önce (2011-11-25)
Yazma disipliniDinamik, Zayıf
işletim sistemiÇapraz platform
LisansAçık Kaynak Girişimi Ortak Kamu Lisansı
İnternet sitesihttps://github.com/att/yoix
Tarafından etkilenmiş
C, Java, PostScript

Bilgisayar programlamada, Yoix bir yüksek seviye, genel amaçlı, yorumlanmış, dinamik programlama dili. Yoix yorumlayıcı, standart kullanılarak uygulanır Java herhangi bir eklenti paketi içermeyen teknoloji ve yalnızca Sun uyumlu JVM çalıştırmak için.[kaynak belirtilmeli ] Başlangıçta tarafından geliştirilmiştir AT&T Labs dahili kullanım için araştırmacılar, ücretsiz ve açık kaynak 2000'in sonlarından beri yazılım.

Tarih

1998'de Java teknolojisi hâlâ gelişiyordu: Swing araç seti bir eklenti paketiydi; kesilebilir G / Ç, düzenli ifadeler ve bir printf yeteneği henüz özellikler değildi; Java Web Start da geliştirilmedi. Dahası, Java kodlama dilleri o zamanlar büyük ölçüde mevcut değildi: Groovy ve JRuby henüz icat edilmemişti ve Jython 1997'nin sonlarında oluşturulmuştu. 1998'deki tarayıcıların sınırlı özellik kümeleri vardı ve 8'de üretim kullanımı için çok kararsızdılar. saat vardiyası[şüpheli ] ve hala Tarayıcı Savaşları'nda çatışmalarla savaşıyordu. Bu ortamda, Yoix teknolojisi, AT&T bünyesinde geliştirilen, görev açısından kritik bir uygulama, yani Küresel Dolandırıcılık Yönetim Sistemi için güvenilir, dağıtılması ve bakımı kolay bir GUI ön uçuna yönelik acil bir ihtiyaca yanıt olarak oluşturuldu. AT & T'nin genişleyen ağlarındaki ses trafiğiyle ilgili dolandırıcılık faaliyetlerini izler ve izler: kablolu, kablosuz ve IP. Yoix teknolojisi ilk olarak 2000 yılının sonlarında Açık Kaynak Girişimi Ortak Kamu Lisansı V1.0 kapsamında halka yayınlandı.

Yoix adı, kısmen tilki avı teşvik çığlığından tazılara, kısmen de biten tanıdık bir dört harfli adı yankılamak için geldi. ixve kısmen de bir Google aramasında çok fazla yanlış pozitiften kaçınmak için.[kaynak belirtilmeli ]

Genel Bakış

Yoix teknolojisi saflık sağlar Java programlama dili genel bir amacın uygulanması dinamik programlama dili araştırmacılar tarafından geliştirildi AT&T Labs. Sözdizimi ve dilbilgisi, C programlama dili ve Java. Bir son kullanıcı, bir Yoix uygulama bir Java uygulamasından, ancak uygulamadan ayırt edilemez geliştirici Yoix, yazmak gibi, doğrudan Java'da çalışmaktan daha basit bir kodlama deneyimi sağlamalıdır. Perl kod, C kodu yazmaktan daha basit olabilir.

Özellikleri

Yoix dili bir nesne yönelimli dil, ancak 165'in üzerinde nesne standart Java'nın çoğuna erişim sağlayan türler sınıflar. Çünkü Yoix çevirmen tamamen Java teknolojisi kullanılarak oluşturulmuştur, bu, Yoix uygulamalarının çapraz platform, GUI yetenekli ve her ikisi ve Konu arkadaş canlısı, ancak Yoix geliştiricileri kendilerini aynı işlevselliği doğrudan Java'da kodlamanın daha karmaşık ve hataya açık kısımlarından yalıtılmış buluyor. Kullanmaz yansıma Java işlevselliğine erişmek ve böylece yalnızca bu işlevselliğe erişimi basitleştirmekle kalmayıp, aynı zamanda hem Java aksaklıklarını hem de karmaşık Java özelliklerini bir defalık arka planda kodlayarak uygulama güvenilirliğini artırarak değer katmaktadır.[açıklama gerekli ] Yoix dili kasa içerir işaretçiler, adresleme, beyannameler, ve küresel ve yerel değişkenler. Yerel kullanıcı işlevlerini desteklemeye ek olarak, kullanıcılar Java ile yazılmış kendi yerleşik işlevlerini ekleyebilir.

Tasarım

Yoix tasarımındaki iki ana unsur PostScript dilinden ödünç alınmıştır.[kaynak belirtilmeli ]: dil bileşenleri olarak sözlükler ve açık sistem bileşenleri olarak izinlerle korunan sözlükler. Doğrudan bir etkisi olmasa da, Tcl diline ve maruz kalma felsefesine saygı da verilmelidir.[kaynak belirtilmeli ]

Bir başka önemli Yoix tasarım öğesi, işaretçiler ve adreslemeyi içerir. Yoix dilindeki işaretçiler ve işaretçi aritmetiği sözdizimsel olarak C dilinde bulunanlara benzer, ancak Yoix uygulaması sınırlarının dışında bir işaretçi kullanılmasını engeller. Ek olarak, adres operatörü her zaman geçerli, kullanılabilir bir sonuç üretir.[şüpheli ]

Genel olarak Yoix tasarımı, C ve Java dillerinde deneyimli programcılar tarafından dili öğrenmeyi kolaylaştırmaya çalıştı.[yanlış sentez? ]

Başvurular

Yoix dağıtımı, Yoix Web Uygulaması Anında Şablonu (YWAIT) içerir. yazılım çerçevesi Yoix web uygulaması oluşturmak için. Yoix web uygulaması, bir Web sunucusu ve bir İndirildi parça parça Çalışma süresi Yoix tarafından ihtiyaç duyulduğunda tercümanlar koşmak müşteri makineleri. Bu model, müşterinin tanıdık modeline benzer internet tarayıcıları indirmek İnternet sitesi çalışma zamanında ihtiyaç duyulduğunda parça parça, uygulamaların basit, verimli dağıtımına ve bakımına izin verir ve yalnızca her yerde bulunan web sunucusuna ve Yoix yorumlayıcısına dayanır. YWAIT çerçevesini kullanarak bir web uygulaması oluşturmak yalnızca birkaç standart gerektirir Unix en modern araçlarda işletim sistemleri, gibi Linux veya Mac OS X veya altında Microsoft Windows gibi eklenti paketlerinin yardımıyla Sen kazandın. YWAIT tabanlı bir uygulamanın istemci tarafı yalnızca Yoix yorumlayıcısına dayanır ve bu nedenle platform bağımsız, Java'nın çalıştığı her yerde çalışır. Yoix yazılım geliştirme felsefesi, birden fazla yerleşik özel dil için popüler eğilimden kaçınarak işleri basit tutmayı amaçladığından ve YWAIT çerçevesi basit, mantıksal bir kaynak ağacı hiyerarşisinde kolay, artımlı ekran geliştirmeye izin verdiğinden, bir Yoix web uygulamasının geliştirilmesi temel bilgiler: bir komut istemi ve bir metin düzenleyici.[yanlış sentez? ] IDE meraklılar şaşkın olabilir, ancak bu Küçük Güzeldir yazılım geliştirme yaklaşımı, AT & T'de uygulamada oldukça etkili olmuştur.[şüpheli ]

Veri goruntuleme

Yoix teknolojisi, GUI uygulamaları oluşturmak için bir araç olarak rolüne ek olarak, çeşitli modları destekler. veri goruntuleme.

Veri madenciliği

Bir veri goruntuleme YDAT (Yoix Veri Analiz Aracı) adlı modül, 2.1.2 yayımından bu yana halka açık Yoix dağıtımına dahil edilmiştir. YDAT, bir olay grafiği, grafik çizim bölmesi, histogram filtreleri ve tablo detayı içeren çeşitli görselleştirme bileşenleri arasında veri görüntüleme ve filtrelemeyi koordine etmek için bir veri yöneticisi bileşeni kullanır. YDAT, tarafından oluşturulan grafikleri görüntüleyebilir. GraphViz başka bir grafik çizim ve düzen aracı açık kaynak aracı ücretsiz olarak AT&T Labs. YDAT, Yoix dil seviyesinde oldukça yapılandırılabilir. Aşağıdaki resim, bu örnekte araç açık artırma işlemlerini analiz etmek için kullanılan bir Yoix YDAT örneğinin ekran görüntüsüdür.

Grafik çizimi

Yoix teknolojisi, grafik çizimi için iyi destek sağlar. Yukarıda YDAT modülünün bir parçası olarak belirtilen grafik görüntüsüne ek olarak, Yoix dilindeki veri türleri grafik yapılarını oluşturmayı, değiştirmeyi ve üzerinde gezinmeyi destekler. Yerel Yoix işlevleri, DOT dili çıktı ve yerleşik DOT dili ayrıştırıcı ile etkileşimi kolaylaştırmak için GraphViz düzen motorları.

Veri hücrelerinin düzenlenmesi

YChart veri goruntuleme araç kiti Yoix dağıtımına 2.2.0 sürümüyle eklenmiştir. YChart, kişinin veri hücrelerini düzenlemesine ve görüntülemesine izin verir. Yoix dağıtımında bulunan iki etkileşimli YChart uygulaması, Elementlerin Periyodik Tablosu ve bir Unicode Grafiği. Yoix dağıtımında, YChart'ı değişken genişlikli hücrelerle kullanmayı gösteren bir program, bir çizelgede olduğu gibi, Yoix dağıtımında da mevcuttur.

Etkileşimli 2D grafikler

Yoix dağıtımı ayrıca bir Yoix paketi içerir. Byzgraf, temel oluşturmak için veri grafikleri çizgi grafikler, histogramlar ve istatistiksel kutu grafikleri gibi.

Sınırlamalar ve odak

Şu anda uygulandığı gibi[ne zaman? ]Yoix dili yorumlanır; bu, örneğin, bir Java modülü uzantısındaki hesaplamaları kodlamadıkça, hesaplama açısından yoğun uygulamalar için muhtemelen doğru seçim olmadığı anlamına gelir. Benzer şekilde, aşırı döngü de bu yorumlanan dilin sınırlamalarını gösterecektir. Dilin odak noktası etkileşimli bağımsızdır veya istemci / sunucudur GUI ve veri goruntuleme uygulamalar.

Lisanslama

Yoix teknolojisi, aşağıdaki lisanslara sahip ücretsiz bir yazılımdır: Açık Kaynak Girişimi Ortak Kamu Lisansı. Yoix kayıtlı bir marka nın-nin & T Inc..[1]

Örnekler

1. Tümünü ayıklayın HTML AT&T ana sayfasından direktifler alın ve bunları standart çıktı.

ithalat yoix. *.*;URL Att = açık("https://www.att.com", "r");Dize Metin;int cnt = 0;süre (cnt >= 0) {    Eğer ((cnt = fscanf(Att, " <%[^>]>", &Metin)) > 0)        printf("<% s>  n", Metin);    Başka cnt = fscanf(Att, " %*[^<]");  // at}

2. Oluşturun ve görüntüleyin GUI başlıklı çerçevede (yani pencere) iki düğmeli ve ayrıca başlıklı bir kenarlığı vardır. Bir düğme basıldığında bir mesaj açar, diğeri örnekten çıkar. Pencere, bileşenlerine tam olarak uyacak şekilde otomatik olarak boyutlandırılır ve bazı ek kodlar, pencereyi görünür hale getirmeden önce ekranın ortasına yerleştirmek için konumunu hesaplar.

ithalat yoix. *.*;JFrame  jf = {  Boyut  boyut = BOŞ; // otomatik boyut penceresi  Akış düzeni  düzen yöneticisi = {    int hgap = 18; // 0.25 inç boşluk  };  Dize  Başlık = "Wikipedia Yoix Örneği"; // pencere başlığı  Dize  sınır = "Basit Düğme Örneği"; // kenarlık başlığı  Dizi  Yerleşim = {    yeni JButton {      Dize  Metin = "Mesaj İçin Basın";      actionPerformed(ActionEvent ev) {        showMessageDialog(kök, "Selam Dünya.", "Mesaj Örneği");      }    },    yeni JButton {      Dize  Metin = "Çıkmak için Basın";      actionPerformed(ev) { // ActionEvent bildirimi ihmal edilebilir        çıkış(0);      }    },  };};// çerçeve boyutu bilindiği için çerçeve konumunu ekranın ortasına ayarlayınjf.yer = yeni Nokta {  int x = (VM.ekran.Genişlik - jf.boyut.Genişlik) / 2;  int y = (VM.ekran.yükseklik - jf.boyut.yükseklik) / 2;};// görünür yapjf.gözle görülür = DOĞRU;

3. Burada gösterilen kod, Yoix'i oluşturmak için kullanıldı logo görüntü PNG Bu sayfanın üst kısmındaki dil açıklama kutusunda görülebilen format. Komut satırı argümanlar görüntünün boyutunun belirlenmesine izin vermenin yanı sıra PNG görüntü çıkışı veya bir ekran üzeri pencerede görüntüleme arasında seçim yapma.

ithalat yoix. *.*;BuildYoixLogoImage(çift yükseklik, Renk renk, int Addshadow) {  // gölge olmadan temel görüntüyü oluşturun  GenImage(çift yükseklik, Renk renk, Yazı tipi görüntü yazı tipi, çift ölçek) {    Resim Yoixlogo = {      int tip = TYPE_RGB_ALPHA;      Renk imgcolor = renk;      çift ölçek = ölçek;      Yazı tipi görüntü yazı tipi = görüntü yazı tipi;      Yazı tipi Regfont = görüntü yazı tipi.Scalefont(0.5, 0.5);      Grafikler grafikler = {        Yazı tipi yazı tipi = görüntü yazı tipi;        int textantialiasing = DOĞRU;      };      çift ywd = stringWidth(grafikler.yazı tipi, "Y");      Boyut boyut = {        çift yükseklik = yükseklik;        çift Genişlik = ywd * 5.25;      };      çift Owd = stringWidth(grafikler.yazı tipi, "Ö");      çift iwd = stringWidth(grafikler.yazı tipi, "ben");      çift xwd = stringWidth(grafikler.yazı tipi, "x");      ywd += iwd;      ywd /= 2.0;      boya(Dikdörtgen r) {        çift alfa = 1.0;        çift alfa2 = 0.3333;        int    limit = 12;            grafikler {          gsave();          silinebilir(0.0); // şeffaf PNG için          dikdörtgen klips(r);          setrgbcolor(imgcolor.kırmızı, imgcolor.yeşil, imgcolor.mavi);          Çevirmek(48 * bu.ölçek, 44 * bu.ölçek);          için (n=0; n<limit; n++) {            taşınmak(0.0, 0.0);            setfont(bu.görüntü yazı tipi);            // "el yapımı" karakter aralığı            göstermek("Y", alfa);            Eğer (n == 0) {              taşınmak(ywd, 0.0);              göstermek("Ö", alfa);              taşınmak(ywd + Owd - 0.3 * iwd, 0.0);              göstermek("ben", alfa);              taşınmak(ywd + Owd + 0.8 * iwd, 0.0);              göstermek("x", alfa);              taşınmak(ywd + Owd + 0.8 * iwd + xwd, -bu.görüntü yazı tipi.yükseklik * 0.33);              setfont(bu.Regfont);              göstermek(" xAE", alfa);              alfa = alfa2;            }            alfa *= 0.75;            döndürmek(30);          }           grestore();        }      }    };    dönüş(Yoixlogo);  }  Yazı tipi Basefont = {    Dize isim = "ClearviewATT-düz-48";  };  çift ölçek = yükseklik / 90.0;  Yazı tipi görüntü yazı tipi = Basefont.Scalefont(ölçek, ölçek);  Eğer (Addshadow) {    Resim logo = GenImage(yükseklik, renk, görüntü yazı tipi, ölçek);    görüntü = yeni Resim {      int tip = TYPE_RGB_ALPHA;      Resim kaynak = logo;      Resim img = logo;      // (açık) bir gölge oluşturmak için görüntüyü birleştirin      Resim gölge = yeni Resim {        int tip = TYPE_RGB_ALPHA;        Resim kaynak = img;        Dizi çekirdek = yeni Dizi[100];        Işaretçi ptr;        için (ptr içinde çekirdek) *ptr = 0.0055;        boya() {          kıvrım(çekirdek);        }      };      // görüntü ve gölgeyi tek bir görüntüde birleştirin      boya(Dikdörtgen r) {        grafikler {          gsave();          taşınmak(0, 0);          gösteri(bu.img);          taşınmak(bu.img.boyut.yükseklik * 0.005, bu.img.boyut.yükseklik * 0.02);          gösteri(bu.gölge);          grestore();        }      }    };  } Başka {    görüntü = GenImage(yükseklik, renk, görüntü yazı tipi, ölçek);  }  dönüş(görüntü);}// temel argüman işleme (getopt de mevcuttur)// ilk argüman görüntünün yüksekliğidirçift sz = (argc > 1) ? At(argv[1]) : 270;int shdw = 1;int Yazdır = 0;// ikinci argüman: 0/1 gölgeyi kapatır / açar, aksi takdirde// yazdırmak için bir dosya adı olduğunu varsayalım.Eğer (argc > 2) {  Eğer (argv[2] =~ "^[01]$") {    shdw = Atoi(argv[2]);  } Başka {    Yazdır = 1;  }}Resim Yoixlogo = BuildYoixLogoImage(sz, Renk.siyah, (sz >= 72) && shdw);Eğer (Yazdır) {  Akış çıktı;  Eğer ((çıktı = açık(argv[2], "w")) != BOŞ) {    encodeImage(Yoixlogo, "png", çıktı);    kapat(çıktı);  }} Başka {  JFrame jf = {    int gözle görülür = DOĞRU;    Boyut boyut = BOŞ;    Dizi Yerleşim = {      yeni JPanel {        Boyut tercih edilen boyut = {          çift Genişlik = Yoixlogo.boyut.Genişlik;          çift yükseklik = Yoixlogo.boyut.yükseklik;        };        Renk arka fon = Renk.beyaz;        Resim arka plan görüntüsü = Yoixlogo;        int arka plan ipuçları = SCALE_NONE;      },    };  };}

Referanslar

  1. ^ "Yoix® Komut Dosyası Dili". İnternet Arşivi Wayback Makinesi. 1 Temmuz 2016. Arşivlendi orijinal 21 Eylül 2015. Alındı 20 Kasım 2016.

Dış bağlantılar