Ciao (język programowania)

cześć
Logo for Ciao programming language.png
Paradygmat Logiczne , funkcjonalne , modułowe , obiektowe
Po raz pierwszy pojawiły się 1984 ; 39 lat temu ( 1984 )
system operacyjny Wieloplatformowość ( Unix , Mac OS X , Windows )
Licencja GPL , LGPL
Strona internetowa www.ciao-lang.org _ _
Pod wpływem
Prologu

Ciao to język programowania ogólnego przeznaczenia , który obsługuje style programowania logicznego , z ograniczeniami , funkcjonalnego , wyższego rzędu i obiektowego . Jego głównymi celami projektowymi są wysoka siła wyrazu , rozciągliwość , bezpieczeństwo, niezawodność i sprawne wykonanie.

Charakterystyka języka

Ciao zapewnia pełny system Prolog (obsługujący ISO -Prolog), deklaratywne podzbiory i rozszerzenia Prologu, programowanie funkcyjne (w tym leniwe ocenianie ), wyższego rzędu (z abstrakcjami predykatów), programowanie z ograniczeniami i obiekty , a także terminy cech (rekordy ), trwałość, kilka reguł kontroli ( przeszukiwanie wszerz , iteracyjne pogłębianie, ...), współbieżność (wątki/silniki), wykonywanie rozproszone (agenci) i wykonywanie równoległe. Biblioteki obsługują również programowanie WWW, gniazda, interfejsy zewnętrzne ( C , Java , TclTk , relacyjne bazy danych itp.) itp.

Ciao jest zbudowane na jądrze z rozszerzalną modułową konstrukcją, która umożliwia zarówno ograniczanie, jak i rozszerzanie języka — można go postrzegać jako język budujący język. Te ograniczenia i rozszerzenia można aktywować oddzielnie w każdym module programu, dzięki czemu kilka rozszerzeń może współistnieć w tej samej aplikacji dla różnych modułów.

Opracowywanie bezpiecznych i niezawodnych programów

Programowanie na dużą skalę w Ciao jest obsługiwane przez:

  • Solidny system modułowo-obiektowy. Zapewnia to oddzielną/przyrostową kompilację opartą na modułach (która jest automatyczna bez potrzeby stosowania plików Makefile).
  • Zintegrowany język asercji do deklarowania (opcjonalnych) właściwości (specyfikacji) programu. Obejmują one typy, tryby, determinację, brak awarii, koszt (czas, pamięć) itp.
  • Automatyczne wnioskowanie i statyczne/dynamiczne sprawdzanie takich twierdzeń (w tym testy jednostkowe).

Ciao obsługuje również programowanie w małych wersjach: kompilator jest w stanie tworzyć małe pliki wykonywalne (w tym tylko te wbudowane, z których korzysta program), a interpreter obsługuje skrypty.

Środowisko zawiera klasyczny interfejs najwyższego poziomu i rozwinięty interfejs emacs z osadzonym debuggerem na poziomie źródła oraz szereg narzędzi do wizualizacji wykonania.

Preprocesor Ciao obsługuje statyczne debugowanie i weryfikację, sprawdzanie asercji i optymalizację poprzez transformację programu źródłowego. Zadania te są wykonywane przez Ciaopp, dystrybuowane oddzielnie).

Automatyczna dokumentacja

Ciao zawiera lpdoc, automatyczny generator dokumentacji. Przetwarza programy ozdobione twierdzeniami (Ciao) i komentarzami do odczytu maszynowego oraz generuje podręczniki w wielu formatach, w tym HTML, pdf, texinfo, info, man itp., a także pomoc on-line, pliki ascii README, wpisy do indeksów podręczniki (informacje, WWW, ...) i utrzymuje strony dystrybucji WWW.

Przenośność i wydajność

Kompilator Ciao (który można uruchomić poza powłoką najwyższego poziomu) generuje kilka form niezależnych od architektury i samodzielnych plików wykonywalnych, które działają z szybkością, wydajnością i rozmiarem pliku wykonywalnego, które są bardzo konkurencyjne w stosunku do innych języków wysokiego poziomu ogólnie i w w szczególności z komercyjnymi i akademickimi systemami Prolog/CLP. Moduły można kompilować w zwarty kod bajtowy lub pliki źródłowe C i łączyć statycznie, dynamicznie lub automatycznie.

Dalsza lektura

  • Manuel V. Hermenegildo; i in. (2011). „Przegląd Ciao i jego filozofii projektowania”. arXiv : 1102.5497 [ cs.PL ].
  • Zespół deweloperski Ciao. „Strona główna systemu Ciao” ​​.
  • Enrico Pontelli (red.). „Wieloparadygmatowe środowisko programistyczne i językowe CIAO” .
  • Kei Davis, Jörg Striegnitz. „Programowanie wieloparadygmatowe w językach obiektowych: aktualny raport z badań na warsztatach MPOOL'07” . ECOOP'07 Materiały z konferencji 2007 poświęconej technologii obiektowej.