Diskuze - danyk.cz

Vlákno z kategorie: Hlavní diskuze
Celkem 10 odpovědí.


14.11.2017 (14:50:39) K # IP X
Igi obalka :
Chtel bych se zeptat, jestli byste nekdo doporucili nejlepe nejaky online zdroj, pripadne aspon rady jak spravne navrhnout SW architekturu pro neobjektove programovani, prikladem budiz programovani MCU v Cecku. Nasel jsem popis spousty architektur, ale vsechny bohuzel pro OOP.
14.11.2017 (18:56:21)  # IP X
RayeR (web) :
"SW architekturu"
neslo by nejak konkretneji (oh my crystal balls...) Jde o architekturu blikace LED nebo multitaskovy operacni system? Obecne akorat muzu rict ze je zvykem system delit na ruzne vrstvy podle abstrakce (od low-level driveru po aplikaci, ktrea pracuej s nakym api) a je rozumne to nejak rozumne strukturovat do vice modulu a nepsat prilis dlouhe funkce...
14.11.2017 (18:57:06)  # IP X
RayeR (web) :
A knizky na to zadny nemam, ucil/ucim sem se za pochodu...
14.11.2017 (21:56:56)  # IP X
Igi obalka :
No, neptám se na žádnou konkrétní aplikaci. No právě jak píšeš, o to rozdělení jde, jak to rozdělit na moduly, vrstvy apod. Prostě třeba u OOP pro psaní desktopových/webových aplikací je používána MVC architektura, komunikace mezi objekty třeba pomocí dependency injection... Ale téměř nic neexistuje(nebo jsem to nenašel) na neobjektové. Právě že mi jde o ty principy, pokud bych tu plácl nějakou konkrétní aplikaci, tak už v tom nebude to jak vybrat tu správnou architekturu, co budou dělat jednotlivé funkce, v jakých budou souborech, jestli budou v různých složkách... doufám, že chápeš jak to myslím. Jediná nevýhoda používání takovéhoto systémového vývoje je dle mě vyšší výpočetní a paměťová náročnost, což někdy např. u MCU může vadit. Tj. např. pokud bude spousta malých funkcích, tak jejich volání apod. ale nevím, možná to moderní kompilátory umějí optimalizovat např. že na daná místa v kódu vloží obsah celé funkce, něco jako v C++ inline funkce.
15.11.2017 (18:17:37)  # IP X
ms-boss obalka (web) :
Inline funkce zná i Cčko, Pascal a libovolný neidiotský jazyk.
Architektura je naprosto jednoduchá - akorát se vysereš na objekty, namespace atd.
15.11.2017 (18:23:52)  # IP X
Igi obalka :
Inline funkce že zná i C? Možná nějaký novější než standard C99 a nebo jsi myslel použití maker místo funkcí?
Že se vyseru na objekty a udělám to stejně jako u objektů bohužel nelze. Jak bys chtěl třeba udělat to dependcy injection?
Já nevím jak programujete vy, ale já když něco dělám, tak občas v průběhu práce předělávám funkce do jiných souboru, rozděluju funkce, nebo naopak slučuju. A to není dobré, zabírá to čas a ještě může vzniknout nějaká chyba. Nebo druhá cesta nechat to tak, ale pak to zas nemusí být přehledné. Proto by bylo dobré vědět už dopředu podle jakých pravidel a jak to rozdělit už na začátku. Když jsem dělal třeba v PHP, tak tam jsem se naučil právě to MVC a DI a i složitější aplikace dodržením těch zásad je fakt přehledná a i poměrně jednoduchá s jednoduchou možností úpravy v budoucnu.
16.11.2017 (10:49:45)  # IP X
Choze:
Co řešíš?
Odjakživa se takové věci dělí na fyzickou, ovladačovou a aplikační vrstvu.
Jestli chceš, tak si udělej těch vrstev kolik chceš.
Ale jednoznačně je to tak, že nějaká ucelená teorie je prostě jen teorie.
20 let programuju profesionálně (za peníze) a cca 30 celkem. Začínal jsem, jak jinak, basicem na ZX spectru v kroužku přidruženém Svazarmu - jinak to tehdy ani nešlo. Tam jsem se seznámil s několika borcy, co ty spectra i opravovali atd. Od nich jsem se naučil samozřejmě assembler a hacky životů ve hrách. Pak už to jelo. Assember a viry na prvních PC, Pascal, C, C++, nyní C#.
VŠ jsem dodělával až celkem nedávno a mohu zodpovědně říct, že po tolika letech praxe, to co nás tam učili, byly krásné teorie, ale s praxí to nemělo vůbec nic společného.

Předělávat funkce a přendavat budeš vždycky. V tom ti žádný akademický aparát nikdy nepomůže.**02
16.11.2017 (12:20:51)  # IP X
ms-boss obalka (web) :
Inline JE v C99. Nevím, kde jsi vzal, že není.

Jestli budeš používat píčoviny typu DI, tak zjistíš, že na MCU ti buď hodně rychle dojde paměť nebo budeš mít hroznou režii píčovin.
16.11.2017 (13:29:48)  # IP X
RayeR (web) :
Inline bylo uz ve starickem BorlandC. Ale dnes to neni nejak nutne prozivat, myslim ze GCC v ramci optimalizace udela kratke funkce inline samo...
16.11.2017 (13:41:31)  # IP X
RayeR (web) :
Jinak ta prehlednost a univerzalnost je na tobe, jak si to rozvrstvis. Idealne proste mit sadu nakych jasne definovanych funkci, kery delaj nakej interface a nemaj naky skryty zavislosti, minimalozovat informace v globalnich promennych. Takle obecne se mi to blbe vysvetluje. Kdyz sem treba psal diplomku-datalogger, tak tam sem mel treba vrstvy-samostane moduly: na nejnizsi urovni IDE driver, ktery primo pracoval s IO piny MCU a posilal ATA prikazy. Nad tim byl filesystem driver, ktery resil struktury MBR, DBR, FAT, alokace noveho clusteru, mazani FAT chainu atd. Nad tim byl dalsi modul, kde byly funkce pro praci se soubory podobne jako v libc (read/write...) a nakonec nad tim aplikace.
Diky tomuhle vrstveni sem si mohl napsat IDE modul specificky pro architekturu PC a vsechny vyssi vrstvy (tez diky kompatabilite GCC) jsem mohl kompilovat a poustet BEZE ZMENY na PC, coz se ladilo mnohem lepe a rychleji...
Ted nemam cas to nak rozepisovat, PDFko s DP mam u sebe na webu...
16.11.2017 (15:11:22)  # IP X
8-bit obalka (web) :
No tak samozřejmě objekty se dají používat i v neobjektovém jazyce, viz např. funkce typu fopen a fclose, popř. pokud máte rádi okýnka tak CreateFile a CloseHandle. Zkrátka při vytvoření objektu se zavolá funkce co mu alokuje paměť a vrátí buď pointer na strukturu se stavem objektu nebo handle (což je v zásadě jen číslo podle kterého funkce pozná se kterým objektem chceš pracovat). Pak máš dalších x funkcí co můžou s objektem něco dělat a nakonec funkce co objekt zlikviduje. Těm se pak předává buď ten pointer na strukturu nebo handle jako argument.
Přezdívka:
Heslo:
Text: