Hlavní navigace

Zmatení (programovacích) jazyků

Úskalí JNA

V takzvaných vyšších jazycích založených na bajtkódu a plném GC je často nutné volat nativní kód, ať už kvůli neexistenci knihovny v onom “vyšším” jazyce nebo pro vyšší výkon (z hlediska rychlosti a/nebo zacházením s pamětí). Zatímco .NET má své C++ Interop (dříve IJW; P/Invoke nikdy, ale opravdu nikdy nepoužívejte), Java si dlouho musela vystačit s primitivním JNI. Situaci poněkud zlepšila knihovna JNA, nicméně vzhledem k návrhu celé JVM i zde je hranice mezi oběma světy, narozdíl od .NET, velm

Proměnlivé šablony a RPC v C++

RPC je sice technologie včerejška (nebo úzce specializovaných aplikací s těžkotonážními rozhraními à la Corba), nicméně v reakci na poznámku na jednom vývojářském fóru jsem se zamyslel nad možností transparentního volání vzdálených procedur (tak nějak by se asi RPC přeložilo do čestiny) v C++. Přímočaré řešení je volat metodu v proxy oklikou podle jména funkce a argumenty předat jako seznam (nebo pole nebo vektor nebo něco podobného)…

Java a nativní paměť

V .NET máme v podstatě zadarmo možnost obejít p-invoke a přistupovat k nativnímu kódu přímo z C#. Mnohdy je ale problémem pouze zacházení s pamětí a o nativní (resp. C(++)) kód nám vůbec nejde. V takovém případě máme k dispozici neřízenou haldu. V Javě máme to samé, jen se o tom tolik neví. Samozřejmě bychom mohli k efektivnímu zacházení s pamětí použít JNI nebo JNA, ale mnohem multiplatformnější je využít třídu sun.misc.Unsafe…

Raspberry Pi jako aplikační server

Raspberry Pi se velmi rychle stalo populárním levným plnohodnotným počítačem. S rozšířením tohoto pěkného kousku hardwaru se také roztrhl pytel s nabídkami hostingu pro tento minipočítač. Co tedy s takovýmto “serverem” můžeme dělat? Raspberry Pi má méně paměti RAM než většina dnešních mobilů a ani procesor nepatří k nejrychlejším. Bez problémů jej lze použít například jako jednoduchý webový server…
27. 3. 2014 3:13 |

Obtížnost hledání min

Snad každý, kdo kdy používal Windows, zná hru Minesweeper, tedy hledání min. Různé hry, včetně této, se staly předmětem seriózního teoretického výzkumu. Například bylo zjištěno, že Sokoban (skladník přesouvající bedny na určené místo) je NP-těžký problém. Stejně tak hledání min je NP-těžké. Zde jako malé myšlenkové cvičení ukázka, jak lze algoritmicky řešit hledání min převedením na problém splnitelnosti výrokových formulí (SAT).

Proč je Java za zenitem

Java vznikla jak odpověď na tristní stav vývoje softwaru v 90. letech. Na vině byl hlavně Microsoft se svým příšerným Winapi a nízká portabilita kódu v C(++). Java se silně (zejména v oblasti knihoven) inspirovala OpenStepem (což byl ostatně částečně produkt Sunu), hlavně proto, že Sun koupil několik firem vyvíjejících pro OpenStep. První verze Javy ničím moc neoslnila, ale krok za krokem se z ní pomalu stávala zajímavá platforma.
24. 3. 2014 23:53 (aktualizováno) | |

Jak na inteligentního robota (2) - senzory & lokalizace

Minule jsme si ukázali, jak robotem hýbat, a viděli, jak se akumuluje odometrická chyba. Takový robot by byl samozřejmě dost k ničemu, protože i kdyby se snažil jezdit podle předem dané přesné mapy, brzy by se “ztratil” (nebyl by tam, kde si myslí, že je). Nyní se nejprve stručně popíšeme levné a dostupné senzory a následně představíme algoritmus (používaný například i v autech bez řidiče Googlu), jak je použít pro lokalizaci (tj. jak robot pozná, kde přesně je, vzhledem k mapě prostředí).

Lambda výrazy v Javě

Už déle neplatí, že C# je jen okopírovaná Java, a poslední verze Javy převzala od jiných jazyků tzv. lambda výrazy. Jenže trochu podivně. V C jsou od pradávna pointry na funkci ( void (*funkce)()) a analogicky (nestandardní) bloky ( void (^funkce)()). V C++ jsou lambda výrazy také ( function<void()>). C# dtto.
10. 3. 2014 10:04 | |

Jak na inteligentního robota (1)

V poslední době se k výuce programování čím dál častěji používají roboti. Různé podvozky pro Arduino jsou relativně levné a ani Lego Mindstorms nezatíží rozpočet přespříliš. Na ZŠ pochopitelně stačí jednoduchý kód pro dálkové ovládání, jde spíše o výuku základů algoritmizace (dokonalé „škola hrou“). Ale ani takové EV3 není jen hračka, na VŠ se často používá k experimentům s pokročilými algoritmy umělé inteligence (lokalizace, mapování apod.)…
7. 3. 2014 14:50 (aktualizováno) | |

Úvod do logiky

Dovolím si dát sem malou reklamu na velmi užitečný kurs. Je to absolutní základ pro kohokoliv, kdo si chce říkat programátor. Nejlepší na kursu na cena ;-) Odkaz zde
6. 3. 2014 22:51