Portál AbcLinuxu, 30. dubna 2025 12:39
Tak slibovane vysvetleni minuleho zapisku
Prvni pomerne casta chyba (i z diskuze to bylo videt) je, ze si lide pletou ciste virtualni(dale cv) metodu s interfacem. I kdyz se cv metoda pouziva casto v definici interfacu, tak se da pouzit i jinde. Cv metoda je proste normalni metoda, kde jediny co ma navic je nutnost ji predefinovat v predkovi.
No a kde se to pouziva? Napriklad vsude, kde se chcete vyhnout duplicite kodu, kdy zakladni virtualni fce udela cast prace, ale to klicovy se udela az v potomkovi a sama o sobe nema ta metoda smysl (v horsim pripade udela jen cast prace a tvari se ze udelala vsechno). Mozna nekdo namitne ze to same lze udelat v predkovi s protected metodou s jinym nazvem, ale tim se zanasi dalsi slozitost(ve smyslu porozumeni kodu) pro pripadneho ctenare kodu.
No a v jednom doporuceni na netu co jsem cetl je dokonce napsano, ze by to telo melo byt vzdy, aspon s vyhozenim vyjimky. Jako protipriklad bylo ladeni kodu, ktery se proti tomu povede trikem zkompilovat (priznam se, ze sem to nezvladl). Ale znam z wine jakej je boj hledat funkci, kterou wine vubec nema, protoze to je volani NULL a hledat to je peklo, zvlaste kdyz nemate ten stroj u sebe, ale delate support.
Nemam patent na rozum, tak uvitam jakekoliv postrehy k tematu v diskuzi a treba se necemu dalsimu priucim
Tiskni
Sdílej:
No a kde se to pouziva? Napriklad vsude, kde se chcete vyhnout duplicite kodu, kdy zakladni virtualni fce udela cast prace, ale to klicovy se udela az v potomkovi a sama o sobe nema ta metoda smysl (v horsim pripade udela jen cast prace a tvari se ze udelala vsechno). Mozna nekdo namitne ze to same lze udelat v predkovi s protected metodou s jinym nazvem, ale tim se zanasi dalsi slozitost(ve smyslu porozumeni kodu) pro pripadneho ctenare kodu.No teda jestli tomuhle rikas zajimave dusledky, tak dobry
cout << nl;
nelze se divit ničemu.
Sorry, špatně jsem si to přečetl. C++ je ještě dojebanější než jsem se obával.Znas neco lepsiho?
Signifikantní korelace, řekl bych :)Skriptovaci jazyk potrebuji pro rychle prototypovani (radove minuty).
Python, Ruby, Perl, .NET, Delphi, dokonce i Java nebo Visual Basic :)Jedine co z toho neznam je Visual Basic. V Delphi jsem dlouho programoval a uz nikdy vic, ani to neumi spravne vyhodnocovat podminky (
if ((index<size) && (array[index] != 0))
je v delphi nutne rozdelit do dvou ifu). Java je fajn jazyk pro slabe programatory, ale v podstate se v tom neda psat nic velkeho (pokud to neni serverova zalezitost). .NET je mimo muj zaber. Ve skritpovacich jazycich delam zasadne jenom prototypy a systemove skripty.
Pro vysokoúrovňové věci (gui, aplikační logika, zpracování textu) je režie opravdu zcela minimální, a dynamické typování je neskutečně užitečná a příjemná věc.No a tomu se rika prototypovani. Program se napise ve skriptovacim jazyku a narocne casti se prepisou do C/C++.
ani to neumi spravne vyhodnocovat podminky (if ((index <size) && (array[index] != 0)) je v delphi nutne rozdelit do dvou ifu)To není pravda. Ani u Turbo Pascalu to není pravda. Defaultní bylo "líné" vyhodnocování a přepínačem šlo zapnout to druhé (nějaké to {$neco+} ve zdrojáku).
Python, Ruby, Perl, .NET, Delphi, dokonce i Java nebo Visual BasicKromě té Javy samé skriptovací věci nebo věci na hraní.
"C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off." -- Bjarne Stroustrup
a) ty užitečné konstrukce jsou možná potřeba pro rychlé řešení, ale v ideálním případě by se měl programátor spíš zamyslet nad svým návrhem.Ty uzitecne konstrukce jsou potreba pro to aby nebylo nutne hackovat jazyk. Porovnej si hardcore kod v Cecku a C++. Nebo jeste lip to porovnej s hardcore kodem v Jave.
b) ty užitečné konstrukce jsou možná užitečné tobě, ale ten, co to bude luštit a udržovat, tě prokleje;)Proc by mne proklinal? Samozrejme kdyz to bude nekdo, kdo neumi C++, tak asi ano, ale ten mne bude proklinat za cokoliv, protoze proste neumi C++.
Co je prosímtě hardcore kód? Nechceš doufám psát jádro OS v Javě, že ne?Proč ne, i takoví jsou. A nastojte, jsou i lidi, co píšou OS v Adě
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.