Avatar
švrčajs
Člen
Avatar
švrčajs:

Zdravím, mám takový problém, dostal jsem na procvičení naprogramovat v Common Lispu řadící alg. selection sort, pseudokod i fungování sortu znám a nemám sebemenší problém naprogramovat ho např. v C# nebo c++ popř. java.
Ale začali nás vyučovat v CL a vůbec si s tím nevím rady. Příjde mi ten jazyk strašně rozdílný oproti výše zmíněným.
Našel by se tu někdo, kdo by ten sort napsal, popř. v komentářích vysvětlil, proč se to tak píše v CL ?
Dodatek, nejedná se o domácí úkol, seminární práci, nic takového, je to příklad jen na procvičení..

 
Odpovědět 2.10.2014 19:34
Avatar
coells
Redaktor
Avatar
Odpovídá na švrčajs
coells:

Lisp vypadá rozdílný proti C#, protože opravdu rozdílný je :-) Jedná se o deklarativní jazyk a musíš úplně změnit svůj přístup a myšlení, jinak se v něm budeš jenom trápit.

Můžeš se podívat na Rosetta Code http://rosettacode.org/…lection_sort#…
Pokud máš alespoň základy, tak je ten kód samopopisný, pokud je nemáš, nemá smysl cokoliv vysvětlovat. Začni s jednoduchými příklady a teprve potom se snaž napsat sort.

 
Nahoru Odpovědět 2.10.2014 19:43
Avatar
švrčajs
Člen
Avatar
Odpovídá na coells
švrčajs:

Díky za materiál, základy nějaké mám z jazyka scheme, ale celkově tyto dva jazyky mi prostě nesedí, je to tak, že celý "život" programuju nejčastěji v c# a tohle i scheme je pro mě řekněme šok.

 
Nahoru Odpovědět 2.10.2014 19:49
Avatar
coells
Redaktor
Avatar
Odpovídá na švrčajs
coells:

A přitom je Scheme řádově jednodušší než C# :-)

 
Nahoru Odpovědět 2.10.2014 19:59
Avatar
švrčajs
Člen
Avatar
Odpovídá na coells
švrčajs:

To je asi o názoru, do dnešního dne jsem tomu nepřišel na chuť. ;)

 
Nahoru Odpovědět 2.10.2014 20:05
Avatar
coells
Redaktor
Avatar
Odpovídá na švrčajs
coells:

Názor se obvykle mění časem a zkušenostmi. Většina začátečníků má problém s deklarativním a funkcionálním přístupem, čestnou výjimkou bývají matematici, kterým to žádné problémy nedělá. Proto je důležité si dobře rozmyslet algoritmus a pečlivě zadefinovat komponenty. Pokud dokážeš všechny termíny zapsat ve smyslu matematických funkcí, bude to už jenom čistý přepis z papíru.

 
Nahoru Odpovědět 2.10.2014 20:13
Avatar
hanpari
Redaktor
Avatar
Odpovídá na coells
hanpari:

Můžu se optat, co je deklarativní přístup?

 
Nahoru Odpovědět 2.10.2014 20:44
Avatar
coells
Redaktor
Avatar
Odpovídá na hanpari
coells:

Programovací jazyky lze obecně rozdělit na imperativní a deklarativní. Oba přístupy jsou diametrálně odlišné. V deklarativním způsobu zápisu říkáš, co se má udělat, místo abys říkal, jak to se má udělat.

Budeme řešit úlohu najít nejmenší prvek v seznamu celých hodnot imperativním přístupem v C#:

List<int> list = ...
int min = int.max;
for (int i = 0; i < list.count; i++)
  if (list[i] < min)
    min = list[i];

Stejná úloha řešená deklarativním přístupem v Prologu:

min([x], x).
min([h|t], x) :- min(t, y), (h<y, x=h, !; x=y)
 
Nahoru Odpovědět  +1 2.10.2014 20:55
Avatar
švrčajs
Člen
Avatar
Odpovídá na coells
švrčajs:

A ještě jeden dotaz :D nějaké dobré prostředí na programování v CL ? Ve škola nám byl doporučen LispWorks, ve free verzi, ale je to takové "sparťanské" :D

 
Nahoru Odpovědět 2.10.2014 21:04
Avatar
coells
Redaktor
Avatar
Odpovídá na švrčajs
coells:

Skoro všichni, co jsem znal a programovali v Lispu, používali Emacs. Je to programování, ne přehlídka features.

 
Nahoru Odpovědět 2.10.2014 21:10
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 10.