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 - Miloslav Ponkrác

Stran: [1] 2 3 ... 8
1
Vývoj / Re:Zapouzdření C++: Co dělám špatně?
« kdy: 08. 09. 2018, 20:48:13 »
Citace
Taková čuňárna mi v PHP rozhodně nechybí. Vadí mi i když někdo použije traity.

Na tom, jak správně vypadá OOP a objekty. Na tom, co je a není prasárna - se neshodne nikdo s nikým. Každý si ty správné objekty představuje úplně jinak. Je to o chuti toho kterého programátora.

2
Vývoj / Re:Mají tabulkové databáze v dnešní době smysl?
« kdy: 08. 09. 2018, 20:29:02 »
Citace
už leta připravuji článek o tom, jaký je SQL ( tabulkové databáze) nesmysl, ale ještě jsem se neodvážil to panu Krčmářovi nabídnout, neb se obávam, že by to redakca nevzala z oprávněné obavy z urážlivých komentářů pod článkem a z toho vyplývajícího popotahování s úřady.

Púvodní tazatel se ptal na téma, jestli jsou SQL databáze nesmysl, a jestli zahynou. O tom se tu povětšinou diskutovalo (kromě off topic témat jako C++ a PHP).

Od bck jsme se dozvěděli, že SQL dbms jsou nesmysl. Argumenty nepřinesl naprosto žádné, psal jen proto, aby mohl začít někoho urážet. Aby vydal svůj článek/argumenty potřebuje, aby mu nikdo neoponoval. To bude zcela určitě "sofistikovaně" a "precizně" "vyargumentovaný" článek o tom, proč je SQL nesmysl.


3
Vývoj / Re:Zapouzdření C++: Co dělám špatně?
« kdy: 08. 09. 2018, 19:35:03 »
Citace
Předpokládám, že máte v hlavičkovém souboru public a protected atributy/metody a všechno ostatní v nějaké interní třídě, která je jen deklarována formou ukazatele na ní? Šlo by prosím dát příklad - možná se nebavíme o stejné věci (a nejsem strýček Bob, který to možná taky myslel jinak .-)

1) Je třeba si uvědomit, že C++ umožnuje roztáhnout implementaci třídy do libovolného množství modulů. Což je vynikající věc, která mi strašně chybí v Javě, PHP, C# a mnoha dalších jazycích. Proto je potřeba, aby v hlavičkovém souboru bylo vidět vše.

Představte si jen ti třídu Thread. Část metod třídy je platformově závislá, část metod třídy je platfrmově nezávislá. Ideální na rozdělení implementace třídy do modulů thread_common.cpp, thread_linux.cpp, thread_msw.cpp, thread_qnx.cpp, atd.

2) C++ nepotřebuje znát detaily o datech a strukturách/třídách/atd. pokud k nim přistupuje pouze přes ukazatel. To je stejné i v C.

Pokud chcete mít privátní členy třídy nerozepsané v hlavičkovém souboru, nebo to není praktické - na každé platformě je to jinak, pak máte možnost toto použít.

Kód: [Vybrat]
class Thread
{
 public:
  static Thread* getCurrentThread();

  Thread();
  virtual ~Thread();
  int getPriority();
  void setPriority(int priority);
  void isAlive();
  void start();

 protected:
  virtual void main() = 0;

 private:
  // Skrývání pomocí struktury __ThreadBlock, kterou zná jen implementace.
  // Tento způsob je pro implementaci nejpříjemnější.
  ::internal_thread::__ThreadBlock * _ThreadBlock;

  // Jiná možnost skrývání pomocí bloku paměti, jejíž význam zná jen implementace.
  char _ThreadHandle[1024];
 
  // Nebo nemusíte vůbec deklarovat ani typ interních dat.
  void * _InternalPrivateDataBlock;

  // Atd. atd. atd. - Jste omezeni jen vlastní představivostí.
};

4
Vývoj / Re:Mají tabulkové databáze v dnešní době smysl?
« kdy: 08. 09. 2018, 18:38:00 »
Citace
... ale ještě jsem se neodvážil to panu Krčmářovi nabídnout, neb se obávam, že by to redakca nevzala z oprávněné obavy z urážlivých komentářů pod článkem a z toho vyplývajícího popotahování s úřady. ... V dnešní diskuzi mne svými výroky překvapil pan Ponkrác (kterého považuji za nejchytřejšího člověka na zeměkouli - těsně před V. Klausem). Např:

Pán se nám obává urážlivých komentářů - a sám rozdává ad hominem urážky napravo nalevo. :-) Takové moralisty/pokrytce mám nejraději. :-(

Citace
Ja si od roku tak 1980 nepamatuji, že by existovala databáze, kde by aplikační prograátor musel vědet, kde jsou data uložena. Kde tohle pan Ponkrác sebral fakt nevím.

Kdybyste uměl číst a chápat text v diskusi lépe než se snažit urážet, přečetl byste si na koho reaguji a proč to píši. Neb můj předřečník právě takovouto závislost na datovém úložišti navrhoval.

Obdobně bych mohl reagovat i na poznámku rychlosti. Ale proč bych měl reagovat na někoho, kdo si neuráčil přečíst ani diskusní vlákno?

Já obecně nerad reaguji na negativní oponenty, kteří sice nechápou psaný text, neumějí se orientovat v diskusi. Ale o to ochotněji a raději rozdávají urážky - i když je to úplně mimoňské. A tito pak ještě úzkostlivě zmíní, že se obávají - ó chuďátko naše malé - urážlivých komentářů pod jeho potenciálními články. :-(

5
Vývoj / Zapouzdření C++: Co dělám špatně?
« kdy: 08. 09. 2018, 18:04:05 »
Citace
Když si to stejné zkusíš napsat objektově (přes class), tak uživateli cpeš i všechny interní informace v hlavičkovém souboru. to mu je 1) na nic  2) každá změna si vyžaduje překlad všech zdrojáků, co na tom headeru závisí (imho horší problém u větších projektů). Takže to je ukrývání informace, ale ne přes nějaká klíčová slova, ale vlastností jazyka

Prosím vás, co dělám špatně, že už 20 let píši v C++, používám třídy, a nemám detaily o interních datech třídy v hlavičkových souborech?

Občas je to také dobré, protože když si třeba děláte přenositelnou knihovnu nad voláními API operačních systémů, tak zrovna nechcete třeba, aby ve Windows bylo v hlavičkovém souboru #include <windows.h>. Takže si třeba uděláte vysokoúrovňovou knihovnu pro práci s thready a třídy mají v interních datech tříd třeba handly na thready, semafory, mutexy a další. A přesto nejsou tyto zapsaní v hlavičkovém souboru a funguje to.

Prosím, zoufale prosím, co dělám špatně, že umím zapouzdřit v C++ data třídy lépe než strýček Bob?

Hlavně byste si měli uvědomit, že pokud něco umí C, tak C++ to umí také. Tvrzení "C umí něco lépe než C++" je dost nesoudné.


6
Studium a uplatnění / Re:Rušní asm versus kompilátor
« kdy: 08. 09. 2018, 17:55:11 »
Citace
Bavíte se borci o porovnání ARMu a 80x86 nebo ARMu a x64? V tom druhém případě ale jděte do AArch64 a x64 :-)

Bavíme se o tom, jak moc dobře optimalizuje člověk versus kompilátor na různých architekturách.

7
Vývoj / Objektové pojetí C/C++
« kdy: 08. 09. 2018, 17:52:11 »
Citace
C++ moc objektové není a na C se dá postavit mnohem lepší objektový jazyk než C++ - viz Objective C.

Dovolte takovou otázku: Co je to "správné objektové pojetí"?

Já když si můžu vybrat mezi C++ a ObjektiveC - tak si jednoznačně vyberu C++.

Citace
Ale to ještě neznamená, že samotné C je objektové. Ostatně takový Forth, Lisp či Lua také nejsou objektové, ale snadno se v nich dá vybudovat objektová nástavba - ve všech třech případech opět lepší než C++.

Objektové programování je paradigma, ne ten syntaktický cukr co máte v "objektovém jazyce". Objekty můžete používat klidně i ve strojovém kódu.

Nicméně pořád je tu ta otázka, co je to správné objektové pojetí?

Mám dojem, že řada lidí je dokonalými akademiky, teoretiky. A že nejlepší objekty jsou z pohledu těchto lidí ty, co jsou ještě ve snu a neexistují. Dokud to není prakticky zrealizováno - tak je to dokonalé. :-)

8
Vývoj / C, hackování struktury FILE
« kdy: 08. 09. 2018, 17:45:38 »
Já jsem se tedy vrtal ve FILE struktuře. Byla to jedna z prvních věcí, když jsem před 20 lety porpvé sedl k C. Dokonce jsem si napsal další funkce f*(), které v podstatě hackovaly tu strukturu. Například jsem měl funkci, která umožnila kdykoli otevřenému souboru přepínat mezi binárním a textovým režimem. Nebo možnost přehodit soubory mezi dvěma handly typu FILE *.

Podobně jsem se vrtal do čehokoli, co jsem našel v C.


9
Studium a uplatnění / Re:Jaký webový framework zvolit?
« kdy: 08. 09. 2018, 10:12:27 »
Citace
Výjimky stále vycházejí z \Exception. Throwable je jen interface, které \Exception implementuje.

A proto existuje v PHP 7 řada tříd výjimek, které nejsou potomky třídy \Exception. To je velice skvělé, doporučuji tyto kraviny dělat tvůrcům PHP co nejčastěji. PHP je historicky první programovací jazyk, který programátorům pod rukou změnil prapředka tříd výjimek.

Zvláště je třeba ocenit, že PHP udržuje bdělost programátorů. Změnit tak rozsáhle způsoby oznamování chyb v jazyce i knihovnách - to je na popravčí četu.

Citace
To není pravda už od verze 5.5 (před 6 lety). Načtení, parsování a kompilování php skriptu proběhne jen při prvním požadavku na něj. Při každém dalším požadavku Zend Engine už jen provádí zkompilovaný opcode z opcache

Aspoň jedna pozitivní zpráva. Třeba to příště na druhý pokus dokáží kompilovat do souboru jako běžné programovací jazyky.

10
Server / MySQL: Znaková sada
« kdy: 08. 09. 2018, 09:23:37 »
Já bych se hlavně zeptal, v jaké znakové sadě tam text jede.

Protože to vypadá, že tazatel jaksi nepočítá s tím, že cpe v INSERTu text v nějaké znakové sadě, sloupc očekává také nějakou znakovou sadu.

Pokud třeba MySQL očekává UTF-8, tak samozřejmě poslání bajtu 0xA6 je chybou, protože to nemůže být první bajt žádného platného znaku.

11
Studium a uplatnění / Re:Rušní asm versus kompilátor
« kdy: 08. 09. 2018, 07:58:38 »
Citace
No jo, ale v embedded a mikrokontrolérech člověk spíš narazí na ten ARM než na x86/x64.

Na tom bude něco pravdy. :-)

Napsat optimalizovaný ARM kompilátor je práce pro vraha. ARM instrukční sada má tak obrovské množství omezení. Nedokáži si dost dobře představit kompilátor, který by zkoušel 1000 x rozličně překopat kód aby našel optimální. Ani si nedokáži dost dobře představit, jak to vůbec matematicky postavit.

Napsat optimalizovaný x86/x64 kompilátor je úloha mnohem snažší. Ty procesory jsou sice architektonicky složitější a je tam více znalostí, ale mnoho problémů tam odpadá.

V ARMu už jen poskládání konstant a jejich hodnot. Poskládání datových struktur a dat co nejblíže místu použití. Pak trefení správné alokace registrů. V ARMu je vůbec těžké navrhnout i nějakou univerzální volací konvenci, aby to plus mínus bylo efektivní ve všech případech.

12
Studium a uplatnění / Rušní asm versus kompilátor
« kdy: 08. 09. 2018, 00:17:03 »
Citace
Ha ha ha! Doporučuji občas nahlédnout do listingu. Ještě jsem nenarazil na případ, kdy bych to nenapsal lépe snad i poslepu! (GCC @ ARM M3, Keil @ ARM7TDMI).

Pro ARM není až tak těžké napsat kód lepší než vygeneruje kompilátor.

Pro x86/x64 už je to ale velký problém. Kompilátory generují tak dobrý kód, který bere v úvahu i vnitřní architekturu procesoru, celou pipeline, atd. - že jsou třeba obrovské znalosti k napsání lepšího kódu.

Výše uvedené platí platí pro optimalizaci na rychlost.

13
Vývoj / Re:Maji tabulkove databaze v dnesni dobe smysl?
« kdy: 07. 09. 2018, 23:16:01 »
...

14
Vývoj / Re:Maji tabulkove databaze v dnesni dobe smysl?
« kdy: 07. 09. 2018, 23:15:13 »
Citace
1) Zahynout ne. Jen jestli maji smysl. Preziva spousta jinych nesmyslu tak proc ne databaze.

Za SQL relační databáze s tabulkami není náhrada. Jsou velice potřebné a jejich funkcionalitu nikdo ani většinově nenahradil.

Citace
2) Myslel jsem tim nazor na schopnosti BFU pracovat s databazi. Pavel jako clovek co databazi programuje se asi setkava s jinou skupinou uzivatelu nez ja.

Já sám jsem při vývoji programů donutil spoustu lidí, ba i uklízeček, nadatlovat data do databáze. Stačilo jim ukázat otevřenou tabulku, do které to mají nasázet. Ohne problem.

15
Software / Blokování reklamních webů
« kdy: 07. 09. 2018, 23:10:24 »
Mám /etc/hosts plný reklamních domén. Problémy jsem nezaznamenal. Mám tam vše všetně Google a Facebook sledovaček.

Stran: [1] 2 3 ... 8