121
Vývoj / Re:Je Rust jazyk budoucnosti?
« kdy: 22. 12. 2022, 11:53:30 »
P.S. BTW zajímalo by mne, zda by šlo v Rustu nějak zprovoznit toto: https://ericniebler.com/2013/07/16/f-algebras-and-c/
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.
Jinak nedávno kolega v práci ukazoval zajímavou vlastnost const funkcí v Rustu - je možné v nich psát asserty, a tím pádem staticky verifikovat některé invarianty. Ukazoval, že může vytvořit pole statické velikosti, protlačit to skrz nějaký 3rd party kód jako slice (dynamická velikost) a na druhém konci zkonvertovat zpátky na původní typ (konstantní velikost), s tím, že kompilátor velikost ověří staticky, nemusí se dělat runtime check.No vidíš, to je přesně ono, ověřování invariantů. Rozdíl je jen v tom, že v jazycích jako Idris či Lean (nebo SPARK, ale tam se používá jiná metoda) překladač provede verifikace při překladu (nemusí se dělat runtime check), i když velikost není konstantní. (Už to asi nechceme hlouběji rozebírat, ale umožňují to sigma typy. Jinak jo, v Rustu se dá s generickými parametry taky dělat psí kusy a časem třeba přidají i něco à la Lean, nejen typy, ale i plnohodnotnou funkcionální sémantiku - Swift už ji nějakou dobu má, takže je ověřené, že to jde i v tomto typu jazyků.)
v Německu, jak němci jsou bohatí, tak v obchodech je jiný sortiment. Stačí si zajít do elektra nebo kauflandu v německu a v čr, ten rozdíl je hned znát.Bez pochyby.
To znám z Miami Beach, byl jsem tehdy doktorandem na jistém prominentním pracovišti a mohl jsem tam strávit pár týdnů. Pak mě to přestalo bavit, tak jsem se přesunul na Havaj, holt konference. A pak na Bali, další konference. Fajn životTampa je skvělá lokalita, strávil jsem tam mnoho měsíců a nikde se mi nežilo lépe - a hlavně svobodněji - z člověka tam úplně spadne pocit takového toho podpravového vychovávání a šikany ze strany státu. A ekonomická dynamika je úplně jinde, než jsem viděl kdekoliv v Evropě.Tak asi se nemusime bavit o nejakem rozpadlem baraku na Vysocine, stejne jako se nemusime bavit o nejakem rozpadlem baraku nekde v Detroitu. Prvni dum jsem kupoval v Tampa, slusna lokalita.4. dum v US - koupil jsem ho druhy rok po imigraci za hotovost
Možná, ale kde? Jak jsem psal, já jsem taky koupil za hotové dům na Vysočině za cenu průměrné pražské garáže. Nemluvě o tom, že zvlášť pro USA ve srovnání s Evropou platí, že není dům jako dům a navíc k tomu není daň z nemovitosti jako daň z nemovitosti.
Zajímá mi dobrý design veřejného API ale i něčeho na způsob domain specifického jazykahttps://en.wikipedia.org/wiki/Compilers:_Principles,_Techniques,_and_Tools
Doporučili byste mi nějakou literaturu v tomto směru? Přiznávám že nemám moc teoretických základů v Computer Science
Z hlediska Evropy, a IT zvlášť, moc lepších míst k životu není (když tedy skousnete počasí).Počasí a knackers.
Zkusil bych spíš Irsko (platy podobné, náklady nižší […]Nájem 2+kk v Dublinu €2000/měsíc. To jen k doplnění diskuse.
frankofonní Švýcaři si vesměs stěžují na své spoluobčany, že se s nimi odmítají bavit německyCo já viděl, tak mezi sebou mluví anglicky a nikomu to nepřijde divné. Jen v Grisonsku mě nutili učit se rétorománsky.
Možná si myslí, že ze školy vyleze jako senior a firmy mu utrhají ruceEšte raz si prečítaj moj príspevok a ak nevidíš rozdiel medzi Fullstack developer po škole a mnou nuž tvoja smola.ehm...
Chcem sa spýtať že či je reálne že po 2 rokoch čo dostudujem nájdem vo Švajčiarsku prácu ako Fullstack developer? ....
To nemusí děsit, je to blábol.120 - 160 kCHF / rok. To ale pro pohodlný živou čtyřčlenné rodiny nestačilo, takže jsem se vrátil do ČR.Tak toto ma docela vydesilo. Momentalne zijem a pracujem vo Viedni cca uz 2 roky a planoval som hladat pracu vo Svajciarsku.
A ten kus kódu by byl?
inductive Edge : Type where
| mkEdge : Nat -> Nat -> String -> Nat -> List Edge -> Edge
def Edge.left : Edge -> Nat
| mkEdge left _ _ _ _ => left
def Edge.right : Edge -> Nat
| mkEdge _ right _ _ _ => right
def Edge.category : Edge -> String
| mkEdge _ _ category _ _ => category
def Edge.level : Edge -> Nat
| mkEdge _ _ _ level _ => level
def Edge.children : Edge -> List Edge
| mkEdge _ _ _ _ children => children
partial def Edge.tree (edge : Edge) : String :=
edge.category ++
if edge.children.isEmpty then "" else
"(" ++ (edge.children.map fun e => e.tree).foldl (fun x y => x ++ (if x == "" then "" else ",") ++ y) "" ++ ")"
structure Chart where
edges : Array (List Edge)
def mkChart (len : Nat) : Chart := { edges := mkArray len [] }
def addEdge (chart : Chart) (edge : Edge) : Chart :=
let idx := edge.left
{ chart with edges := chart.edges.set! idx (edge :: chart.edges[idx]!) }
def addEdges (chart : Chart) : List Edge -> Chart
| [] => chart
| e :: es => addEdges (addEdge chart e) es
structure Rule where
lhs : String
rhs : List String
mutual
partial def applyRule'' (lhs : String) (rhs : List String) (chart : Chart) (start : Nat) (maxLevel : Nat) (children : List Edge) (edge : Edge) (level : Nat) : List Edge :=
match rhs with
| r :: rs =>
if r == edge.category then
let maxLevel := if edge.level > maxLevel then edge.level else maxLevel
if rs == [] then
if maxLevel == level then
[.mkEdge start edge.right lhs (level+1) children.reverse]
else []
else if edge.right < chart.edges.size then
applyRule' lhs rs chart chart.edges[edge.right]! start maxLevel children level
else []
else []
| [] => []
partial def applyRule' (lhs : String) (rhs : List String) (chart : Chart) (edges : List Edge) (start : Nat) (maxLevel : Nat) (children : List Edge) (level : Nat) : List Edge :=
match edges with
| [] => []
| e :: es => applyRule'' lhs rhs chart start maxLevel (e :: children) e level ++ applyRule' lhs rhs chart es start maxLevel children level
end
partial def applyRule (rule : Rule) (chart : Chart) (idx : Nat) (level : Nat) : List Edge :=
if idx == chart.edges.size then [] else
applyRule' rule.lhs rule.rhs chart chart.edges[idx]! idx 0 [] level ++ applyRule rule chart (idx+1) level
def applyRules'' (rules : List Rule) (chart: Chart) (level : Nat) : List Edge :=
match rules with
| [] => []
| r :: rs => applyRule r chart 0 level ++ applyRules'' rs chart level
partial def applyRules' (rules : List Rule) (chart: Chart) (level : Nat) : Chart :=
let newEdges := applyRules'' rules chart level
if newEdges.isEmpty then chart else applyRules' rules (addEdges chart newEdges) (level+1)
def applyRules (rules : List Rule) (chart: Chart) : Chart :=
applyRules' rules chart 0
to dokážem zarobiť aj v Česku.Jako fullstack developer čerstvě po škole?
ve francouzských kantonech jsme se měli dost velký problém domluvit i německyTuhle zkušenost mám taky, ale to je němčina, ne AJ.
v obou zemích platí že se s tebou úředníci nebudu bavit anglicky, mají to zakázáno)To je v Německu nějaká novota? Já tam pár let bydlel, posílali jsme tam mnoho studentů a nikdy na úřadech s AJ problém nebyl.
nepočítej že se s tebou někdo bude vybavovat anglickyTohle pravda není ani omylem.