tohum7 - Seed7
paradigma | çoklu paradigma : genişletilebilir , nesne yönelimli , zorunlu , yapılandırılmış , genel , yansıtıcı |
---|---|
Tarafından tasarlandı | Thomas Mertes |
İlk ortaya çıktı | 2005 |
kararlı sürüm | 2021-08-07 / 69 gün önce |
Yazma disiplini | statik , güçlü , güvenli , yalın , tezahür |
işletim sistemi | Çapraz platform : BSD , Linux , OS X , Unix , Windows |
Lisans | GPL , LGPL (çalışma zamanı kitaplığı için) |
Dosya adı uzantıları | .sd7, .s7i |
İnternet sitesi | tohum7 |
Başlıca uygulamalar | |
açık kaynak referans uygulaması | |
Tarafından etkilenmiş | |
Pascal , Modula-2 , Ada , ALGOL 68 , C , C++ , Java |
Seed7 , Thomas Mertes tarafından tasarlanan genişletilebilir genel amaçlı bir programlama dilidir . Sözdizimsel olarak Pascal ve Ada'ya benzer . Diğer birçok özelliği ile birlikte bir uzatma mekanizması sağlar. Seed7, dile yeni sözdizimi öğelerini ve anlamlarını tanıtmayı destekler ve yeni dil yapılarının Seed7'de tanımlanmasına ve yazılmasına izin verir. Örneğin, programcılar yeni ifadelerin ve kullanıcı tanımlı operatör sembollerinin sözdizimini ve anlamını sunabilir. Seed7'nin uygulanması, kodlanmış sözdizimi ve anlambilimi olan dillerden önemli ölçüde farklıdır .
Özellikleri
Seed7, programlama paradigmalarını destekler : zorunlu , nesne yönelimli (OO) ve genel . Ayrıca ada göre arama , çoklu gönderim , işlev aşırı yüklemesi , operatör aşırı yüklemesi , istisna işleme ve keyfi kesinlikli aritmetik gibi özellikleri de destekler .
Başlıca özellikler şunları içerir:
- Kullanıcı tanımlı ifadeler ve operatörler
- Soyut veri türleri
- Özel sözdizimi olmayan şablonlar
- Arayüzler ve çoklu gönderim ile nesne yönelimli
- Statik yazma
- yorumlanabilir veya derlenebilir
- Kaynak kodu taşınabilirliği
- BSD , Linux , Mac OS X , Unix , Windows altında çalışır
Birkaç programlama dili kavramı genelleştirilmiştir:
- Tür bildirimleri (bir türe bir ad atanır) ve işlev tanımları, sabit tanımlar biçimini alır.
- Derleme zamanı ifadeleri , kullanıcı tanımlı işlevleri yürütebilir.
- Aşırı yükleme ve nesne yönelimi (birden çok gönderim ile) ortak kavramlar olarak görülmektedir. Sadece farklı zamanlarda gerçekleşirler: sırasıyla derleme zamanı ve çalışma zamanı .
- Tip isimleri ve tip açıklamaları parametre ve fonksiyon sonucu olarak kullanılabilir .
- Derleme zamanında yürütülen işlevler, nesneleri tanımlamak için kullanılabilir.
- Şablonlar , tür parametreleriyle derleme zamanı işlevleri olarak yazılır.
- Diziler , karma haritalar ve yapılar sabit kodlanmış bir özellik değildir. Bunun yerine kitaplıklarda soyut veri türü olarak tanımlanırlar .
- Ayrıştırıcı ve yorumlayıcı, çalışma zamanı kitaplığının bir parçasıdır.
- UTF-32 Unicode desteği. Bu, UTF-8 ve UTF-16 gibi değişken uzunluklu kodlama sorunlarını önler .
Seed7 projesi içerir tercüman ve bir derleyici . Tercüman programları çok hızlı başlatır ve hızlı program geliştirmeyi destekler. Derleyici , daha sonra makine koduna derlenen bir C programı oluşturmak için çalışma zamanı kitaplığından ayrıştırıcı ve yansıma arabirimlerini kullanır . Derlenmiş Seed7 programları, C programlarıyla karşılaştırılabilir performansa sahip olabilir .
Kütüphaneler
Seed7, kapsayıcılar , sayısal işlevler, sözcük analizi , dosya işleme, ağ oluşturma ( soketler , Aktarım Katmanı Güvenliği (TLS/SSL), Köprü Metni Aktarım Protokolü (HTTP), HTTP Güvenli ( HTTPS ), Dosya Aktarım Protokolü (FTP ) gibi alanları kapsayan birçok kitaplığa sahiptir. ), Basit Posta Aktarım Protokolü (SMTP) vb.), grafikler , pixmap ve vektör yazı tipleri , veritabanından bağımsız API , Ortak Ağ Geçidi Arayüzü (CGI) desteği, veri sıkıştırma , arşiv dosyaları ( tar , zip , cpio , ar , rpm ), karakter kodlaması , saat ve tarih işleme, XML işleme, mesaj özetleri ve daha fazlası. Bu kitaplıklar, taşınabilir olmayan işletim sistemi özelliklerini ve üçüncü taraf kitaplıklarını (her zaman bulunmayabilir) doğrudan kullanma ihtiyacını azaltır . Seed7 kitaplıkları, donanım , işletim sistemi ve üçüncü taraf kitaplıkları, örneğin grafik ve veritabanı kitaplıkları için soyutlama katmanları içerir . Başka bir deyişle, Seed7 programlarını farklı işlemciler veya işletim sistemleri arasında taşımak için herhangi bir değişikliğe gerek yoktur .
TLS kitaplığı
Seed7, kendi Aktarım Katmanı Güvenliği uygulamasına sahiptir . Kitaplık, AES ve eliptik eğri şifreleme içerir .
Veritabanı soyutlama API'si
Seed7, veritabanından bağımsız bir API'ye sahip bir kitaplık sağlar . Programlar MySQL , MariaDB , SQLite , PostgreSQL , Oracle , Open Database Connectivity (ODBC), Firebird , InterBase , Db2 ve SQL Server veritabanlarına bağlanabilir . Veritabanından bağımsız olarak hazırlanmış deyimler oluşturulabilir, bind değişkenleri kullanılabilir, deyimler çalıştırılabilir ve sonuç setleri alınabilir.
Tarih
Seed7, Thomas Mertes'in diploma ve doktora tezlerinde açıklanan genişletilebilir bir programlama dili olan MASTER'a dayanmaktadır. Kullanıcı tanımlı ifadeler ve operatörler gibi MASTER'ın orijinal fikirlerinin çoğu Seed7'de bulunabilir. Bir precompiler , Pascal'a MASTER çevirmek için, önerilmişti, ancak orijinal projede, Uygulanmayan. 1989'da MASTER için HAL adlı bir yorumlayıcı geliştirilmeye başlandı. 2005 yılında MASTER ve HAL projeleri Seed7 proje adı altında açık kaynak olarak yayınlandı. O zamandan beri her iki veya üç haftada bir yeni sürümler yayınlandı. 2021-04-25 sürümünden itibaren Seed7 projesi 500.000'den fazla kaynak kod satırı ve birkaç yüz sayfa belge içerir.
Uzatma mekanizması
Bir uzantı iki bölümden oluşur: yeni sözdizimsel biçim için bir şablon veren sözdizimi tanımı ve anlambilimi tanımlamak için kullanılan standart bir Seed7 işlevi.
sözdizimi tanımı
Sözdizimi tanımı, Seed7 Yapılandırılmış Sözdizimi Açıklamasını (S7SSD) kullanır. Gibi bir S7SSD ifadesi
$ syntax expr: .(). + .() is -> 7;
+
operatörün sözdizimini belirtir . Sağ ok ->
, ilişkilendirilebilirliği açıklar : İşlenenlerin soldan sağa bağlanması. İle öncelikli bir operatör tanımlanır. Sözdizimi deseni tanıtılır ve noktalarla ( ) sınırlandırılır . Noktalar olmadan desen . Sembol , terminal olmayan bir semboldür ve bir terminal sembolüdür. S7SSD, farklı terminal olmayan semboller arasında ayrım yapmaz . Bunun yerine yalnızca bir terminal olmayan sembol bilir: .
7
+
.(). + .()
.
() + ()
()
+
()
anlamsal uzantı
+
Karmaşık sayılar için operatör tanımı sadece bir fonksiyon tanımıdır:
const func complex: (in complex: summand1) + (in complex: summand2) is func result var complex: sum is complex.value; begin sum.re := summand1.re + summand2.re; sum.im := summand1.im + summand2.im; end func;
Referanslar
Dış bağlantılar
- Resmi web sitesi - SSS, kılavuz, ekran görüntüleri, örnekler, kitaplık açıklamaları, karşılaştırmalar ve bir dizi algoritma içeren ana sayfa
- GitHub'da Seed7
- SourceForge'daki ana deposundan Seed7'yi indirin
- Rosetta Kodunda Seed7 - Birçok Seed7 örneği içerir
- The Quest for the Ultimate Cycle , Collatz Conjecture with Seed7 programlarının 3n+C uzantısını araştırıyor
- Blog Remo Laubacher : GCJ, Seed7 ve haXe ile statik olarak bağlantılı Linux yürütülebilir dosyaları (2011)
- Blog David Gudeman tarafından The Seed7 Programlama Dili (2015)
- Pietro Cerutti tarafından sağlanan bir FreeBSD bağlantı noktası / ayrıca buraya bakın
- Brian Callahan tarafından sağlanan bir OpenBSD bağlantı noktası
- openSUSE/Fedora için bir Seed7 paketi (ayrıca buraya veya buraya bakın )
- Seed7'nin dil olarak tanımlandığı ve yeni sözdiziminin aslında dil kullanıcıları tarafından tanımlanabildiği bir tartışma
- "Fossies" de Seed7 - Yeni Açık Kaynak Yazılım Arşivi