Ciao (język programowania)
Paradygmat | Logiczne , funkcjonalne , modułowe , obiektowe |
---|---|
Po raz pierwszy pojawiły się | 1984 |
system operacyjny | Wieloplatformowość ( Unix , Mac OS X , Windows ) |
Licencja | GPL , LGPL |
Strona internetowa | |
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.
- Bezpłatne oprogramowanie międzyplatformowe
- Oprogramowanie wieloplatformowe
- Dynamicznie typowane języki programowania
- Darmowe kompilatory i interpretery
- Języki funkcyjne
- Języki programowania logiki funkcjonalnej
- Języki programowania logiki
- Obiektowe języki programowania
- Języki skryptowe
- Tekstowe języki programowania