2023-06-28, 22:59
  #109
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av Bromskloss
Man rör sig med två sorters strängar i Rust. Jag kan inte riktigt förklara skillnaden utan att tänka efter och läsa på själv först, men skriver man bara

Kod:
"Alice"

får man en statiskt allokerad sträng (av typen "&str") inkompilerad, medan om man skriver som i exemplet du citerar får man ett värde av typen "String" någonstans på heapen. Jag tror i alla fall att det alltid eller åtminstone i normalfallet är så.
Ok, tror jag förstår principen, att "Alice" är hårdkodat och fixed length (C-style) medan String:: är ett dynamiskt objekt.
I exemplet skulle i så fall hårdkodade "Alice" räckt, om tesen var att visa ett enkelt och vackert språk.
Citera
2023-06-28, 23:13
  #110
Medlem
Bromsklosss avatar
Har ni hört om CrabLang? Det är Rust fast under annat namn, skapat efter att The Rust Foundation införde hårda regler för allt gällande ordet Rust, inklusive att man måste inleda sina texter med att klargöra att man inte hör ihop med The Rust Foundation, och att man på sina Rust-konferenser måste ha vapenförbud.

Krabban, som har blivit inofficiell logotyp för Rust, ägs tydligen inte av The Rust Foundation, så den används flitigt av CrabLang. Den är ändå bättre än Rusts "R i kugghjul" tycker jag.
Citera
2023-06-29, 00:17
  #111
Bannlyst
Citat:
Ursprungligen postat av Enterprise
Ok, tror jag förstår principen, att "Alice" är hårdkodat och fixed length (C-style) medan String:: är ett dynamiskt objekt.
I exemplet skulle i så fall hårdkodade "Alice" räckt, om tesen var att visa ett enkelt och vackert språk.

Jag använde String::from("Alice") istället för bara "Alice" i exemplet för att inte bara göra det "snyggt", utan även för att visa en av Rusts fördelar inom säkerhet och ägarskapshantering.

Genom att använda String::from får vi inte bara en flexibel och ändringsbar strängtyp, utan vi dra också nytta av Rusts smarta ägarskapssystem. Rusts ägarskapssystem tillåter oss att undvika farliga minnesfel och säkerställa trådsäkerheten i vår kod.

I detta enkla exempel skulle det ha varit tillräckligt att bara använda "Alice" som en hårdkodad sträng.


Bra uppmärksammat.
Citera
2023-06-29, 12:28
  #112
Medlem
Citat:
Ursprungligen postat av Enterprise
Kul med din entusiasm!
Just följande bit tycker jag inte är så vacker och effektiv:
Kod:
String::from("Alice")
När det i alla språk som jag känner till hade räckt att skriva "Alice"

Varför inte göra så här i stället?

Kod:
struct Person {
    name: String,
    age: u32,
}

impl Person {
    fn new<S: Into<String>>(name: S, age: u32) -> Person {
        Person { name: name.into(), age }
    }

    fn greet(&self) {
        println!("Hej! Jag heter {} och är {} år gammal.", self.name, self.age);
    }
}

fn main() {
    let person = Person::new("Alice", 25);
    person.greet();
}
Citera
2023-06-29, 12:36
  #113
Medlem
Citat:
Ursprungligen postat av Bromskloss
Man rör sig med två sorters strängar i Rust. Jag kan inte riktigt förklara skillnaden utan att tänka efter och läsa på själv först, men skriver man bara

Kod:
"Alice"

får man en statiskt allokerad sträng (av typen "&str") inkompilerad, medan om man skriver som i exemplet du citerar får man ett värde av typen "String" någonstans på heapen. Jag tror i alla fall att det alltid eller åtminstone i normalfallet är så.

&str är en sträng slice, en immutable referens till en sträng någonstans i minnet som du inte har ägandeskap till och där med inte kan ändra.

String är ett objekt som har ägandeskap och kan muteras, generellt så finns det väldigt få anledningar till att någonsin ta in en String i en metod i rust utan normalt så använder man &str eller om man absolut behöver mutera strängen så tar man in &String.

Däremot om du returnerar så kan det användas.
Citera
2023-07-19, 08:52
  #114
Medlem
Citat:
Ursprungligen postat av Bromskloss
Har ni hört om CrabLang? Det är Rust fast under annat namn, skapat efter att The Rust Foundation införde hårda regler för allt gällande ordet Rust, inklusive att man måste inleda sina texter med att klargöra att man inte hör ihop med The Rust Foundation, och att man på sina Rust-konferenser måste ha vapenförbud.

Krabban, som har blivit inofficiell logotyp för Rust, ägs tydligen inte av The Rust Foundation, så den används flitigt av CrabLang. Den är ändå bättre än Rusts "R i kugghjul" tycker jag.

Har inte hört talas om det innan. Verkar ju vara exakt samma som Rust, som du skriver, vad gäller själva sprråket men utan de hemska reglerna för logotyper osv.

Jag tänkte lära mig Rust i våras efter att jag hade blivit övertygad av en person jag vet har koll. Jag började läsa på och kolla tutorials på tuben men precis då exploderade communityn pga de nya policyreglerna.

Då bestämde jag mig för att strunta i Rust och fortsätta min embedded-karriär med C och C++. Trist, Rust verkar vara ett intressant språk men alldeles för mycket corprate-tjafs.
Citera
2023-08-01, 14:49
  #115
Medlem
Kip.Kinkels avatar
För att programmera nukes (nämns i förbigående i topic) så är det ADA som används, inte C. Very safe... ADA kan vara att föredra framför C i mycket säkerhetskritiska embedded realtidssystem som försvar och luftfart. Koden ska då köras på ett Real Time Operating System (RTOS) som möjliggör mulitrådad exekvering. Känner någon till om Rust klarar sådana implementationer? Jag menar om man är intresserad av att hobbyleka med att programmera microprocessorer mer avancerat än Arduino. Är det type safe? Inte mycket skrivet om detta. Bara det kan vara en anledning att välja bort Rust. Communityn är för liten.
__________________
Senast redigerad av Kip.Kinkel 2023-08-01 kl. 14:53.
Citera
2023-08-01, 17:30
  #116
Medlem
Bromsklosss avatar
Citat:
Ursprungligen postat av Kip.Kinkel
Koden ska då köras på ett Real Time Operating System (RTOS) som möjliggör mulitrådad exekvering. Känner någon till om Rust klarar sådana implementationer? Jag menar om man är intresserad av att hobbyleka med att programmera microprocessorer mer avancerat än Arduino. Är det type safe?

Rust på mikrokontrollrar ska finnas på plats nu, sägs det. För mig är det viktigt att det går. Jag har dock inte haft tillfälle att sätta mig in i det än. Typsäkert är det väl i samma utsträckning som annan Rust-kod.

Utbudet av realtids-OS, eller hur smidigt det är att kompilera Rust-kod för befintliga realtids-OS, känner jag inte till.

(Det är alltid roligt när det skrivs i den här tråden!)
Citera
2023-08-01, 17:44
  #117
Avstängd
Citat:
Ursprungligen postat av abcabc

Jag har läst att USA militärindustri tidigare haft krav att använda ADA, men på senare år i ökande grad gått över till C (somär ett mycket äldre språk).

Vad tror ni? Kommer vi få leva med C/C++ i 20 år till för inbyggda system, operativsystem och liknande?

Detta är det enda relevanta av allt du skriver då resten bara är typiska "jag gillar bäst" åsikter bland typiska utvecklare.

C/C++ kommer vara grundbulten en låååång tid frammåt.

Bara utvecklingen i sig av C++ är fantastisk. Kolla vart det är på väg och vilka problem Stroustrup & Co löser.

Någon som jobbat med script-språk kan i dag mycket enklare gå in i C++ än för 10 år sedan.

Kompilatorerna som finns och används är extremt testade, dokumenterade och betrodda.
Där är en stor faktor varför Militär industri svängt om till C.
Även Svensk industri såsom SAAB Aerodynamic har använt ADA95 många decennier då det varit den enda gpdkända betrodda kompilatorn och WM, för militära syften.

All seriös Spelutveckling görs med C/C++/C# osv.

Problem du beskriver existerar bara om du sätter dig med ett blankt papper och en main void.

Annars används ramverk och allt känns mer som script språk med modern C++ snarare än gammal dassig C kod.

Och du får bäst kontroll/performance av den faktiska maskinkoden som körs, förutom Assembler.

Så nej, inget hot på himmelen mot denna tron. Ingenting alls.
Citera
2023-08-01, 17:56
  #118
Medlem
Kip.Kinkels avatar
Citat:
Ursprungligen postat av Bromskloss
Rust på mikrokontrollrar ska finnas på plats nu, sägs det. För mig är det viktigt att det går. Jag har dock inte haft tillfälle att sätta mig in i det än. Typsäkert är det väl i samma utsträckning som annan Rust-kod.

Utbudet av realtids-OS, eller hur smidigt det är att kompilera Rust-kod för befintliga realtids-OS, känner jag inte till.

(Det är alltid roligt när det skrivs i den här tråden!)

Om exempelvis freeRTOS kan köra Rust vet jag inte, ska kolla upp det senare. De flesta kör i C. Sedan är det inte bara RTOS som sätter gränserna, utan utbudet av kompilatorer för olika arkitekturer. Förmodligen ser det väldigt skralt ut där för Rust, och språk med många år på nacken som C och ADA har därför en fördel jämfört med Rust. Det finns stora communities, bra manualer, och så vidare. I synnerhet C.
Citera
2023-08-02, 05:22
  #119
Medlem
Citat:
Ursprungligen postat av Kip.Kinkel
Om exempelvis freeRTOS kan köra Rust vet jag inte, ska kolla upp det senare. De flesta kör i C. Sedan är det inte bara RTOS som sätter gränserna, utan utbudet av kompilatorer för olika arkitekturer. Förmodligen ser det väldigt skralt ut där för Rust, och språk med många år på nacken som C och ADA har därför en fördel jämfört med Rust. Det finns stora communities, bra manualer, och så vidare. I synnerhet C.

Rust använder llvm under ytan så det är sannolikt inte speciellt svårt att targeta valfri arkitektur om man vill.
Rust kräver heller ingen runtime (kompilerat med nostd) så det finns inget som hindrar att du skriver i rust om man nu vill det.
Citera
2023-08-02, 19:20
  #120
Medlem
Bromsklosss avatar
Citat:
Ursprungligen postat av JohnnyMnemonic
Rust kräver heller ingen runtime (kompilerat med nostd)

Vet du hur det fungerar, det där med no_std? Om man använder bara någon liten del av standardbiblioteket, kan man inte då få den lilla biten inkompilerad och vara utan resten? Varför fästs det så mycken vikt vid att vara helt utan standardbiblioteket?
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in