d2jsp
Log InRegister
d2jsp Forums > Off-Topic > International > Magyar > Mekprogramozzuk Topic
Prev16263646566249Next
Add Reply New Topic New Poll
Member
Posts: 53,925
Joined: Apr 15 2007
Gold: 11,500.00
Trader: Trusted
Oct 25 2014 12:17pm
amúgy van egy kurva jó felvételi feladat, egész komplex előre megírt alkalmazás, és minden féle dolgot mér -- lehet megkeresem és ha megtaláltam, postolom

elvileg úgy szól hogy mi vagyunk az új alkalmazottak, ez egy kapott program, és javítsunk rajta

első arra megy ki hogy megértjük-e az inversion of controlt, le tudjuk-e implementálni dependency injection-el a multifunkcibb verziót
második kérdés (ennek kapcsán jutott eszembe ez az egész) arra, hogy "az alkalmazáson látjuk hogy 4 másodpercig fut, meg tudjuk-e csinálni X sor bővítéssel hogy ez lemenjen 0.5 mp alá" -- kb előkapsz egy dictionary-t és kész, csak az ötlet kell, ami nem triviális

kb 90 perc van rá, nekem volt olyan 40

nagyon jó felvételi feladatokat lehet találni, és érdemes minden hónapban kitölteni egyet amúgy
és persze ha elkészült akkor be is lehet küldeni és követelni a forró dollár milliárdokat

funkcionális programozókat amikor keresnek, jellemzően ott csinálják azt hogy adnak egy kurva poénos játék feladatot (ami amúgy elég killer task), van rá két napod mondjuk és csináld meg
ezeket szoktam imádni megcsinálni
Member
Posts: 4,795
Joined: Apr 26 2007
Gold: 289.00
Oct 25 2014 12:17pm
Quote (Anarkin @ 25 Oct 2014 19:11)
az emberek szeretnek generikus dolgokat írni, közzétenni, stb
tényleg jó dolog, az én szakdogám is erről szól -- pluginelhető AI rendszer, problémákkal, keresésekkel, stb, akármilyen .net nyelven lehet írni őket (majd csinálok F#-os example-t is még decemberig)

csak hogy ha megnézzük, generikus = nem optimalizált
mert amikor nekünk szükségünk van valamire, akkor az feltehetőleg nem a világmindenség

pl nézzük az én példámat
"{GÉ} + ({HÁ} * 2)" szintű dolgokat akarok kifejezni

első megoldásként hozzányúlhatok egy for ciklushoz és replacelhetem a betűket (ez egyenlő lesz N darab KERESÉSSEL, M-szer)
utána pedig fogok egy Evaluator szarságot, valami 3rd party full-generikus puccos menő cuccot, ami megoldja nekem
működik, fasza, 10 perc volt, hagynám is így, ha mondjuk kliens oldalon lenne, és a UI-ről valaki 10 másodpercenként egyszer lefuttatná .. mindegy hogy 3 ms, vagy 250 ms
mi a baj? a replace, és hogy a 3rd party feltehetőleg a teljes univerzum megoldására fel van készítve, így Flexert használ, Parsert, minden szart amit tanultunk FONYA-ból, és ezek képesek megoldani a legkomplexebb nyelveket (lvl3 vagy mi)

második megoldásként mondhatom hogy kikapom dictionary-be hogy <G, 0>, <H,  7>, melyik hol van, megspróltam N keresést, jobbról balra (hogy ne baszódjanak el az indexek) behelyettesítem -> bumm 1500x gyorsabb lett (de tényleg xd)
utána keresek vagy írok valami 25 soros Stack-es megoldást, ami evaluálja a kifejezést, mit tudom én mint a lengyel formula (vmi ilyet fogok mindjárt csinálni)

mindig csak abban kell gondolkozni, hogy a kód 10%-a fut az idő 90%-ában (ez amúgy még szerintem 3/97-el is igaz lenne), ha nem az alkalmazás közepén lenne ez a kód és nem futna le mp-enként 400.000-szer, én se basztatnám ezt
legtöbb alkalmazásnál ráereszted a VS Análizátort a programra, és ha megnézed egy sor lesz ami vér vörös, a többi meg ilyen <0.1%, vagy 1%
talán a legjellemzőbb ilyen "hibák" a leggyakoribb higher order parancsok miatt vannak (replace, contains, exists, stb... mindegyik kurvára lineáris és senki nem gondol bele, hogy ezeket előre fel kéne dolgozni)


generikus != template
:)

edit: ezt azért írtam, mert C# generic, C++ template, és a futási időben nagyon sok a küldömbség. Pláne egy kis TMP-vel. :)

This post was edited by Jason89 on Oct 25 2014 12:19pm
Member
Posts: 53,925
Joined: Apr 15 2007
Gold: 11,500.00
Trader: Trusted
Oct 25 2014 12:19pm
Quote (Jason89 @ 25 Oct 2014 19:17)
generikus != template
:)


ezt nem értem

This post was edited by Anarkin on Oct 25 2014 12:21pm
Member
Posts: 4,795
Joined: Apr 26 2007
Gold: 289.00
Oct 25 2014 12:20pm
Quote (Anarkin @ 25 Oct 2014 19:19)
ezt nem értem


ezt azért írtam, mert C# generic, C++ template, és a futási időben nagyon sok a küldömbség. Pláne egy kis TMP-vel. :)
Member
Posts: 53,925
Joined: Apr 15 2007
Gold: 11,500.00
Trader: Trusted
Oct 25 2014 12:22pm
Quote (Jason89 @ 25 Oct 2014 19:20)
ezt azért írtam, mert C# generic, C++ template, és a futási időben nagyon sok a küldömbség. Pláne egy kis TMP-vel. :)


olvasd el a postot és leesik hogy nem az c#-os genericsre gondoltam
hanen úgy a szó jelentésére :D
Member
Posts: 4,795
Joined: Apr 26 2007
Gold: 289.00
Oct 25 2014 12:23pm
Quote (Anarkin @ 25 Oct 2014 19:22)
olvasd el a postot és leesik hogy nem az c#-os genericsre gondoltam
hanen úgy a szó jelentésére :D


Igen, azóta rájöttem. :P
Btw, a Selector-om hogy tetszik? :)
Member
Posts: 53,925
Joined: Apr 15 2007
Gold: 11,500.00
Trader: Trusted
Oct 25 2014 12:47pm
Quote (Jason89 @ 25 Oct 2014 19:23)
Igen, azóta rájöttem. :P
Btw, a Selector-om hogy tetszik? :)


nem áll össze a szintaktika nekem, sose foglalkoztam vele (többet, mint amennyit elte-n kellett)
.NET Stack-es fickó vagyok, az lefed mindent (ez se Microsoft fanboiság, csak a legproduktívabb és leginkább koherens környezetnek tartom)



hobbyként szoktam low level szarokkal játszani, most pl ezeket a cikkeket olvasgatom, ajánlom ha még nem olvastad: http://preshing.com/archives/ 2012. JUN 12-től kb, lock-free programming és memory barriers-ről van kb 6 cikk, mindegyik kurva érdekes és jobb mint bármi (és ezek nem csak a CPU szinten jelennek meg L1, L2, L3 cache formájában, hanem pl a GC-kben is van Gen0, Gen1, Gen2 és Large Object Cache, és ott is létezik ugyanez a barrier fogalom) -- elég izmos olvasnivaló

de a C-s szintaktika ezeknek nem előfeltétele
unsafe kódot szoktam írni szuperritkán, az persze hajaz a címadásos dolgokra, de azok nagyon célzottak, algoritmust hajtanak meg

btw én pont az ellenkező irányba húznék, funkcionális nyelvekhez
F# szerintem az eddigi legzseniálisabb nyelv, mióta megismertem a C#-ra se tudok már etalonként tekinteni

szóval ja, ez egy érdekes téma, megtalálni mindenből a legproduktívabbat
ezért is mondják hogy nincs silver bullet
egy .NET-es (alapvetően C#) rendszerbe simán írok unsafe (~C) kódot az egyik pluginbe, ahol pointereket tologatok; míg high level F# kódot a másikba
és persze ahogy kijövünk a service rétegből, a kliens már lehet akár JavaScript is, stb stb :wacko:

de valahogy pont a C nekem sosem jelentkezett, hogy szeretne megjelenni az életemben

This post was edited by Anarkin on Oct 25 2014 12:48pm
Member
Posts: 4,795
Joined: Apr 26 2007
Gold: 289.00
Oct 25 2014 12:57pm
Quote (Anarkin @ 25 Oct 2014 19:47)
nem áll össze a szintaktika nekem, sose foglalkoztam vele (többet, mint amennyit elte-n kellett)
.NET Stack-es fickó vagyok, az lefed mindent (ez se Microsoft fanboiság, csak a legproduktívabb és leginkább koherens környezetnek tartom)

http://i.imgur.com/l7QS7vd.png

hobbyként szoktam low level szarokkal játszani, most pl ezeket a cikkeket olvasgatom, ajánlom ha még nem olvastad: http://preshing.com/archives/ 2012. JUN 12-től kb, lock-free programming és memory barriers-ről van kb 6 cikk, mindegyik kurva érdekes és jobb mint bármi (és ezek nem csak a CPU szinten jelennek meg L1, L2, L3 cache formájában, hanem pl a GC-kben is van Gen0, Gen1, Gen2 és Large Object Cache, és ott is létezik ugyanez a barrier fogalom) -- elég izmos olvasnivaló

de a C-s szintaktika ezeknek nem előfeltétele
unsafe kódot szoktam írni szuperritkán, az persze hajaz a címadásos dolgokra, de azok nagyon célzottak, algoritmust hajtanak meg

btw én pont az ellenkező irányba húznék, funkcionális nyelvekhez
F# szerintem az eddigi legzseniálisabb nyelv, mióta megismertem a C#-ra se tudok már etalonként tekinteni

szóval ja, ez egy érdekes téma, megtalálni mindenből a legproduktívabbat
ezért is mondják hogy nincs silver bullet
egy .NET-es (alapvetően C#) rendszerbe simán írok unsafe (~C) kódot az egyik pluginbe, ahol pointereket tologatok; míg high level F# kódot a másikba
és persze ahogy kijövünk a service rétegből, a kliens már lehet akár JavaScript is, stb stb :wacko:

de valahogy pont a C nekem sosem jelentkezett, hogy szeretne megjelenni az életemben


Ha már F#, akkor inkább Clean. Jóval régebben jelent meg, és elég letisztult funkcionális nyelv, én nagyon szeretem. Esetleg még Erlang.
Az a Selector osztályom nem C, hanem C++. :) C-ben nyelvi szinten nincsen osztály fogalom, meg template se. Mondjuk a legjobban a C-t szeretem.

Amit igazán utálok: php meg a javascript. A java-t se szeretem, de megtűrom -- míg az első kettőt nem. :P
Member
Posts: 35,964
Joined: Dec 27 2007
Gold: 0.00
Oct 25 2014 12:58pm
Quote (Jason89 @ Oct 25 2014 06:16pm)
Másik kedvenc megoldásom, de biztos láttatok már ilyet. Adott típusú elemek begyűjtése az AST-ből. Ebbe pl az a poén, hogy 1-4 darab típust tud gyűjteni, ráadásul úgy, hogy a gyűjtött elemek minden esetben gyerekei a B-nek. Note that, Visit(T1)-Visit(T4) nem feltétlenül virtuális függvény! Csak akkor, ha tényleg olyan típus, ami van az AST-ben. :)

Code
namespace wtc
{
namespace codegen
{

template<int N> struct dummy_type { };

template<typename B, bool dive, typename T1=B, typename T2=dummy_type<2>, typename T3=dummy_type<3>, typename T4=dummy_type<4> >
struct Selector : public wtast::AstVisitor
{
typedef std::set<B*> container_t;
typedef typename container_t::iterator iterator;
container_t result;
bool empty() const { return result.empty(); }
std::size_t size() const { return result.size(); }
iterator begin() { return result.begin(); }
iterator end() { return result.end(); }

Selector(wtast::AstNode* astnode) : wtast::AstVisitor() { astnode->Accept(this); }

bool Visit(T1* elem) { result.insert(elem); return dive; }
bool Visit(T2* elem) { result.insert(elem); return dive; }
bool Visit(T3* elem) { result.insert(elem); return dive; }
bool Visit(T4* elem) { result.insert(elem); return dive; }
};

} // codegen
} // wtc


ilyenkor látom hogy még bőven van hova fejlődni :D jöhetnek még az ilyen postok, legalább lesz értelme feljárnom, tanulok is valamit :3
Member
Posts: 4,795
Joined: Apr 26 2007
Gold: 289.00
Oct 25 2014 12:59pm
Quote (xGurke @ 25 Oct 2014 19:58)
ilyenkor látom hogy még bőven van hova fejlődni :D jöhetnek még az ilyen postok, legalább lesz értelme feljárnom, tanulok is valamit :3


Ezt értsem úgy, hogy tolod a C++-t? :)
Go Back To Magyar Topic List
Prev16263646566249Next
Add Reply New Topic New Poll