Avatar
arevyhs
Člen
Avatar
arevyhs:

Ahoj, chtěl bych se zeptat jesli tu nekdo neuvidi chybu proc mi tento program neprojede znovu pres goto a nevypisuje se mi druhe slovo...

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace neco
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            int mezera1 = 0;
            int mezera2 = 0;
            start:
            for (int i = mezera1; i < textBox1.Text.Length; i++)
            {
                if ((textBox1.Text[i] == Convert.ToChar(" ")))
                {
                    mezera1 = i;
                    break;
                }
            }
            if (mezera2 > 0)
                mezera2 = mezera2 + 1;

            for (int i = (mezera2); i < textBox1.Text.Length; i++)
            {
                    mezera2 = i;
                    textBox2.Text += textBox1.Text[i];
            }

            goto start;
            /*
            int cislo = 0;
            int pocet = 0;
            int pomoc = 0;
            int y = 0;
            pocet = Convert.ToInt32(textBox1.Text.Length);

            if (pocet % 2 == 0)
            {
                for (int i = 0; i < textBox1.Text.Length; i++)
                {
                    textBox2.Text += textBox1.Text[i] + " ";
                }
            }

            if (pocet % 2 != 0)
            {
            zpet:
                pomoc = cislo;
                for (int i = pomoc; i < (textBox1.Text.Length); i++)
                {

                    if (textBox1.Text[i] == Convert.ToChar(" "))
                    {


                        for (y = cislo; y < (i); y++)
                        {

                            if (y == (i / 2))
                            {
                                textBox2.Text += "";
                            }

                            else
                            {
                                textBox2.Text += textBox1.Text[y] + " ";
                            }
                            if ((y == (i - 1) && (y != (textBox1.Text.Length - 1))))
                            {
                                cislo = i + 1;
                                goto zpet;
                            }


                        }
                    }
             */

                }
            }
        }
 
Odpovědět 10.6.2013 12:28
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na arevyhs
David Čápka:

Přestal jsem číst po goto, goto se nepoužívá. Zajímalo by mě, kam na to chodíte.

Nahoru Odpovědět 10.6.2013 12:30
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
arevyhs
Člen
Avatar
Odpovídá na David Čápka
arevyhs:

Goto me napadlo jako dobre reseni na tohle ale porad nevim ni tak proc mi to nejde

 
Nahoru Odpovědět 10.6.2013 12:32
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na arevyhs
David Čápka:

Tak na něj zase zapomeň :)

Nahoru Odpovědět 10.6.2013 12:34
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na arevyhs
Kit:

K čemu je dobré goto? Ještě jsem ho nikdy nepotřeboval.

Nahoru Odpovědět 10.6.2013 12:36
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

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.

Nahoru Odpovědět 10.6.2013 12:40
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
arevyhs
Člen
Avatar
arevyhs:

Mohl by si mi porsim poslat navrch jak by to bylo mozne bez toho? opravdu si nevim rady skousim to uz tejden a to podtim je dalsi moznost co sem delal pred timhle je to zbytecne slozity

 
Nahoru Odpovědět 10.6.2013 12:41
Avatar
Homo
Člen
Avatar
Odpovídá na Kit
Homo:

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.

Nahoru Odpovědět 10.6.2013 12:41
1010011 1000101 1011000
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na arevyhs
Petr Nymsa:

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

Nahoru Odpovědět 10.6.2013 12:44
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Kit
Redaktor
Avatar
Odpovídá na Homo
Kit:

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.

Nahoru Odpovědět 10.6.2013 12:48
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
arevyhs
Člen
Avatar
arevyhs:

Tak mi prosim nekdo poradte jak jinak na to ja uz opravdu stracim viru :(

 
Nahoru Odpovědět 10.6.2013 12:49
Avatar
Kit
Redaktor
Avatar
Odpovídá na arevyhs
Kit:

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.

Nahoru Odpovědět 10.6.2013 12:52
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
arevyhs
Člen
Avatar
arevyhs:

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

 
Nahoru Odpovědět 10.6.2013 12:58
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na arevyhs
Petr Nymsa:

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

Nahoru Odpovědět 10.6.2013 12:59
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Odpovídá na Kit
Luboš Běhounek (Satik):

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

Nahoru Odpovědět 10.6.2013 13:00
:)
Avatar
Kit
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
Kit:

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

Editováno 10.6.2013 13:11
Nahoru Odpovědět 10.6.2013 13:08
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Luboš Běhounek (Satik):

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.

Nahoru Odpovědět 10.6.2013 13:50
:)
Avatar
Kit
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
Kit:

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í?

Nahoru Odpovědět 10.6.2013 13:58
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
KlimiCZ
Člen
Avatar
Odpovídá na Kit
KlimiCZ:

šloby to také takhle

while (true)
{
     /*příkaz*/
}

Tohle by mělo fungovat aspoň já to používám :)

Nahoru Odpovědět 10.6.2013 19:08
Nesnaž se zakrýt něco, co jsi provedl úmyslně. Svět je tak malý, že dotyčný se to stejně dozví.
Avatar
Kit
Redaktor
Avatar
Odpovídá na KlimiCZ
Kit:

To je to samé. A také v daném případě stejně nesmyslné.

Nahoru Odpovědět 10.6.2013 19:17
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na KlimiCZ
Michal Žůrek (misaz):

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

http://www.itnetwork.cz/…nik-jednotek

Nahoru Odpovědět  +1 10.6.2013 19:28
Nesnáším {}, proto se jim vyhýbám.
Avatar
KlimiCZ
Člen
Avatar
Odpovídá na Kit
KlimiCZ:

mohl bych se jěště zeptat proč je tam to

true

a co to znamená ?

Nahoru Odpovědět 10.6.2013 19:29
Nesnaž se zakrýt něco, co jsi provedl úmyslně. Svět je tak malý, že dotyčný se to stejně dozví.
Avatar
Odpovídá na KlimiCZ
Michal Žůrek (misaz):

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.

Nahoru Odpovědět  +1 10.6.2013 19:33
Nesnáším {}, proto se jim vyhýbám.
Avatar
KlimiCZ
Člen
Avatar
Odpovídá na Michal Žůrek (misaz)
KlimiCZ:

také to používám ve svých výtvorech :)

Nahoru Odpovědět 10.6.2013 19:40
Nesnaž se zakrýt něco, co jsi provedl úmyslně. Svět je tak malý, že dotyčný se to stejně dozví.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Michal Žůrek (misaz)
Kit:
for(;;) {
   echo "Je to na škodu.";
}
Nahoru Odpovědět 10.6.2013 19:45
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na KlimiCZ
David Čápka:

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

Nahoru Odpovědět  +1 10.6.2013 19:57
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Odpovídá na David Čápka
Luboš Běhounek (Satik):

Duvod k tomu byt muze, treba cyklus, kde nevis predem pocet opakovani a kde muze byt vice duvodu k vyskoceni z toho cyklu.

Nahoru Odpovědět 10.6.2013 20:33
:)
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Luboš Běhounek (Satik)
David Čápka:

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.

Nahoru Odpovědět 10.6.2013 20:36
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Odpovídá na David Čápka
Luboš Běhounek (Satik):

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

Nahoru Odpovědět 10.6.2013 20:39
:)
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Luboš Běhounek (Satik)
David Čápka:

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.

Nahoru Odpovědět 10.6.2013 20:46
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Dumdych
Neregistrovaný
Avatar
Dumdych:

Co je to za humus? Slovo po slově? Split?

foreach(string word in source.Split(' '))
 
Nahoru Odpovědět 11.6.2013 17:20
Avatar
Kit
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
Kit:

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

Nahoru Odpovědět 11.6.2013 17:26
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Luboš Běhounek (Satik):

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

Nahoru Odpovědět 11.6.2013 17:31
:)
Avatar
Dumdych
Neregistrovaný
Avatar
Odpovídá na Kit
Dumdych:

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

 
Nahoru Odpovědět 11.6.2013 17:56
Avatar
Dumdych
Neregistrovaný
Avatar
Dumdych:

nabité = nabyté

Už jen z logiky - vše bude jednou strojový kód - proto v něm vše musí jít...

 
Nahoru Odpovědět 11.6.2013 18:03
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Dumdych
David Čápka:

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

Nahoru Odpovědět 11.6.2013 18:06
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
TomBen
Redaktor
Avatar
Odpovídá na David Čápka
TomBen:

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

Nahoru Odpovědět  +1 11.6.2013 18:10
Za posledních 200 miliónů let se nic zvláštního nestalo, akorát dinosauři vymřeli a opice se naučily programovat.
Avatar
Dumdych
Neregistrovaný
Avatar
Odpovídá na David Čápka
Dumdych:

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/Con­sole.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...

 
Nahoru Odpovědět 11.6.2013 18:14
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Dumdych
Petr Nymsa:

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ší ..

Editováno 11.6.2013 18:16
Nahoru Odpovědět 11.6.2013 18:14
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Dumdych
David Čápka:

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.

Nahoru Odpovědět  +1 11.6.2013 18:19
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Dumdych
Neregistrovaný
Avatar
Odpovídá na Petr Nymsa
Dumdych:

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

 
Nahoru Odpovědět 11.6.2013 18:20
Avatar
Dumdych
Neregistrovaný
Avatar
Odpovídá na David Čápka
Dumdych:

To je důvod pro vznik knihoven, Frameworků atd. Ne vysvětlení, proč psát abstraktně...

 
Nahoru Odpovědět 11.6.2013 18:21
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Dumdych
David Čápka:

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

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ě :)

Nahoru Odpovědět 11.6.2013 18:24
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Dumdych
Petr Nymsa:

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

Nahoru Odpovědět 11.6.2013 18:28
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Dumdych
Neregistrovaný
Avatar
Odpovídá na David Čápka
Dumdych:

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?

 
Nahoru Odpovědět 11.6.2013 18:31
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Dumdych
David Čápka:

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.

Nahoru Odpovědět 11.6.2013 18:33
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Dumdych
Petr Nymsa:

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

Nahoru Odpovědět 11.6.2013 18:34
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Dumdych
Neregistrovaný
Avatar
Odpovídá na Petr Nymsa
Dumdych:

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

 
Nahoru Odpovědět 11.6.2013 18:34
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Dumdych
Petr Nymsa:

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# ? :)

Nahoru Odpovědět 11.6.2013 18:37
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Dumdych
David Čápka:

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

Nahoru Odpovědět 11.6.2013 18:38
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Dumdych
Neregistrovaný
Avatar
Dumdych:

S mým Frameworkem:

mov ax, 1
mov bx, 10
mov si, Console.Write
call System.Loop
 
Nahoru Odpovědět 11.6.2013 18:39
Avatar
Dumdych
Neregistrovaný
Avatar
Odpovídá na Petr Nymsa
Dumdych:
for(int num = 1; num < 11; num++)
    Console.WriteLine(num);
 
Nahoru Odpovědět 11.6.2013 18:41
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Dumdych
David Čápka:

A správně:

Uzivatele.Find(u => u.Jmeno == "Karel");

Kouknu a vidím. Napiš mi tohle v ASM.

Nahoru Odpovědět 11.6.2013 18:43
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Dumdych
Petr Nymsa:

Tak paráda, možná s tvým frameworkem to je mírně přehlednější ale stejně je to hůře čitelné... tohle asi nemá cenu, vždycky když je diskuze o low a high, každý si brání svoje... já a asi 90% dalších prostě už nevidí v ASM smysl.

Ano kompilátor to stejěn převede do strojové podoby ale to už nás nemusí zajímat. Chápu že nadáváš na lidi co absolutně nic netuší a prohlašují se za programátory. Určitě je dobrý vědět jak to funguje pod pokličkou ale dělat v tom ? o_O V dnešní době se hraje o čas, takže raději šáhnu po něčem s čím si práci urychlím, je to moderní, přehledné atd atd (však už jsme to říkali).

A u firem, i kdyby jsi měl super ultra znalosti ASM stejěn vezmou člověka co umí dobře třeba C# + ASP.NET, SQL nebo Javu apod

Nahoru Odpovědět 11.6.2013 18:46
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Dumdych
Neregistrovaný
Avatar
Dumdych:
mov si, uzivatele
mov ax, searchItem
call System.Array.IndexOf ; out ax

searchItem db 'Karel'
 
Nahoru Odpovědět 11.6.2013 18:47
Avatar
Dumdych
Neregistrovaný
Avatar
Dumdych:

Blbost - ax je výstup - vstup je di:

mov si, uzivatele
mov di, searchItem
call System.Array.IndexOf ; out ax

searchItem db 'Karel'
 
Nahoru Odpovědět 11.6.2013 18:49
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Dumdych
David Čápka:

Nejsem si jistý, jestli hledáš v poli stringů nebo objektů. Každopádně si ty zápisy porovnej a představ si, že je to v metodě, kde se podobná logika řeší pro desítky různých entit.

Nahoru Odpovědět  +1 11.6.2013 18:50
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Dumdych
Petr Nymsa:

Takže jsi prostě strávil X hodin nad vytvořením vlastnního frameworku :) Netvrdím že to je špatně, je to dobrý, naučí to spousta ale prostě tvrdit že je lepší dělat v ASM než moderně je blbost..

Nahoru Odpovědět 11.6.2013 18:50
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Dumdych
David Čápka:

No a už tam máš dokonce chybu :D Tu já bych neudělal.

Nahoru Odpovědět 11.6.2013 18:50
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Dumdych
Neregistrovaný
Avatar
Odpovídá na Petr Nymsa
Dumdych:

Já původně chtěl jen OS... Pak jsem zjistil, že se dá celkem snadno aplikovat OOP. (Skutečně se mi podařilo odříznout každý objekt.) Ke každé třídě mám seznam skoků - kterými určím adresy k jednotlivým funkcím. Netrvalo dlouho a vyrval jsem dokonce srdce OS - kernel. Je to ale jeden z nečistých objektů - na jiný OS bych ho musel upravit. Ovšem není divu - když je to sám o sobě OS... :) Tedy v BootSectoru přerušuji na paměť v NTFS pro kernel.

Aby mi to vůbec fungovalo, musel jsem sepsat několik map se vstupy a výstupy jednotlivých funkcí. Takže ano - je to kolikrát na hlavu... Ale bez IDE také nebudete znát vstupy a výstupy... :) (Já si IDE udělal - takže s těmi mapami pracuje...) Samozřejmě v tomhle se mohu jít zahrabat...

 
Nahoru Odpovědět 11.6.2013 18:58
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Dumdych
Petr Nymsa:

Ne, chceš nám dokázat jak moc jsi dobrý a já to respektuju a uznávám, ale prostě v dnešní době je blbost dělat v ASM když tne samý program můžu udělat 3x rychleji

Nahoru Odpovědět 11.6.2013 19:16
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Luboš Běhounek (Satik):

3x rychleji je to napsáno, ale program běží 10x pomaleji a sežere 10x více paměti :)

Nahoru Odpovědět 11.6.2013 19:23
:)
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Luboš Běhounek (Satik)
David Čápka:

Jak již tu bylo milionkrát řečeno, pokud to není OS nebo engine, tak na čase absolutně nezáleží.

Nahoru Odpovědět 11.6.2013 19:24
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
Petr Nymsa:

Když se bude chtít dosáhnout větší rychlosti šáhne se třeba po C++ ne ? V dnešní době pro většinu běžných aplikací nebudu řešit jestli se mi to zpracovává 5ms nebo 10ms

Nahoru Odpovědět 11.6.2013 19:24
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Dumdych
Neregistrovaný
Avatar
Odpovídá na Luboš Běhounek (Satik)
Dumdych:

Napsáno v čem? Jestli myslíš strojový kód/assembly, tak jak jsem napsal - spravovat vyšší funkce lze - stačí používat vyšší registry a sys soubory... Takže pokud myslíš strojový kód/assembly, jsi vedle...

 
Nahoru Odpovědět 11.6.2013 19:27
Avatar
Dumdych
Neregistrovaný
Avatar
Dumdych:

Já hlavně nechápu co víc chcete vytvářet... :) Mě stačí internet, textový editor a správa multimédií... Možná by někdo mohl vymyslet PC mimo 0 a 1... :)

 
Nahoru Odpovědět 11.6.2013 19:31
Avatar
Odpovídá na David Čápka
Luboš Běhounek (Satik):

"...pokud to není OS nebo engine, tak na čase absolutně nezáleží"
Za tenhle názor bych dával pěstí, pak nemaj bejt programátoři prasata :)
Na čase záleží vždy, pokud je to nějaká dlouhotrvající nebo opakující se akce.
Zákazníkovi/u­živateli je fuk, jestli je kód hezký a splňuje všechny normy, jde mu o rychlost programu a odezvu, vnitřek ho nezajímá.

Dumdych: Vývoj v assembly je pomalejší než třeba v C# (neříkám, že zrovna 3x, to byla jen narážka na Zirka), ale výsledný program (byl-li napsán v asm) je rychlejší a má menší nároky na paměť.

Nahoru Odpovědět  +2 11.6.2013 19:41
:)
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Luboš Běhounek (Satik)
David Čápka:

Ne, nezáleží na něm vůbec a dobří programátoři svůj kód ani neoptimalizují. Jelikož používají kvalitní struktury a nástroje co daný jazyk poskytuje, není k tomu žádný důvod. Nenapadá mě kde bych mohl v C# řešit něco jako dobu běhu programu, to patří tak možná do céčka, kde si někdo patlá na koleni quicksort.

Nahoru Odpovědět 11.6.2013 19:54
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Dumdych
Neregistrovaný
Avatar
Odpovídá na Luboš Běhounek (Satik)
Dumdych:

Však - to snad vím... :) Jen jsem zauvažoval zda nemáš na mysli spravování vyšších funkcí. Bez optimalizace by to tak nebylo. Viz. DOS. Už jen grafické shelly pro DOS - tam je krásně vydět echo způsobené zpožďováním, dále nízká grafika a vůbec celkově celý OS působí rozbitě... Proto jak jsem psal - chráněný režim a vyšší funkce obecně lze v assembly/strojovém kódu používat - a tím tedy pekelně optimalizovat... Takže lze využívat i moderní rozměry HDD...

 
Nahoru Odpovědět 11.6.2013 19:55
Avatar
Dumdych
Neregistrovaný
Avatar
Dumdych:

vydět se asi moc nedá - takže vidět... (Vyjímaje Chucka Norrise.)

 
Nahoru Odpovědět 11.6.2013 19:56
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na David Čápka
Petr Nymsa:

Tak to zase nesouhlasím :). Někdy je rychlost důležitá a občas je třeba nutné (te´d to vezmu řpímo příklad z WinRT pro Win8) udělat aplikaci tak aby nevyapadla že něco dělá, berte to tak že dělá složitý výpočet a uživateli nesmí zamrznout, musí vidět efekt přejetí tlačítka apod.

Nahoru Odpovědět 11.6.2013 20:07
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Petr Nymsa
David Čápka:

Ano, ale to řešíš až v případě, když je to pomalé.

Nahoru Odpovědět 11.6.2013 20:09
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Odpovídá na David Čápka
Luboš Běhounek (Satik):

Tebe by neštval třeba program, ve kterém při každé běžné akci, kterou denně provedeš třeba 100x, musíš třeba 20 vteřin čekat, když bys věděl, že se ta funkce dala napsat tak, aby trvala třeba jen vteřinu a jen se to programátorovi nechtělo optimalizovat?

Nahoru Odpovědět 11.6.2013 20:18
:)
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Luboš Běhounek (Satik)
David Čápka:

Můžeš mi dát nějaký reálný příklad takového problému? Jinak řešíme běžné úkony programů, na těch časově opravdu nezáleží. Když je program v něčem pomalý, až tehdy se optimalizuje a jen ten jeden úsek.

Nahoru Odpovědět 11.6.2013 20:24
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
TomBen
Redaktor
Avatar
TomBen:

Když uvážím na jakých frekvencích jsou dnešní procesory taktovány,
tak je každá činnost programu, kterou mohu zaznamenat pouhým okem,
vlastně neskutečně pomalá. Ale většina uživatelů je zvyklá na svoje
kafíčko po každém druhém myšokliku. :-)

Nahoru Odpovědět 11.6.2013 20:25
Za posledních 200 miliónů let se nic zvláštního nestalo, akorát dinosauři vymřeli a opice se naučily programovat.
Avatar
Odpovídá na David Čápka
Luboš Běhounek (Satik):

Zatím naštěstí většině programátorů jde i o rychlost programu a u těch pomalých jsem zdroják nezkoumal, tak nevím, jestli by šly ty akce zrychlit, takže o takové situaci nevím :)

"Když je program v něčem pomalý, až tehdy se optimalizuje a jen ten jeden úsek."
S tím už souhlasím.

Nahoru Odpovědět  +1 11.6.2013 20:42
:)
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
Petr Nymsa:

Zatím se vždy snažím psát ty programy rychlé, ale v algoritmizaci nejsem nijak extra třída :). Zatím mě vždy běželi rychle a občas jsem je testoval i na pomalejších PC... no já se tu pánové klidím, už budu jenom přihlížet :D Tohle už je extra mimo mě... časem vám do tooh začnu kecat taky :P :)

A souhlasím s oba názory. Jak sdraca tak tvým. Programátor by to neměl flákat, stejěn jednou dojde k tomu že ot nějak vylepší, proč to nenapsat alespoň slušněji než normálně ? :)

Nahoru Odpovědět 11.6.2013 20:47
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Kit
Redaktor
Avatar
Odpovídá na Dumdych
Kit:

premature optimization is the root of all evil

Nahoru Odpovědět  +1 12.6.2013 9:06
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
Kit:

Kompilátory vyšších programovacích jazyků většinou mívají zabudovánu optimalizaci výstupního kódu. Nejúčinnější bývá zejména když programátor používá obvyklé konstrukce a na optimalizace se vykašle.

Ovšem zbývá definovat, co jsou to "obvyklé konstrukce". Ty nejvhodnější bývají nazývány "Design patterns".

Pro assemblery samozřejmě platí jiná pravidla než pro OO nebo funkcionální jazyky.

Nahoru Odpovědět 12.6.2013 9:17
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Dumdych
Kit:

To by mě zajímalo, proč si kdekdo pojmenovává svůj framework názvem Framework. To je stejné, jako kdyby se můj pes jmenoval Pes.

Nahoru Odpovědět 12.6.2013 10:20
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Luboš Běhounek (Satik):

"Kompilátory vyšších programovacích jazyků většinou mívají zabudovánu optimalizaci výstupního kódu."

Ano, ale ta optimalizace jen do určité míry, spoustu optimalizací musí člověk stejně dělat ručně.
Kompilátory obvykle dělají jen takové ty úplně základní věci jako unrolling cyklů, vyházení nepotřebného kódu, inlinování krátkých funkcí, ale složitější konstrukce musí většinou optimalizovat programátor.

Nahoru Odpovědět 12.6.2013 10:48
:)
Avatar
Kit
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
Kit:

Právě že programátoři často zbytečně dělají složité (rádoby optimalizující) konstrukce, které se kompilátoru špatně optimalizují.

Některé optimalizace umí i samotné procesory, ale to se už kódu netýká.

Nahoru Odpovědět 12.6.2013 10:59
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 82 zpráv z 82.