Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - zboj

Stran: 1 ... 52 53 [54] 55 56 ... 101
796
Vývoj / Re:C++ - jak to lze udělat lépe?
« kdy: 23. 08. 2016, 11:34:28 »
Ahoj všem, učím se C++, ale nějak cítím že to není ono a hledám inspiraci jak to udělat lépe.

Kód: [Vybrat]
/* obsluhovač všech socketů */
class SocketDispatcher
{
  static std::vector<Socket *> sockets;
  ...
};

/* třída se socketem, umožnující volat callback při příjmu dat */
class Socket
{
  void (*cb)(void*, Socket*, void*, size_t) = NULL;
  void *cb_param = NULL;
  ...
}

/* parser příchozích dat JSON protokolu */
class jproto {
  void fetch(void *data, size_t len);
  bool process(Json::Value &out);
  ...
};

/* třída s klientem, konstruktor nastaví callbacky, receive_msg příjme data, zparsuje pomocí třídy jproto a poté předá funkci process_msg() */
class client
{
  jproto parserů
  client(char *ip, uint16_t port, double period);
  void receive_msg(void* obj, Socket* s, void* data, size_t len);
  void process_msg(Socket* s, Json::Value& msg);
  ...
}

client::client(char *ip, uint16_t port, double period) : ip(ip), port(port), period(period)
{
uint32_t addr = inet_addr(ip);
s = new Socket(addr, port, PROTO_TCP, true);
if(s->is_valid())
{
s->set_receiver(receive_msg, this);
SocketDispatcher sd;
sd.get()->add(s);
}
}

void client::receive_msg(void* obj, Socket* s, void* data, size_t len)
{
eluclient *_this = (eluclient *) obj;
_this->parser.fetch(data, len);

Json::Value msg;
while(_this->parser.process(msg))
_this->process_msg(s, msg);
}

Funguje to jak jsem chtěl, ale chtěl bych se vyhnout "_this", a také bych případně chtěl vědět, jak napsat callback v třídě Socket tak, aby jsem mohl volat nestatickou členskou metodu jakékoliv třídy. Díky za rady
Používání raw pointerů je zlo.

797
Vývoj / Re:Zdroje k rozvoji OOP myšlení
« kdy: 22. 08. 2016, 20:30:23 »
dědit z NSObject se dá jen na OS X, na Linuxu ne,
Aha, já jsem myslel, že pro Swift na Linuxu používají nějaký GNUStep nebo něco takovýho. Tak to je špatný, no.

Na Linuxu je čistý Swift bez ObjC, není tam ani libobjc a Foundation přepsali do Swiftu. Celou tu šaškárnu s ObjC Apple spáchal jen kvůli použití svého veleúžasného nového jazyka na OS X a iOS. Upřímně, nijak mi na Linuxu ObjC nechybí, měl  jsem tam s ním tu čest, žádné zváštní problémy tam nebyly, ale rozchodit ho je dost pracné a ve srovnání se Swiftem nic nového/lepšího nepřináší.

798
Vývoj / Re:Úplný nováček se chce naučit programovat
« kdy: 22. 08. 2016, 20:22:12 »
A to Ti prijde jako dobry zpusob vyvoje kvalitni aplikace? Nejak to zplacat a pak koukat, proc mi to nefunguje?

Existují jiné způsoby?

Jasne:

1. Napsat to tak, ze to funguje napoprve
2. Zamyslet se nad tim, proc to nefunguje a prijit na to bez koukani do kodu
3. Podivat se do kodu a prijit na to, kde mam chybu i bez toho, abych si program musel krokovat

Nerikam, ze to je vzdycky mozne, ale osobne debugger skoro nikdy nepotrebuju a myslim si, ze jeho caste pouzivani je zlozvyk, ktery znamena, ze kod je prasacky napsany a spatne zdokumentovany. A jsou jazyky, ktere zvysuji riziko vzniku zbytecnych chyb a jsou jazyky, ktere se jim snazi aktivne branit.
1) je správně, nicméně umět takto psát kód vyžaduje vzdělání a praxi.

799
Vývoj / Re:Zdroje k rozvoji OOP myšlení
« kdy: 22. 08. 2016, 18:10:48 »
To je dost velká divnost. doesNotUnderstand (a to samé v bledě modrém v Javě nebo C#) je vhodné tak pro nějakou proxy, jinak tu už nějaký ten pátek máme statické typování :) ...

Co s tím má společné statické typování?
Hodně, protože zamezí zbytečným stupidním chybám za běhu.

800
Vývoj / Re:Zdroje k rozvoji OOP myšlení
« kdy: 22. 08. 2016, 17:53:50 »
Však mi taky v Go a Swiftu chybí (a v C++ taky, ale tam je člověk ani nijak neočekává).
V Go bych ho ani nečekal, vzhledem k tomu, jak je to drahá operace a jak je Go zaměřené na výkon. U Swiftu je to teda docela zklamání, to jsem nevěděl (Swift jsem zkoukl jenom z rychlíku). Aspoň teda co koukám, jde použít, pokud se dědí z NSObject. Tak aspoň něco. Ale je to teda hodně nesystémový, to nemám rád, tyhle výjimky.
Typicky se to používá pro implementaci distribuovaných objektů (dynamická proxy), řekl bych, že vzhledem k latenci při komunikaci přes síť ta operace vůbec drahá není. Swift to nemá a dědit z NSObject se dá jen na OS X, na Linuxu ne, takže to je celkem no go (má-li být kód multiplatformní). Celkově bych řekl, že v tomto případě je nejlepší vykašlat se na eleganci a klidně to dělat jako Go - přes textové rozhraní.

801
Vývoj / Re:Zdroje k rozvoji OOP myšlení
« kdy: 22. 08. 2016, 15:35:42 »
doesNotUnderstand (a to samé v bledě modrém v Javě nebo C#) je vhodné tak pro nějakou proxy
Ještě je k němu komplementární respondsToSelector, se kterým dohromady už se hodí třeba i ke skládání neznámých objektů, což je příjemná věc. Samotný respondsToSelector se pak ještě může hodit k "implementaci rozhraní naruby" - postupně zkouším, jestli neznámý objekt umí třeba renderToPDF, když ne, tak renderToPNG apod.

Nejsou to asi zas tak moc používané metody, ale pokud je nemáš, tak některé věci neuděláš vůbec, nebo jenom hrozně hnusně. Čili jazyk, který si chce říkat OO, je rozhodně mít musí, jinak to žádné OOP není, ať si na školách říká kdo chce co chce ;)
Však mi taky v Go a Swiftu chybí (a v C++ taky, ale tam je člověk ani nijak neočekává).

802
Vývoj / Re:Zdroje k rozvoji OOP myšlení
« kdy: 22. 08. 2016, 14:46:31 »
Co má doesNotUnderstand společného s chybami?
SB si to asi představuje tak, že volání neexistující metody způsobí výjimku, pro kterou existuje nějaký handler...
To je dost velká divnost. doesNotUnderstand (a to samé v bledě modrém v Javě nebo C#) je vhodné tak pro nějakou proxy, jinak tu už nějaký ten pátek máme statické typování :) Každopádně dík za upřesnění, evidentně jsem nepochopil jeho myšlenkový pochod...

803
Vývoj / Re:Zdroje k rozvoji OOP myšlení
« kdy: 22. 08. 2016, 11:43:17 »
Pošlete mi prosím odkaz na nějaké povídání, odkazů na dynamic je mraky, ale o chytání runtimeové chyby nic nevidím. Děkuji.
Co má doesNotUnderstand společného s chybami?

804
Vývoj / Re:Zdroje k rozvoji OOP myšlení
« kdy: 22. 08. 2016, 02:38:43 »
C# umí doesNotUnderstand

??? Jak?
Přes dynamic. Funguje to podobně jako v ObjC. Ne že bych to někdy potřeboval, ale od určité verze (tuším 4) co C# umí. Stejně jako Java už dávno, i když ne od první verze.

805
Vývoj / Re:Úplný nováček se chce naučit programovat
« kdy: 21. 08. 2016, 22:35:05 »
Musim se Javamana zastat. Jaká je výhoda diagramů nebo pseudokůdu oproti kódu v reálném jazyku?
To snad nemyslis vazne. Ved predsa z nakresleneho sa da lahsie pochopit dany problem. a pseudokod je o tom, ze nemusis poznat ani syntax ziadneho jazyka, aby si to pochopil - to je uloha pseudokodu. a UML diagramy snad vies naco sluzia. Pochopit nieco zo sekvencneho diagramu je 100-krat lahsie, ako to studovat v kode.

bullshit. Jaký je rozdíl mezi znát syntax pseudokódu a znát syntax použitelného přesně definovaného jazyka. S těmi diagramy to asi bude subjektivní.
Asi jako rozdíl mezi railroad diagrams a EBNF. To prvé pochopí i takový primitiv jako javaman. EBNF se považuje za hlubší teorii a studenti v tom tápou, byť se jedná o to samé.

806
Vývoj / Re:Úplný nováček se chce naučit programovat
« kdy: 21. 08. 2016, 22:27:14 »
Základem bude nějaká dobrá VŠ, takže máš tak 2-3 roky na nějakou rozumnou přípravu. Základem jsou obecné algoritmy a datové struktury, takže třeba Wirthova kniha je dobrý začátek - u nás vyšla slovensky pod názvem Algoritmy a štruktúry údajov.
Učit někoho struktury ještě než se naučí syntax random jazyka aby si to zkusil je mimo ...

Syntaxe jazyka je jen formální záležitostí. Datové struktury se dají kreslit propiskou na papíře a algoritmy se dají psát i v nějakém pseudojazyce. Z takových kreseb se pak programuje vcelku snadno.
to zní opravdu zábavně
Ale je to pravda.

807
Vývoj / Re:Úplný nováček se chce naučit programovat
« kdy: 21. 08. 2016, 18:48:06 »
Byste se mohli živit psaním pohádek. Jako asi cool, jestli tomu fakt věříte, ale realita je jinde.

Dobrý den, je mi čerstvě 16 a jednou bych se chtěl učit programováním. Jsem úplný nováček nic o tom nevím a taky nevím jak začít. Byl bych vděčný za všechny rady jak začít.
Základem bude nějaká dobrá VŠ, takže máš tak 2-3 roky na nějakou rozumnou přípravu. Základem jsou obecné algoritmy a datové struktury, takže třeba Wirthova kniha je dobrý začátek - u nás vyšla slovensky pod názvem Algoritmy a štruktúry údajov.

ROFL. Jsi nezklamal. Obecné algoritmy na střední :D OMG, alespoň jsou tvoje rady kvalitní jako obvykle.

Preco je zle sa ucit vseobecne algoritmy na strednej?  U nas sme to tak na gympli mali. Dokonca sme sa tam ucili ratat aj zlozitost.
Doporučuji nereagovat na příspěvky lopaty javamana, vždyť ani neví, co to algoritmus je ;)

808
Vývoj / Re:Úplný nováček se chce naučit programovat
« kdy: 21. 08. 2016, 16:37:43 »
Dobrý den, je mi čerstvě 16 a jednou bych se chtěl učit programováním. Jsem úplný nováček nic o tom nevím a taky nevím jak začít. Byl bych vděčný za všechny rady jak začít.
Základem bude nějaká dobrá VŠ, takže máš tak 2-3 roky na nějakou rozumnou přípravu. Základem jsou obecné algoritmy a datové struktury, takže třeba Wirthova kniha je dobrý začátek - u nás vyšla slovensky pod názvem Algoritmy a štruktúry údajov.

809
Vývoj / Re:Zdroje k rozvoji OOP myšlení
« kdy: 18. 08. 2016, 18:29:20 »
C# špatný není, na desktopové aplikace pro Windows asi nejlepší. Dokonce v něm někteří programují i objektově.

V C# jsem dělal 3 roky, je to víceméně to samé jak Java. Rovnou si přihřeju polívku - vedle Smalltalku je to ubožáček - typový systém při složitějších strukturách je na posrání (přetypovávání a překrývání metod pouze z důvodu typu do naprostého vyčerpání), deklarativní třídy způsobující chybějící polymorfismus na třídní straně, podtypový polymorfismus, slabá reflexivita, chybně implementované zapouzdření (instance stejné třídy do sebe vidí!!!), KURRRRREVSKY nabujelá syntaxe, moloch, vynucené volání primitivního konstruktoru, málo pozdní vazba (neumí doesNotUnderstand), ...

K původní otázce: C# pro pochopení(!) OOP ne, jsou lepší.
C# umí doesNotUnderstand

810
Vývoj / Re:Zdroje k rozvoji OOP myšlení
« kdy: 17. 08. 2016, 22:56:07 »
Ja poufivam jedine swift. Uf pol roka :) Niefom zmija fom ftefan :) Fwift bude vfade.
Co hulíš?

Stran: 1 ... 52 53 [54] 55 56 ... 101