Author Topic: Emerald Programming Language / VixenVM  (Read 12752 times)

0 Members and 1 Guest are viewing this topic.

Ashbad

  • Guest
Emerald Programming Language / VixenVM
« on: May 10, 2011, 02:03:52 pm »
Emerald:



Emerald is a language I have theorized for a long time.  I have finally decided to make this
my primary project!  I choose to present it here cautiously, not because there's competition
but rather due to the entirely new form of syntax and ideals it portrays.  An example of the

syntax:

Code: [Select]
~seep classpath

define ostack Felines further
   accept Cat, etc
   expand
/further

define type Cat further
   String Name null
   define creator Cat void (String Name) futher
      set Name
   /further
   define action Meow void () further
      pusln("Meow".."/n")
   /further
/further

generate from Felines Cat("Mimo")
Felines.entry[0].Meow               #ouputs Meow :P

ostacks are a main feautre of emerald.  Ostcks are object stacks, which essentially hold
unnamed objects in an indexed format.  This is one theory I thought HAD to be included, and
is really awesome because to create a new one all you have to do is use 'generate' and say
which stack you add it to.  The stacks can be set to accept only certain types, but the
'etc' commands allows for you to later define types that can be inserted into the stack.  
Everything in the stack inherits traits from a higher class -- but I didn't use it ion this
example.

Weird concept, but I personally think it's awesome. That's just one of the surprises in Emerald Coding -- other features include:

- compiles to interpretable bytecode
- full support for object oriented programming
- new additions to the original object oriented approach
- very user-friendly syntax
- easy to learn new concepts that extend modern OOP
- low benchmarks for easy VM translation
- interpretable bytecode can be run at speeds similar to Java and other non-direct compiled languages
- very small program size

One thing that may seem trivial at first is the use of object stacks to hold similar types (Emerald name for classes).  Stacks can have a mainframe type that all objects in the stack inherit properties from.  This allows for easy inheritance that can be applied at any time to specific objects.

All attributes of an object in Emerald are hidden and must be accessed through actions (methods).  Example:

Code: [Select]
generate from Felines Cat(3)   # 3 == age

int KittyAge Cat.Age          #illegal
int KittyAge Cat.GetAge()   #legal
int KittyAge (generate from Felines Cat(3))   #even better!


[More info later]





VixenVM



A low-level minimalistic VM for interpreting Emerald Bytecode!  Includes minimal GC, threading control, and forwards compatibility with higher-level VM implementation methods!

Features include:

- multi-threading (up to 256 threads at one time)
- program-denoted garbage collection
- preloading of bytecodes to ensure speed while interpreting
- minimalistic design for implementations on lesser technologies

[More info later]
« Last Edit: May 10, 2011, 09:16:35 pm by Ashbad »

Offline aeTIos

  • Nonbinary computing specialist
  • LV12 Extreme Poster (Next: 5000)
  • ************
  • Posts: 3915
  • Rating: +184/-32
    • View Profile
    • wank.party
Re: Emerald Programming Language / VixenVM
« Reply #1 on: May 10, 2011, 02:07:38 pm »
Sounds awesome! we should create an interpreter for calcs if its finished! ;D
I'm not a nerd but I pretend:

Ashbad

  • Guest
Re: Emerald Programming Language / VixenVM
« Reply #2 on: May 10, 2011, 02:43:43 pm »
Sounds awesome! we should create an interpreter for calcs if its finished! ;D

That's the thing ;) it IS for calcs :D specifically the prizm, but maybe I'll make a version of Vixen that even is supported on an 84+ ;)

Offline Munchor

  • LV13 Extreme Addict (Next: 9001)
  • *************
  • Posts: 6199
  • Rating: +295/-121
  • Code Recycler
    • View Profile
Re: Emerald Programming Language / VixenVM
« Reply #3 on: May 10, 2011, 02:49:31 pm »
Ashbad, I'm sorry if I'm rude, but how many languages have you said you'd make so far? I can count 3, not being rude, but perhaps you should try and finish your projects before starting new ones because your finished ones look great (Pyyrix, Vector Tunnel, Trio and Nikko demo).

Especially for calcs, making languages for calcs is even harder.

Either way, good luck!
« Last Edit: May 10, 2011, 02:51:13 pm by Scout »

Ashbad

  • Guest
Re: Emerald Programming Language / VixenVM
« Reply #4 on: May 10, 2011, 03:02:49 pm »
Ashbad, I'm sorry if I'm rude, but how many languages have you said you'd make so far? I can count 3, not being rude, but perhaps you should try and finish your projects before starting new ones because your finished ones look great (Pyyrix, Vector Tunnel, Trio and Nikko demo).

Especially for calcs, making languages for calcs is even harder.

Either way, good luck!

those languages turned out to be poorly planned and stupid.

most great languages have had many incarnations before they came into being.  This is the same.  Good day, sir!

and scout, what makes it harder to have it on calc? ;) it really isn't any more difficult, and in many senses much easier, since you have less limitations OS-wise, and the prizm is a perfect platform to kick this off on ;)


Offline AngelFish

  • Is this my custom title?
  • Administrator
  • LV12 Extreme Poster (Next: 5000)
  • ************
  • Posts: 3242
  • Rating: +270/-27
  • I'm a Fishbot
    • View Profile
Re: Emerald Programming Language / VixenVM
« Reply #5 on: May 10, 2011, 03:20:44 pm »
Nice, I look forward to seeing how this turns out. Good luck handling the threading. Context switchers are a bear to write and shell threading compatibility will be a big problem if you're not careful. :)

Side note: Not sure if it qualifies as a "low level VM," since you're presumably writing it in C and it has OO syntax.
∂²Ψ    -(2m(V(x)-E)Ψ
---  = -------------
∂x²        ℏ²Ψ

Ashbad

  • Guest
Re: Emerald Programming Language / VixenVM
« Reply #6 on: May 10, 2011, 03:37:56 pm »
thanks for the heads up qwerty ;)

also, I mean low-level in more of a 'minimalistic' sense ;) sorry if I didn't express that clearly :P

Offline DJ Omnimaga

  • Clacualters are teh gr33t
  • CoT Emeritus
  • LV15 Omnimagician (Next: --)
  • *
  • Posts: 55943
  • Rating: +3154/-232
  • CodeWalrus founder & retired Omnimaga founder
    • View Profile
    • Dream of Omnimaga Music
Re: Emerald Programming Language / VixenVM
« Reply #7 on: May 10, 2011, 04:18:16 pm »
Seems nice, good luck on this. Remember however that designing a language is a huge undertaking. Make sure the syntax is similar to other languages and that it's easy to learn and not a PITA to use. Also keep in mind you have competition for the Prizm with a potential Axe-style language so you need to make sure it has things to offer that other languages don't. I hope to see more languages come out for the Prizm, though, because it will give more choice for the user.

By the way for some reasons the first logo reminded me of an old TV channel that used to exist here (where they aired some cartoons and stuff for both kids and adults).

Ashbad

  • Guest
Re: Emerald Programming Language / VixenVM
« Reply #8 on: May 10, 2011, 04:56:35 pm »
thanks for the heads-up DJ :)

also, I'd be glad to take ideas.  I don't really need any to make this great, bu I would appreciate anything anyone has to offer.

Offline DJ Omnimaga

  • Clacualters are teh gr33t
  • CoT Emeritus
  • LV15 Omnimagician (Next: --)
  • *
  • Posts: 55943
  • Rating: +3154/-232
  • CodeWalrus founder & retired Omnimaga founder
    • View Profile
    • Dream of Omnimaga Music
Re: Emerald Programming Language / VixenVM
« Reply #9 on: May 10, 2011, 04:58:01 pm »
On a side note, would this support multiple type of integers? For example would we have to use 1-2 bytes integers or could we use different ones like 4 bytes unsigned?

Ashbad

  • Guest
Re: Emerald Programming Language / VixenVM
« Reply #10 on: May 10, 2011, 05:07:20 pm »
it will actually support integers of defined length ;) of course it will have 16 bit integers as default, but you can declare them as 8 bit to 64 bit. ;)
« Last Edit: May 10, 2011, 05:07:39 pm by Ashbad »

Offline DJ Omnimaga

  • Clacualters are teh gr33t
  • CoT Emeritus
  • LV15 Omnimagician (Next: --)
  • *
  • Posts: 55943
  • Rating: +3154/-232
  • CodeWalrus founder & retired Omnimaga founder
    • View Profile
    • Dream of Omnimaga Music
Re: Emerald Programming Language / VixenVM
« Reply #11 on: May 10, 2011, 05:43:06 pm »
Ah ok that's good. :)

Ashbad

  • Guest
Re: Emerald Programming Language / VixenVM
« Reply #12 on: May 10, 2011, 07:28:43 pm »
yeah, I want low and high level support on this ;)

Any ideas?  Please express any ideas you may have here :D

Offline AngelFish

  • Is this my custom title?
  • Administrator
  • LV12 Extreme Poster (Next: 5000)
  • ************
  • Posts: 3242
  • Rating: +270/-27
  • I'm a Fishbot
    • View Profile
Re: Emerald Programming Language / VixenVM
« Reply #13 on: May 10, 2011, 09:14:41 pm »
The ability to insert hex would be nice, as well as a lot of drawing commands.
∂²Ψ    -(2m(V(x)-E)Ψ
---  = -------------
∂x²        ℏ²Ψ

Offline DJ Omnimaga

  • Clacualters are teh gr33t
  • CoT Emeritus
  • LV15 Omnimagician (Next: --)
  • *
  • Posts: 55943
  • Rating: +3154/-232
  • CodeWalrus founder & retired Omnimaga founder
    • View Profile
    • Dream of Omnimaga Music
Re: Emerald Programming Language / VixenVM
« Reply #14 on: May 10, 2011, 10:27:01 pm »
As a suggestion, try to not make the interpreter and editor ridiculously massive. If someone wants to play Pong, he's not gonna download an extra 1 megabytes interpreter, plus it would take a long while to transfer to the calc anyway.

Also make the editor user-friendly, because for example with BBC Basic for the 83+ people were turned away by the editor.