Ze života prváka na matfyzu

Pustila jsem se takhle jednou do hackování, rozhlížím se po adresáři se zdrojáky, a co nevidím - uprostřed hromady jiných souborů jeden působí poněkud nepatřičně, a tak jak díky svému jménu, tak (zejména) díky koncovce. Jmenoval se cokli.cpp a myslím, že o jeho hlubokomyslný obsah nemohu své čtenáře připravit. Není nic lepšího, než si před zkouškou svůj nejméně oblíbený programovací jazyk aspoň trochu vyzkoušet. Nejlépe zcela ve stylu již známých zadání... inu, na jedničku to tenkrát kupodivu stačilo.

#include <stdio.h>

class SAVEC {
public:
        bool dela_brum;
        virtual void stekej() { puts("Neumim stekat."); }
};

class PES : public SAVEC {
public:
        int delka_vocasu;
        void stekej() { puts("Haf"); }
};

void jdi_na_prochazku(SAVEC *s)
{
        s->stekej();
}

int main()
{
        PES p;
        SAVEC s;
        jdi_na_prochazku(&s);
        jdi_na_prochazku(&p);
        return 0;
}
Re: Ze života prváka na matfyzu m4r3k (29. 8. 2008 - 19:33) Sbalit(1)
Re: Ze života prváka na matfyzu edois (30. 8. 2008 - 11:22) Sbalit(18)
Roztomilé, jen nevím, zda bych se psa s neinicializovanou délkou ocasu nebál ;)
Re: Ze života prváka na matfyzu Anicka Bernathova (30. 8. 2008 - 12:50) Sbalit(17)
> Roztomilé, jen nevím, zda bych se psa s neinicializovanou délkou ocasu
> nebál ;)

Těžko říct, co to znamená, viď? :-) Možná štěně loveckého psa ještě před
tím, než mu ho useknou?

Re: Ze života prváka na matfyzu edois (30. 8. 2008 - 13:17) Sbalit(16)
:)))

Ještě se zeptám, proč je tento jazyk u tebe tak neoblíbený?
Re: Ze života prváka na matfyzu Anicka Bernathova (30. 8. 2008 - 13:33) Sbalit(15)
> Ještě se zeptám, proč je tento jazyk u tebe tak neoblíbený?

Eh, to by bylo na delší povídání. Ale tak stručně... jednak nemám ráda
kočkopsy (tyhle objekty v céčku působí ještě "důvěryhodněji" než objekty
v perlu - stejně nakonec všechno závisí na dobré vůli všech uživatelů),
jednak je to pomalé, zbytečně složité (a když něco děláš blbě,
kompilátor tě ještě rád zavede na scestí - což není bug ale featura, nic
moc lepšího se podle všeho, co jsem slyšela od lidí, co to zkoušejí,
stejně nedá napsat), třeba takové templaty jsou naprosto nevkusné.
Prostě, když už mám pocit, že se mi vyplatí objektový přístup, vyberu si
jazyk, který umí objekty doopravdy.

A v neposlední řadě to neuvěřitelně przní mé milované céčko, svatý to
jazyk linuxového jádra, vyvolený velkým Tučňákem i jeho prorokem Linusem
:-)

Musím se přiznat, že vůbec nerozumím tomu, proč je vlastně ten jazyk tak
oblíbený. Rychlé to není, příjemné na používání taky ne, doopravdy
objektové taky ne. No nic, čas odložit oheň a síru a dát se do práce
:-)

Re: Ze života prváka na matfyzu kouzer (30. 8. 2008 - 15:10) Sbalit(12)
Myslím, že OOP v perlu je zakomponované ještě poměrně dobře na to jak starý jazyk (nepočítající s OOP) to je. Mě osobně na něm vadí jiné věci, ale každý má něco. :-)
Re: Ze života prváka na matfyzu Anicka Bernathova (30. 8. 2008 - 15:23) Sbalit(11)
> Myslím, že OOP v perlu je zakomponované ještě poměrně dobře na to jak
> starý jazyk (nepočítající s OOP) to je. Mě osobně na něm vadí jiné
> věci, ale každý má něco. :-)

Mně toho ve skutečnosti na perlu zas tolik nevadí. Zrovna o objektech v
perlu už si nedovolím říct křivého slova od té doby, co jsem si Perl
Best Practices od svatého Conwaye přečetla, jak se to dá dělat hezky,
včetně vynucení zapouzdření.

A ono vůbec... říct zrovna o perlu křivého slova dřív, než ho budu pořádně
umět, by bylo hloupé... a jestli se ho pořádně naučit stihnu, než vyjde
šestka, je ve hvězdách :-) Takových let už si s ním hraju, a jediné, co
o něm doopravdy vím je, že je to nádherný jazyk, který se ale musí umět
používat - a těch lidí, co to dovedou, je pár.

Re: Ze života prváka na matfyzu kouzer (30. 8. 2008 - 15:38) Sbalit(10)
Já mám perl, ale nepočítám s tím, že ho někdy budu umět opravdu používat, protože prostě k některým věcem si jen čuchnu a k některým ani to ne. Já mám prostě rád jeho syntax(věci jako $skalar, @pole, %hash jsou něco co mi jinde schází). Podle mě to úžasně zpřehledňuje kód a umožňuje to lepší orientaci.
Re: Ze života prváka na matfyzu Anicka Bernathova (30. 8. 2008 - 15:58) Sbalit(9)
> Já mám prostě rád jeho syntax(věci jako $skalar, @pole, %hash jsou
> něco co mi jinde schází). Podle mě to úžasně zpřehledňuje kód a
> umožňuje to lepší orientaci.

Tohle je zrovna pěkné, ale perlová syntaxe má i svá temnější místa :-) A
jak jsem říkala, že v perlu se dá psát i nádherný kód, zapomněla jsem
dodat, že ve skutečnosti v něm skoro každý píše jako prase :-) (Perl je
taky dost těžký jazyk - když ho neumíš, obvykle se to narozdíl od C++
neprojevuje především na funkčnosti, ale spíš na udržovatelnosti.
Kolegové se mi smějí, že je perl write-only :-))

Příklad ne až tak pěkného perlu můžeš najít třeba v minulém blogovém
příspěvku, a to bych řekla, že to co píšu já, je ještě pořád spíš lepší
průměr :-)

Re: Ze života prváka na matfyzu kouzer (30. 8. 2008 - 16:28) Sbalit(8)
Abych přiznal barvu, tak jsem kód v rychlosti prohlédl, ale když jsem viděl vracet číslo 42 v modulech nebo vytvoření podprogramu stylem "sub\n název\n{\n", tak jsem pročítání vzdal. Tedy nic proti stylu psaní, každý dělá jiné prasečinky (pardon). :-)
Re: Ze života prváka na matfyzu Anicka Bernathova (30. 8. 2008 - 17:10) Sbalit(7)
> Abych přiznal barvu, tak jsem kód v rychlosti prohlédl, ale když jsem
> viděl vracet číslo 42 v modulech nebo vytvoření podprogramu stylem
> "sub\n název\n{\n", tak jsem pročítání vzdal. Tedy nic proti stylu
> psaní, každý dělá jiné prasečinky (pardon). :-)

Já vždycky měla pocit, že prototypy v perlu dělají víc škody než užitku,
ale při psaní této obludky pomalu začínám být přesvědčena o opaku. Takže
prototypy možná jednou budou :-)

A jestli je na konci modulu obligátní jednička nebo 42? To mi zrovna
přijde celkem putna :-)

Re: Ze života prváka na matfyzu kouzer (30. 8. 2008 - 18:21) Sbalit(6)
No tak samozžejmě, že to je jedno. Já se při psaní snažím dodržovat jistá pravidla.. Což samo o sobě nic neznamená. :-D
Re: Ze života prváka na matfyzu Anicka Bernathova (30. 8. 2008 - 18:36) Sbalit(3)
> No tak samozžejmě, že to je jedno. Já se při psaní snažím dodržovat
> jistá pravidla.. Což samo o sobě nic neznamená. :-D

A coz o to, to ja taky :-) Jen mame koukam velmi odlisna meritka na to,
ktera jsou ta dulezita, co stoji za dodrzovani ;-)

Re: Ze života prváka na matfyzu Martin Mares (30. 8. 2008 - 23:30) Sbalit(2)
> A coz o to, to ja taky :-) Jen mame koukam velmi odlisna meritka na to,
> ktera jsou ta dulezita, co stoji za dodrzovani ;-)

A není to vlastně docela normální? V češtině také máme každý svůj sloh
a nepřijde nám divné, že jiným lidem se líbí psát trochu jinak a vybírat si
jazykové prostředky odlišné od našich.

Re: Ze života prváka na matfyzu Anicka Bernathova (31. 8. 2008 - 12:19) Sbalit(1)
> A není to vlastně docela normální?

O tom bych se rozhodne neodvazila ani na vterinu pochybovat :-)

Re: Ze života prváka na matfyzu Anicka Bernathova (11. 9. 2008 - 21:38) Sbalit(2)
Mimochodem, dnes jsem se cestou do práce zase jednou začetla do Perl
Best Practices od svatého Conwaye, a to náhodou do kapitoly o
subrutinách. Docela hezky tam shrnul to, co se mi na prototypech v perlu
nelíbí, a jejich používání nedoporučil. Místo toho navrhuje dávat
funkcím s větším počtem parametrů hashe. Moc se mi to líbilo - kolik
programátorů, tolik názorů jak psát perl, ale tohle nemůžu než doporučit
:-)

Re: Ze života prváka na matfyzu Vojtěch Kozák (12. 9. 2008 - 9:23) Sbalit(1)
Souhlas, hashe jsou hodně elegantní řešení.. :-)

2008/9/11 Anicka Bernathova <anicka+brum@anicka.net<anicka%2Bbrum@anicka.net>
>

> Mimochodem, dnes jsem se cestou do práce zase jednou začetla do Perl
> Best Practices od svatého Conwaye, a to náhodou do kapitoly o
> subrutinách. Docela hezky tam shrnul to, co se mi na prototypech v perlu
> nelíbí, a jejich používání nedoporučil. Místo toho navrhuje dávat
> funkcím s větším počtem parametrů hashe. Moc se mi to líbilo - kolik
> programátorů, tolik názorů jak psát perl, ale tohle nemůžu než doporučit
> :-)
>
>
Re: Ze života prváka na matfyzu edois (30. 8. 2008 - 15:23) Sbalit(2)
> třeba takové templaty jsou naprosto nevkusné
Čím konkrétně? Já je mám docela rád :)

> A v neposlední řadě to neuvěřitelně przní mé milované céčko, svatý to
jazyk linuxového jádra, vyvolený velkým Tučňákem i jeho prorokem Linusem
Uznávám, tohle je pěkný argument :))

> Rychlé to není
Je pravda, že čisté C bude asi rychlejší, nicméně zas tak pomalé mi to nepřijde. Je ale potřeba psát "optimalizovaně" - především si dávat bacha, aby se mi někde něco zbytečně nekopírovalo a podobně. Pokud se o to člověk nezajímá trochu do hloubky (stejně jako o skoro jakýkoliv jazyk), tak to pomalé být může.

> příjemné na používání taky ne
Tenhle názor jsem dřív zastával taky, ale ve chvíli, kdy už má člověk potřebné libky, umí používat STLko a podobně, se v tom píše docela dobře :)

A který jazyk že to tedy preferuješ na věci, u kterých hodně záleží na rychlosti?
Re: Ze života prváka na matfyzu Anicka Bernathova (30. 8. 2008 - 15:52) Sbalit(1)
> Čím konkrétně? Já je mám docela rád :)

Viděla jsem Haskell, takže vím, jak něco podobného taky může vypadat k
světu :-) Ale o věcech vkusu těžko vést disputace :-)


> Je pravda, že čisté C bude asi rychlejší, nicméně zas tak pomalé mi to
> nepřijde. Je ale potřeba psát "optimalizovaně" - především si dávat
> bacha, aby se mi někde něco zbytečně nekopírovalo a podobně. Pokud se
> o to člověk nezajímá trochu do hloubky (stejně jako o skoro jakýkoliv
> jazyk), tak to pomalé být může.
>

Jasně, takové věci člověk musí dělat i v céčku, a prostě vždycky... ale
o to vůbec nejde. Viděl jsi naší susí hackovací soutěž? Luboš tam měl
vždycky nějakou pluspluskovou úlohu, která byla tak ohyzdná, že mi
přišlo nejlepší to prostě lousknout hrubou silou. Docela jsem žasla, jak
pomalé může být něco, co dělá prostě jen opravdu hodně triviálních
operací na poli znaků. Trochu jsem si s tím pak hrála a vycházelo mi, že
obyčejné céčko je rychlejší o několik řádů - nevím, jestli to dělá
kompilátor nebo knihovna nebo co vlastně, ale nevěřila jsem svým očím.

> Tenhle názor jsem dřív zastával taky, ale ve chvíli, kdy už má člověk
> potřebné libky, umí používat STLko a podobně, se v tom píše docela
> dobře :)

:-) Coby distribuční maintainer pluspluskových programů občas žasnu, na
jaké triviality jsou schopni lidi používat STL, a program tak úplně
zbytečně neuvěřitelně zpomalit. Když můžu používat STL - nevadí mi tedy,
že můj program nebude nejrychlejší na světě, tak můžu s klidem psát i ve
spoustě dalších jazyků. (Pravda, ta zpomalení v programech dost často
nejsou jen vinou STL, "elegantní" použití STL občas vyrobí z triviálního
úkonu, jež by trval lineárně dlouho, něco pomalejšího.)

Tady mě prosím neber úplně vážně, já se v STL zas tak moc nevyznám.
Viděla jsem spíš ty horší příklady používání a sama se tomu vyhýbám,
takže do ní nijak zvlášť hluboko nevidím. Kdybych v práci nemusela,
nevím o ní vůbec nic a nenadávám :-)

S těmi knihovnami to navíc není tak růžové. Je jich sice poměrně dost,
ale ono jak je to přece jen docela těžké a nepřehledné, jejich autoři to
často moc neumějí. A tak ladíš chybu v programu a skončíš v knihovně.
(Když máš štěstí - občas skončíš taky bugreportem na kompilátor.)
Céčkových programů a knihoven mi prošlo rukama nepoměrně víc a stejně se
mi to nestávalo tak často.

To, že se jazyk podstatná část jeho uživatelů není schopná pořádně
naučit je vlastně samo o sobě taky skoro protiargument :-) Kdo chce být
machr a zvládat "těžký jazyk" může přece psát v intercalu. :-) U
pluspluska v té jeho zamotanosti ve skutečnosti přece není žádná výhoda,
prostě se jen moc nepovedlo.

> A který jazyk že to tedy preferuješ na věci, u kterých hodně záleží na
> rychlosti?

Víš, že jsem ještě nepotkala věc, u které by bylo potřeba, aby byla
strašně rychlá, a přitom byl důvod na ni používat opravdový objektový
jazyk? AFAIK obvykle stačí používat céčko s Linusovým "object
orientation is in mind, not in language" (nebo tak nějak) a psát ho
podobným způsobem, jako je psán ten kernel. To ti IMHO stejně přinese
skoro všechny výhody, která Ti dává "objektovost" pluspluska a nezpomalí
Tě. Pokud hodně záleží na rychlosti, není mi jasné, proč se části té
rychlosti nakonec vzdát výměnou za pár dost pochybných výhod :-)

Opravdový objektový jazyk se většinou hodí u různých GUI (tam se to na
ten model napasuje přirozeně) nebo když píšeš něco rozumně
rozdělitelného a potřebuješ, aby měl každý vývojář možnost něco schovat
před svými všetečnými kolegy.

Re: Ze života prváka na matfyzu anicka (11. 10. 2008 - 22:24) Sbalit(1)