l0mf0mgl0mbl0og Skrevet 10. januar 2020 Del Skrevet 10. januar 2020 1 minute ago, Gavekort said: Vi snakker ikke om C. Vi snakker om C++ i sammenheng med embedded der 90% av hva du kanskje forbinder med C++-programmering er tvilsom bruk. Du kan sikkert krangle deg frem til en eller annen innsnevret variant av C++ som kunne tilfredsstilt mine krav for gadgets som templates og overloading, men ærlig talt så har tiden allerede løpt ut for salgspitchen. Hvis du snakker om C++ for > 20 år siden så har du kanskje rett? Men C++ for embedded er langt fra tvilsomt. Da er det nok du som ikke henger litt med... 1 Lenke til kommentar
Gavekort Skrevet 10. januar 2020 Del Skrevet 10. januar 2020 (endret) l0mf0mgl0mbl0og skrev (49 minutter siden): Hvis du snakker om C++ for > 20 år siden så har du kanskje rett? Men C++ for embedded er langt fra tvilsomt. Da er det nok du som ikke henger litt med... Moderne C++ er desto verre da det bare abstraherer bort enda mer kontroll. Jeg vet ikke hva du anser som embeddedutvikling, men hva ser du for deg at jeg skal bruke auto og smartpointers til? Jeg bruker ikke standard C data typer en gang fordi det gir tap av kontroll. Jeg bruker stdint fordi da vet jeg nøyaktig hva som ligger bak en variabel når jeg omsider må angripe det på bit-nivå. Du kan godt prøve å rakke ned på hvor mye jeg henger med i industrien, men om målet her er å overbevise meg som utvikler til å ta i bruk C++ i profesjonell sammenheng så går dette svært dårlig. Jeg er klar over at C++ er mulig å bruke i embedded sammenheng. Poenget er at uten STL, inheritance, auto og ukritisk bruk av smart pointers og templates så er dere en dørselger som prøver å selge meg en relativt dårlig spikerpistol til å erstatte en hammer, som om mangel på overloading var en daglig irritasjon for oss som skriver C. Jeg synes C++ er et flott språk på datamaskiner med et operativsystem, men jeg personlig anser C++ som et kontroversielt og amatørmessig valg på mikrokontrollere, bedre egnet for eksperimentelle hobbyprosjekter for C++ disipler, uten at det er noe i veien med det. Endret 10. januar 2020 av Gavekort 2 Lenke til kommentar
0laf Skrevet 10. januar 2020 Del Skrevet 10. januar 2020 Ser ikke helt problemet, integrerte systemer, "embedded", kan være så mangt. Det er vel maskinvare og formål som bestemmer hvilket språk man velger? Dersom man har maskinvare "nok", og kan gjøre ting lettere med C++, så er det vel ikke noe i veien for å bruke C++, med de bibliotekene og det man trenger. Mange ganger er dessverre C++ for tungt og tregt, med for lite kontroll, å da man velger man vel C i stedet. Noen ganger er selv C for abstrahert, og det kan være behov for assembly i stedet. Simulerer man kretser, er man helt avhengig av HDL (Hardware Description Language), som Verilog eller VHDL, for eksempel hvis man har FPGA'er i maskinvaren. Det var verre før, når språk som asm, abel, stapl med flere, var mer eller mindre standard. 1 Lenke til kommentar
Gavekort Skrevet 10. januar 2020 Del Skrevet 10. januar 2020 (endret) Når jeg sier embedded så snakker jeg om f.eks 8-bit mikrokontrollere med 8KB RAM og 32KB Flash, der store deler av koden er knyttet opp til maskinvaren på bits and bytes nivå, med MMIO, shift-register, bitmasking, DMA, atomics, tyning av RAM-bruk, unngå heap-allokering og rekursjon som pesten, ta to bits fra denne byten og putt inn i 0x2000A5FE, pass på at denne interrupt-rutinen har en runtime på mindre enn 2 millisekunder slik at du ikke bryter sanntid, osv. Til og med litt assembly om du er uheldig... Jeg klarer ikke å se for meg verdien i å dra slike ting opp og ned i tunge abstraksjonslag uten at dette bare blir massivt med boilerplatekode fra en eksperimentell teknologistack. Kanskje om jeg hadde hevet inn et sanntidsoperativsystem og gjort en skilsmisse mellom hardwarestyring og "applikasjonslogikk" så kunne det kanskje hatt sin verdi om sistnevnte har høy kompleksitet. Men om vi er på dette nivået her så begynner C++ og Linux på en SoC å bli et bedre alternativ. Som jeg nevnte så liker jeg godt C++, men når jeg skriver C++ på toppen av et operativsystem så gjør jeg noe feil om maskinvaren ikke er abstrahert helt bort. Det jeg prøver å gi inntrykk for er at embedded er mindre som ressursknappe datamaskiner og mer som C-språket på et kognitivt nivå med assembly. Endret 10. januar 2020 av Gavekort 1 Lenke til kommentar
l0mf0mgl0mbl0og Skrevet 10. januar 2020 Del Skrevet 10. januar 2020 (endret) 3 hours ago, Gavekort said: Moderne C++ er desto verre da det bare abstraherer bort enda mer kontroll. Jeg vet ikke hva du anser som embeddedutvikling, men hva ser du for deg at jeg skal bruke auto og smartpointers til? Jeg bruker ikke standard C data typer en gang fordi det gir tap av kontroll. Jeg bruker stdint fordi da vet jeg nøyaktig hva som ligger bak en variabel når jeg omsider må angripe det på bit-nivå. Du kan godt prøve å rakke ned på hvor mye jeg henger med i industrien, men om målet her er å overbevise meg som utvikler til å ta i bruk C++ i profesjonell sammenheng så går dette svært dårlig. Jeg er klar over at C++ er mulig å bruke i embedded sammenheng. Poenget er at uten STL, inheritance, auto og ukritisk bruk av smart pointers og templates så er dere en dørselger som prøver å selge meg en relativt dårlig spikerpistol til å erstatte en hammer, som om mangel på overloading var en daglig irritasjon for oss som skriver C. Jeg synes C++ er et flott språk på datamaskiner med et operativsystem, men jeg personlig anser C++ som et kontroversielt og amatørmessig valg på mikrokontrollere, bedre egnet for eksperimentelle hobbyprosjekter for C++ disipler, uten at det er noe i veien med det. Nye C++ gir deg mer muligheter uten å ofre performance. Med constexpr osv. Du må ikke bruke RTTI og this pointer heller, men jeg trodde du visste dette? For CRTP har eksistert siden 1989-1995... https://en.wikipedia.org/wiki/Curiously_recurring_template_pattern https://solarianprogrammer.com/2017/12/27/cpp-17-constexpr-everything-as-much-as-the-compiler-can/ De som mener C++ er tungt og tregt, har ikke satt seg inn i (moderne) C++. Endret 10. januar 2020 av l0mf0mgl0mbl0og Lenke til kommentar
Gavekort Skrevet 11. januar 2020 Del Skrevet 11. januar 2020 l0mf0mgl0mbl0og skrev (13 timer siden): De som mener C++ er tungt og tregt, har ikke satt seg inn i (moderne) C++. Jeg har aldri sagt at C++ er tungt og tregt. Når jeg sier tungt så snakker jeg om boilerplate i en kontekst av unødvendig abstrahering. Jeg har ikke lyst til å diskutere videre når du insinuerer og rakker ned på min påståtte kunnskap i hvert innlegg. Det er umoden og uhøflig oppførsel. 1 Lenke til kommentar
PosteMonopolet Skrevet 11. januar 2020 Del Skrevet 11. januar 2020 Kotlin blir vel størst innan 10 år Lenke til kommentar
BjartmarO Skrevet 12. januar 2020 Del Skrevet 12. januar 2020 (endret) On 1/9/2020 at 1:13 PM, Gavekort said: Det C++ tilbyr er kjekt for programmere, men er kaos for en som ønsker kontroll over systemet sitt. Det er en litt drøy påstand. For små systemer er det kanskje korrekt. Men for større og mer sammensatte systemer, som f.eks. Unreal Engine eller Photoshop, så finnes det tross alt gode grunner til at man velger C++ fremfor C. Grunnen er nettopp at man vil ha kontroll, og ikke kaos. Endret 12. januar 2020 av BjartmarO Lenke til kommentar
Gavekort Skrevet 12. januar 2020 Del Skrevet 12. januar 2020 BjartmarO skrev (Akkurat nå): Det er en litt drøy påstand. For små systemer er det kanskje korrekt. Men for større og mer sammensatte systemer, som f.eks. Unreal Engine eller Photoshop, så finnes det tross alt gode grunner til at man velger C++ fremfor C. Grunnen er nettopp at man vil ha kontroll, og ikke kaos. Jeg tror bare vi har en forskjellig definisjon av kontroll. Jeg tror du tenker på komplekse programvarearkitekturer, og der jeg er enig i at C gir tap av kontroll i funksjonsmåte. Det jeg mener med kontroll er kontroll over hva prosessoren din gjør. Lenke til kommentar
BjartmarO Skrevet 12. januar 2020 Del Skrevet 12. januar 2020 57 minutes ago, Gavekort said: Jeg tror bare vi har en forskjellig definisjon av kontroll. Jeg tror du tenker på komplekse programvarearkitekturer, og der jeg er enig i at C gir tap av kontroll i funksjonsmåte. Det jeg mener med kontroll er kontroll over hva prosessoren din gjør. De eksakte instruksjonene, mener du ja... Ja, så lavnivå er det sjelden at jeg selv har noe konkret behov for å være. Men C er jo et enklere språk, og jeg kan se at det trolig også er enklere å ha eksakt kontroll på instruksjonene som gis til CPU-en, der, enn i C++. Her er forøvrig et verktøy som jeg ikke visste om før for et par måneder siden: https://godbolt.org/ Det virker nyttig, til de tilfellene hvor de enkelte CPU-instruksjonene faktisk teller. Lenke til kommentar
eloekset Skrevet 13. januar 2020 Del Skrevet 13. januar 2020 Når VB.NET har like høy score som C#, sier det mer om denne framstillingen enn om populariteten til de ulike språkene. Lenke til kommentar
l0mf0mgl0mbl0og Skrevet 16. januar 2020 Del Skrevet 16. januar 2020 (endret) On 1/11/2020 at 3:07 PM, Gavekort said: Jeg har aldri sagt at C++ er tungt og tregt. Når jeg sier tungt så snakker jeg om boilerplate i en kontekst av unødvendig abstrahering. Jeg har ikke lyst til å diskutere videre når du insinuerer og rakker ned på min påståtte kunnskap i hvert innlegg. Det er umoden og uhøflig oppførsel. Hvilken boilerplate? Du kan bestemme om du vil benytte det eller ikke... Du må ha brukt noen veldig rare IDE/prosjekter hvis du mener at det er unødvendig abstrahering fra børjan... Endret 16. januar 2020 av l0mf0mgl0mbl0og Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå