Omnimaga
General Discussion => Technology and Development => Computer Projects and Ideas => Topic started by: Ashbad on May 29, 2011, 03:18:24 pm
-
Hello, Again:
I'm not making an all new computer language, please hear me out. I'm simply against the idea of making an all new language for the Casio Prizm -- C is growing more wonderfully fun for me to code in as I delve deeper into it, and even though it's fun and all, there's not enough documentation of the Prizm to even attempt my own language for it yet. That's why I'm moving it all to the Computer Platforms of today ;D Specifically, windows to boot, I don't plan on getting Linux anytime soon.
Basically, it's a total movement over in platform, and few differences beside "Emerald" > "Verdant" (an unsuccessful language from the 80's already took the name Emerald, and it sounds like a total steal from Ruby) and "VixenVM" > "Vixen".
With that in mind, I'm much more open to suggestions than before, and I think I'll actually appreciate any help I can get, teaching-me-concepts and giving-advice wise. With that in mind, I have a few areas where I would like to see some views:
- What language should I write it in? This one will most likely turn out to be C, and that's fine, that's my idea too ;)
- Compiled (hard), or Interpreted (Easier)? I'm thinking Interpreted.
- OO from the bottom up like Ruby/Python, or like Java or even C++? I'm thinking mostly OO based.
- What C compiler? I'm not actually sure myself, I was thinking GCC, but I've heard sayings like "LLVM is faster...", so any advice on this area is welcome.
- Changes in original syntax? I'm thinking of making it a bit more condensed.
- Changes in OOP design? Actually, I'm sticking with the weird object groups idea I came up with most likely.
- Anything else?
I want to do it the right way from the beginning, and I think I'm able enough to do a somewhat-simple Interpreted language that could be useful in ways. I know it won't be "Widely used throughout the industry to make Halo 5 dimensional games".
-
C/C+= for writing
Fastest interpreted you can amke
OO completely make that a strong base for it
I'd say GCC
Smaller more condensed code good
whatever yousee to work best and most intuitively
Make it fast but easy to code in. this should not be a malbolge. and try to stop changing your project idea overall it just hurts it. Make it for linux also multiplatform always good.
I think thats good for suggestions for now
-
Good ideas -- I personally won't be developing for Linux though. I know infinitely more about windows than Linux -- though with some help from other people I could eventually port it. Though, Windows first.
-
I might be able to collaborate with you for linux. That would only be after July 8th though. After that my crazy summer is over. I'll see what you get done by then ;).
-
Hopefully by then I have a decent chunk of the interpreter working -- I'll be glad to collaborate with you :)
-
Andby then I should have my nice new 64 bit laptop with Linux/windows/anything else I need
-
nice :) perfect platform for testing a linux version. I'll try my best to not use anything like <windows.h> so it won't be so difficult for you :)
-
That would be great. If worse comes to worse I'll code your language in a virtual box or a separate partition
-
And, anyone who wants to contribute ideas, feel free to post your ideal form of syntx, in a hello world program in a hello world calss :)
-
Did you call your language after bwang's brother nickname? O.O
Anyway I'm sorry to hear it's not for calcs anymore. I hope you still plan to develop for calcs in the future. D: However I guess it might be a good idea since there are already two new languages coming out for the Prizm, one that is popular here (Java) and another that might look like a popular calc one (Axe), so you would have maybe some unsustainable competition :/. I am curious how this will turn out as computer language.
-
I've actually been working on this a lot lately :) If you would like some stuff, it's a bit late and I don't have much time to say much, but I can give a general update:
Syntax: for now, it's actually very finalized. It's a lot closer to a mix between Ada, Ruby, and Lua with tons of my own things :)
Interpreter: Haven't really started at all.
Compiler: actually, some decent progress. Right now it detects strings, numbers, and that's all... :/ not much, but once I get into the swing of things more, it should go faster.
Website: I need help, eventually.
Documentation: Started, far from done, but at least is almost done with operators :) MS Word actual has a use when you put it to work making web pages.
Now, here's an interesting part for you all. Since I have finished the syntax for now, I am going to post 4 different examples of programs all using normal Verdant conventions. Whoever can guess what all 4 do wins a chance to try out the Alpha compiler/interpreter and VM on August 1st.
Here they are, in order. You get no hints from me -- I just need to see how easy they are to read and how different they are from the languages you may normally use.
1:
(http://img.removedfromgame.com/imgs/VerdantCodeEaxmple001.PNG)
2:
(http://img.removedfromgame.com/imgs/VerdantCodeEaxmple002.PNG)
3:
(http://img.removedfromgame.com/imgs/VerdantCodeEaxmple003.PNG)
4:
(http://img.removedfromgame.com/imgs/VerdantCodeEaxmple004.PNG)
Good luck ;)
-
1.
2
3.Hello World I believe
4.program in a program(very inception like)
Some of the syntax looks very confusing, but could be useful
-
2/4 correct :)
yeah, it's a bit confusing, but I'm finding it to be a lot more intuitive than other languages -- plus, for your pleasure, I made the first two highly twisted >:D
-
Yeah, it's definitely more intuitive than some languages.
I might be able to help with a website later on.
-
my guess is 2 tests to see if an input is "number" and 1 is an over complex hello prog
EDIT:I might be able to help with a website I learning all of that just recently
-
1.
hello I guess :P
hello I guess :P
2. Prompts you. If it's not a number, it displays "not a number!" and breaks (exits, whatever).
Otherwise, it counts up from 1 to the number you entered, printing each one.
Then it prints that line starting "That was an awesome"...
3 & 4, what Ruler said.
-
That strikes me as kind of an object oriented/functional markup language more than a programming language for some reason.
One question I have is why "Give <n>" rather than the standard "Return"?
-
It might be stack-oriented. Can't tell. Or maybe he just likes it that way :P
-
Glad to see some more progress on this Ashbad.
-
Thsi looks liek it could be very useful for some things, but I'd like a good explanation of the syntax
-
Thsi looks liek it could be very useful for some things, but I'd like a good explanation of the syntax
That you shall get in the future, once I get further on the documentation I'm laboring on ;)
however, I used 'give' because I pretty much like it that way. You see, in a function, you can 'take' an argument, which means basically you absorb the argument into a local variable in objects, such as:
type cat
string:char name <to nil
method new(name)
take @name
enddef
enddef
-
so what is the point of having
method new(name)
it seems you'd only need method new()
then the take would give you the local variable you need
-
well, it would need the argument to be taken, because otherwise there would be nothing to absorb ;)
-
That is confusing me. Could you please explain what the difference with take and having the argument is
-
okay, I'll try me best to explain ;)
basically, a local variable that is accessed within methods starts with @, showing it's a instance-only variable (@@ means type variable, and @@@ means group variable). When you 'take' an argument, you're doing basically this:
self.variable = new_variable
except, it would just "take" it instead:
take @variable
The two are exactly the same in function, though take can be used in other applications as well, such as in this:
method change_attribute_for_group(attribute)
take @@@attribute
enddef
which is highly useful for quickly changing a framework for an instance group.
-
So its more like setting a class variable in python right?
-
yeah, it's pretty much like that :)
-
I don't know why, but it looks really confusing to me. Although I'm more used to Python and C language syntax than anything else.
-
Well the syntax is a bit of Rubonic Pike mixed with my own verbose ideals. It's a bit different than many other languages, but to say one thing, its extremely flexible and awesome, as you can do things like non-linear expressions, polytyping variables to fit certain criteria, and such. Comparison of C code and Verdant code:
typedef union {
Int val1;
Float val2;
} int_float;
Int_float apple = 2.0f;
apple += 5;
apple *= 2;
int:float apple <to (2 * (parseval + 5) to> parseval)
It's not a great example, but it shows non-linear assignment and the use of parseval (a variable local to each line of complete code, basically holds currently parsed value)
Keep in mind, the C code I just posted would most likely not be far off from what would be executed if the Verdant code above was compiled and then run.
Also keep in mind that Verdant code I posted isn't very optimized at all, and would be better written as this:
int:float apple <to 2 * (parseval +5)
But that totally ruins my example ;)
-
Perhaps you could make Verdant for EnvisionDev? It is about programming, anyway ;D
Anywhoz, It's a big project to make a whole programming language, and I'm ... uhhh..... proud of you to be doing this. Awesomeness ;D
-
Thanks, I'm glad you like it :) for now I'm making it just for windows, but I will code it with limited libraries so it'll translate easily. I'd be glad to try later on though.
I think that since I made significant progress on ROL:AT today, I'll spend some time on this after din.rar.