asicman Skrevet 8. september 2011 Del Skrevet 8. september 2011 Det er gammelt, ble endret i september 2010. http://www.adobe.com/devnet/logged_in/abansod_iphone.html Andre språk som c# fungerer fint med ios. http://xamarin.com/ Ser de har lettet på restriksjonene, men det ser ut som om den siste paragrafen (3.3.1) er der fortsatt. N Lenke til kommentar
tomsi42 Skrevet 8. september 2011 Del Skrevet 8. september 2011 Tror hensikten egentlig er å stenge spesifikt Adobe Flash ute uten å skrive det rett ut. Det tror jeg også. Da den regelen kom, så var Flash rimelig buggy også ... Lenke til kommentar
Inc Skrevet 9. september 2011 Del Skrevet 9. september 2011 Bare et kjapt spørsmål og for å ikke drite meg loddrett ut av min egen tråd. Kan noe peke meg i retning hvor jeg kan finne ut hvilket språk en .exe fil er bygget? hvis det i heletatt går an. Lenke til kommentar
Blåbær Skrevet 9. september 2011 Del Skrevet 9. september 2011 Kan jo prøve med en deassembler som IDA Pro. Lenke til kommentar
GeirGrusom Skrevet 13. september 2011 Del Skrevet 13. september 2011 Noen andre som har testet System.Linq.Expressions i .NET? Har laget et scriptspråk med det nå, og det er ganske ålreit å jobbe med. For de uinvidde, så er Expressions som Boost.Proto, men tillater at koden kompilerer til .NET CIL, og returnerer delegater. Lenke til kommentar
Gjest Slettet+9871234 Skrevet 13. september 2011 Del Skrevet 13. september 2011 (endret) Noen andre som har testet System.Linq.Expressions i .NET? Har laget et scriptspråk med det nå, og det er ganske ålreit å jobbe med. For de uinvidde, så er Expressions som Boost.Proto, men tillater at koden kompilerer til .NET CIL, og returnerer delegater. Nå er .NET og .NET CIL gresk for meg, men innebærer Har laget et scriptspråk med det nå at du faktisk har laget ditt eget skriftspråk eller er det en skrivefeil? For øvrig, er det noen som har prøvd Embarcadere RAD Studio XE2 med støtte for 64 bit, Mac, mobil og mye mer? Endret 13. september 2011 av Slettet+9871234 Lenke til kommentar
torbjørn marø Skrevet 13. september 2011 Del Skrevet 13. september 2011 (endret) Har laget et scriptspråk med det nå at du faktisk har laget ditt eget skriftspråk eller er det en skrivefeil? Skrivefeilen er det nok du som står for! Endret 13. september 2011 av torbjørn marø Lenke til kommentar
GeirGrusom Skrevet 14. september 2011 Del Skrevet 14. september 2011 (endret) Noen andre som har testet System.Linq.Expressions i .NET? Har laget et scriptspråk med det nå, og det er ganske ålreit å jobbe med. For de uinvidde, så er Expressions som Boost.Proto, men tillater at koden kompilerer til .NET CIL, og returnerer delegater. Nå er .NET og .NET CIL gresk for meg, men innebærer Har laget et scriptspråk med det nå at du faktisk har laget ditt eget skriftspråk eller er det en skrivefeil? Har laget et scriptspråk ja. Statisk typet, type inference (direkte og indirekte, ved var, og infer nøkkelordene) og bruker utelukkende lambdauttrykk. Det er støtte for objektorientering, altså en kan instansiere klasser og bruke egenskaper og funksjoner, men en kan ikke definere egne klasser. Det er ment for å scripte et program som brukes som en styringsenhet. var my_func = lambda() true; // Lag en lambda som alltid returnerer true var my_value = 100; // Lag variabel my_var, sett datatypen lik resultatet av uttrykket infer(my_func()) foo; // Lag variabel, sett datatypen lik verdien i infer, og sett verdien til standardverdi for uttrykket. var func = lambda(int a) a * 2; var result = ""; while(my_value = func(my_value += if(my_value % 2) 3 else 1) < 200) { result += string(my_value); } Helt vilkårlig eksempel for å vise noen av tingene som er implementert og fungerer. Så jeg har laget et domenespesifikt programmeringsspråk, ikke et skriftspråk. Utrolig artig å drive med. Har fått inn en format funksjon som kompilerer inn en string-formatering. Dvs. eksempelvis dette: var value = 93; return format("Hvis du er ${value} år gammel, men sier du er 0x{value:x} år gammel, så kan det hende du driver med programmering."); Vil kompilere format til følgende (pseudo): string Block() // Ikke et funksjonskall, men for forklaringens skyld { StringBuilder builder = new StringBuilder(); builder.Append("Hvis du er "); builder.Append(value.ToString()); builder.Append(" år gammel, men sier du er 0x"); builder.Append(value.ToString("x")); // Hex builder.Append(" år gammel, så kan det hender du driver med programmering."); return builder.ToString(); } Noen andre som driver med noe lignende for tiden? Endret 14. september 2011 av GeirGrusom 1 Lenke til kommentar
Gjest Slettet+9871234 Skrevet 14. september 2011 Del Skrevet 14. september 2011 (endret) Du er jammen flink. Skulle ønsket jeg hadde hatt tid til å følge bedre med på det du gjør. I det siste har det vært altfor mye politikk og for lite IT. Jobber med videre med Drupal og jQuery. Har til hensikt til å bli den beste i Norge på det, ihvertfall i Moss på Drupal / jQuery om helsa holder. Så jeg har laget et domenespesifikt programmeringsspråk, ikke et skriftspråk. Husk at PHP startet som Rasmus Lerdorfs Personal Home Page. Lykke til med fortsettelsen. Regner med at jeg drar på et RAD studio XE 2 seminar i Oslo 22 september. Har fått eget brev om dette fra Alfasoft, så nå ser det ut som Borlands produkter er i bedre hender (ihvertfall på markedsføring) her i landet enn tidligere hvor man måtte til Sverige for å ta kurs og delta på seminarer. http://www.embarcadero.com/products/rad-studio Verdens beste utviklingsplatfrom???????????????? Endret 14. september 2011 av Slettet+9871234 Lenke til kommentar
GeirGrusom Skrevet 14. september 2011 Del Skrevet 14. september 2011 Du er jammen flink. Skulle ønsket jeg hadde hatt tid til å følge bedre med på det du gjør. I det siste har det vært altfor mye politikk og for lite IT. Jobber med videre med Drupal og jQuery. Har til hensikt til å bli den beste i Norge på det, ihvertfall i Moss på Drupal / jQuery om helsa holder. Så jeg har laget et domenespesifikt programmeringsspråk, ikke et skriftspråk. Husk at PHP startet som Rasmus Lerdorfs Personal Home Page. Lykke til med fortsettelsen. Regner med at jeg drar på et RAD studio XE 2 seminar i Oslo 22 september. Har fått eget brev om dette fra Alfasoft, så nå ser det ut som Borlands produkter er i bedre hender (ihvertfall på markedsføring) her i landet enn tidligere hvor man måtte til Sverige for å ta kurs og delta på seminarer. http://www.embarcadero.com/products/rad-studio Verdens beste utviklingsplatfrom???????????????? Bruker ikke embercardeo på jobben, og har ikke egentlig noen interesse av det på hobbybasis. Å utvikle på Mac OS er ganske uinteressant for meg, og .NET gir meg såpass frihet til å gjøre det jeg ønsker at jeg har ikke noen planer om å bytte til Embercardero. .NET er pålitelig, det har et vanvittig stort standardbibliotek, og er en generelt en veldig fin plattform å utvikle på, med mange forskjellige språk, i flere disipliner, og alt er også veldig moderne. Men jeg trenger ikke, og er ikke interessert i å beskytte .NET eller Microsoft, så jeg foretrekker om vi kan heller diskutere programmeringsspråk generelt. Så har du noen kommentarer til språkdesignet? Det er tenkt ut litt ad-hoc, så hadde vært fint med kommentarer til selve språket Det skal som sagt brukes til å scripte et program, for å styre servomotorer og en del annet utstyr. int er 64-bit, og det samme er float grunnet at dette er hva som brukes i programmet internt. Lenke til kommentar
Gjest Slettet+9871234 Skrevet 14. september 2011 Del Skrevet 14. september 2011 (endret) Så har du noen kommentarer til språkdesignet? Det er tenkt ut litt ad-hoc, så hadde vært fint med kommentarer til selve språket Jeg likte denne while(my_value = func(my_value += if(my_value % 2) 3 else 1) < 200) { result += string(my_value); } Den neste blokken string Block() // Ikke et funksjonskall, men for forklaringens skyld { StringBuilder builder = new StringBuilder(); builder.Append("Hvis du er "); builder.Append(value.ToString()); builder.Append(" år gammel, men sier du er 0x"); builder.Append(value.ToString("x")); // Hex builder.Append(" år gammel, så kan det hender du driver med programmering."); return builder.ToString(); } minner meg bortsett fra (new) om moderne JavaScript og er helt OK og sikkert minimalistisk / rask. Endret 14. september 2011 av Slettet+9871234 Lenke til kommentar
x871kx6167ss7 Skrevet 14. september 2011 Del Skrevet 14. september 2011 Har laget et scriptspråk ja. Statisk typet, type inference (direkte og indirekte, ved var, og infer nøkkelordene) og bruker utelukkende lambdauttrykk. Det er støtte for objektorientering, altså en kan instansiere klasser og bruke egenskaper og funksjoner, men en kan ikke definere egne klasser. Det er ment for å scripte et program som brukes som en styringsenhet. var my_func = lambda() true; // Lag en lambda som alltid returnerer true var my_value = 100; // Lag variabel my_var, sett datatypen lik resultatet av uttrykket infer(my_func()) foo; // Lag variabel, sett datatypen lik verdien i infer, og sett verdien til standardverdi for uttrykket. var func = lambda(int a) a * 2; var result = ""; while(my_value = func(my_value += if(my_value % 2) 3 else 1) < 200) { result += string(my_value); } Synes sånt som dette er veldig morsomt. Har desverre ikke fått gjort så mye praktisk rundt dette selv. Noen spørsmål: Garanteres det "proper tailcall" (aka tail-call optimization)? Hvis så, hvordan har du implementert det? Kompileres hele programmet i et stort jafs, eller kompileres det inkrementielt? Lurer på hvordan du gjør det med det globale skopet. Hadde vært morsomt å vite hva slags typesystem språket har, og hva slags type inference-algoritme du bruker. 1 Lenke til kommentar
GeirGrusom Skrevet 14. september 2011 Del Skrevet 14. september 2011 Så har du noen kommentarer til språkdesignet? Det er tenkt ut litt ad-hoc, så hadde vært fint med kommentarer til selve språket Jeg likte denne while(my_value = func(my_value += if(my_value % 2) 3 else 1) < 200) { result += string(my_value); } Den neste blokken string Block() // Ikke et funksjonskall, men for forklaringens skyld { StringBuilder builder = new StringBuilder(); builder.Append("Hvis du er "); builder.Append(value.ToString()); builder.Append(" år gammel, men sier du er 0x"); builder.Append(value.ToString("x")); // Hex builder.Append(" år gammel, så kan det hender du driver med programmering."); return builder.ToString(); } minner meg bortsett fra (new) om moderne JavaScript og er helt OK og sikkert minimalistisk / rask. Det er gjengivelse av kompilert resultat i C#. Bare en representasjon av et eksempel på en ekvivalent til format() for det gitte eksempelet er. Det skal gå ganske lynkjapt, fordi det skjer overhode ingen parsing runtime (ettersom dette blir gjort compile time) så ideelt sett skal funksjonen være raskere enn sprintf i C (som er ekvivalent funksjon) fordi det er ikke egentlig en funksjon. Har laget et scriptspråk ja. Statisk typet, type inference (direkte og indirekte, ved var, og infer nøkkelordene) og bruker utelukkende lambdauttrykk. Det er støtte for objektorientering, altså en kan instansiere klasser og bruke egenskaper og funksjoner, men en kan ikke definere egne klasser. Det er ment for å scripte et program som brukes som en styringsenhet. var my_func = lambda() true; // Lag en lambda som alltid returnerer true var my_value = 100; // Lag variabel my_var, sett datatypen lik resultatet av uttrykket infer(my_func()) foo; // Lag variabel, sett datatypen lik verdien i infer, og sett verdien til standardverdi for uttrykket. var func = lambda(int a) a * 2; var result = ""; while(my_value = func(my_value += if(my_value % 2) 3 else 1) < 200) { result += string(my_value); } Synes sånt som dette er veldig morsomt. Har desverre ikke fått gjort så mye praktisk rundt dette selv. Noen spørsmål: Garanteres det "proper tailcall" (aka tail-call optimization)? Hvis så, hvordan har du implementert det? Kompileres hele programmet i et stort jafs, eller kompileres det inkrementielt? Lurer på hvordan du gjør det med det globale skopet. Hadde vært morsomt å vite hva slags typesystem språket har, og hva slags type inference-algoritme du bruker. Jeg har ikke implementert noen tail-call optimalisering, men tenkte rett og slett gjøre et tail-call til en lopp konstruksjon. Det er jo en ganske simpel operasjon, ettersom det ikke er noe poeng i å bevare argumentene på en stack, så det skal være å båre overskrive argumentene med det nye kallet, og gå tilbake til start. Så et tail-rekursivt kall vil i virkeligheten være syntaktisk sukker for en loop som på slutten overskriver argumentverdiene. Men jeg tenkte da to forskjellige måter å skrive det på: var foo = lambda() { foo(); } // eller var foo = lambda()() // Syntaktisk sukker for den over { } Type-systemet er det samme som .NET bruker, ettersom det er den run-timen det kjører på. Inference er ganske simpelt på variabler, ettersom datatyper propegerer i uttrykkstreet allikevel, men krever litt mer arbeid i funksjoner. Generelt sett så gjetter den etter beste evne, og hvis du skriver noe som er tvetydig (forskjellige typer som ikke er kompatible blir returnert) så får du en syntax error, som en må rette med en cast eller lignende. Jeg er ikke helt ferdig med type inference i funksjonskall, men idéen der er at et lambdauttrykk i virkeligheten er kun en prototype når den blir definert, og kan variere dersom den blir kalt med forskjellige datatyper. Det som er tenkt er da en restrukturering av uttrykkstreet hvor argumenter rekursivt erstattes når compileren har klart å dedusere alle parametertyper. Parametertyper dedusere utifra alle tilegnelser som blir gjort mot dem. Tenkt da er at en skriver følgende: var foo = lambda(var a, var b) a + b;[code] I virkeligheten skal dette bli oversatt til [code]Func<GenericType, GenericType> foo = (a, b) => a + b; Og hvis funksjonen brukes, så oversettes den til en funksjon med rette argumenter. 1 Lenke til kommentar
epsil Skrevet 21. september 2011 Del Skrevet 21. september 2011 (endret) Har laget et scriptspråk ja. Spennende! Hvordan er parseren implementert? Recursive-descent for hånd, lexx/yacc-generert (elns.), eller parserkombinatorer? Endret 4. april 2012 av epsil Lenke til kommentar
GeirGrusom Skrevet 22. september 2011 Del Skrevet 22. september 2011 Har laget et scriptspråk ja. Spennende! Hvordan er parseren implementert? Recursive-descent for hånd, lexx/yacc-generert (elns.), eller parserkombinatorer? Recursive-descent for hånd. Det er ikke egentlig så komplisert å gjøre allikevel. Tenkte skrive en guide om hvordan jeg har gjort det etterhvert. Har også nå laget en parser for BASIC grunnet at jeg ble fortalt på jobb at BASIC var blitt ganske de-facto i bransjen jeg er i grunnet at en av de største leverandørene bruker det. Dessverre synes jeg, både fordi BASIC er relativt vanskelig å skrive en korrekt parser for (i forhold til C språk). Jeg hater at whitespace er viktig, fordi fra parseren sin side så må jeg legge inn kunstige krav om newline. Så det gjorde at jeg måtte bytte fra tokenizer.Tokenize(kode).Where(token => !(token.IsWhiteSpace() || token.IsComment())) til en som ikke filtrerer ut whitespace med newline. FOR setningen i BASIC er også litt vrien å kompilere, fordi det i utgangspunktet er et uttrykk for om resultatet er innenfor en gitt mengde, fremfor i C hvor det er et helt vilkårlig uttrykk. Altså det jeg tenker på er denne: For i As Integer = 0 To 100 ' Kode Next Det jeg gjorde, var å kompilere conditional-uttrykket til følgende: var min = {0}, var max = {100}; if(min > max) { var temp = min; min = max; max = min; } return i >= min && i <= max; Har fått den til å fungere ganske bra nå dog, så neste prosjekt er å se om det er mulig å kompilere .NET CIL til ARM Thumb på en enkel måte (det skal scripte maskinvare også som kjører på ARM åpenbart) Muligens Mono har noe som kan brukes? 1 Lenke til kommentar
asicman Skrevet 23. september 2011 Del Skrevet 23. september 2011 Ulempen med recursive decent er at det ofte blir noe ustrukturert. Man starter i en ende og koder i vei. Underveis oppdager man at man har en del tvetydigheter i gramatikken osv. Med parser generatorer som PCCTS og ANTLR så må man jo skrive gramatikken og får man litt bedre oversikt og oppdager ofte slike problemer på et litt tidligere stadium. Ulempen med PCCTS (Purdue Compiler-Compiler Tool Set) er at man sikkert raskt havner på PST's liste over mulige terrorister... Lenke til kommentar
haarod Skrevet 23. september 2011 Del Skrevet 23. september 2011 (endret) Jeg prøver å implementere mergesort i Python3, men jeg får ikke ceil() og floor()-funksjonen til å fungere. Noen som kan hjelpe meg? def merge(left, right): result = [] i ,j = 0, 0 while i < len(left) and j < len(right): if left[i] <= right[j]: result.append(left[i]) i += 1 else: result.append(right[j]) j += 1 result += left[i:] #Hva betyr dette (i:)? result += right[j:] return result def mergesort(list): if len(list) < 2: return list else: middle = len(list) / 2 left = mergesort(list[floor(middle)]) #Her fungerer det ikke right = mergesort(list[ceil(middle)]) return merge(left, right) print(mergesort([3, 4, 8, 0, 6, 7, 4, 2, 1, 9, 4, 5])) #Får også feil syntaks her. Endret 23. september 2011 av haarod Lenke til kommentar
Matsemann Skrevet 23. september 2011 Del Skrevet 23. september 2011 (endret) result += left[i:] Les her Å bruke : er en måte å hente "fra element"/"til element" i python. Ang. floor greiene er jeg ikke helt sikker. Men prøv å importere math, og så bruke math.floor import math math.ceil(ll) math.floor(ll) (nå kan jeg ikke så mye mer python enn det jeg har lært meg for algdat, men) Endret 23. september 2011 av Matsemann Lenke til kommentar
asicman Skrevet 23. september 2011 Del Skrevet 23. september 2011 Har desverre ikke sjekket programmet ditt, men det kan være et klassisk eksempel på hvilken galskap det er å bruke et diktatorspråk som forandrer semantikken plutselig fra en versjon til en annen: $ cat ceil.py import sys import math val=len("abc")/2 sys.stdout.write("result is " + str(math.ceil(val)) + "\n") $ python2.7 < ceil.py result is 1.0 $ python3.1 < ceil.py result is 2 La oss håpe at det ikke er Python som styrer atomreaktoren i ditt nabolag. Lenke til kommentar
GeirGrusom Skrevet 23. september 2011 Del Skrevet 23. september 2011 Ganske teit at noe såpass grunnleggende endrer seg, men for meg gir ikke ceiling på et heltall mening, så korrekt her er vel å skrive følgende: val=len("abc")/2.0 så er det ingen tvil om hva en prøver å få til. 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å