Archive for Listopad, 2009

Uvidíme, jak to dopadne… 0

Po přečtení excelentního článku pana doktora Olšáka s názvem „Kam se poděla dobrá typografie?“ a následně několika dalších jeho článků jsem se rozhodl začít koketovat s TeXem, ši spíše LaTeXem. Zabývám se na velmi laické úrovni typografií (přinejmenším pár odvětvími) již delší čas a nikdy jsem se neobtěžoval zjistit, co ta tři písmena znamenají.

TeX works

Po tom, co jsem trnitou cestou rozběhal český LaTeX na Windows 7, hrál jsem si ním celou noc a kdybych dnes nemusel dělat semestrální práci z ELI (kterou jsem nakonec napsal ve Wordu), byl bych si s ním hrál i dnes. Však jsem se onu práci pokoušel dělat v LaTeXu, ale došel jsem k závěru, že jeden den nestačí :-).

Java – Gaussova Eliminační Metoda 5

Funkční applet: ZDE.

EDIT: Problém s lineárně závislými řádky :-).

Následující kód, který jsem dnes uvařil:-), převádí pomocí GEM matice libovolného typu do horního trojúhelníkového tvaru. Je optimalizovaný i pro mrchy matice, které v sobě skrývají n lineárně závislých řádků nebo dokonce sloupců. Je částečně optimalizovaný i paměťově… během výpočtu efektivně krátí nově vzniklé řádky matice (to je možno vypnout pomocí opt_through).

po předvedení kódu (kde záměrně chybí ona krátící metoda) ho vysvětlím a potom ukážu pár příkladů (přímo ze skript pana Olšáka).

public void GEM(boolean opt_through)     {         int i, j, l;         double c, d, gc;         boolean cad = false;         int m_var_r = 0;         int m_var_s = -1;         if(opt_through)         {             optimize();         }         for(m_var_r = 0; m_var_r < _m - 1; m_var_r++)         {             m_var_s++;             cad = false;             for(l = m_var_r; l < _m; l++)             {                 if((_matrix[m_var_r][m_var_s] != 0))                 {                     break;                 }                 if(l == _m - 1)                 {                     swapRows(m_var_r, _m - 1);                     cad = true;                 }                 swapRows(m_var_r, _m - l);             }             if(cad)             {                 m_var_r--;                 continue;             }             c = _matrix[m_var_r][m_var_s];             for(i = m_var_r; i < _m - 1; i++)             {                 d = _matrix[i + 1][m_var_s];                 for(j = m_var_r; j < _n; j++)                 {                     _matrix[i + 1][j] = (c * _  _matrix[i + 1][j])                             - (_matrix[m_var_r][j] * d);                 }                 if(opt_through)                 {                     gc = gcdv(_matrix[i + 1], _  m_var_r, _n - 1);                     for(j = m_var_r; j < _n && _  gc != 0; j++)                     {                         _matrix[i + 1][j] = _  _matrix[i + 1][j]                                 / Math.abs(gc);                     }                 }             }         }     }

Znáte původní objektovou konvenci Microsoftu? Jestli ano, určitě jste poznali, že je kód vytržený z nějaké třídy, protože soukromé vnitřní proměnné bylo kdysi dohodnuto označovat underscorem v prvním znaku identifikátoru – „private: int _example=0;“

_matrix je tedy ona matice samotná
_m je počet řádků
_n je počet sloupců
m_var_r a m_var_s jsou proměnné, které identifikují aktuální levý horní roh matice

Na začátku se zkrátí řádky (užitečné pro matici náhodných čísel typu 10 10, kterou někdo z legrace vynásobil číslem 678). Nabíhá hlavní loop, který posouvá horní roh, následován několika smyčkami a podmínkami, které kontrolují, zda-li se vyskytuje na aktuální pozici našeho primárního řádku (ten, který se „opisuje“) nula. Pakliže ano, prohodí s posledním a zknotroluje. Takto postupuje vystřídaje všechny řádky a pokud nenalezne žádné nenulové číslo, dekrementuje řádkový čítač (protože se ve foru bežně inkementuje a my chceme zůstat na stejné řádce, abychom se mohli posunout doprava) a pokračuje zpět na hlavičku prvního řádkového foru, potom se inkrementuje sloupcový čítač a opět se kontrolují nuly ve sloupci.

Pokud nalezne nenulové číslo, program přejde do druhé části, kde se aktuální sloupec nuluje (klasicky alfa bé mínus beta á), přičemž každý nově vzniklý řádek zkouší zkrátit (pokud to má zadáno oním boolem v parametrech). No a to je v podstatě všechno. Kód spadne pouze pro pro matice typu (m, 1) nebo (1, n), neboť ty se nedají eliminovat.

Teď koukám, na co jsem zapomněl… zapomněl jsem na proměnnou cad. Cad protože column already done a slouží jako dablbrejk :-).

Je pravděpodobné, že jsou tam zbytečné nebo dále optimalizovatelné kroky, ale vem to čert. Funguje to, a celkem rychle. Matici 100 na 100 s čísly od 0 do 10 zeliminatí za pár vteřin… akorát to zarovnání je potom takové… no… zřete :-)…

/ 7.0 8.0 10.0 2.0 6.0 3.0 9.0 3.0 9.0 1.0 | 5.0 5.0 1.0 10.0 9.0 9.0 5.0 6.0 7.0 0.0 | 9.0 10.0 1.0 6.0 10.0 3.0 9.0 5.0 2.0 8.0 | 5.0 1.0 3.0 2.0 1.0 6.0 1.0 3.0 2.0 3.0 | 5.0 10.0 2.0 9.0 10.0 1.0 3.0 5.0 5.0 2.0 | 8.0 8.0 3.0 8.0 2.0 10.0 1.0 10.0 4.0 9.0 | 9.0 8.0 4.0 8.0 9.0 2.0 0.0 5.0 3.0 3.0 | 9.0 4.0 3.0 3.0 6.0 9.0 2.0 5.0 1.0 3.0 | 1.0 2.0 8.0 10.0 0.0 5.0 6.0 7.0 2.0 5.0 \ 0.0 0.0 1.0 6.0 5.0 7.0 4.0 2.0 8.0 10.0 / 7.0 8.0 10.0 2.0 6.0 3.0 9.0 3.0 9.0 1.0 | 0.0 -5.0 -43.0 60.0 33.0 48.0 -10.0 27.0 4.0 -5.0 | 0.0 0.0 47.0 0.0 -2.0 18.0 10.0 2.0 49.0 -35.0 | 0.0 0.0 0.0 2632.0 1544.0 2601.0 176.0 1229.0 2169.0 ... | 0.0 0.0 0.0 0.0 6312.0 5843.0 18448.0 -625.0 7459.0 ... | 0.0 0.0 0.0 0.0 0.0 -15857.0 -24598.0 -5237.0 -10999... | 0.0 0.0 0.0 0.0 0.0 0.0 22017.0 4380.0 9081.0 -15604... | 0.0 0.0 0.0 0.0 0.0 0.0 0.0 26961.0 8682.0 -98101.0 | 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -10579.0 11283.0 \ 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -1.0

Nyní ještě slíbené příklady. Oba dva lze najít ve skriptech pana Olšáka. Zde jsou ale rozepsané podrobně tak, jak je můj program počítal:

/ 2.0 -2.0 1.0 0.0 3.0 4.0 | -4.0 4.0 -1.0 1.0 -7.0 -11.0 | 4.0 -4.0 5.0 1.0 7.0 -3.0 \ -6.0 6.0 -4.0 1.0 -12.0 -7.0 / 2.0 -2.0 1.0 0.0 3.0 4.0 | 0.0 0.0 2.0 2.0 -2.0 -6.0 | 4.0 -4.0 5.0 1.0 7.0 -3.0 \ -6.0 6.0 -4.0 1.0 -12.0 -7.0 / 2.0 -2.0 1.0 0.0 3.0 4.0 | 0.0 0.0 1.0 1.0 -1.0 -3.0 | 0.0 0.0 6.0 2.0 2.0 -22.0 \ -6.0 6.0 -4.0 1.0 -12.0 -7.0 / 2.0 -2.0 1.0 0.0 3.0 4.0 | 0.0 0.0 1.0 1.0 -1.0 -3.0 | 0.0 0.0 3.0 1.0 1.0 -11.0 \ 0.0 0.0 -2.0 2.0 -6.0 10.0 / 2.0 -2.0 1.0 0.0 3.0 4.0 | 0.0 0.0 1.0 1.0 -1.0 -3.0 | 0.0 0.0 0.0 2.0 -4.0 2.0 \ 0.0 0.0 3.0 1.0 1.0 -11.0 / 2.0 -2.0 1.0 0.0 3.0 4.0 | 0.0 0.0 1.0 1.0 -1.0 -3.0 | 0.0 0.0 0.0 1.0 -2.0 1.0 \ 0.0 0.0 0.0 -2.0 4.0 -2.0 / 2.0 -2.0 1.0 0.0 3.0 4.0 | 0.0 0.0 1.0 1.0 -1.0 -3.0 | 0.0 0.0 0.0 1.0 -2.0 1.0 \ 0.0 0.0 0.0 0.0 0.0 0.0 / 2.0 -2.0 1.0 0.0 3.0 4.0 | 0.0 0.0 1.0 1.0 -1.0 -3.0 | 0.0 0.0 0.0 1.0 -2.0 1.0 \ 0.0 0.0 0.0 0.0 0.0 0.0

A ještě jeden.

/ 1.0 2.0 3.0 1.0 1.0 | 2.0 4.0 7.0 7.0 4.0 | 1.0 0.0 2.0 0.0 -2.0 \ 3.0 7.0 10.0 6.0 7.0 / 1.0 2.0 3.0 1.0 1.0 | 0.0 0.0 1.0 5.0 2.0 | 1.0 0.0 2.0 0.0 -2.0 \ 3.0 7.0 10.0 6.0 7.0 / 1.0 2.0 3.0 1.0 1.0 | 0.0 0.0 1.0 5.0 2.0 | 0.0 -2.0 -1.0 -1.0 -3.0 \ 3.0 7.0 10.0 6.0 7.0 / 1.0 2.0 3.0 1.0 1.0 | 0.0 0.0 1.0 5.0 2.0 | 0.0 -2.0 -1.0 -1.0 -3.0 \ 0.0 1.0 1.0 3.0 4.0 / 1.0 2.0 3.0 1.0 1.0 | 0.0 1.0 1.0 3.0 4.0 | 0.0 0.0 1.0 5.0 5.0 \ 0.0 0.0 1.0 5.0 2.0 / 1.0 2.0 3.0 1.0 1.0 | 0.0 1.0 1.0 3.0 4.0 | 0.0 0.0 1.0 5.0 5.0 \ 0.0 0.0 1.0 5.0 2.0 / 1.0 2.0 3.0 1.0 1.0 | 0.0 1.0 1.0 3.0 4.0 | 0.0 0.0 1.0 5.0 5.0 \ 0.0 0.0 0.0 0.0 -3.0 / 1.0 2.0 3.0 1.0 1.0 | 0.0 1.0 1.0 3.0 4.0 | 0.0 0.0 1.0 5.0 5.0 \ 0.0 0.0 0.0 0.0 -1.0

Velvet revolution, my ass 0

Once upon a time, an evil was replaced by smaller one, which then grew into an even bigger one, than the former one. Throughout the time, there was like thousand similar moments. There’s nothing to celebrate. Nothing at all.

These times, our nation is doomed more than ever before, due to the european union and the lisbon treaty, so I can’t fucking understand, what are youse assholes celebrating. Pissing on our ancestors graves would be more appropriate for this situation.

Knights of mt. Blaník, where are ye…
There’s almost nothing left of Czech Republic, so where the fuck are ye!

Proč je Java špatná a jaký jazyk si vybrat 8

Na to se vám chystám záhy odpovědět a své tvrzení dokázat.

Java:

Jediná výhoda Javy je její jednoduchost.
Když se ale na toto téma podíváme blíže, zjistíme, že ani tato výhoda Javě nepřináší prvenství v kategorii jednoduchých programovacích jazyků. Například jazyk C# je stejně jednoduchý, leč co do možností a výkonu Javu několikrát předčí.

První, z řady nevýhod je ukrutná až naprosto fenomenální pomalost. Na tomto poli patří Javě poslední místo mezi všemi programovacími jazyky, které znám. Dokonce i stařičký interpretovaný Visual Basic 6 je rychlejší. Abych jen tak nemlel na prázdno, dovolil jsem si připravit malý experiment. Nechejme 4 jazyky setřídit pole o n prvcích Bubble Sortem, což je algoritmus se složitostí O(n^2), a podívejme se, o kolik je který rychlejší než druhý.

Porovnání výsledků grafem

Jak je vidno, java je zhruba 6x (!!!) pomalejší, než nativní céčko (a to ještě není úplně nativní, poněvadž běží pod frameworkem; nativní je na něm přímý přístup do paměti pomocí ukazatelů).
Dále zhruba 1,5x pomalejší, než konkurenční částečně interpretované jazyky – C++/CLI a C#. Toto číslo je zásadní parametr, poněvadž se jedná o stejný proces zpracování – kompilace do metajazyka (MSIL a bytecode), následně jeho interpretace. Zklamal tedy buď samotný javovský interpreter (JVM), návrh metajazyka nebo velmi pravděpodobně obojí najednou.

To je také důvod, proč se na serverech Java používá jen velmi zřídka, zatímco konkurenční platforma (.NET) relativně hojně.

Další nevýhoda je omezenost.
Omezenost Javy lze rozdělit na dvě dílčí omezenosti – omezenost knihovního zázemí a omezenost jazyka.
Knihovní část javovského frameworku obsahuje kvanta metod, to je fajn, ale zdaleka ne tolik, jako .NET framework. Ten obsahuje velmi účinné nástroje, umožňující pracovat téměř s jakýmkoli hardwarem, softwarem, ryzími daty i abstraktními strukturami v počítači obsaženými. Javovská knihovna tříd je v porovnání s konkurencí velice omezená.
Omezenost jazyka spočívá v jeho špatném návrhu. Nepřítomnost přímého přístupu k paměti dokážu pochopit (Java chce lautr všechno zapoudřit… nejraději by zapouzdřila i programátora), ale nedostatky v její vlastní doméně (v OOP) pochopit nedovedu. Vícenásobná dědičnost (což je věc, kterou má i C++) zde neexistuje. Nelogicky se zde ale vyskytuje klíčové slovo Protected, které v C++ sloužilo pro označení soukromých členských proměnných a funkcí, které se dědí rodokmenem až k poslednímu potomku. Co je nepochopitelnější, než samotný výskyt tohoto klíčového slova, je jeho pozměněná funkcionalita. Označíte-li proměnnou jako Protected, je veřejná, a tudíž přístupná úplně všem cizím třídám v tomtéž balíčku. Také nikde nevidíte smysl?

Java tedy postrádá vícenásobnou dědičnost. Takže, kdybyste si chtěli naprogramovat simulaci složitějších struktur, které znáte z reality, budete nuceni vytvořit prasácké hierarchie, které vlastně hierarchiemi nejsou. Tím pádem mizí důvod, proč jste vlastně OOP použili a můžete všechno naprogramovat procedurálně.

Tipoval bych, že na naší milé ČVUT FEL se Java v prvním ročníku používá, protože Sun mocně sponzoruje katedru počítačů. A pokud někdo řekne „to víš, musej’ dát tém prvákům neco lehkýho… dyk nekterý z nich programujou poprvý v životě“, odvětím „a proč ne C#, který je jednoduchý stejně, akorát mnohem lepší?“ a budu mít pravdu. Kdybychom používali C#, nemuseli bychom se stydět… leč zůstává otázka, zda-li bychom měli učebny plné tenkých klientů Sun ray a cluster serverů se Solarisem (což je kapitola sama pro sebe…), jako je tomu teď.

Jaký jazyk si tedy vybrat?

V dnešní době existují na poli programovacích jazyků (vynechám nyní jazyky primárně určené pro vývoj webových aplikací) dva hlavní konkurenti s vlastní platformou. Je to Microsoft a Sun. A pakliže jsme Sun právě sborově zavrhli :-), zbývá Microsoft. Ten je už od dob, kdy ještě soutěžil s Borlandem, známý tím, že má výborné kompilery. Zvlášť C kompiler obsažený ve Visual C++ 6 mnozí (teď pominu open-source komunitu) považují za dosud nepřekonaný. V současné době Microsoft oficiálně podporuje několik svých jazyků pro .NET platformu, z nichž hlavní tahouni jsou:

C#, Visual Basic.NET a C++/CLI

Veskrze začátečnickou až středně pokročilou programátorskou populaci je nejoblíbenější jazyk C# (pokročilí programátoři (systémoví a podobní) stále používají nativní C, C++ a používat budou).
Jazyk C# je jednoduchostí syntaxe a jazykovou omezeností (spousta lidí nazývá jazykovou omezenost bezpečností) podobný Javě, nicméně nabízí mnoho vychytávek, které z něj dělají společně .NET knihovním zázemím velice efektivní nástroj. Právě proto je oblíbený – hodně muziky za málo peněz.

Druhým nejoblíbenějším jazykem je Visual Basic.NET.
Visual Basic byl mým vůbec prvním programovacím jazykem a ačkoli v něm již dávno neprogramuji, chovám k němu citový vztah :-). Historie jazyka sahá velice hluboko. Jazyk BASIC (prapředek) byl vyvinut o několik let dříve, než vzniklo samotné C, a proto je tedy nejstarším žijícím programovacím jazykem na světě. O tom také vypovídá jeho syntaxe, která není od C odvozena. Dovolím si malý příklad:

Public Sub Shift(ByVal param1 As String, ByRef abc)         Dim i As Integer         Dim j As Integer         For i = 1 To rr - 1 Step 1             For j = 0 To ss - 1 Step 1                 a(i - 1, j).Text = a(i, j).Text                 a(i - 1, j).ForeColor = a(i, j).ForeColor                 a(i - 1, j).BackColor = a(i, j).BackColor             Next         Next End Sub

VB.NET má mnoho jiných syntaktických odlišností a jejich popsání by zabralo více než jeden článek, takže tuto část shrnu tím, že ve VB.NET se dá napsat cokoli stejně dobře jako v C#, vice versa. Jsou to jazyky víceméně se stejnými možnostmi.

Poslední jazyk, který zde zmíním je zároveň nejmocnějším a nejsložitějším svého druhu.
Je jím C++/CLI (kde CLI znamená Common Language Infrastructure).
Mnoho setkání začínajících programátorů s tímto jazykem skončilo a skončí tragicky, protože jeho složitost přesahuje složitost jakéhokoli jiného jazyka. Tato složitost má ale své opodstatnění.
Cílem vývojářů bylo skloubit jazykou neomezenost a sílu (jiní tomu říkají nebezpečnost) jazyka C++ s mocí skrývající se v .NET frameworku. Cesta to byla trnitá a vzniklo mnoho příšerných verzí tohoto jazyka, které byly na pohled děsivé a špatně čitlené, ale nakonec dospěla ke zdárnému cíli a vzniklo C++/CLI.

#using <mscorlib.dll> using namespace System::Collections::Generic; ref class referencetype { protected:     String^ stringVar;     array<int>^ intArr;     List<double>^ doubleList; public:     referencetype(String^ str, int* pointer, int number)     {         doubleList = gcnew List<double>();         System::Console::WriteLine(str->Trim() + number);     } };

Milovníci ukazatelů a adres jistě ocení další referenční typ, bez kterého se navíc nedá obejít. Je to ‘^’ stříška, aneb řízený ukazatel, aneb handle, který dělá to samé jako nativní ukazatel, akorát na řízené haldě a jeho adresu nelze změnit, jelikož je dynamická. K objektům (respektive k jejich vnitřnostem), k nimž vlastníme handle se dostaneme operátorem nepřímého přístupu, znamým již z C++… je jím šipka „->“. Existuje zde také řízený odkaz, který má (ve jménu přehlednosti) značku procenta „%“ :-). Mezi jednotlivými obory názvů (to je správný překlad slova namespace) se pohybuje operátorem dvojdvojtečka „::“ :-). Ano, to je přesně jeden z důvodů vysoké úmrtnosti. Pokud ale nezemřete, po chvíli v tomto systému spatříte krásu… a pro krásu a moc tohoto jazyka budete ztraceni, stejně jako já, jeho zastánce a uživatel.

Vyberte si, který se vám líbí. Ať to bude jakýkoli, chybu neuděláte.

ČVUT FEL 2

mě naplňuje.

Včera a dneska jsem se učil na písemku z Úvodu do operačních systémů… a dneska jsem ji dal za plný počet. Předmět, se kterým jsem doposud válčil tak získal svoje kouzlo. Každá věc tak učiní, když si ji podmaním.
A když nás cvičící zasvěcoval do skriptování pod bashem… mobilizoval jsem všechny neurony a hltal zářivá klíčová slova objevující se jedno podruhém v mém JOE. I pochopil jsem, že sem patřím.

Z algoritmizace mám v půlce semestru šestnáct bodů… z deseti potřebných. Nakonci budu mít pravděpodobně bodů teoreticky na dva zápočty :). Baví mě v šest večer si sednout k počítači a sázet kód až do půlnoci, java nejava, a potom spokojeně odejít spát.

Matematika se stala skoro mým koníčkem. Nikdy jsem netušil, že derivování, integrování, vyšetřování nebo aproximace funkcí toho v sobě může skrývat tolik o podstatě světa. A co teprve věci, o kterých ještě nevím… věci, které na mě čekají v dobrovolné matematice 2 a dále.

Lineární algebra je jako klíč, který zapadá do spousty zámků a dokážete s ním jednoduše odemknout mnoho dveří, pod kterými jste se kdysi museli podkopávat. Je to jediný předmět, který mě dokáže vypnout… tj. dostat do stavu, kdy nechápu a mozek odmítá přijímat další informace.

A v pátek na pinčesu vždycky nachvíli na všechno zapomenu a pořádně si zamlátím do toho malého bílého sféromaku.

Je tolik pýchy v kapitulaci… 0

Je tolik pýchy v kapitulaci…
a tolik cti… snad více než ve vítězství.
A ve zklamání tolik vášně… snad více než v úspěchu.
A v rezignovanosti tolik entuziasmu…
V protikladech ekvivalencí…

My jsme pouze vybrali jednu stranu jako dobrou… a druhou jako špatnou.

Hádanka za pintu 10

EDIT: Pinta Guinnessu je připravena k vyzvednutí. Až budu nabízet další, doufám, že se zapojí víc lidí :).

Kdo najde v následujícím obrázku chybu, má u mě zcela závazně pintu tý černý věci. Beru prvního komentátora a pak dle výběru :).

A tady je jedna pro… 0

kamarády, kteří to mají doleva a chybí jim v čechách vhodná strana… něco jako Sinn Féin.

Alice a vůbec písmeno A 14

Písmeno A je krásné. Vypadá trochu jako runa a vyslovuje se vždy s určitou intenzitou a naléhavostí, kterou ostatní samohlásky postrádají. V následujících řádcích bych chtěl vyjádřit, jak vnímám krásu slov, jak rozlišuji slova na hezká a nehezká… a nakonec, jak si například podle krásy jména vytvořím představu o jeho nositeli.

Jak už jste si přečetli, miluji písmeno A (a nebo æ), a zvláště v případě, že na něj nějaké slovo začíná. Není to ale tak jednoduché, jak by se mohlo zdát, protože některá písmena si mohou začínat na A jak chtějí, a přesto se mi budou jevit přímo hnusná.

Aby se písmeno A neprznilo, musí se vyskytovat v kombinaci s „ušlechtilou“ sadou souhlásek :), což jsou takové, které pro vyslovení nepotřebují měkké patro. Podle mě platí, že čím dále od krku souhlásku vyslovíte, tím je ušlechtilejší :).

Opačné souhlásky – hnusné :) – jsou takové, které měkké patro potřebují – g, q, ch, j, k, x. Takové souhlásky A, popř. Æ przní.

Dále platí, že pokud samohlásku obklopují dvě souhlásky, které jsou stejného typu (například se obě vyslovují rty), vzniká hnusná kombinace, která se vyslovuje nepříjemně. Z toho vyplývá, že kombinace je hezká, pokud se obklopující souhlásky vyslovují nestejně tak, aby byl přechod od jedné ke druhé rychlý.

Poslední pravidlo zní, že ve slově by se měla pravidelně opakovat stuktura – 1 samohláska – 1souhláska, přičemž nejlepší varianta je, že slovo začíná samohláskou a končí samohláskou, němým písmenem nebo nerhotickým r.

Jedno takové slovo je právě Alice [ælis]. Znaky pro jednotlivá písmeny nádherně vyvažují ostré a kulaté hrany, čímž dělají slovo pěkné i na pohled. Samotné slovo potom začíná na A, pokračuje elkem na tvrdém patře, pokračuje íčkem na opačné straně a končí eskem, kdy se jazyk nedotýká. Prostě nádherné slovo :). A tak není divu, že jméno Alice považuji za nejhezčí z běžné dívčí sady jmen a jmenuje-li se tak někdo, okamžitě si představím hezkou dívku.

Trochu jsem tak pátral po různých postavách jménem Alice v literatuře a filmu, a objevil jsem k tomuto jménu i dokonalé příjmení, které, jak jinak, začíná na A. To příjmení je Abernathy [æbənæθi]. Když vyslovíte Abernathy, použijete skoro všechny druhy „předních“ souhlásek v takovém pořadí, že mají nestejnou výslovnost jako předešlé souhlásky nebo samohlásky, a zároveň slovo obsahuje dvě Æ. Dokonalé příjmení.

Čili Alice Abernathy je v úplně nejvyšším patře estetického žebříčku jmen :).

Proto mám (zřejmě) rád jak Resident Evil, tak Alice in wonderland, tak American McGee’s Alice a vůbec všechno, kde nějaká Alice figuruje.

Ale abychom nezůstali jen u hezkých jmen a hezkých slov, pojďme se podívat také na ty, které můj estetický motor považuje za méně hezká.

Jedno z takových jmen je například moje jméno :). Michal obsahuje prznící souhlásky, a to i v jeho anglické variantě, poněvadž pochází z Hebrejštiny a Hebrejština nemá jedinou hezkou souhlásku. O mém příjmení se už vůbec nebavím… čtyři po sobě jdoucí stejně vyslovované souhlásky a absence A je naprosto brutální zlo :).

Další nepěkné příjmení je třeba Obama. Sice obsahuje A, ale v arci hnusné kombinaci – bam, kde b a m se vyslovuje stejným způsobem.

Z českých jmen jsou taková ta nepěkná napříkald Broněk, Zdeněk, Ignác, Lenka (n s prodlouženou nohou – zadní), Magda, Eliška, Jakub, Michaela a tak podobně.

Hezká česká jména jsou: Alice, Alena, Amanda, Lucie, Pavel, Adam…

Když po mně někdy bude chtít domácí úkol neznámá Magda Gregorová, má minimální šanci. Naopak Alice Abernathy by měla šanci stoprocentní.