Diskuze: čtení stringu po slovech
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 50 zpráv z 82.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Přestal jsem číst po goto, goto se nepoužívá. Zajímalo by mě, kam na to chodíte.
Goto me napadlo jako dobre reseni na tohle ale porad nevim ni tak proc mi to nejde
Kam na to "goto" chodí? Přece do referenčního manuálu
http://msdn.microsoft.com/…s.71%29.aspx
Takové stránky by měly být zakázány zákonem. Připadá mi to jako
pornografie.
Goto je dobry na zprehledneni kodu, nevidim duvod proc ho nepouzivat, kdyz stejne kompilator ty goto tam dava(osobne ho ale nepouzivam, da se tomu vyhnout slovy break, return anebo continue). Goto je podobny nepodminenemu skoku v ASM.
Goto se prostě nepoužívá. Pokud chceš pustit "kus kódu" znovu, dej to do metody nebo do cyklu. Přečti si zdejší tutoriály. Kdo použiívá goto zaslouží si jít do pekel
Jakže? Goto že je dobré na zprasení kódu?
Je mi jasné, že kompilátor z každého programu udělá posloupnost strojových instrukcí, včetně instrukce JMP, ale trend moderního programování je odstranit z programů nejen goto, ale i ify, cykly, switche apod. Je je kompilátor udělá do binárního kódu, není už záležitostí programátora.
Podle mého názoru je goto na ho*no. A za tím stojím.
Nepotřebuješ tejden přemýšlet, jak udělat nekonečný cyklus. Není to tak složité.
for(;;) {
// tělo cyklu, ze kterého můžeš vyskočit příkazem break
// nebo zopakovat pomocí continue.
}
Jenže žádný cyklus není nekonečný. Je potřeba, aby ses zamyslel, co vlastně chceš udělat. Určitě nechceš nekonečný cyklus.
Vim co potrebuju... kazde slovo ktere se zada v textboxu 1 jednotlive vypsalo
pres cyklus nebo vice cyklusu v text boxu 2 ( konkretne mam udelat presne (8.
Program rozdělí slova se sudým počtem hlásek na poloviny a slova s lichým
počtem hlásek podobně, ale vypustí prostřední hlásku.
např: Kde se vzala, tu se vzala, byla tam. -> Kesevzla, tusevzla, by
latm.)
Přečti si základní kontrukce C#, máme tu seriál. S ním to v pohodě vymyslíš. Zamysli se, vem si klidně tužku a papír a nakresli si co potřebuješ...
"trend moderního programování je odstranit z programů nejen goto, ale i ify, cykly, switche apod."
Muzes uvest nejaky zdroj nebo kde se to tvrdi? Jeste jsem nikde jinde takovyto nazor nepotkal.
Goto muze za jistych okolnosti kod zprehlednit a zrychlit, ale souhlasim s tim, ze drtiva vetsina programatoru zacatecniku ho pouziva nevhodne a kod se tim jen zneprehledni.
Sam jsem vhodnou situaci pro goto za 10 let co programuji potkal jen asi 2x.
Zkus se podívat třeba do manuálu Haskellu.
Používáš snad něco z těch řídicích struktur např. v Excelu? Jedině pokud píšeš makra, ale v buňce to ani nejde.
Řídicí struktury například brání v přirozené paralelizaci programů, tedy rozdělení úlohy na více procesorů, aniž by to musel řešit programátor.
BTW: Ty dva případy beztak byly jen kvůli tomu, že se ti to nechtělo
předělávat
Proč bych se měl dívat do manuálu nějakého obskurního jazyka?
Dívám se jen do manuálů jazyků v kterých programuji nebo do obecných
textů.
Excel prakticky nepoužívám.
Excel sice také moc nepoužívám, ale několik šikovných aplikací jsem v něm už napsal. Pokud nepoužíváš žádné Office, máš mé sympatie.
Haskell není obskurní, ale funkcionální programovací jazyk. SQL a XSL jsou podle tebe také obskurní?
šloby to také takhle
while (true)
{
/*příkaz*/
}
Tohle by mělo fungovat aspoň já to používám
však v ukázkách na VB.NET toto používám. Já tam z cyklu nevycházím, prostě ať je to nekonečné.
mohl bych se jěště zeptat proč je tam to
true
a co to znamená ?
true je pravda
ten cykl while funguje následovně pokud v těch závrokách podmínka dá pravdu, tak se ten kód provede a pak se řeší znova ta podmínka a znova, jestliže pořád platí a nikdy platiti nepřestane program se ti zacyklí, ale jak si z té mé ukázky mohl vidět tak to není jenom na škodu, ale lze toho i využít.
To bys neměl. Každý cyklus někdy skončí a proto by to měl mít v podmínce. Cyklus je takto navržený. Že něco jde neznamená, že se to má používat. Je opravdu začátečnické dělat nekonečné cykly a ty násilně přerušovat breakem, není k tomu důvod a je to nepřehledné.
Duvod k tomu byt muze, treba cyklus, kde nevis predem pocet opakovani a kde muze byt vice duvodu k vyskoceni z toho cyklu.
Tak si uděláš proměnnou typu boolean, dáš tu do podmínky cyklu a tu modifikuješ. Ale v dobře navrženém programu se většinou tohle nestane.
"...kde muze byt vice duvodu k vyskoceni z toho cyklu."
Kdyz nechces provadet zbytek cyklu, tak je jednodussi rovnou vyskocit nez to resit pres tu promennou a pak uvnitr cyklu (za tim prehozenim te bool promenne) osetrovat, jestli ta promenna neni uz nastavena na vyskoceni, tak neprovadet.
On je ten důvod většinou právě jeden Teoreticky je co říkáš pravda,
prakticky je to pouze o návrhu a vždy to jde napsat tak, abys nekonečný
cyklus nepotřeboval. Je to zbytečná a nepřehledná konstrukce.
Většinou nepotřebuješ ani tu proměnnou. Takové nekonečné smyčky bývají často jen obcházením tovární metody. Kdybys programoval čistě, nikdy nekonečnou smyčku potřebovat nebudeš.
Teď teda netuším, jak spolu souvisí tovární metoda a nekonečný cyklus.
Čistě programuji už teď a nekonečnou smyčku občas využívám .
Takže já jako assemblerista nejsem programátor? Jak si představuješ program bez zacyklení, nebo větvení? Nechápu, proč programovat čistě, když mi to kompiler zprasí? Jako tady dole jsou jedině cykly a podmíněné cykly... Jediné, k čemu je dobrý vyšší jazyk - nemusím psát jednu napsanou nižší funkci vícekrát... (byť i v pozměněných podobách) Je fajn, že se vyšší jazyky dopracovali až tak daleko, že se dá programovat naprosto abstraktně - jenže se zvyšuje úroveň jen těch vyšších jazyků... To má za následek jen to, že programují naprostí neznalci - což přináší jen zahlcení nekvalitním materiálem... Plácá se místem, plácá se vším... Když se podívám na DOS - stačí málo a můžu si tam prohlížet internet přes WiFi, přehrávat videa atd. Dokonce jsem si napsal multitasking atd. a pořád se pohybuji v řádech MB - nějakých 60 - 70MB. Tak mi vysvětli - proč bych měl plácat prostředky, abych ztratil všechny znalosti o PC? Jak jsem psal - dokud je vyšší jazyk jen pro spravování nižších funkcí, je to fajn - ulehčí to práci a nijak zvlášť to nezhorší kvalitu programu. Ale když se pak někdo nabifluje syntax jazyka virtuálního stroje a myslí si, jak se tím bude živit, programovat operační systémy atd... Nevidím důvod, nač zušlechťovat vyšší jazyky - místo toho bych si pohrál s BIOSem - dal mu vyšší moc... (pro přerušení) Programátor by měl vědět, proč to všechno dělá a jak to funguje. Jinak mu neříkám programátor, ale biflovač někým řečených pravidel a syntaxe... Programátor je pro mě člověk, co ví jak to funguje... Kóderu stránek se již také říká programátor - přesně tímto směrem to tedy spěje... (Označení programátor nese dnes i ten, kdo se nenaučí ani ta pravidla - ale sotva syntax.) Zajímalo by mě, k čemu je psát program abstraktně - či prostě ve slovech...
Vytvořil jsem si vyšší jazyk tak, že jsem napsal OS v OOP v assembly jazyce a tím tedy vytvořil velký assembly Framework - samotný OS je ve skutečnosti pouze jeden malý (oproti tomu Frameworku) soubor, co objektově přistupuje k zmíněnému Frameworku. Pak tedy vyšší jazyk, na kterém pracuji pouze převede spravování Frameworku do slov - takže ano slova jsou fajn, ale pořád se vztahují přímo k danému kódu... A pokud na mne někdo vyjede s chráněným režimem a optimalizací funkcí, vysměji se mu do ksichtu - to vše mám v ono Frameworku... (Tedy na úrovni JSA.) Takže i ovládání všech zařízení PC a tím tedy ovládám vyšší funkce a výsledek se ani omylem nepodobá DOSu, ale zdárně se dorovnává operačním systémům napsaných ve vyšších jazycích. Právě proto se ptám, proč bych měl opustit všechny nabité znalosti a zkušenosti a vložit je do nějakých abstraktních slov...
"Nechápu, proč programovat čistě, když mi to kompiler zprasí?" - Protože co vyleze z kompileru programátor nečtě, ale ten čistý kód na vstupu ano. Lowlevel programátoři mají s pochopením programování ve vyšších jazycích často problém.
Jakýkoli programátor má problém pochopit jiného programátora.
Proto je ze zásady špatná otázka "Co je špatně v mém kódu?".
Je třeba se zeptat "Jak bys to udělal ty?", pozorně to přečíst
a pak si to udělat po svém.
Ale já to chápu - kdysi jsem začínal na virtuálním stroji. Já se
ptám, proč vytvářet něco pěkného na povrchu? Kdyby se místo toho
zkrášlovalo odspoda, tak by se zlepšila kvalita funkčnosti PC... Ale když
jak jsem psal, někdo přijde k PC a naučí se syntax, jak bude chápat
správné používání, funkčnost atd? Takové obyčejné
echo/print/Console.Write - kolik lidí tyto funkce používá a kolik z nich
ví, co je TTY? Atd. Jak tedy
může někdo programovat bez znalostí o PC? To je to co nechápu... Jasně -
program vytvoří a on poběží, ale spousta aplikací poskytuje možnost
vytvořit něco, co by jinak bylo nad rámec uživatele... Jako třeba klikací
tvorba stránek... Ale těm kteří to naklikají také neříkáme
programátoři - jen klikači... Tak ten kdo se naučí syntax je pro mne
prostě kóder...
Sice nemám tolik zkušeností jako ty ale zeptám se na jednu věc.. přijdeš do firmy budou chtít dejme tomu program který ti bude zpracovávat zaměstnance, jejich platy, evidovat pracovní dobu, životopisy, celé to bude online, komunikace apod ... budeš to celé psát low-level a ztrávíš nad tím bůh ví jak dlouho nebo šáhneš po vyšším jazyku, jazyku který je i udělán pro tyto potřeby (sekretářka nebude dělat v DOSu), tedy například klasické Windows Forms.
V ASM nevím na jak dlohuo to je ale například v C# , Javě či C++ apod to je mnohem rychlejší, přehlednějí, rozšiřitielnější a pro ostatní v týmu i čitelnější ..
Proto, aby jsi se v tom vyznal. Např. devbook má desetitisíce řádků kódu, kdybych ho nepsal přehledně, tak by se do této podoby nikdy nedostal. Kdybych ho psal v ASM, vyvíjel bych ho 10x tak dlouho a měl by statisíce řádků.
C je TTY nikoho nezajímá, to je jako bych tě osočoval že děláš v ASM a přitom to neumíš sestavit pomocí číslicové logiky a hradel. Jsou ještě vyšší jazyky než c#, např. SQL. Vývoj jde tímhle směrem, abychom nevynalézali kolo a mohli tvořit stále složitější a větší aplikace v nižším čase.
Jak funguje vyšší jazyk? Musí mít co spravovat - zásobu funkcí nižšího jazyka. Jediné co by bylo jinak - já bych si své funkce musel donést na USB, či je tam prostě nějak dostat... Takže ano - psal bych v assembly - pěkně objektově... (OOP jsem si odnesl z virtuálního stroje a nějak mi zůstalo.)
To je důvod pro vznik knihoven, Frameworků atd. Ne vysvětlení, proč psát abstraktně...
Není, i když budeš mít milion knihoven, tak nebude na 100% pasovat na
tvůj usecase a nízký jazyk tě bude zdržovat. Navíc to bude nepřehledné,
chtěl bych tě vidět, jak programuješ ERPčko se stovkami entit v ASM
V kancelářské aplikace je úplně jedno jestli request trvá 10ms nebo
100ms. Ne každý si programuje OS, 99,9% lidí dělá běžné programy. Ale ze
zkušeností z podobných debat to stejně neuznáš, tak si můžeš myslet,
že celý svět programuje špatně
Proč psát nepřehledně když můžeme psát přehledně tak abychom třeba v týmu tomu rozuměli a i já , když si to napíšu pěkně a přehledně můžu se v pohodě vrátit za půl roku a vím o co go. Kdybych měl najednou před sebou kód jak špagety ve školní jídelně vezmu HDD, najdu benzín, nakoupím špekáčky a udělám si táboráček.... prostě abstrakce zpřehledňuje kód a urychluje práci.
BTW vývoj jde dopředu, holt už se nejede ASM a low-level jazyky. A konstantovat že program udrží 70 mb paměti nikoho nezajímá. Technologie jdou dopředu a nějakých 70 MB je nic. Samozřejmě nebudeme prasata a nenapíšem program tak aby žral kompletně paměť, CPU vařilo vodu a větrák ohříval vzduch
Seznam funkcí bude vždy řešit problém psaní již napsaného. A samotnou aplikaci pak tedy budu psát s přerušováním. Naopak to mi přijde výhodnější - menší aplikaci udělám rychleji, lépe atd. Při vyšší si zase přidělám další objekty... I tak (když vezmu čas, který ušetřím při psaní další aplikace, co tyto objekty využije) to bude pomalejší, ale to tu neřeším... Ptám se, když něco udělám za delší čas, věnuji tomu vše co umím, nebude to lepší než desetitisíce aplikací napsaných za jeden den?
Kdyby bylo, tak by se to tak dělalo. Evidentně je vývoj v nízkých jazycích tak neefektivní, že ho žádná firma již nepraktikuje. A firmy si moc dobře hlídají co se vyplatí a co ne.
To už je otázka číslo dvě .. hobby nebo práce ? Myslím že už nikdo kromě pár
vyvolených nehledá někoho kdo dělá něco X let ale někoho kdo aplikaci
udělá moderně, rychle a pěkně a samozřejmě funkčně. Navíc taot práce
není nijak špatně placená.... zatím jsem student, nemůžu tohle
objektivně posoudit, ale myslím že to tak je
A desetitisíce aplikací ? Ne, já třeba dělám přes dva týdny takový
menší engine na hry ...
zaítm co já za den vytvořím manažer obrazovek a logiku pro kolize ty budeš
mít vytvořený možná tak vykreslování ... o tohle tu jde
Prasekód ještě neznačí nečitelnost. Netvrdím tedy, ať píšeme
nečitelně. Jak vidno prasárna za cvíli bude i cyklus - přesto aplikace s
cyklem nemusí být nutně nečitelná... Myslel jsem to tedy ve smyslu
složení funkcí - ne ve smyslu samotné syntaxe atp. (Návrhem špatná
aplikace.) Assembly/strojový kód nikdy nikdo nepřekoná - neboť se k ní
stejně musí vracet - jen si prodlužují cestu...
Dobře napiš prosím jak vypadá v ASM tento cyklus, vypíše hodnoty od 1
do 10 a jak vypadá třeba v C# ?
K ASM se právě už nikdo nevrací, jen vývojáři programovacích jazyků. I operační systémy jsou v céčku, který je podle tvého pohledu vysoké, podle mého zas velmi nízký.
Zobrazeno 50 zpráv z 82.