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

Stran: 1 ... 93 94 [95] 96 97 ... 101
1411
Vývoj / Re:Obdoba where T : new() v Javě
« kdy: 29. 08. 2015, 21:31:37 »
... V Javě ale zaboha nemůžu přijít na to, jak to udělat (kromě odporného použití reflexe, což pochopitelně nechci). ...

Na pouziti reflexe neni inherentne nic spatneho. Bezne se pouziva a napr. v tomto pripade bych ji preferoval pred tovarnami = boilerplate. Jedinne opodstatneni kdy nepozit reflexi a spokojit se s berlickou jsou vykonostni problemy. (Ale i tam jsou pro nektere pripady alternativy, jak reflexi pouzit, pripadne prejit k dynamickemu generovani/modifikaci bytekodu za behu.)

Reflexe je zlo. Slušný OOP jazyk by měl nabízet rozumné možnosti. Java je designově moc omezená.

1412
Vývoj / Re:Dynamické programování ve Swiftu
« kdy: 27. 08. 2015, 12:57:12 »
Kód: [Vybrat]
func memoize<T:Hashable,U>(block:(T->U,T)->U) -> T -> U {
    var memo = Dictionary<T,U>()
    var result:(T->U)!
    result = { x in
        if let q = memo[x] { return q }
        let r = block(result, x)
        memo[x] = r
        return r
    }
    return result
}
let faktoriál = memoize { f, n in n <= 1 ? 1 : n * f(n - 1) }

1413
Studium a uplatnění / Re:Funkcionální programátor
« kdy: 26. 08. 2015, 18:12:57 »
To není nedokonalost, konzistentní kontrola typů z principu napsat nejde (pro turingovsky úplný jazyk, což Swift je).
Můžeš to nějak doložit? Zaprvé v tom odkazovaném článku se píše opak, za druhé, umím si představit jazyk s jediným typem, který bude T.Ú., takže si neumím představit, proč by to nemělo být možný.

Ono to je celkem triviální pozorování. Viz zde: http://gallium.inria.fr/~remy/mpri/cours1.pdf

1414
Studium a uplatnění / Re:Funkcionální programátor
« kdy: 26. 08. 2015, 15:06:33 »
Kde je ta údajná nedokonalost?
http://forum.root.cz/index.php?topic=11417.msg134798#msg134798

To není nedokonalost, konzistentní kontrola typů z principu napsat nejde (pro turingovsky úplný jazyk, což Swift je).

1415
Vývoj / Re:Programovaci jazyk budoucnosti
« kdy: 26. 08. 2015, 11:22:52 »
A jak může "program" pochopit, co chcete, když se nevyjadřujete jednoznačně. V tom je ten největší problém. Vy chcete (bez urážky) jazyk, který pochopí přímo vaše myšlení, interpretuje a domyslí za vás, co vlastně chcete.

Takove jazyky casem existovat budou, ale je to vzdalena budoucnost.
Ano až bude fungující plnohodnotná AI, která bude muset mít pojistku proti sebezničení, protože ji debilita (z jejího pohledu) lidí bude mučit.

Plnohodnotna AI na to neni potreba, je to pomerne dobre realizovatelne i bez ni (i kdyz je otazka, do jake miry existence takoveho jazyka neimplikuje AI)). Pujde o metody zalozene na minimalizaci informace (viz treba princip maximalni entropie) nad pravdepodobnostnimi programy. Ale je to vzdalena budoucnost.

Taková AI už existuje, jenže - "as soon as it works, no one considers it AI anymore."
BTW princip maximální entropie neminimalizuje informaci.

1416
Studium a uplatnění / Re:Funkcionální programátor
« kdy: 26. 08. 2015, 10:45:16 »
...debatě třeba o těch záměrných nedokonalostech typového systému Swiftu...

Kde je ta údajná nedokonalost?

1417
Vývoj / Re:Funkcionální jazyky.
« kdy: 21. 08. 2015, 15:20:19 »
A co konkrétně je špatné na té dědičnosti, kdy si prostě nějakou funkcionalitu, co je společná pro víc třd, vyčlením do zvláštní třídy a pak si ji podědím? Jak jinak by jste tohle chtěli třeba řešit (a lépe).
Nechceš na to založit separé vlákno? Už jsme to tady tím OOP zaplevelili až hanba :)

... a nazvat ho "Programovací jazyky budoucnosti (funkcionální a OOP), zdělání (VŠ) je k ničemu", zdá se že tato při themata vždy organicky zkonvergují do jednoho spletence vláken.  ;D :P

To je tím, že tomu skoro nikdo nerozumí. Jak potvrdili v jednom psychologickém experimentu, podprůměrně inteligentní přeceňují své znalosti, kdežto ti inteligentní je naopak podceňují. Proto tolik vláken "VŠ je k ničemu".

1418
Vývoj / Re:Programovaci jazyk budoucnosti
« kdy: 20. 08. 2015, 16:17:05 »
Na DSL se dobře hodí Swift, dá se v něm definovat vlastní operátory, takže výsledný kód je hezky čitelný i pro neprogramátory. Apple slíbil, že Swift bude ještě v tomto roce open source. Někdo ale samozřejmě nejdřív musí napsat ten základ.

Swift mi na první pohled přijde jako horší F#. V F# můžete pro DSL použít tzv. computation expressions. Příkladem je například DLS query pro psaní dotazů (s pomocí vhodného typového poskytovatele nejen do DB)

Kód: [Vybrat]
query {
    for student in db.Student do
    join selection in db.CourseSelection on
          (student.StudentID = selection.StudentID)
    select (student, selection)
}

nebo async pro psaní asynchronního kódu nebo seq pro práci se sekvencemi.

Jazyk Agda je na tom ještě lépe - má mixfixové operátory - například if-then-else je jen knihovní funkce:

Kód: [Vybrat]
if_then_else_ : {A : Set} → Bool → A → A → A
if true then x else y = x
if false then x else y = y

Jo, Swift není moc flexibilní, ale je na tom lépe než Java, C# apod.

1419
Vývoj / Re:Programovaci jazyk budoucnosti
« kdy: 20. 08. 2015, 15:12:30 »
Na DSL se dobře hodí Swift, dá se v něm definovat vlastní operátory, takže výsledný kód je hezky čitelný i pro neprogramátory. Apple slíbil, že Swift bude ještě v tomto roce open source. Někdo ale samozřejmě nejdřív musí napsat ten základ.

1420
Vývoj / Re:Funkcionální jazyky.
« kdy: 20. 08. 2015, 03:08:24 »
Co konkrétně? Já se z Haskellu hodně inspiruju, a jeho praktiky používám i v OOP.
Já jsem konkrétně dost vystřízlivěl z propagandy, že OOP odpovídá tomu, jak skutečně myslíme. Z toho tvrzení, že OOP-uvažování odpovídá přirozenému způsobu práce s pojmy (Sysel je Savec, Savec je Strunatec...). Když se koukneš na to, o čem jsme se bavili teď, co to má propánakrále společného s (nám) přirozeným způsobem uvažování?! :)

Nedá mi to a připomenu dnes již starou polemiku mezi p. Viriusem a p.Čadou o tom, jak jsou na tom z hlediska třídního OOP třídy reálných a komplexních čísel. Vyplynulo z toho, že návrh OOP hierarchie není tak jednoduchý, jak by se mohlo zdát (a nepřímo vyplynula poučka, že dědičnost mnohdy přináší víc škody než užitku :D)

Čada je ObjC fanatik, doporučuju najít si diskuze, kde tvrdí, že jmenné prostory a šablony (resp. generics) jsou na nic. Taky někde "dokazoval", že dispatch v ObjC je rychlejší než v C++. To už hraničí s debilitou (mohu-li použít jeho styl vyjadřování v diskuzích). Nicméně dědičnost je v OOP skutečně zlo, i když do tohoto vlákna to asi nepatří.

1421
Vývoj / Re:programovaci jazyk budoucnosti
« kdy: 19. 08. 2015, 13:38:12 »
dam priklad chtel bych udelat agregator top 3 posts ze vsech mych subredditu za poslednich 24 hodin jako jednu html stranku tedy mam problem a mam cil- je tam na to api fce neumim pouzit

naivni predstava programovani budoucnosti:

log on reddit.com
get top lists last 24 hrs all of my subreddits
get first 3 posts of all these top lists
make html page of all of these 3 posts
show html
. Tak nějak vypadá AppleScript.

1422
Vývoj / Re:Je C++ dobrá volba na větší projekt?
« kdy: 04. 08. 2015, 04:39:20 »
Tak co se memory managementu týče, C++ je jednoznačně rychlejší, na tom se snad shodneme. Jestli to má být náročná aplikace, tak bych C++/C určitě zvážil. Celkově si prostě kvůli výkonu radši vyberu C/C++ aplikaci než něco v Javě. Ale je to něco za něco... když se vám runtime stará o paměť, tak se samozřejmě vyvíjí snáz. Jestli to je něco co se bude neustále vyvíjet a kde je rychlost vývoje důležitá, Javu bych zvážil.

No já jsem slyšel, že GC v HotSpot je vůbec nejrychlejší memory management (tzn. by měl být i efektivnější než implementace malloc). Těžko říct, jak to objektivně nějak srovnat. Asi celkový čas strávený alokacemi/dealokacemi u nějakého většího programu je nejmenší. Padlo to někde v přednášce  "Understanding Java Garbage Collection", co byla na Java One 2014 konferenci.

V GC je alokace O(1), malloc (nebo new) občas může trvat déle. U většiny aplikací je to stejně jedno.

1423
Vývoj / Re:Je C++ dobrá volba na větší projekt?
« kdy: 03. 08. 2015, 08:43:21 »
C++ je poněkud náročnější na programátora. Výhodou Javy je GC a knihovny. Nicméně pokud je k dispozici dobrý programátor, lze z C++ vyždímat víc.

1424
Vývoj / Re:Logické programovací jazyky?
« kdy: 22. 07. 2015, 16:27:46 »
Existuje spousta jazyků, kde se programování točí kolem (především) číselných datových typů.

Existují jazyky, které jsou zaměřeny primárně na logiku než na čísla apod.?

Již zmíněný Prolog. Dále lze mnoho problémů převést na SAT (plánování, parsing...), což je výroková logika. Syntaxí se Prologu podobá ASP (funkčně je to ale spíše SAT). Celkem dobře to je popsané na anglické Wikipedii.

1425
Takže základní otázka, kterou kladu v této diskusi, je: Jaký vedlejší obor, kromě oborů programování studujete, nebo který byste chtěli studovat?

Jak už někdo zmínil, fyzika není špatný nápad. Hodí se například při implementaci her a kdoví, třeba jednou bude všeobecně žádaná znalost kvantových technologií. Navíc si přitom člověk přirozeně a nenásilně procvičí (zde také zmíněnou) matematiku.

Další perspektivní obor je AI nebo obecněji kognitivní systémy, tam se prolínají IT, matematika, filozofie, psychologie atd.

Stran: 1 ... 93 94 [95] 96 97 ... 101