Jak začít pracovat v IT oboru

iwtu

Re:Jak začít pracovat v IT oboru
« Odpověď #45 kdy: 27. 05. 2015, 10:51:47 »
Ahoj.

IT je prilis siroke a univerzalne pravidla nie su. Moj sef nema VS ale nikto by to na neho nikdy nepovedal. Pred IT robil policajta, lebo vtedy zarabali naviac. Obycajneho pochodzkara, chodil s obuskom. Potom si niekto na policii vsimol, ze na strednej si naprogramoval vlastny OS a potom sa uz tahal v IT.

Si mlady, svojim sposobom nemas co stratit. Chces ist do zahranicia na rok, bez. O IT este nemas prehlad a chces toho fatk vela. Ono.. mozes skoncit typicky s nejakou pracou alebo si postupne ides za pracou, ktoru chces robit.

Niekto pisal, ze bez IT SS na IT VS by nesiel. To je blbost. Jednek SS IT su povacsine sracky a na MFF UK na Informatiku sa ide typicky s obycajneho gymnazia..

Ak Ti mozem nieco odporucit, tak skus toho co najviac a zisti, co by si vlastne v IT chcel robit. Mozno naozaj vsetko, OK. Poznam par takych ludi co to vsetko robia a robia to fakt dobre. Mna niekedy  tiez lakala bezpecnost, ale potom som sa dostal ku kryptologii a to fakt nebolo pre mna. Ani sprava niecoho ma nebavi. Ja programujem, pripadne vediem programatorov alebo projekt.

Samozrejme, najlepsie, ak ti chyba nejaky program, tak si ho spravis sam. To je pomerne silna referencia :-)

Drz sa.


Kolemjdoucí

Re:Jak začít pracovat v IT oboru
« Odpověď #46 kdy: 27. 05. 2015, 12:02:59 »
Jestli to nebude tím

Chtěl jsi vědět co je špatně.

Vyhodí to KeyboardInterrupt.

... který není ošetřen a celé to zbuchne na výjimku.

funkce převádející string na int vyhodí výjimku.

... vyhodí výjimku a ve výjimce většinou není okolní kontext chyby, takže uživatel dostane nasírací hlášku "Error convert string to number". Když tam budeš mít vstupy dva, pro funkci z=1/(x*y), máš problém.

Znovu se ptám, co je na tom kódu špatně

Špatně je nulu převzít od uživatele.

Nejsou, protože v pythonu se nic takového ošetřovat nemusí:

Pokud je to dělení celočíselné, tak zřejmě ne. Pokud se tam nějak propašuje floating point, výjimka občas nastane.

Jde o (ano, asi bambiliondesátý) učební text

V tom je ten problém, napřed se to naučí blbě a pak se to musí těžce přeučovat.

gamer

Re:Jak začít pracovat v IT oboru
« Odpověď #47 kdy: 27. 05. 2015, 12:19:59 »
... který není ošetřen a celé to zbuchne na výjimku.
Jasně, dělám elementární příklad na použití výjimek a přijde nějaký chytrák, který argumentuje tím, že v tom příkladu není ošetřený KeyboardInterrupt. Samozřejmě že není, protože je to globální věc, která do toho příkladu nepatří, akorát by mátla čtenáře. Můžeš si samozřejmě honit ego na tom, jaký je autor debil, že KeyboardInterrupt neošetřil.

... vyhodí výjimku a ve výjimce většinou není okolní kontext chyby, takže uživatel dostane nasírací hlášku "Error convert string to number". Když tam budeš mít vstupy dva, pro funkci z=1/(x*y), máš problém.
Bavíme se o konkrétním kusu kódu:
Kód: [Vybrat]
try:
    x = int(input("Zadajte x: "))
    y = 1/x
    print("y=1/{}={}".format(x, y))
except ValueError:
    print("Prosím, zadávajte celé číslo.")
Ten kód funguje správně a uživatel dostane správnou hlášku. Nějaké hypotetické varianty coby kdyby neberu.

Špatně je nulu převzít od uživatele.
Špatně protože se to Kolemjdoucímu nelíbí, nebo špatně protože ten kód nefunguje?

Pokud je to dělení celočíselné, tak zřejmě ne. Pokud se tam nějak propašuje floating point, výjimka občas nastane.
Vysvětli mi prosím, jak se z výrazu
Kód: [Vybrat]
x = int(input("Zadajte x: "))
může do x dostat floating point?

V tom je ten problém, napřed se to naučí blbě a pak se to musí těžce přeučovat.
Nic se blbě neučí, použití výjimky na ošetření vstupu funkce int v pythonu 3 je naprosto správně. V jiných jazycích může být jiné řešení lepší, ale ne v pythonu.

gamer

Re:Jak začít pracovat v IT oboru
« Odpověď #48 kdy: 27. 05. 2015, 12:28:32 »
A ještě jedna věc, když mi přijdou na pohovor dva lidi, já jim dám za úkol zvalidovat v pythonu integer zadaný od uživatele, ten první odchytí výjimku funkce int() a ten druhý si začně psát nějaké super vlastní rešení na validaci integeru, tak vezmu toho prvního a s druhým se rozloučím, protože ten druhý prasí.

sadg

Re:Jak začít pracovat v IT oboru
« Odpověď #49 kdy: 27. 05. 2015, 15:07:26 »

Bavíme se o konkrétním kusu kódu:
Kód: [Vybrat]
try:
    x = int(input("Zadajte x: "))
    y = 1/x
    print("y=1/{}={}".format(x, y))
except ValueError:
    print("Prosím, zadávajte celé číslo.")
Ten kód funguje správně a uživatel dostane správnou hlášku. Nějaké hypotetické varianty coby kdyby neberu.

Nic se blbě neučí, použití výjimky na ošetření vstupu funkce int v pythonu 3 je naprosto správně. V jiných jazycích může být jiné řešení lepší, ale ne v pythonu.

serem na tvoje vynimky, debil. spravne je pouzit if.


gamer

Re:Jak začít pracovat v IT oboru
« Odpověď #50 kdy: 27. 05. 2015, 15:54:33 »
serem na tvoje vynimky, debil. spravne je pouzit if.

Tak se s tím, já bych se rád podíval na kód s if, který bude v pythonu lepší než výjimka. Hint:
http://stackoverflow.com/questions/1265665/python-check-if-a-string-represents-an-int-without-using-try-except
Třeba si tam vybereš nějakou vhodnou magořinu.

j

Re:Jak začít pracovat v IT oboru
« Odpověď #51 kdy: 27. 05. 2015, 16:35:25 »
... který není ošetřen a celé to zbuchne na výjimku.
Jasně, dělám elementární příklad na použití výjimek a přijde nějaký chytrák, který argumentuje tím, že v tom příkladu není ošetřený KeyboardInterrupt. Samozřejmě že není, protože je to globální věc, která do toho příkladu nepatří, akorát by mátla čtenáře. Můžeš si samozřejmě honit ego na tom, jaký je autor debil, že KeyboardInterrupt neošetřil.

Ty mas misto mozku nasrano ... Prave proto ze JE to PRIKLAD vyuziti VYJIMEK, tak je to UPLNE SPATNE. Protoze presne takhle se vyjimky pouzivat proste NESMI a to NIKDY. Pokud uz chci vstup osetrovat vyjimkou, tak jedine tak, ze si ji sam zavolam (po radnem otestovani toho vstupu samo).

A to je presne ten problem, kterej vznika uz ve skolach, protoze presne takhle se to uci. A presne takhle vypada milion prikladu po netu. A pak nam z toho vznikaji krasne veci jako SQL injections a dalsi chutovky.

Nejde o to, ze neni osetrenejch bambilion jinejch veci na ktery to muze zbuchnout, ale jde o to, ze se vubec ten vstup dostane k tomu aby byl pouzit.... ale to samo patlalove jako ty a hromady dalsich nedokazou pochopit. A pak cumej jak pero z gauce, kdyz jim user zada string na dotaz zadej cislo, a ten string se proste pouzije, protoze byte jako byte ...

gamer

Re:Jak začít pracovat v IT oboru
« Odpověď #52 kdy: 27. 05. 2015, 17:11:43 »
Ty mas misto mozku nasrano ... Prave proto ze JE to PRIKLAD vyuziti VYJIMEK, tak je to UPLNE SPATNE. Protoze presne takhle se vyjimky pouzivat proste NESMI a to NIKDY. Pokud uz chci vstup osetrovat vyjimkou, tak jedine tak, ze si ji sam zavolam (po radnem otestovani toho vstupu samo).

Všichni mají v mozku nasráno, včetně autorů pythonu. Jenom j je nejchytřejší a přesně ví, jak to má být udělané a zná tu správnou cestu. V pythonu by samozřejmě nic nedělal, protože python vymyslel nějaký retardovaný vysokoškolák. Jak si ten diplomovaný blbec Guido van Rossum mohl dovolit navrhnout python s vyhazováním výjimky z funkce int()? J z toho může trefit šlak. Ty vysoké školy jsou hrozné, nic pořádného člověka nenaučí.

j

Re:Jak začít pracovat v IT oboru
« Odpověď #53 kdy: 27. 05. 2015, 17:36:48 »
Ty mas misto mozku nasrano ... Prave proto ze JE to PRIKLAD vyuziti VYJIMEK, tak je to UPLNE SPATNE. Protoze presne takhle se vyjimky pouzivat proste NESMI a to NIKDY. Pokud uz chci vstup osetrovat vyjimkou, tak jedine tak, ze si ji sam zavolam (po radnem otestovani toho vstupu samo).

Všichni mají v mozku nasráno, včetně autorů pythonu. Jenom j je nejchytřejší a přesně ví, jak to má být udělané a zná tu správnou cestu. V pythonu by samozřejmě nic nedělal, protože python vymyslel nějaký retardovaný vysokoškolák. Jak si ten diplomovaný blbec Guido van Rossum mohl dovolit navrhnout python s vyhazováním výjimky z funkce int()? J z toho může trefit šlak. Ty vysoké školy jsou hrozné, nic pořádného člověka nenaučí.

Diky za potvrzeni, ze ses naprostej (a predpokladam ze diplomovanej)  debil.

gamer

Re:Jak začít pracovat v IT oboru
« Odpověď #54 kdy: 27. 05. 2015, 17:40:45 »
Diky za potvrzeni, ze ses naprostej (a predpokladam ze diplomovanej)  debil.

Ukaž svůj kód, kterým v pythonu, zvaliduješ jestli je string integer. Pak se můžeme bavit dál. Jinak jsou to od tebe jen obecné kecy o ničem.

Tomasek rollik

Re:Jak začít pracovat v IT oboru
« Odpověď #55 kdy: 27. 05. 2015, 17:43:27 »
A bude chleba levnejsi?

noef

  • *****
  • 897
    • Zobrazit profil
    • E-mail
Re:Jak začít pracovat v IT oboru
« Odpověď #56 kdy: 27. 05. 2015, 18:12:02 »
<ot>
A bude chleba levnejsi?
Prehledl jsem se a precetl jmeno jako rohlik, hned ten prispevek mel vetsi grady ;D. </ot>

K tematu (nebo je to jen jiny OT?) vyjimek: pred nejakym casem se to tu resilo ve specialnim vlaknu. V ruznych jazycich se s nimi pracuje ruzne. Nekde jsou drahe (C++?, Java?), jinde ale muzou stat stejne nebo byt dokonce levnejsi nez podminky. A IMO hlavne pujde o konzistenci uzivani pristupu (k vyjimkam a osetreni vstupu) v celem projektu.

JSH

Re:Jak začít pracovat v IT oboru
« Odpověď #57 kdy: 27. 05. 2015, 18:51:49 »
... jinde ale muzou stat stejne nebo byt dokonce levnejsi nez podminky.
Byl by příklad nějakého takového jazyka? Když si vezmu, jak je výjimka nelokální záležitost, tak si to moc nedokážu představit.

noef

  • *****
  • 897
    • Zobrazit profil
    • E-mail
Re:Jak začít pracovat v IT oboru
« Odpověď #58 kdy: 27. 05. 2015, 19:29:59 »
Neco jsem nasel k Pythonu - http://paltman.com/try-except-performance-in-python-a-simple-test/. Neplati sice, ze vyjimky jsou obecne levnejsi, ale napr. pro ten linkovany priklad, kdyz by k nenalezeni prvku ve slovniku dochazelo dostatecne malo, tak z toho vychazi vyjimky lepe (doufam, ze jsem se neprehledl). V Jave myslim vetsinu zpomaleni zpusoboval call stack, s nejakymi parametry to hotspot dokazal optimalizovat srovnatelne (mozna i lepe, uz je to dlouho co jsem to cetl), zkusim to dohledat.

Re:Jak začít pracovat v IT oboru
« Odpověď #59 kdy: 27. 05. 2015, 23:49:16 »
V pythonu jsou výjimky docela dost drahé, jak se spálil asi každý, koho kdy napadlo je použít v cyklu k posílání zpráv místo returnu (přepsáním na return zrychlení klidně 100x).

Ten debatovaný kód mi přijde blbě hlavně proto, že obaluje zbytečně moc kódu v jednom velkém try:except: bloku.