Mají tabulkové databáze v dnešní době smysl?

Objektové pojetí C/C++
« Odpověď #45 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é. :-)


Zapouzdření C++: Co dělám špatně?
« Odpověď #46 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é.


Radovan.

Re:Mají tabulkové databáze v dnešní době smysl?
« Odpověď #47 kdy: 08. 09. 2018, 18:05:43 »
A že nejlepší objekty jsou z pohledu těchto lidí ty, co jsou ještě ve snu a neexistují.
GNU Hurd?

bck

Re:Mají tabulkové databáze v dnešní době smysl?
« Odpověď #48 kdy: 08. 09. 2018, 18:11:15 »
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.

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ř:

'Tabulkové databáze vznikly mimo jiné proto, že jsou rychlé'

To je ta genialita některých vývojářů, že už dopředu vědí, že jejich výtvor bude rychlý. Já osobně si sice pamatuji, že relační databáze měly jeden veliký nedostatek - oproti tehdejším databázím byly pomalé. Nakonec i dnes je pan Stěhule živ z toho, že obchází firmy a zrychluje ty jejich aplikace. Samozřejmě by pan Stěhule udělal ty aplikace hned zpočátku rychlé - ale on nemůže bý u každého projektu - ledaže by si vzal k ruce pana Jirsáka.

'Důvod organizovat do tabulek je proto, že vám jako aplikaci, která využívá služby databázového stroje není absolutně nic do toho, kde jsou data uložena. Váš to nezajímá.'

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.

Ale musím přiznat, že i naše firma po 30 letech přešla na tabulkovou databázi. Protože ty ostatní vpodstatě vymřely.

Re:Mají tabulkové databáze v dnešní době smysl?
« Odpověď #49 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. :-(
« Poslední změna: 08. 09. 2018, 18:43:45 od Miloslav Ponkrác »


fortranista

Re:Zapouzdření C++: Co dělám špatně?
« Odpověď #50 kdy: 08. 09. 2018, 19:07:48 »
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?


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 .-)

Re:Zapouzdření C++: Co dělám špatně?
« Odpověď #51 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í.
};
« Poslední změna: 08. 09. 2018, 19:37:19 od Miloslav Ponkrác »

Kit

Re:Zapouzdření C++: Co dělám špatně?
« Odpověď #52 kdy: 08. 09. 2018, 19:47:54 »
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.

Taková čuňárna mi v PHP rozhodně nechybí. Vadí mi i když někdo použije traity.

Re:Mají tabulkové databáze v dnešní době smysl?
« Odpověď #53 kdy: 08. 09. 2018, 20:11:06 »
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.

Ten článek bych si rád přečetl - klidně mi jej můžete poslat privátně, jestli máte obavy o redakci roota. Mail na mne se válí na netu - nebo někde u piva můžeme podiskutovat a výhodách a nevýhodách RDBMS.

Je to technologie jako každá jiná, i když je hodně šikovně vymyšlená, tak to není stříbrná kulka, a jako u všeho, záleží jestli ji používá někdo, kdo je v obraze nebo není. Než jsem se dostal k vývoji Postgresu, a chca nechca přičichl k databázím víc a zevnitř, tak jsem databáze voral jako všichni ostatní. Nicméně, když člověk pochopí základy a souvislosti, tak pak to všechno začne dostávat smysl.

24.9. bude Postgres meetup - u piva můžeme dát řeč.

fortranista

Re:Zapouzdření C++: Co dělám špatně?
« Odpověď #54 kdy: 08. 09. 2018, 20:13:39 »
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í?

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;


jj takto jsem to myslel, dík

Re:Mají tabulkové databáze v dnešní době smysl?
« Odpověď #55 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.


BoneFlute

  • *****
  • 1 993
    • Zobrazit profil
Re:Mají tabulkové databáze v dnešní době smysl?
« Odpověď #56 kdy: 08. 09. 2018, 20:43:38 »
To je ta genialita některých vývojářů, že už dopředu vědí, že jejich výtvor bude rychlý. Já osobně si sice pamatuji, že relační databáze měly jeden veliký nedostatek - oproti tehdejším databázím byly pomalé. Nakonec i dnes je pan Stěhule živ z toho, že obchází firmy a zrychluje ty jejich aplikace. Samozřejmě by pan Stěhule udělal ty aplikace hned zpočátku rychlé - ale on nemůže bý u každého projektu - ledaže by si vzal k ruce pana Jirsáka.
Tak Pavla Stěhule bych se zastal, ten tomu aspoň rozumí a dá se s ním bavit.

Ten článek bych si rád přečetl - klidně mi jej můžete poslat privátně, jestli máte obavy o redakci roota. Mail na mne se válí na netu - nebo někde u piva můžeme podiskutovat a výhodách a nevýhodách RDBMS.
Nebyl by si sám.

24.9. bude Postgres meetup - u piva můžeme dát řeč.
Kde? Dáš link prosím?

Re:Zapouzdření C++: Co dělám špatně?
« Odpověď #57 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.


Kiwi

Re:Objektové pojetí C/C++
« Odpověď #59 kdy: 08. 09. 2018, 21:32:00 »
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í"?
No přece to smalltalkovské. :) Ostatně to byl A. Kay, kdo s termínem "objektově orientované programování" přišel, a jak sám říká, "C++ jsem tím opravdu nemyslel". No a u mě to souviselo s tím, že když jsem se v 90. letech seznamoval s "novinkou", jakou bylo OOP - konkrétně na C++, pořád mi nebylo zřejmé, k čemu to je celé vlastně dobré. Spíš mi připadalo, že je to celé jen zbytečná znepřehledňující komplikace. Ten wow-efekt se dostavil, až když mi bylo doporučeno mrknout se na Smalltalk - jednoduché, až primitivní, a přitom tak neuvěřitelně mocné. Většina C++ programů, které se mi dostaly pod ruce, byly ale opravdu jen funkce naházené do tříd.

Za mě OOP = dynamické typování + velmi pozdní vazba + zprávy. Takový Oberon není ani objektový jazyk ani objektový systém, ale přesto když se C++kař koukne na jeho zdrojáky, tak by si klidně mohl myslet, že objektový je. Ale přitom je to "jen" ukázka čistého strukturovaně-modulárního návrhu..