Proteus (programlama dili) - Proteus (programming language) - Wikipedia

Proteus (PROcessor for TExt Easy to BİZEe), 1998'de Simone Zanella tarafından oluşturulmuş, tamamen işlevsel, prosedürel bir programlama dilidir. Proteus, diğer birkaç dilden türetilen birçok işlevi içerir: C, TEMEL, Montaj, Clipper / dBase; yüzlerce adanmış işleve sahip dizelerle özellikle çok yönlüdür; bu onu metin işleme için en zengin dillerden biri yapar.

Proteus adını bir Yunan deniz tanrısına borçludur (Proteus ), Neptün'ün kalabalığıyla ilgilenen ve yanıt veren; farklı şekillere bürünerek kendisini dönüştürebilmesiyle ünlendi. Verileri bir formdan diğerine dönüştürmek bu dilin ana kullanımıdır.

Giriş

Proteus başlangıçta bir çoklu platform (DOS, pencereler, Unix ) sistem yardımcı programı, metin ve ikili dosyaları işlemek ve oluşturmak için CGI Kodlar. Dil, daha sonra aşağıdakiler için yüzlerce özel işlev ekleyerek Windows'a odaklandı: ağ ve seri iletişim, veritabanı sorgulama, sistem hizmeti oluşturma, konsol uygulamaları, klavye öykünmesi, ISAPI komut dosyası oluşturma (için IIS Bu ek işlevlerin çoğu, yalnızca yorumlayıcının Windows sürümünde mevcuttur. Linux sürümü hala mevcuttur.

Proteus, pratik (kullanımı kolay, verimli, eksiksiz), okunabilir ve tutarlı olacak şekilde tasarlanmıştır.

En güçlü yönleri:

Dil, Proteus ile yazılmış kullanıcı işlevleri eklenerek genişletilebilir veya DLL'ler C / 'de oluşturulduC ++.

Dil özellikleri

Proteus ilk bakışta düz sözdizimi nedeniyle Basic'e benzer görünebilir, ancak benzerlikler yüzeyle sınırlıdır:

  • Proteus tamamen işlevsel, prosedürel bir yaklaşıma sahiptir;
  • değişkenler türsüzdür, bildirilmeleri gerekmez, yerel veya genel olabilir ve değerle veya referansla aktarılabilir;
  • tüm tipik kontrol yapıları mevcuttur (eğer-öyleyse; bir sonraki için; while-döngüsü; tekrar-kadar; durum değiştirme);
  • yeni işlevler tanımlanabilir ve yerel işlevler olarak kullanılabilir.

Proteus tarafından desteklenen veri türleri yalnızca üç tanedir: tamsayı sayıları, kayan nokta sayıları ve dizeler Gelişmiş veri yapılarına (dosyalar, diziler, kuyruklar, yığınlar, AVL ağaçları, kümeler vb.) Erişim kullanılarak gerçekleştirilir. kollarıyani öğe oluşturma işlevleri tarafından döndürülen tam sayılar.

Tür bildirimi gereksizdir: değişken türü, uygulanan işlev tarafından belirlenir - Proteus, gerektiğinde her değişken üzerinde dönüştürür ve tekrarlanan dönüştürmelerin neden olduğu performans düşüşünü önlemek için önceki veri işlemlerini tutar.

Değerlendirme sırasını belirlemek için ifadelere parantez eklemeye gerek yoktur, çünkü dil tamamen işlevseldir (operatör yoktur).

Proteus aşağıdakiler için yüzlerce işlev içerir:

  • dosya sistemine erişim;
  • verileri sıralamak;
  • tarih ve dizeleri değiştirmek;
  • kullanıcıyla etkileşim (konsol işlevleri)
  • mantıksal ve matematiksel ifadelerin hesaplanması.

Proteus, değerleri hızlı bir şekilde sıralamak ve aramak için çok yararlı ve güçlü olan ilişkilendirilebilir dizileri (kümeler olarak adlandırılır) ve AVL ağaçlarını destekler.

İki tür düzenli ifadeler Desteklenmektedir:

  • genişletilmiş (Unix benzeri);
  • temel (Dos gibi, sadece "?" ve "*" joker karakterlerini içeren).

Verileri ayrıştırmak ve karşılaştırmak için her iki ifade türü de kullanılabilir.

İşlevsel yaklaşım ve yerleşik işlevlerin kapsamlı kütüphanesi, çok kısa ama güçlü komut dosyaları yazmaya izin verir; bunları anlaşılır tutmak için, orta uzunlukta anahtar kelimeler benimsenmiştir.

Kullanıcı, Proteus'ta yeni üst düzey işlevler yazmanın yanı sıra, yönergeleri izleyerek ve yazılım geliştirme kitinde bulunan şablonları kullanarak C / C ++ 'da yeni işlevler ekleyebilir; yeni işlevler, önceden tanımlanmış işlevlerle tam olarak aynı şekilde çağrılabilir, ifadeleri değere göre veya değişkenleri başvuruya göre geçirerek.

Proteus yorumlanmış bir dildir: programlar belleğe yüklenir, önceden derlenir ve çalıştırılır; yerleşik işlevlerin sayısı büyük olduğundan, yürütme hızı genellikle çok iyidir ve genellikle derlenmiş programlarla karşılaştırılabilir.

Proteus'un en ilginç özelliklerinden biri, komut dosyalarını şu şekilde çalıştırma olasılığıdır: Hizmetler veyaISAPI Kodlar.

Bir Proteus betiğini bir hizmet olarak çalıştırmak, işletim sistemi yüklemeyi bitirir bitirmez başlatılır ve birçok avantaj sağlar:

  • betiği başlatmak için hiçbir kullanıcının oturum açmasına gerek yoktur;
  • bir hizmet, bir kullanıcı tarafından durdurulmaması için farklı ayrıcalıklarla çalıştırılabilir.

Bu, endüstriyel ortamlarda (veri toplama, cihaz izleme) kritik süreçleri korumak veya operatörün yanlışlıkla bir yardımcı programı kapatmasını önlemek (klavye öykünmesi) için çok kullanışlıdır.

Proteus'un ISAPI sürümü, İnternet Bilgi Hizmetleri aracılığıyla çalıştırılan komut dosyaları oluşturmak için kullanılabilir ve web sunucusuyla işbirliği yapmak için belirli işlevlerle donatılmıştır.

Fikri mülkiyet koruması için Proteus şunları sağlar:

  • komut dosyası şifreleme;
  • geliştirme anahtarını (benzersiz olan) kullanarak komut dosyalarının dijital imzası;
  • Müşterinin anahtarını kullanarak bir komut dosyasının (veya bir kısmının) yürütülmesini etkinleştirme veya devre dışı bırakma seçeneği.

Proteus, kısa, güçlü ve anlaşılır senaryolar yazmak nispeten kolay olduğu için takdir edilmektedir; kılavuzdaki örneklerle birlikte çok sayıda yerleşik işlev, öğrenme eğrisini düşük tutar.

Geliştirme ortamı şunları içerir: kaynak kodu düzenleyicisi sözdizimi vurgulama ve içeriğe duyarlı bir kılavuz ile birlikte.Proteus'un yüklenmesi gerekmez: yorumlayıcı, son Windows sistemlerinde ek DLL'lerin çalıştırılmasını gerektirmeyen tek bir yürütülebilir dosyadır (400 Kb'nin altında).

Özet ve lisanslama

Bu dilin temel özellikleri şunlardır:

  • tamamen işlevsel, prosedürel dil;
  • çoklu dil desteği: Proteus birkaç dilde mevcuttur (anahtar kelimeler ve mesajlar);
  • veri türü yok: tüm değişkenler tamsayı sayıları, kayan noktalı sayılar veya dizeler olarak kullanılabilir; değişkenler, uygulanan işlevlere göre yorumlanır - Proteus, bir tür ve diğeri arasında sık dönüşüm olması durumunda yürütme süresini azaltmak için aramalar arasında değerlerinin farklı temsillerini tutar;
  • önceden tahsis edilmiş yapılar yoktur: Proteus tarafından kullanılan tüm veriler, yürütme zamanında dinamik olarak tahsis edilir; şunlarla ilgili herhangi bir sınır yoktur: özyineleme, maksimum veri boyutu, değişken sayısı, vb .;
  • operatör yok: Proteus tamamen işlevsel bir dildir - operatör yoktur; bu nedenle, ifadeleri değerlendirirken belirsizlik yoktur ve parantez gerekmez;
  • önceden tanımlanmış fonksiyonların geniş kütüphanesi: Proteus bir oyuncak dili değildir, diziler, tarihler, sayılar üzerinde çalışmak, sıralama, arama vb. için kullanılmaya hazır yüzlerce kütüphane fonksiyonuyla birlikte gelir;
  • gelişmiş veri erişimi (DAO), kanallar, Windows soketleri, seri bağlantı noktaları: Windows sürümünde Proteus, işletim sistemine özgü yüzlerce sistem çağrısı içerir;
  • açık ve anlaşılır sözdizimi: kütüphane işlevlerinin adları C, Clipper / Flagship ve Assembly'deki karşılık gelen işlevlere benzer; orta uzunlukta anahtar kelimeler kullanarak Proteus programlarının anlaşılması çok kolaydır;
  • yüksek seviyeli veri yapıları için yerel destek: diziler, kuyruklar (tek veya çift), yığınlar, bit haritaları, kümeler, AVL ağaçları Proteus'ta zaten mevcuttur ve kullanılması için ek kod veya kitaplık gerektirmez;
  • ISAPI DLL ve Windows Hizmeti sürümleri: Proteus, bir Windows hizmeti veya ISAPI DLL (Microsoft Internet Information Server ile birlikte kullanmak için) olarak mevcuttur;
  • kullanıcı kitaplıkları: kullanıcı tanımlı işlevleri (UDF) ayrı dosyalara yazmak ve bunları (koşullu ve yinelemeli olarak bile) yeni programlara dahil etmek mümkündür; UDF'lere tanımdan önce veya sonra referans verilebilir; Visual C ++ ile harici işlevler yazmak ve bunları bir Proteus betiğinden çağırmak da mümkündür;
  • Ms-Dos / Windows, Macintosh ve Unix metin dosyaları (tüm sürümler) için yerel destek;
  • tarihler için üç model (İngilizce, Amerikan, Japonca), onları kontrol etme ve gregorian takvime göre hesaplama yapma işlevleri;
  • 2 basamaklı yıl tarihleri ​​için dönem ayarı;
  • 12 ve 24 saatlik formatta zaman desteği;
  • tüm sürümlerde basit (Dos benzeri) ve genişletilmiş (Unix benzeri) düzenli ifadeler için destek;
  • dijital imza ve kriptografi kullanarak fikri mülkiyet koruması;
  • etkileşimli konsol programları yazmak için kapsamlı işlev kitaplığı.

Proteus, bir USB dongle ile korunan demo sürümde (komut dosyası yürütme üç dakika ile sınırlıdır) ve kayıtlı sürümde mevcuttur. Şu anda Windows veya Ubuntu paketi olarak mevcuttur ve dağıtımıSZP.

Örnek programlar

Selam Dünya

Aşağıdaki örnek "Merhaba dünya!" Yazdırır.

CONSOLELN "Merhaba Dünya!"

İki alanı çıkarın

Aşağıdaki örnek, standart girişi (CSV biçim, ayırıcı ";") ve "|" ile ayrılmış ilk iki alanı yazdırır:

KONSOLELN TOKEN (L, 1, ";") "|" TOKEN (L; 2; ";")

Proteus komut dosyaları varsayılan olarak bir girdi dosyası üzerinde çalışır ve bir çıktı dosyasına yazar; önceden tanımlanmış tanımlayıcı L, girişteki her satırın değerini alır. TOKEN işlevi dizenin istenen öğesini döndürür; üçüncü parametre sınırlayıcıyı temsil eder. Dize birleştirme örtüktür.

Aynı program şu şekilde yazılabilir:

H = TOKNEW (L, ";")
KONSOLELN TOKGET (H, 1) "|" TOKGET (H; 2)
TOKFREE (H)

Bu durumda, satırdaki jetonların listesini oluşturan başka bir işlev (TOKGET) kullandık; Bu, dizedeki birkaç öğeye erişmemiz gerekirse daha etkilidir.

Dış bağlantılar