Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - Bystroushaak

Stran: 1 ... 5 6 [7] 8 9 ... 13
91
Vývoj / Re:Python - dobré rady a praktiky
« kdy: 27. 03. 2016, 12:13:29 »
Zkus si přečíst sekci Hnutí za dobrý kód z http://www.abclinuxu.cz/blog/bystroushaak/2014/7/python-poznamky

Jinak osobně jsem v pythonu dělal na projektu, který měl přes 40k řádek podle CLOC (tzn bez prázdných řádků, komentářů, docstringů a tak). Nebyl s tím vůbec žádný problém, dělali jsme to ve dvou a šlo to v pohodě. Možná za to mohla microservices architektura, ale prostě žádné hroucení na hlavu se nekonalo. Ani co se týče kódu, ani co se týče výkonu, naopak se to krásně škáluje. Umím si představit, že by to stejným způsobem šlo klidně o řád dál bez nějakého stresu.

Například v Seznamu mají systémy psané v pythonu o rozsahu stovek tisíc až milionů řádek a podle všeho s tím nemají problém, naopak pořád nabírají nové lidi. To samé Google. To samé Redhat.

Imho problém těhle threadů o pythonu je, že sem lezou javisti, kteří kolikrát neumí pořádně ani tu javu a pak javí v pythonu a diví se, že jim to nejde. Python je prostě úplně odlišná filosofie, jak co se týče návrhu jazyka, tak co se týče architektury a praktik považovaných za dobré a špatné. Nikde jinde jsem to neviděl takhle ostře vyděleno.

„Chyba“ pythonu je, že základy jsou tak lehké, že se je za týden naučí každý. Když pak ovládne syntaxi, ale vůbec nepochopí nic o zbytku filosofie, tak to končí špatně. Pár těhle projektů jsem viděl a to bych blil.

92
Odkladiště / Re:Jaké IT weby sledujete?
« kdy: 20. 02. 2016, 10:18:05 »
Tím stylem, že bych tam pravidelně chodil, sleduji asi jen http://abclinuxu.cz a čas od času tohle fórum.

Přes RSS toho čtu trochu víc:


Snažil jsem se to ořezat jen na IT-related věci, ale pravděpodobně tam někde něco náhodného zbylo, tak to ignorujte.

93
O serveru Root.cz / Re:Alternativní vzhledy Roota
« kdy: 11. 02. 2016, 09:24:05 »
Škoda, že nic z toho uspokojivě nefunguje i tady na fórum.

94
O serveru Root.cz / Re:Nový Root již dnes?
« kdy: 11. 02. 2016, 09:13:42 »
Teda ta aresivní oranžová na bílé (a bílá na oranžové) je fakt brutální. Fakt mi z toho slzí oči. Nejen že je to nečitelné, ale doslova mi to ubližuje.

95
Vývoj / Re:Kolik napíšete denně řádků kódu?
« kdy: 09. 02. 2016, 14:26:06 »
  • Ukecaný není jazyk, ale programátor, který ho používá.

Samozřejmě, že je ukecaný jazyk. Když vezmu něco jako třeba asociativní mapy v pythonu a asociativní mapy v C, tak je to mnohokrát víc ukecanější, ať v tom programuje kdo chce. Tak je to s každou věcí, která je někde jinde abstrahovaná do syntaxe, pokud ten jazyk zrovna nenabízí silná makra na úrovni AST.

96
Proč hejtovat?

No, zkus někdy třeba na /r/python napsat, že používáš 2.7 a uvidíš ten hate.

97
O serveru Root.cz / Re:Nový Root již dnes?
« kdy: 09. 02. 2016, 12:15:09 »
Dá se něco udělat, aby to nebylo tak bílé? Pálí mě z toho oči.

98
Vývoj / Re:Kolik napíšete denně řádků kódu?
« kdy: 09. 02. 2016, 12:12:27 »
Já mám dlouhodobý průměr okolo cca 300 řádků změn denně. Samozřejmě, někdy je to 800 a jindy 50, podle toho, co zrovna dělám. Nutno taky dodat, že python. Když jsem dělal v javě, tak nebyl problém 2000-4000 za den, ale půlka z toho byl generovaný kód (jen settery / gettery zaberou desítky procent) a druhá půlka ukecaná abstrakce, kde jeden řádek v pythonu na list comprehension vydá na 50 v javě.

99
Bohužel ti neporadím co za knihu, ale určitě odrazuji od DIP3. Ne že by byla špatná (mám doma fyzickou verzi), ale přišla mi spíš určena pro programátory v pythonu 2.7. Učit se programovat v pythonu se z ní imho budeš jen těžko.

Za python 2.7 tě bude spousta lidí hejtovat, ale osobně ti to schvaluji, prostě proto, že je v něm stále napsaná majorita všeho a skoro všude, kde ti budou za python platit po tobě budou chtít 2.x.

Jinak viz http://www.py.cz/TutorialyLiteratura

102
Vývoj / Re:Python rekurzivní funkce - velice podivné
« kdy: 19. 01. 2016, 10:42:54 »
Boha, ten kód je teda zrůdnost. Když modifikuješ mutable parametry, tak se asi stěží můžeš divit, že budou modifikované. Jejich inicializace probíhá při vytváření funkce, ne při volání.

Kód: [Vybrat]
		a = []
for key, value in n.iteritems():
a.append(value)
return ''.join(a)

Se dá přepsat na
Kód: [Vybrat]
return "".join(n.values())

Podmínka

Kód: [Vybrat]
if 0 < len(i):

je Yoda condition a dá se přepsat na
Kód: [Vybrat]
if i:

A tak dále. To ani nemluvím o tom jednopísmenném pojmenování proměnných. Co to šašíš s tím t, které inicializuješ na prázdné pole, pak mu vždycky předáváš string, který pak konvertuješ tam a zpět na pole jsem nepochopil už vůbec, ale rozhodně to není dobrá praktika.

103
Odkladiště / Re:Programátorův pohled na svět
« kdy: 09. 01. 2016, 06:08:51 »
Když si vytáhnu z manuálu funkci s pěti parametry, tak místo zalamování se dá napsat třeba takto:
Kód: [Vybrat]
<?php
$filename 
"source.txt";
$usePath false;
$context stream_context_create();
$offset = -1;
$maxlen 100000;
$content file_get_contents($filename$usePath$context$offset$maxlen);

Přestože má ta funkce 5 parametrů, poslední řádek s jejím voláním má celkem 78 znaků. Navíc jsou všechny parametry pojmenovány tak, že je evidentní jejich účel a plní roli komentářů.

V tomhle mi teda přijde lepší využít defaultní parametry:

Kód: (Python) [Vybrat]
content = file_get_contents(
    filename="source.txt",
    usePath=False,
    context=stream_context_create(),
    offset=-1,
    maxle=100000,
)

104
Odkladiště / Re:mysleni pana Programatora
« kdy: 08. 01. 2016, 15:38:14 »
určitě je lepší než napsat:

red_cars = map(lambda x: x.color = 'red', filter(lambda x: x.id == 'ID2376', cars))

je lepší napsat

def set_color(color):
    return lambda x: x.color = color

def where_id(id):
   return lambda x: x.id == id

car.id = 'ID2376'

red_cars = map(set_color('red'), filter(where_id(car), cars)

protože pak můžete v budoucnosti vylepšit vyhledávání pomocí regulárního výrazu, nebo strukturovat data různých entit a typů podle jednotné šablony, obsahující id, barvu a podobně.

Imho je lepší:

def filter_cars(cars, color, id):
  for car in cars:
    if car.id == id:
      car.color = color
      yield car

red_cars = filter_cars(cars, color="red", id="ID2376")  # případně to obalit list()em, aby z toho bylo pole a ne generátor


Mimochodem red_cars = map(lambda x: x.color = 'red', filter(lambda x: x.id == 'ID2376', cars)) fungovat nebude, protože výsledkem první definované lambdy je SyntaxError: can't assign to lambda. Lambdy totiž můžou obsahovat jen výrazy, nikoliv příkazy (což je přiřazení). I kdyby to náhodou šlo, tak to stejně nemusí fungovat jak bylo očekáváno, protože výsledkem by byla hodnota přiřazení a nikde není psáno, že musí fungovat jako Cčkovské jazyky. Výsledkem tak může být třeba None, True, či 'red', nikoliv původní objekt x (a ano, viděl jsem jazyky, kde to tak je).

Toto je veliký omyl. Naučit se pár příkazů je záležitost jednoho dne. Ale každý jazyk ma trošku jinou filozofii a komunitu lidí. A proto i tak příbuzné jazyky jako třeba Python, Ruby nebo Javascript jsou z hlubšího pohledu hodně odlišné, existují v nich naprosto odlišné idiomy a přetransformovat se z jednoho na druhý neznamená naučit se pár příkazů, ale porozumět jak v nich programy tvořit, poznat ekosystém, používané knihovny atd. A to je záležitost několika měsíců, minimálně. A poměrně hodně samostudia zdrojových kódů ikonických implementací. A to vůbec nemluvím o filozoficky úplně rozdílných jazycích.

Ano, je to často opakovaná blbost. Jaksi tam chybí, že se takhle člověk naučí jen ekvivalentní výrazy těm co už znal a ne využívat všech featur, které jazyk nabízí. Na pomyslném žebříku abstrakce to tedy funguje jen jako horizontální přestup.

Člověk co vylezl na vrchol žebříku javy může přeskočit na pythonní žebřík docela rychle, ale rozhodně nebude na vrcholu pomyslného žebříku možné pythonní abstrakce. Naopak bude někde úplně dole. Lidi z javy pak v pythonu javí a javí a z toho jejich kódu bych blil. Myslet si, že takhle přejdou třeba do lispu a budou v něm efektivní a jejich kód nebude k zblití je úplně mimo.

Zažil jsem třeba docela dost lidí, co si takhle mysleli, že umí python. Pak jim málem shořel mozek, když viděli https://www.youtube.com/watch?v=sPiWg5jSoZI

105
Vývoj / Re:Unikátní číslo v JS
« kdy: 21. 12. 2015, 10:43:49 »
Jen bych ještě dodal, že jestli to budeš hledat, tak si dej bacha, aby to nebyla prasácká implementace UUID4 na pár řádek, protože internet je plný zkryplených implementací od javascript kodérů, kteří do toho neintegrují čas.

Stran: 1 ... 5 6 [7] 8 9 ... 13