<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.8/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.8/ http://www.mediawiki.org/xml/export-0.8.xsd" version="0.8" xml:lang="pl">
  <siteinfo>
    <sitename>Lem</sitename>
    <base>https://lem12.uksw.edu.pl/wiki/Strona_g%C5%82%C3%B3wna</base>
    <generator>MediaWiki 1.23.8</generator>
    <case>first-letter</case>
    <namespaces>
      <namespace key="-2" case="first-letter">Media</namespace>
      <namespace key="-1" case="first-letter">Specjalna</namespace>
      <namespace key="0" case="first-letter" />
      <namespace key="1" case="first-letter">Dyskusja</namespace>
      <namespace key="2" case="first-letter">Użytkownik</namespace>
      <namespace key="3" case="first-letter">Dyskusja użytkownika</namespace>
      <namespace key="4" case="first-letter">Lem</namespace>
      <namespace key="5" case="first-letter">Dyskusja Lem</namespace>
      <namespace key="6" case="first-letter">Plik</namespace>
      <namespace key="7" case="first-letter">Dyskusja pliku</namespace>
      <namespace key="8" case="first-letter">MediaWiki</namespace>
      <namespace key="9" case="first-letter">Dyskusja MediaWiki</namespace>
      <namespace key="10" case="first-letter">Szablon</namespace>
      <namespace key="11" case="first-letter">Dyskusja szablonu</namespace>
      <namespace key="12" case="first-letter">Pomoc</namespace>
      <namespace key="13" case="first-letter">Dyskusja pomocy</namespace>
      <namespace key="14" case="first-letter">Kategoria</namespace>
      <namespace key="15" case="first-letter">Dyskusja kategorii</namespace>
    </namespaces>
  </siteinfo>
  <page>
    <title>Strona główna</title>
    <ns>0</ns>
    <id>1</id>
    <revision>
      <id>3129</id>
      <parentid>3127</parentid>
      <timestamp>2026-01-17T10:44:52Z</timestamp>
      <contributor>
        <username>AndrzejSalwicki</username>
        <id>2</id>
      </contributor>
      <text xml:space="preserve" bytes="7032">&lt;p style=&quot;text-align: left;&quot;&gt;[[Plik:22px-English_language.svg.png]]
[[Main page]]&amp;nbsp;&amp;nbsp;&amp;nbsp; [[Plik:ukrainian_language.png|22px]]
[[Головна сторінка]]  &amp;nbsp;&amp;nbsp;&amp;nbsp; 
[[Page d'accueil]] &lt;/p&gt;



&lt;big&gt;&lt;big&gt;&lt;span style=&quot;color: Red&quot;&gt;These pages are under permanent  (re)construction.&lt;/span&gt;&lt;/big&gt;&lt;/big&gt;&lt;br /&gt;

 Nie lękajcie się rachunku programów, bo przed nim kolosalna przyszłość!&lt;br /&gt;

 Lothar  [[Collatz]] (&lt;small&gt;w roku 1937&lt;/small&gt;) miał rację !

-------



Na tych stronach przedstawiamy cztery projekty badawcze: Logika Algorytmiczna(od 1968), Loglan'82(od 1978), SpecVer(2007), Lem(2012).
Dwa pierwsze projekty przyniosły wiele wyników i będą stosowane przez wiele lat.&lt;br /&gt;
 

{|  class=&quot;wikitable&quot;
|- 
|♥ Projekt badawczy  ''Logika Algorytmiczna'' zajmuje się odkrywaniem praw [[rachunek programów |rachunku programów]] i znajduje zastosowanie w weryfikacji programów tzn. w dowodzeniu prawdziwości takich własności programów jak [[poprawność]], niezapetlanie się i in. Język logiki algorytmicznej pozwala nie tylko wyrażać własności algorytmów(programów) ale także umożliwia aksjomatyzacje wielu struktur danych. Zarówno tych znanych i niezbędnych w algorytmice np. stosy, drzewa binarnych poszukiwań, kopce, etc. jak i wielu struktur badanych w matematyce. Można uznać, że matematyka zajmuje się badaniem, czy dana formuła &lt;math&gt; \alpha &lt;/math&gt; jest prawdziwa w danej strukturze &lt;math&gt; \mathbb{A} &lt;/math&gt;. Ale większośc struktur nie daje sie opisać przy pomocy aksjomatów zapisanych w języku pierwszego rzędu! Przyjęcie języka logiki algorytmicznej (krócej, języka algorytmicznego) umożliwia podanie ...&lt;br /&gt;
→ '''[[Logika Algorytmiczna]]''' &lt;br /&gt;
→ '''[[Media:UlotkaLogikaAlgorytmiczna.pdf| ulotka Logika Algorytmiczna]]'''

|width=&quot;50% &quot; | ♥ Projekt badawczy '''Loglan'82'''  wniósł język programowania obiektowego i rozproszonego o tej samej nazwie. Opublikowanie języka i dystrybucja kompilatora poprzedzone zostały badaniami problemów badawczych. Wymieńmy dla przykładu:&lt;br /&gt;
• Rozwiązanie problemu bezpiecznej i efektywnej dealokacji niepotrzebnych obiektów.  
• Rozwiązanie problemu (statycznej) semantyki jaki pojawia się gdy moduły klas mogą być zagnieżdżane (klasy wewnętrzne) i rozszerzane (dziedziczenie). 
• Oryginalny protokół współpracy obiektów procesów, jakie programista może alokować w sieci komputerowej (protokół ''alien call''). Język Loglan powstał wiele lat przed językami C++(1986) i Java(1995). Te dwa (oraz inne) języki programowania nie przyswoiły sobie rozwiązań znanych w Loglanie od ponad 30 lat.   Zapoznanie się z Loglanem może całkowicie zmienić Twój pogląd na inżynierię oprogramowania. Wykorzystując wiedzę i umiejętności oferowane przez Loglan możesz w znaczący sposób podnieść swoje kwalifikacje.   &lt;br /&gt;
→ '''[[Loglan'82]]'''&lt;br /&gt;
→ '''[[Media:UlotkaLoglan.pdf|ulotka Loglan'82]]'''&lt;br /&gt;
 
|-
|♥ LEM jest nazwą nowego projektu badawczego.
Celem tego projektu jest zbadanie czy można stworzyć język programowania o pewnych określonych cechach (zob. [[specyfikacja LEM]]).
Język LEM ma oprzeć się na osiągnięciach projektu Loglan'82 i wykorzystać to co dobre w językach programowania obiektowego nowszych generacji: Java, C++, C#, python etc.&lt;br /&gt;
→ '''[[LEM]]'''
|♥ Projekt SpecVer ma potwierdzić przydatność  stosowania praw logiki algorytmicznej w inżynierii oprogramowania. Język LEM może okazać się przydatny w pracach  projektu SpecVer.&lt;br /&gt;
→ '''[[SpecVer]]'''
|}

{|  class=&quot;wikitable&quot;
|- 
|♥ Biblioteka klas i wiedzy matematycznej przydatnej programistiom. &lt;br /&gt;
 Wizja przyszłości (jeszcze jeden projekt na lata pracy dla wielu osób).&lt;br /&gt;

Zacznijmy od paru pytań: Czy można zawrzeć wiedzę matematyczną w komputerze? Czy można zawrzeć wiedzę informatyczną w komputerze? D. Knuth w latach 70-tych XX wieku miał taką ambicję rozpoczynając tworzenie swojej ''The Art of Programming''. Dziś po prawie 50 latach wiedza informatyczna rozrosła się i  wydaje się niemozliwym, by można ją było zawrzeć w komputerze. A jednak, po pierwsze komputery są znacznie większe i znacznie szybsze niż kiedyś, po drugie istnieje sieć komputerowa. (Spełniła sie wizja S. Lema z lat 50-tych). Pozwala to nam przejść do szkicowania koncepcji:
Należałoby : 
# stworzyć magazyn wiedzy z jakiej korzystają twórcy oprogramowania. Znajdą się w nim biblioteki klas i metod i ponadto wiedza o strukturach danych w jakich przeprowadzane są obliczenia. Dotyczy to zarówno struktur relacyjnych (algebraicznych) rozpatrywanych przez matematyków jak i struktur danych definiowanych i wykorzystywanych przez inżynierów oprogramowania.
# stworzyć język w jakim twórcy oprogramowania będą zapisywac swoje argumenty na rzecz wygłaszanych (drukowanych, rozpowszechnianych, ...) komunikatów, Język taki powinien być czytelny dla ludzi i na tyle sformalizowany by możliwa była komputerowa analiza przedstawianych dowodów.
# narzędzie do weryfikacji poprawności dowodów. Potrzebny będzie proof checker, ale istotnie inny od Mizara i jemu podobnych, ponieważ dowody będą zapisywane w rachunku programów (tj. systemie AL) bogatszym od rachunku predykatów,
# obmyśleć sposób gromadzenia i udostępniania wiedzy.  Czy ma to być swego rodzaju wyszukiwarka Google matematyczno-algorytmiczna?
|}

== Pytania ==
Na programowanie funkcyjne i temu podobne.
# Nie rozumiem: jestem namawiany do programowania funkcyjnego. Co na tym zyskam? Powiadają, w programowaniu funkcyjnym nie ma efektów ubocznych, ani instrukcji przypisania. No i co z tego? Czy istnieją narzędzia do wyrażenia własności takich jak: a) obliczenie będzie skończone, b) zestaw definicji nie zawiera sprzeczności, c) wyniki będa poprawne, itp.
# W r. 1943 S.C. Kleene udowodnił, że każda funkcja rekurencyjna w sensie Goedla-Herbranda jest wyrażalna przez operator minimum efektywnego &lt;math&gt;\mu&lt;/math&gt;. Czy nie ozncza to tyle, że w dziedzinie liczb naturalnych (całkowitych) programowanie funkcyjne i programowanie za pomoca operacji while i in. definiuja ten sam zbiór ffunkcji obliczalnych?
# Czy w programowaniu funkcyjnym można opisać składnię takiej klasy programów, że obliczenia będą skończone? Dla programowania iteracyjnego (alias strukturalne) jest takie kryterium.
# Przeczytałem nastepujące zdania: ''Gdyby jakiś tyran zabronił stosowania procedur i funkcji, wówczas cała informatyka by padła. Są one tak ważnym narzędziem, że trudno sobie wyobrazić programowanie bez stosowania procedur i funkcji. '' Jak to się ma do twierdzenia Kleenego? do tezy Turinga-Churcha?
# Koszt? Weźmy pod uwagę funkcję (ciąg) Fibonacciego. Jaki jest najlepszy koszt obliczenia n-tego wyrazu tego ciągu? 
W sprawie zarządzania pamięcią (odśmiecanie, wiszące referencje)
# Czy warto arbitralnie decydować o odrzuceniu instrukcji usuwającej obiekt?
[[próba]]</text>
      <sha1>0u30gircj8o09vudamqmj4jepx7uyqz</sha1>
      <model>wikitext</model>
      <format>text/x-wiki</format>
    </revision>
  </page>
</mediawiki>
