==Make sense: <3 bitfield <3, død over enum Bitfield også utafor struct, til å si hva sizeof skal være: int u:32, float f:64; Bitfield er en type (gir stor mening i et språk med etterstilt type ala go), som kan deffes og castes. Deprecate enum: Statelist er ei oppramsing mellom krøllparanteser (ala enum) men brukt bak kolon i et bitfield. Den nødvendige størrelsen er implisitt. Steitsa sjøl er først definert ved sammenlikning og tilordning av den aktuelle typen, så det får ingen konsekvens om samme identifier fins i andre navnerom. integer types unsigned by default: Who operates with negative codepoints? http://www.openwall.com/lists/oss-security/2011/06/20/2 ==Obstacles to optimisation: Functions have 2 parameter lists (members and non-members) and a return list. out1, out2 = (inout1, inout2).method(in1, in2); Member arguments are modifiable, non-members are not. Global variables used by the function must be included as a parameter and declared as «extern». Static variables used by the function must be included as a parameter and declared as «static». Constant references used by the function must be included as a parameter and declared as «const» and initialized by a constant expression. The purpose of all this is to make it visible via the function definition which side effects the function may have. keywords {inline, volatile, restrict} der du bruker dem, ikke ved deklarasjon. ==Obstacles to refactoring: Ingen pekere, ingen operator*, bare referanser. Referanse = peker i fåreklær, som kan alt som pekere kan, operator& gir pekerverdien. Tabeller er syntaktisk lik referanser, og operator[] kan brukes på referanser. Permit anonymous structs and unions inside structs and unions. Because 1: Make inheritance less verbose. Specifically, remove the verbosity that changes the api when variables are regrouped (the abi might still change). Because 2: The use of unions is an optimization decision, not something that belongs in the api. Copy-On-Write code reuse: «functionality» Når du skriver masse drit om og om igjen, så skulle det gått an å lage en funksjon-aktig blokk der og da. Man bare sier at man trenger en funksjonalitet som gjør nøyaktig dette. Det som typisk skjer er at man copypaster hele driten til et annet sted, med eller uten endring av funksjonen. Poenget er at code reuse er implisitt. Kompilatoren ser at du definerer det samme hver jævla gang, og det er ikke ditt ansvar å klø deg i huet over. Kan c++::template brukes? Unterminated strings: 'abc' as shorthand for {'a','b','c'}. Then "abc" equals 'abc\0'. This makes sense when arrays are references instead of pointers. Explicitly sign integer types: Given integral type T, «signed T» should work. Purpose: To derive the equivalent signed type. Justification: When implementing an interface consisting of unsigned types that are typedeffed or templated, you don't know the equivalent signed type. You need the equivalent signed type for doing signed subtraction and comparison. This workaround is self-repeating and pollutes the interface{ typedef uint8_t index_t; typedef int8_t indexdiff_t; } This makes even more sense when integers are unsigned by default. Go har defer(), java har try{}catch{}finally{} #define DEFER(exp) #define CLEANUP(exp) Oppfinnelse: Sykkelforhjulsgaffel med bremsedreiemomentsfjæringsbelastningsmotvirker