Hlavní navigace

Zmatení (programovacích) jazyků

Frázové a abstraktní syntaktické stromy

Pod článkem o Jisonu se rozvinula zajímavá diskuse, navážu proto na tématiku stručným vysvětlením rozdílu mezi abstraktní a frázovou syntaxí. Nejprve je třeba ujasnit si terminologii, která je tu mírně zmatená. Frázové stromy se tak nazývají podle frázové gramatiky, která se definuje pro každý formální jazyk. V literatuře je najdete také pod názvem „konkrétní“ stromy (jako protiklad k abstraktním)…
2. 1. 2012 19:09 |

Postavte si jazyk

Vývojáři jsou lid kreativní, a jak lépe vybít svou kreativitu, než vytvořením vlastního jazyka? Teď nechci nabádat k vynalézání kola, sám jsem vymyslel v životě kdysi dávno jen jeden jazyk, a to jen proto, že to bylo nutnou podmínkou pro zápočet, všechny ostatní překladače, které jsem kdy napsal, měly za cíl jazyky již existující a nanejvýš mírně upravené. Zde stručně popíšu, jak jednoduše napsat vlastní parser a s ním interpret nebo transpiler.
21. 12. 2011 0:16 | Pokročilé techniky |

IAsyncOperation<WTF>

Jak ve WinRT získáte seznam souborů v adresáři? V C# nějak takto: var folder = KnownFolders.PicturesLibrary; var files = await folder.GetFilesAsync(); foreach (StorageFile file in files) { /* ... */ } A jak to bude vypadat v C++/CX…
19. 12. 2011 22:30 (aktualizováno) | Programovací jazyky

Jak (ne)optimalizovat spotřebu paměti v .NET

Dnes jen krátce a ke konkrétnímu tématu. Jak známo, velké objekty GC na haldě nepřesouvá, takže pokud si je budete alokovat a uvolňovat sami, nezpůsobíte svým počínáním větší fragmentaci než GC. Právě velké objekty je vhodné uvolnit co nejdříve a pokud možno deterministicky. To není v .NET problém, na neřízené haldě lze alokovat třeba i sto MB a díky IDisposable paměť uvolnit, jakmile objekt nepotřebujeme. Můžeme mít tedy ve třídě nějaký pointer…
13. 12. 2011 23:13 | Pokročilé techniky |

.NET aneb cesta tam a zase zpátky

Windows vznikaly od počátku v jazyce C, je proto logické, že i rozhraní pro psaní aplikací bylo (a dodnes je) v céčku. Toto Windows API, později nazývané Win16, nebylo nijak extra dobře navržené, ale protože Microsoft vždy kladl důraz na zpětnou kompatibilitu, vydrželo (v rozšířené formě nazývané Win32) až do dnešních Windows 7 (a jeho podmnožinu najdeme i v Metru).
12. 12. 2011 12:23 |

Jak chce Microsoft zvýšit výkon Windows 8

V souvislosti s nedávným představením Windows Store se opět píše o Windows 8. V únoru má být k dispozici beta verze a vývojářům bude umožněno nabízet v novém obchodě aplikace (v beta verzi zatím pouze zadarmo). Protože jádro Windows 8 je zcela překopané, neuškodí shrnout si některé poznatky o novém systému. Nebudu psát o novém UI (Metro), jež je věcí osobního vkusu. Zaměřím se na to, jak chce Microsoft zvýšit výkon aplikací běžících nad novým Windows Runtime (WinRT).
8. 12. 2011 12:28 (aktualizováno) |

Rozdíly v lambda výrazech v různých jazycích

Podle posledního indexu Tiobe jsou nejpopulárnějšími jazyky Java, C, C++, C# a Objective-C. Je zajímavé porovnat implementaci a omezení lambda výrazů v těchto jazycích, člověk tak snáze porozumí, jak to uvnitř funguje. Java Java lambda výrazy nemá (existuje experimentální implementace, objevit se mají v osmé verzi). Má ale anonymní třídy, které je snadno nahradí. S tím se pojí určitá omezení. Chceme-li použít lokální proměnnou uvnitř lambda výrazu, musí být deklarována jako final…
7. 12. 2011 10:50 | Pokročilé techniky |

Úskalí míchání nativního a řízeného kódu

Když píšete v nějakém jazyce s bajtkódem a GC (např. pro .NET nebo v Javě), narazíte občas na potřebu použít nativní kód (například kvůli výkonu nebo máte nějaký z dřívějška a nechce se vám ho přepisovat). Volání nativního kódu z řízeného a naopak s sebou přináší pár problémů, na které je třeba dát pozor.
5. 12. 2011 17:01 | Programovací jazyky |

Siri, potřebuju se zbavit těla

Umělou inteligencí je lidstvo fascinováno odnepaměti, už ve starém Egyptě či antickém Řecku se filozofové zabývali stroji myslícími jako člověk. Teprve počítače učinily tuto myšlenku realizovatelnou a zdá se, že právě letos se objevila první komerční aplikace umělé inteligence, která je použitelná: automatický asistent Siri v iPhonu 4S.
2. 12. 2011 15:59 (aktualizováno) |

Animační proxy

V Cocoa můžeme každé instanci třídy NSView poslat zprávu animator, která vrátí objekt chovající se jako objekt původní, ale animující některé vlastnosti. Například setAlphaValue nastaví průhlednost prvku UI. Pokud použijeme setAlphaValue na animační objekt, nastaví se průhledost animovaně (s interpolovanými hodnotami). Protože více čtenářů zná pravděpodobně .NET než Cocoa, zde je jednoduchá ukázka, jak takový proxy objekt implementovat v C#.
30. 11. 2011 23:39 (aktualizováno) | Pokročilé techniky |