Forum: Eget Programmerings språk

Forum huvudsida -> Programmering -> Eget Programmerings språk

Sidor: 1

Till botten

Tesuki 23:12 - 30:e Mars 2007 | Post #1
Medlem
Inlägg: 122


Skicka PM
okej nu är det jag som postar en almänt skum fråga igen (eller vet inte ifall den är så skum)
hur som helst jag sitter och försöker spawna fram ett programmerings språk och det går inte så hundra bra. så då frågar jag här vad skulle ni vilja se i ett ny skapat programmerings spårk. ex hur man använder det hur initisering skulle se ut av en pekare. för det jag vet om det är att det ska vara i samma användes område som C. men med inslag av D och java.

det ser ut ungefär så här nu (Achtung! das blinkenlights! språket kan vara Lisp syntax aktigt)
det heter: λ5 (Lamda5, utalas: Lamda-Five)
    (func foo((int x)) (return (+ x (* x x))) ;+ om 5 angivs som argument returnerar funktionen 30 + ;+ 5 * 5 = 25 + + 5 + 25 = 30 + +;; (func bar((int y), (double x)) (int ret) (= ret y) (while (< 0 x) (= ret (- ret (* x 4))) (return ret)) (main ((char[][] argv)) (call foo(1)) (call bar(4, 6)) (return 0))

men tycker att man bör ha returnnerings i functions huvudet som i C men kan inte hundra få in detta. och har ni några tips?


Senast redigerad 15:37 - 31:a Mars 2007


Slash 03:28 - 31:a Mars 2007 | Post #2
Medlem
Inlägg: 141


Skicka PM
Hur parsar du språket, använder du bison eller skriver du egen parser?

-------------------------
Ingen sigantur!



HärJ 14:39 - 31:a Mars 2007 | Post #3
Moderator
Inlägg: 1198


Skicka PM
riktigt trevlig syntax iaf
lisp är en bra grund att bygga påSmiley
känns som ett språk jag skulle kunna använda.

EDIT: jag hade inget konstruktivt att komma med utan bara allmänt beröm

-------------------------
Tänk om jag vore en skalärprodukt!

Senast redigerad 14:40 - 31:a Mars 2007


Tesuki 15:08 - 31:a Mars 2007 | Post #4
Medlem
Inlägg: 122


Skicka PM
danke danke.
nej vet inte riktigt hur jag ska parsa det tänkte jobba fram hur det ska se ut först.

håller på lära mig kompilator konstruktion. nu har hittat några bra resucer på nätet. vill undvika att använda program vill få en inblick hur det fungerar så blir antagligen att jag skapar allt från grunden.

ska fixa en hemsida. men undrar vilket webhotell jag skall köpa. väger mot surftown. eller one.com (priserna dom har är bra)




jockepockee 15:24 - 31:a Mars 2007 | Post #5
Medlem
Inlägg: 192


Skicka PM
du kan ju kolla awardspace, dom är billiga och bra tycker jag
dessutom har dom gratisservrar med 200 mb utrymme utan reklam på sidan och stödjer php,perl och mysql

-------------------------



Senast redigerad 15:26 - 31:a Mars 2007


main 22:07 - 31:a Mars 2007 | Post #6
Medlem
Inlägg: 40


Skicka PM
Du skulle kunna skippa return-nyckelordet helt och visa indenteringsmässigt vad som returneras, t.ex.

  1.  
  2. (main ((char[][] argv))
  3. (call foo(1))
  4. (call bar(4, 6))
  5. (0)
  6.  
  7. och
  8.  
  9. (func bar((int y), (double x))
  10. (int ret)
  11. (= ret y)
  12. (while (< 0 x)
  13. (= ret (- ret (* x 4)))
  14. (ret)

Vid inget returvärde () kanske? Spånar bara.

-------------------------
- Real programmers code in binary

Senast redigerad 22:07 - 31:a Mars 2007


sdac 23:15 - 31:a Mars 2007 | Post #7
Medlem
Inlägg: 235


Skicka PM
Står bakom mains idé, så borde det se ut. Dock blir språket då beroende av indenteringen, såvida du inte gör så att om det inom parenteserna endast är ett värde så räknas det som en returnering, och allt annat måste innehålla något som denoterar att det inte är en returnering, t.ex. operatorer.




Tesuki 23:24 - 31:a Mars 2007 | Post #8
Medlem
Inlägg: 122


Skicka PM
det jag mestadels nu sitter och funderar över är hur man ska skapa variabler så jag gjort:
(int i)

skulle det vara bättre om man skrev:
(var int i)
för då kan man sedan skriva:
(var int a, b, c, d)
för att skapa flera olika integers.
man kan altid skriva (int a, b, c, d) också men jag tror detta skulle vara bättre med att använda (var [datatype] [name, ...]) vad tycker ni?

om man skippar return så kan man inte skriva allt på en rad. men det tar att tänka på.




main 01:10 - 1:a April 2007 | Post #9
Medlem
Inlägg: 40


Skicka PM
Jag tänkte att rent strukturellt så kanske en metod med returparameter på en egen rad inte var så dumt.

Angående variabeldeklarationen så tycker jag inte man ska krångla till det, men om du vill använda "var" så kan du t.ex ända en enda bokstav för datatyp.

Alltså format: var [typbokstav] [deklarationslista]

Exempel:
var i a, b deklarerar int
var l c, d deklarerar long
var f e, f deklarerar float
var d g, h deklarerar double
var s i, j deklarerar string (char*)
var c k, l deklarerar char

Vill man ha signed sätter man "s" framför och unsigned "u".

et.c?

Brainstorm...

-------------------------
- Real programmers code in binary



sdac 01:21 - 1:a April 2007 | Post #10
Medlem
Inlägg: 235


Skicka PM
    Citat av Tesuki:

om man skippar return så kan man inte skriva allt på en rad. men det tar att tänka på.


Du kan väl lägga allt på en rad om du gör så som jag skrev? Om en returnering endast består av ett värde eller en variabel, så förstår kompilatorn att det är en returnering. Allt annat har en operator, ett prefix eller något annat i början av parenteserna.

Exempel:

(main ((char[][] argv))(call foo(1))(call bar(4, 6))(0)


Kompilatorn förstår att det inom de sista parenteserna är en returnering eftersom den varken har "call", en datatyp eller en operator i början. Det är bara ett värde.




ozamosi 01:32 - 1:a April 2007 | Post #11
Administratör
Inlägg: 1129


Skicka PM
Eller så är den sista parentesen automatiskt ett returvärde, eftersom det är sist.

-------------------------
Ljusblå



Tesuki 13:16 - 1:a April 2007 | Post #12
Medlem
Inlägg: 122


Skicka PM
se vad många trevliga och smarta idéer man fått nu.
jag tror jag kör på den där:
(var [datatypsbokstav] [deklarationslista])
för den är rätt smart. eftersom jag bara kommer ha int, double, char, bool och void. sedan long och poor(small för att signed finns), unsigned och signed.

(var uli unsignd_64bit_Intger)
(var upi unsignd_16bit_Intger)
(var spd signed_32bit_double) ;+ signed poor double +;

tror jag kör på den.
b, sc, uc, v
upi, ui, uli
spi, si, sli
upd, ud, uld
spd, sd, sld
blir isåfall möjliga kombinationer.

Citat av sdac:
Kompilatorn förstår att det inom de sista parenteserna är en returnering eftersom den varken har "call", en datatyp eller en operator i början. Det är bara ett värde.


kan fungera. rätt bra också.

(kan tillläga att jag fixade en subdomän på awardspace med 200MB gratis så snart är den sida klar)


Senast redigerad 13:34 - 1:a April 2007


FunkyChicken 15:34 - 1:a April 2007 | Post #13
Nyhetsredaktör
Inlägg: 800


Skicka PM
Fast är det bra att bara kunna ha return sist i funktionen? Om man har vill kunna hoppa ur mitt i tex?
Däremot tycker jag inte att det är fel att göra koden beroende av intendenteringen. Det känns lite ovant och har väl sina nackdelar, men det är ju så genialt enkelt! Och funkar bra i pythonSmiley




ozamosi 16:04 - 1:a April 2007 | Post #14
Administratör
Inlägg: 1129


Skicka PM
Det anses ofta vara fult att ha flera returns, eftersom det gör det svårare att förstå vad som händer. Med bara en return vet programmeraren som tar över koden att all kod körs, och råkar inte missa en else-sats med en liten dold return.

Nu finns det självklart olika skolor - många anser att multipla returns mycket väl kan vara motiverat i vissa fall, men det förhindrar inte att det skulle kunna vara spännande att experimentera med. Vill man hoppa ur mitt i brukar break och en statusvariabel kunna lösa problemet.

Menmen, det är inte mitt språk, och jag har inte så starka åsikter kring hur ett returnstatement ska se ut, så jag ska undvika heliga krigSmiley

-------------------------
Ljusblå



Tesuki 21:03 - 1:a April 2007 | Post #15
Medlem
Inlägg: 122


Skicka PM
nej tror defenetift nu att det blir return statement (blir lättast så för mig när jag skriver compiltorn (tror jag))
och som FunkyChicken sade att man ska kunna hoppa ut varsom helst även om det ser fult ut. ett språk måste kunna se fult ut.

sedan för att definera funktioner och så så kan man använda
(def foo((var i x)) (return (var i)))
eller om man skippar det med datatyper
(def foo((int x)) (return (int)))

nu när jag tittar på koden så ser det bättre ut att använda bara (int [variabelnamn]) änn (var [datatypsbokstav] [deklarationslista])
då finns det ett problem hur ska man skriva om de är signed eller unsigned och long eller short.

sedan kan jag fråga nu tycker ni det ska vara obejctorienterat eller vanligt som C?




ozamosi 21:10 - 1:a April 2007 | Post #16
Administratör
Inlägg: 1129


Skicka PM
Jag tycker hellre det ska vara som lisp än som C eller C++... Det största felet med lisp är ju syntaxet - funktionsorienterat är ganska mysigt. C-funktionalitet och lispsyntax låter ungefär som standardskämtet att emulera linux under windows: "stabliteten från windows, användarvänligheten från linux"

-------------------------
Ljusblå



Tesuki 23:46 - 1:a April 2007 | Post #17
Medlem
Inlägg: 122


Skicka PM
hmm. det som gör lisp bra är paranteserna och att det går såpass snabbt att skriva program i det. du slipper även använda saker som ";", "[", "]", "{" och "}" för flödes kontroll det räcker med endast "(" och ")" vilket snabbar upp skrivprocessen av kod.

men de saknar saker som pointers (jag har inte stött på det) vilket medför begränsningar ifall man vill skriva en drivrutin eller liknande. sedan OO saknar det finns nåogt som kallas CLOS som ska vara OO Common Lisp men det känns inte som äkta vara.

men jag bör kanske ska tänka efter lite hur det ska se ut. men ska inte ändra allt förmycket. får sätta mig med penna och papper (aka. bärbar dator) nu under lovet och riktigt tänka till. för hoppningsvis går det att lösa på ett bättre sätt.

ja i slutet av denna månad finns det förhoppningsvis något att ta på.




HärJ 00:43 - 2:a April 2007 | Post #18
Moderator
Inlägg: 1198


Skicka PM
    Citat av ozamosi:
Det största felet med lisp är ju syntaxet

Det var ju syntaxen som fick mig att falla pladask för språket... antar att smaken är som bakenSmiley
Ser fram emot detta språk, det kan bli riktigt trevligt.

-------------------------
Tänk om jag vore en skalärprodukt!



Smygis 19:00 - 2:a April 2007 | Post #19
Medlem
Inlägg: 90


Skicka PM
Annat än att jag tycker att det ser lite äckligt ut med den otroliga våldtäkten på ( och ) så ser det ganska fint ut.
Fast jag gillar inte paranteser så våldta på bara.Smiley

-------------------------
Ingen signatur! <- OMG! Jag har inte någon signatur! Ge mig en signatur FFS!



FunkyChicken 08:57 - 3:e April 2007 | Post #20
Nyhetsredaktör
Inlägg: 800


Skicka PM
Hmm... du kanske ska börja med att fundera på användningsområden och målgrupp. Vad ska språket användas till? Var? Vilka plattformar? Vilka krav på integration i större lösningar (dvs stöd för COM, externa API, inline assembler)? Minneshantering och garbage collecting, ska det vara användarens ansvar? Riktar sig språket till nybörjare, erfarna eller proffs? Ska det användas för att lära sig programmering, för att göra skript, applikationer eller stora system? På hög eller låg nivå? RAD? (krav på möjligheter till riktigt snabb utveckling) Minnes- eller cpu- eller kodningstid-effektivt? Behövs pekare, objekt, etc? Skapar du språket enbart för att lära dig? Vad vill du lära dig isf, hur man designar bra språk, hur man tokoptimerar en kompilator, hur man parsar högnivåkod? Kanske bäst att börja så enkelt som möjligt och spara OO osv till senare.

Du bör vara klar över sånna saker innan du börjar designa språket, och innan du smutsar ner händerna... Sedan analyserar du användningsområdet och kraven på språket kommer avslöja sig självaSmiley




Sidor: 1

Forum huvudsida -> Programmering -> Eget Programmerings språk
Atom feed

Du får inte posta i den här tråden | Till toppen