Zmatení (programovacích) jazyků

  • Nativní kód v cloudu

    Listopadový .NET Magazin (německé vydání) je věnován cloudu, převážně platformě Azure. Protože Azure je ve srovnání s podobnými službami relativně drahý, byl jeden článek věnován optimalizaci. Kromě samozřejmých věcí jako minimalizace přenášených dat a počtu přístupů do databáze je velice zajímavou technikou použití nativního kódu. Při nastavení Full Trust lze na Azure využívat pomocí P/Invoke nativní DLL knihovny.
    29. 10. 2011 16:11 (aktualizováno)
  • Lambda Prolog

    Před nějakou dobou jsem narazil na projekt nazvaný Yield Prolog. Jedná se o implementaci Prologu v C# s využitím yield pro emulaci nedeterminismu. Autor uvádí, že výkon je srovnatelný s moderními stroji WAM, na nichž jsou založeny v podstatě všechny současné Prology. Víceméně z dlouhé chvíle jsem se rozhodl vyzkoušet něco podobného v C++. Protože C++ nemá yield, použil jsem lambda výrazy z nového standardu C++11 (odtud název článku jako analogie k „Yield Prolog“) podle schématu…
    26. 10. 2011 21:08
  • Renesance C++

    Titulek článku jsem si půjčil z Channel9. Je nepřehlédnutelné, že C++ se pomalu vrací na výsluní. Na přelomu tisíciletí jej nahradily tzv. řízené (managed) jazyky. Co si budeme povídat, C++ toho tehdy hodně postrádalo, a právě v té době se výkon počítačů dostal na úroveň, kdy si vývojáři mohli dovolit obětovat trochu výkonu za vyšší produktivitu.
  • Objektová databáze pro C++/CX

    Při použití databáze v klientské aplikace máme zpravidla na výběr mezi relační databází (s přístupem k datům přes SQL) a objektovou databází. Objektové databáze jsou nerelační, což ovšem pro použití v běžné aplikaci naprosto stačí, často je dokonce použití takové databáze pro vývojáře jednodušší, protože se nemusí starat o „rozklad“ objektů v Javě, C# nebo nějakém jiném jazyce do tabulek v databázi…
    19. 10. 2011 11:05 (aktualizováno)
  • Porovnání rychlosti .NET a C++/CX

    S novým WinRT se zásadně mění vnitřnosti celé platformy .NET (pro nové „Metro“ aplikace, které poběží i na procesorech ARM). Použil jsem kus kódu z reálné výpočetně náročné aplikace k porovnání rychlosti C++/CX a C#. Aplikace v nativním kódu je (nepřekvapivě) rychlejší, zajímavé ale je, že zhruba dvakrát, což je podstatný rozdíl. Na vině je zřejmě mezivrstva CLR mezi aplikačním kódem a WinRT, která u aplikace napsané v C++/CX chybí.
    18. 10. 2011 10:41
  • Delegáty, události a lambda výrazy ve WinRT

    Jak známo, Metro aplikace ve Windows 8 staví na tzv. Windows Runtime, což je náhrada za Win32 API. WinRT je implementované v C++ a preview Visual C++ obsahuje překladač pro C++/CX, což je C++ rozšířené o „Component Extensions“, tedy rozhraní pro práci s novější verzí COM objektů (rozšířená syntax je značně podobná C++/CLI). Nad rámec C++ lze u tříd definovat delegáty (delegate) a události (event)…
    17. 10. 2011 0:24
  • Další nový jazyk

    V poslední době jsme zažili záplavu nových jazyků. Hodně vývojářů má k podivným novotám jako JavaFX přirozenou nedůvěru, často hraničící s odporem. Do stejné kategorie spadají Ceylon od Red Hatu, Go od Googlu nebo CoffeeScript. Google právě představil další nový jazyk, Dart. Zatímco jejich Go má nahradit C(++), Dart se zaměřuje na web a má být nástupcem Javascriptu (i když je plánována i podpora pro běh na serveru). Přes a priori nedůvěru má však tento jazyk hlavně pozitiva. V čem spočívají?
    12. 10. 2011 11:56 (aktualizováno)
  • Objektové databáze

    Hitem posledních let (a tak trochu buzzwordem, podobně jako HTML5) jsou tzv. NoSQL databáze, tedy databáze, které nejsou relační. Relační databáze mají mnoho užitečných vlastností (proto jsou ostatně nejrozšířenější), ale občas se hodí i jiný způsob práce se strukturovanými daty. Zastánci NoSQL databází vyzdvihují například jejich škálovatelnost. Pro obrovské objemy dat je využívají společnosti jako Google, Amazon apod.
    7. 10. 2011 11:47
  • Microsoft->ToString()

    Krátká poznámka k tomu, jak si Microsoft představuje polymorfismus: ref class MyClass { public: String^ ToString() { return "My class with my ToString"; } }; Co myslíte, že vrátí následující kód? Object^ obj1 = ref new MyClass; auto obj2 = ref new MyClass; return obj1->ToString() == obj2->ToString();
    29. 9. 2011 14:23
  • Automatická správa paměti deterministicky

    V souvislosti s uvedením nového Windows Runtime (WinRT) a faktem, že nemá garbage collector (GC), se vyrojila spousta pseudonázorů od „expertů“ na programovací jazyky. Pro rádobyprogramátory rozmazlené správou paměti v Javě či C# existují jen dva extrémy – GC a malloc/free. Jaký je však nejnovější trend ve Windows a Mac OS X (resp. iOS)?
    28. 9. 2011 11:23 (aktualizováno)