Gå til innhold

ProgrammeringsBaren! Småprat, om det du elsker!


Anbefalte innlegg

Jeg ser at Lua er populær i spilleverdenen; og et ikke helt ukjent fotoprogram, Adobe Lightroom, er også delvis programmert i Lua (ca 63%).Har også mulighet til å lage programmer i Lua for en av mp3 spillerene mine (Creative X-Fi 2) :!:

 

Det jeg har sett tyder på ren syntax; lite særegenheter. Største ulempen er mangelen på objekter (dvs. man kan drive med objekt-orientert programmer i Lua, og det er litt mindre smertefullt enn i Perl. Men bra er det ikke).

Lenke til kommentar
Videoannonse
Annonse
Gjest Slettet+9871234

Til spillprogrammering, om jeg var ung og hadde tid, ville jeg personlig valgt

 

Python + C++ / C

 

Men Lua skulle ha noen gode egenskaper som jeg nå ikke husker. Noen komparative fortrinn har de fleste språk.

 

PHP, JavaScript (biblioteker http://javascriptlibraries.com/ holder for enkle nettspill).

 

Noen som kjenner http://emberjs.com/

Endret av Slettet+9871234
Lenke til kommentar

Run-timen er også et poeng i seg selv når en velger en scriptmotor. CPython synes jeg er i overkant smertefull å implementere sammenlignet med LUA, fordi run-timen er litt komplisert å forholde seg til.

Squirrel er også et scriptspråk som jeg har hatt god erfaring med. Det er ganske enkelt å bruke, samt at det har en syntaks som jeg har en tendens til å være veldig forenelig med.

Lenke til kommentar

Fant en MONSTER bug i C# i dag som jeg har klødd meg i hodet over.

 

Jeg bruker ?? operatøren for å få en standardverdi fra Session variabler... Derimot er det noe veldig snodig med denne operatøren. Til tross for at MSDN og C# standarden hevder den er left associative, så er den faktisk ikke det.

 

Derfor fikk jeg følgende feil:

 

bool someValue = (bool)(Session["Abc123"] ?? false);

someValue ble alltid false, men under debugging så hevdet debuggeren at resultatet skulle bli true.

 

http://msdn.microsoft.com/en-us/library/ms173224.aspx

 

Hva i svarte er det de tenker med når de bytter dette fra en versjon av C# til den neste?

Lenke til kommentar
Gjest Slettet+9871234

Hva i svarte er det de tenker med når de bytter dette fra en versjon av C# til den neste?

Hold deg til C elle C++ om du trenger en kompilator. Og så var det M$ da.

 

De skulle kanskje aldri funnet opp C# og internet explorer så hadde de gjerne spart verden for en del trøbbel.

 

Er forresten ?? en operator i den siste C++ og eller C standarden?

Endret av Slettet+9871234
Lenke til kommentar

Hva i svarte er det de tenker med når de bytter dette fra en versjon av C# til den neste?

Hold deg til C elle C++ om du trenger en kompilator. Og så var det M$ da.

 

De skulle kanskje aldri funnet opp C# og internet explorer så hadde de gjerne spart verden for en del trøbbel.

 

Er forresten ?? en operator i den siste C++ og eller C standarden?

C# er ganske ålreit språk generelt. Men akkurat dette irriterer meg. Det minner litt om hvordan de byttet hva divisjonsoperatøren gjorde i Python 3.0.

 

?? er ikke i C++ etter det jeg vet. Det den brukes til er at dersom det ene uttrykket er null, så skal den returnere det andre. Kjekt for å få standardverdier.

Endret av GeirGrusom
Lenke til kommentar
Gjest Slettet+9871234

C# er ganske ålreit språk generelt. Men akkurat dette irriterer meg. Det minner litt om hvordan de byttet hva divisjonsoperatøren gjorde i Python 3.0.

Mange har irritert seg på det. Enkelte lærebøker anbefaler også å bruke Python 2.7.+ Der er for lite kode til Python 3.+ hevders det. Jeg bruker begge.

 

?? er ikke i C++ etter det jeg vet. Det den brukes til er at dersom det ene uttrykket er null, så skal den returnere det andre. Kjekt for å få standardverdier.

Men er NULL entydig definert?

Lenke til kommentar

C# er ganske ålreit språk generelt. Men akkurat dette irriterer meg. Det minner litt om hvordan de byttet hva divisjonsoperatøren gjorde i Python 3.0.

Mange har irritert seg på det. Enkelte lærebøker anbefaler også å bruke Python 2.7.+ Der er for lite kode til Python 3.+ hevders det. Jeg bruker begge.

 

?? er ikke i C++ etter det jeg vet. Det den brukes til er at dersom det ene uttrykket er null, så skal den returnere det andre. Kjekt for å få standardverdier.

Men er NULL entydig definert?

I C++11 har du nullptr som er entydig definert og kan ikke forveksles med heltall slikk NULL kan. I C++03 er vel NULL definert til 0 og i C er NULL definert som (void*)0 om jeg ikke tar feil.

Lenke til kommentar

Men jeg tenkte på definisjonen av NULL i C#,

null i C# kan bety to ting: en null peker (i klassisk C sammenheng) og et null objekt.

 

Null objekt er på langt nær den vanligste bruken, da C pekere ernoe man svært sjeldent benytter seg av i C#. .NET sin garbage collector vil flytte minne, eller slette minne som den selv føler for. Derfor er ikke et objekt i C# det samme som et objekt i C++. Det er ikke trygt å caste et .NET objekt til en peker ettersom objektet kan flytte på seg eller forsvinne helt fra minneområdet (for å unngå dette har man fixed syntaksen). Null er et definert objekt som ikke er en gyldig datamengde noen steder, og å benytte det til noe vil gi NullReferenceException.

string myString = null;
var str = myString.SubString(0, 4); // Null reference exception

 

Som en peker derimot betyr det noe annet, og da er det rett og slett peker til 0 (som i C og C++).

unsafe
{
 int* myPtr = null;
 *myPtr = 100;
}

 

edit: Ett bruksområde til, for nullabel types. Nullable<T> er en struktur som gjør at value types kan også representere null verdi. I dette tilfellet så kan null brukes for å sjekke om en nullable er satt eller ikke

 

void SomeFunc(int? argument)
if(argument == null)
 return;

if(argument == 50)
 throw new Exception("Value er femti ");

if(argument == 0)
 throw new Exception("Value er 0, men ikke null");

 

Her er det egentlig bare kompilatormagi i gang, fordi int? er ikke det samme som en peker, men en struktur med en bool og en int.

Endret av GeirGrusom
Lenke til kommentar
Gjest Slettet+9871234

OK, hadde det i analogi med == og === operatorene i JavaScript og PHP blitt bedre om man hadde hatt en ?? og en ??? operator i C#?

Lenke til kommentar

OK, hadde det i analogi med == og === operatorene i JavaScript og PHP blitt bedre om man hadde hatt en ?? og en ??? operator i C#?

Statisk typede språk har typisk ikke noen nytte av === operatøren. I de fleste tilfeller vet du hvilke datatyper du sammenligner, og du kan overlaste == operatøren om du ønsker det.

En ??? operatør ville også vært overflødig av samme grunn: Resultatet vil være statisk typet.

Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...