• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    XCHAOSANSI C/C99 (specifikace), GNU C (gcc, glibc), Tiny C (tcc) a POSIX - ne nutně C++,g++,libstdc++ nebo Win32 API
    DANIELSOFT
    DANIELSOFT --- ---
    ad "vyšší jazyk, který se překládá do C": narazil jsem na jazyk Vala https://wiki.gnome.org/Projects/Vala/Tutorial - ale zas tak moc jsem ho nezkoumal: v linuxovém světě se sem tam používá na nějaké GUI aplikace
    REDGUY
    REDGUY --- ---
    XCHAOS: něco jiného by potřeba být mohlo 8))

    tyhle debaty jsou ztráta času. - ano, mas pravdu. Pokud argumentace skonci u toho "nejake jine pouziti urcite existuje, ktere teda nevim, ale urcite existuje a sice je to bastl, ale urcite by se to hodilo", tak to je ztrata casu 8)

    Hele, nauc se par dalsich jazyku. Go, Swift, ObjC, Rust, zkusi i vyrazne odlisny jako Lisp/Clojure, Scala, Haskell... neco si o nich poradne precti, zkus si v nich neco napsat, at mas predstavu, jak to delal chytry lidi. A jestli si i pak budes myslet, ze to zvladnes lip, s chuti do toho...
    JANFROG
    JANFROG --- ---
    XCHAOS: 3) vymyslet něco ještě příjemnějšího, než Python, dynamicky typovaného a úplně beze stop C (a např. by se z toho generoval přeložitelný C zdroják). (po tomhle by možná i poptávka byla)

    S timhle mam bohate zkusenosti (10+ let kazdy pracovni den :-) Moje rada zni - nedelej to. Cokoliv prekladat do C a to pak prekladat dal to zpusobi jen bolesti hlavy, sedive vlasy a kruhy pod ocima.

    Napsat korektni C kod jehoz chovani je alespon definovane je velmi obtizne (a ja si troufam tvrdit, ze nemozne :-). V pripade generovaneho C kodu je to jeste horsi, protoze ten kod nikdo nikdy nebude cist
    a tudiz se na problem neprijde. Debugovat problemy v tom je peklo na koleckach.

    Alternativa muze byt pouzit LLVM / libjit / Lightning nebo tak neco, neb to ma definovanejsi semantiku. Ale neni to bez problemu (takova LLVM instrukce "select" se na x86_64 prelozi na "cmov" ktery ma nektere nepekne sideeffecty vedouci pak (nekdy :-) segfaultu...ladit tohle take neni hezka zalezitost.

    Tam kde ted pracuji jsme se to rozhodli resit radikalne - zadne C, zadne LLVM, nic. Proste rovnou generujeme COFF/PE (pripadne ELF) z naseho jazyka vlasnima silama. Je to zabava, ale dost prace :-)
    XCHAOS
    XCHAOS --- ---
    REDGUY: no ano, zrovna .sort() není potřeba, ale něco jiného by potřeba být mohlo... literály jsou mocný nástroj, samozřejmě to není čistý, ale jinak ztrávíš mládí na tom, že děláš vše konfigurovatelné přes externí konfiguráky apod. .. občas je dobrý nejdřív program napsat nějakou "quick and dirty" metodou a pak k němu teprve bastlit interface

    tyhle debaty jsou ztráta času. jsem prostě líný dodělat tu jednu, dvě zásadní věci do svého makrojazyka a pak s ním vyrazit do boje proti trollům...
    XCHAOS
    XCHAOS --- ---
    DANIELSOFT: vím, že existuje :-) už nějaký čas i tuším proč :-)
    DANIELSOFT
    DANIELSOFT --- ---
    XCHAOS: ad 2) - co ObjectiveC ?
    REDGUY
    REDGUY --- ---
    XCHAOS: co kdybych u uměl víc - no mozna bys pochopil, ze tvoje fnukani, ze nemuzes napsat
    a = [3,2,1].sort()
    je dost mimo, protoze to je neco, co neni realne potreba.

    Hele, Python ma svoje problemy (stejne jako vsechny jazyky). Ale tvuj pristup "zbezne si prohlednu prvni kapitolu Introduction to Python for dummies a zacnu kritizovat par nahodnejch veci, ktery mi padly do oka aniz bych poradne chapal jak ten jazyk funguje a jaky cile jeho autori sledovali"... no, to je smesny.
    XCHAOS
    XCHAOS --- ---
    REDGUY: ano, to je tvůj závěr ze všeho, že ho "moc neumím". teď si vem, že i když ho "moc neumím", tak jsem stihnul narazit na několik drobných nepohodlností.. co kdybych u uměl víc? :-)
    REDGUY
    REDGUY --- ---
    DAVIDOWITCH: Pokud C umis aspon trosicku a Python vubec, tak ano 8)
    XCHAOS
    XCHAOS --- ---
    DAVIDOWITCH: jak na co :-) co se "literálů" týče s anonymními strukturami je tam dost problém a anonymní funkce nemá vůbec, například :-)

    já víceméně uvažuju třemi až čtyřmi směry, na poli programování:
    1) vylepšit si Céčko vlastními "dialektem" (asi jako javascriptové knihovny/toolkity), to tu bylo mocně napadeno a já se zasekl, že to nechci uvolnit polovičaté, ale fakt mocné (že nikdo nepozná, že je pod tím C) (a asi jediný, kdo něco takového poptává, jsem já :-)
    2) vymyslet něco jako C++, co nebude C++, ale bude to přímo obsahovat fragmenty C kódu (a např. by se z toho strojově generoval přeložitelný C zdroják) .. tady mi ale přijde fakt jednodušší naučit se rovnou C++ :-)
    3) vymyslet něco ještě příjemnějšího, než Python, dynamicky typovaného a úplně beze stop C (a např. by se z toho generoval přeložitelný C zdroják). (po tomhle by možná i poptávka byla)

    případně ještě 4) další interpretr, napsaný v C, ale těch jsou už kvanta a trh je tímhle směrem nasycen (a ztrací to kouzlo i tím, že jakékoliv extenze základů jazyka znamenají znovu návrat na vrstvu C).
    REDGUY
    REDGUY --- ---
    XCHAOS: prostě to navrhovali moc puristi a ne praktici Hele, xchaosi, poslednich par zprav jsi oddemonstroval, ze Python fakt moc neumis, takze mozna by ses mel zdrzet hodnoceni, jak moc je "puristicky" a jak moc "prakticky", co rikas? 8

    btw, pokud opravdu nutne potrebujes "mutable stringy", tak samozrejme na to prostredky jsou. Co je ale pravdepodobnejsi, ze je ve skutecnosti nepotrebujes. A nez odesles zpravu s protiprikladem, tak se prosim velmi peclive zamysli jestli dava realny, prakticky smysl 8)
    DAVIDOWITCH
    DAVIDOWITCH --- ---
    XCHAOS: chapu to spravne ze Ccko je praktictejsi jazyk nez python? :-D
    XCHAOS
    XCHAOS --- ---
    REDGUY: vždyť píšu, že v Pythonu ne. ale obecně, zavolat metodu na literální zápis kontejneru může dávat.

    no dobře, tak nevrací self, ale prostě občas by se mutable string mohl hodit (třeba s jinýma úvozovkama). jenže pak by se měly ty metody nad mutable a imutable objekty chovat stejně, a to už by se někomu nelíbilo.. prostě to navrhovali moc puristi a ne praktici, no.
    REDGUY
    REDGUY --- ---
    XCHAOS: ale máš třeba i metody jako .foreach(), - v pythonu? Opravdu?

    prostě samozřejmě si jde představit literál, od kterého potřebuješ zavolat metodu:
    "nEjAky TEXT co vznikl jako copy+paste do zdrojaku".lower()
    - az na to, ze rec byla o literalech kontejneru 8)) Jo, jasne, string je vlastne taky kontejner 8))

    ha, proč lower() vrací self? - ne, nevraci. Boha jeho... premejslis o tom co pises aspon trosicku? Nevidis, ze hned tvoje nasledujici veta protože stringy jsou immutable? to vylucuje?

    naopak se mi líbí relativně nejvíc - a co teprv kdyby ses ho jeste navic poradne naucil, nez o nem zacnes rozjimat. To by bylo teprv neco 8)
    XCHAOS
    XCHAOS --- ---
    REDGUY: coder je v některých firmách dokonce i pracovní zařazení, takže nějaká definice existovat musí :-) "C zdroják psanej coderem" je taková jako hezká metafora, která přesnou definici mít nemusí, imho.
    XCHAOS
    XCHAOS --- ---
    REDGUY: mno... :-) to je jen o nedostatku představivosti... vím, že v Pythonu se to dělá jinak (naštěstí..), ale máš třeba i metody jako .foreach(), apod. .. prostě samozřejmě si jde představit literál, od kterého potřebuješ zavolat metodu:

    >>> "nEjAky TEXT co vznikl jako copy+paste do zdrojaku".lower()
    'nejaky text co vznikl jako copy+paste do zdrojaku'

    (ha, proč lower() vrací self? protože stringy jsou immutable? to ovšem není literál jako literál, najednou :-) jako já netroluju proti Pythonu, naopak se mi líbí relativně nejvíc ze všech věcí, co někdo doopravdy používá, na druhou stranu se mi dotkly výpady proti mému projektovaném ne-C++ dialektu čistého C, které mě obviňovaly z nekonzistence.. ovšem ve světě programovacích jazyků je nekonzistence spíš norma... resp. nejde domyslet nikdy vše)

    no ok, muselo by to udělat kopii původního seznamu, tak to asi funguje jinak - originál to nechá na pokoj:
    >>> a=[2,1]
    >>> b=sorted(a)
    >>> a
    [2, 1]
    >>> b
    [1, 2]

    každopádně je trochu matoucí, že sorted není metoda, a že literál není vždycky literál (právě, že jedině jako céčkař důvody pro immutable stringy v Pythonu chápu, třeba při práci s utf-8 to umožňuje zachovat si příčetnost... ale kdybych přišel do toho světa jako úplný nováček, tak asi začnu kroutit hlavou... je fakt, že lidi, co by nad tím kroutili hlavou, odradí od Pythnu už to, že whitespace má syntaktickou funkci.. naštěstí :-)
    REDGUY
    REDGUY --- ---
    XCHAOS: literálního zápisu kontejneru v Pythonu nesetkal, podle mě souvisí s tím, že si nevybavuju jakoukoliv metodu, u které by to bylo praktické. - coz mozna uzce souvisi s tim, ze podobne manipulace s listovym literalem jsou v praxi dost zbytecne.

    sorted je prostě funkce, která zavolá metodu sort a vrátí parametr - LOL. _ne_. Co se trochu zamyslet a zkusit to znova?
    REDGUY
    REDGUY --- ---
    XCHAOS: Aha. Takze "poznat coderskej kod" je magicka schopnost, kterou disponujes, ale u ktere nedokazes popsat, jak funguje. A protoze nejsi ani schopnej porad popsat, kdo vlastne je ten tvuj "coder", tak vlastne muzes jen tak nahodne placnout "tohle psal coder, tohle nepsal".

    Takze zase dalsi pripad, kdy si XChaos nahodne nadefinuje terminy podle toho jak se mu hodi, s nulovym prinosem. Ok, diky 8)
    XCHAOS
    XCHAOS --- ---
    REDGUY: já nevím, já řekl, že když mi nějakej ukážeš, tak ho poznám. jak poznám, že je nějaká barva zelená nebo červená? no.. vidím to, pokud nejsem barvoslepej. (pokud ano, musím změřit vlnovou délku.. možná jsou teď nějaký appky pro barvoslepý, který dělaj z barev co snímá smartphone realitime textury nevím...)
    XCHAOS
    XCHAOS --- ---
    REDGUY: s tím "sorted" je to dobrá připomínka, nemám to až tak v paži (já ani netvrdil, že všechno má vracet self jako návratovou hodnotu...).

    vtipné ovšem je, že sorted() v Pythonu není metoda kontejneru, nedá se pro ní tedy využít ten zápis volání metody nad literální formou zápisu kontejneru :-) (sorted je prostě funkce, která zavolá metodu sort a vrátí parametr, zase je na tom hezky vidět výhoda dynamického typování)

    no ale
    >>> sorted([2,1])
    [1, 2]
    zas tak neokouzlí, jako by okouzlilo [2,1].sorted(), akorát že to už nelze :-) zase ruby má i 3.times, zatímco Python je v tomhle takovej konzervativní.

    fakticky to, že jsem se s voláním metody u literálního zápisu kontejneru v Pythonu nesetkal, podle mě souvisí s tím, že si nevybavuju jakoukoliv metodu, u které by to bylo praktické. takže mi příjemně překvapilo, že to jde - a nepřekvapilo, že je to současně k ničemu :-)
    Kliknutím sem můžete změnit nastavení reklam