I said I already did that, not that I needed you to. But thanks anyways. :)Quote:
Originally Posted by Jacob Roman
Maybe we can redistribute it ... and I quote:
Quote:
Originally Posted by EULA
Printable View
I said I already did that, not that I needed you to. But thanks anyways. :)Quote:
Originally Posted by Jacob Roman
Maybe we can redistribute it ... and I quote:
Quote:
Originally Posted by EULA
You can't. The toolkit is not re-distributable.
Well that clears that up. Can you quote what part that makes you say that cornedbee (although I'm sure you are right)?
According to that, it is redistributable, cornedbee. There was nothing in there that restricted us from doing so, and it says we are allowed to redistrubute it.
Nowhere does it say we can redistribute it (except kind of in that quote I posted). The only thing it says you can redistribute is the code listed in REDIS.txt (which says you can't redistribute any code).
So its still undecided.
I believe this is quite explicit. The only way you're allowed to give any part of the toolkit to someone else is if you are giving it completely away, not leaving anything for you. It's like when you re-sell a book. You're not allowed to make a copy first.Quote:
The initial user of the Software may make a one-time permanent transfer of this EULA and Software to another end user, provided the initial user retains no copies of the Software.
Yeah. I was going to bring that up. I was thinking about it while I was out and about earlier today and that was the part that stuck out in my mind. I agree.
I think we should translate LF into MASM because it allows the most ease of use. The macros are awesome from what I have seen so far.
What's the point of outputting inline ASM wrapped in C++? Why not just output C++? Then we are effectively building a C++ macro language. A proper compiler will either output ASM or object files. What's it gonna be?
Well it's just an idea, penagate, incase we cannot get a decent compiler going on our own. The point is, is that when we have code to convert LF code to C++ (with some of it outputing inline ASM), the compiler and linker for C++ files can do the work for us, thus making it easy to make win32 and dos exes. And C++'s inline asm supports SSE and SSE2 instructions, so we can have lighting speed executed code going. Not all of it is gonna output asm, such as the win32 stuff. Mainly the math fuctions and operators, posibly more.Quote:
Originally Posted by penagate
(see bolded part of quote) Jake, how do you intend on finding a compiler and linker for C++ that we can redistribute?Quote:
Originally Posted by Jacob Roman
You need to seriously consider using MASM or some other ASM to output LF into.
I have a few points to bring up Jake:
1) I don't think you should try to make the IDE and compiler by yourself. I know you want to have control over this project (or at least that is the feeling I am getting from you), but you need to let us help you and work as a team. If you do both of those parts then that doesn't leave the rest of us much to do until much later on. I think it would be better if (chem/penagate) and I do the IDE in VB6. That also lets you focus totally on the compiler and make it as fast as possible. I think you are spreading youself too thin by trying to do both.
2) We need to make a decision about how we are going to pre-compile/compile LightFusion. I think the C++/ASM idea is out the window because we have no way to impliment it unless you want to force the user to DL the toolkit, but then all future versions of LF will be dependent on the toolkit and I'm not sure I like that. My vote goes to MASM. Whatever decision we make, we need to make it soon, because I want to read a tutorial that is geared towards that ASM. I know the instruction set is always the same, but the rest is always different.
Also, please skim over the last page and this page and reply to some of the stuff I have brought up that you missed. I would appriciate it. Thanks.
:)
May I add that I think it's a bad idea to write an IDE now at all? You should focus on designing the language and writing a compiler for it. You can write the code in some other editor for now. The compiler should be called from the command line.
Adding to what CornedBee said,
I think this project has a sort of "VB" air to it. I don't actually like the sortof-integrated IDE/compiler model at all. They should be totally independent components.
It could be a 2-step or 3-step compilation process:
2 step: Compiler -> Linker
3 step: Compiler -> Assembler -> Linker
Up to you guys. 3 step is easier I'd say.
That sounds good to me. But at the moment Jake is doing most of the work and hasn't been able to reply to this thread much the last couple days, so I don't know what to say.
I agree that we should skip the IDE step for now, but we can't force Jake to stop working on it if he wants to. But even if he is working on it then they should still be totally separate components.
PS - Does anyone know if its possible to write a custom control in VB and use it in C++?
Yes it is. You use it like any other ActiveX control. That is, you hate MS for ever inventing the technology ;)
Oh brother.... COM in C++.... :sick:
COM? Whats that?
Is it possible to use/reference a .OCX (ActiveX control) in C++?
COM is the basis of ActiveX.
So is the answer yes? Are you saying that you can use COM in C++ to access a .OCX?
And yes. But pretty much you have to do what VB does for you.
What do you mean?
All the behind-the-scenes COM object referencing, instanciation, code etc.
What do you need it for?
That means that using ActiveX control requires lots of code from you in C++. VB already has that code.
Desiging the IDE is pretty much cake, so I don't see why I shouldn't be working on it with everything else. I'll upload the source code to it soon (possibly this week) and allow others to work on it. At the same time, I've been designing the syntax. But since I have a difficult time getting on the computer cause of family and all using it, I've been writing it in a notepad with a pencil. I will share it with everyone as soon as I have the time to get on and type all my notes from the notepad into the computer.
And I don't wanna worry about writing a compiler/linker just yet until I successfully designed the syntax, and have written a decent scanner/parser. Lets focus on one thing at a time here, as a team. ;)
The scanning and parsing is all done in C++. The compiling is a blend of C++ and asm in the book I got.Quote:
Originally Posted by eyeRmonkey
Quote:
Originally Posted by eyeRmonkey
I think the one line If statement function (IIF(), not the other one line if) should use the same asm code as a real one line if statement.
Ideas:
Variables:
- Select heap, stack, or register (if possible) allocation when declaring variables.
- Directive sets stack size and allocation defaults
- No String type. String should be a class.
- Types should include (at least):
- Should be support for creating your own types.Code:char
short, ushort
word (32/64 bits)
long, ulong
dword, long64, ulong64
float (single)
double
Structs:
- Allow shorthand declaration syntax
- Allow methods and operators in structsCode:struct RECT { long Left, Top, Right, Bottom }
- Structs have implicit (assumed but undefined) constructors, e.g.
ProceduresCode:RECT rc = new RECT(10, 4, 5, 8);
// instantiates a new RECT structure with left=10, top=4, right=5, bottom=8
- Instantiation of procedures
- Dynamic code modificationCode:void SomeProc(long arg1, arg2)
{
// do something
}
SomeProc myProcInstance = new SomeProc();
// I had a good use for this earlier, but I forgot :(
- [Conditional] redirection without an extra call
- Built in support for thunks
Syntax ideas:
(Thought of most of these ages ago)
- Conditional expression validation
- Multiple specificationCode:(assignment expression) = (test expression)
// e.g.
(x = 5) = (y = 9);
- Combined assignment and testing:Code:a, b, c, d = 5;
if (a, b, c, d = 10) {
a, b = 5;
c, d = 7;
}
- Interface specification when accessing methods with multiple implementationsCode:if (a -> b = 5) { ... }
// instead of
b = a;
if (b = 5) { ... }
Code:Bear MyBear = new Bear();
// Bear has 2 implementations of Sleep(),
// one from interface IAnimal and one from IMammal:
MyBear(IAnimal).Sleep();
MyBear(IMammal).Sleep();
// two different results
Code example:
Code:word fastcall Exponent(register num, register exp)
{
switch (exp) {
case 0:
return 1;
case 1:
return num;
case else:
for (register i=exp-1; i==1; --i) {
Exponent *= exp;
}
}
}
Very nice, penagate. I had some of that written down already, but you pretty much had some things that I didn't. I'll add that to the current syntax I got. When I get it all typed in a Word doc, I'll upload it and share it with the team, and we can debate or make suggestions on how it should be then.
Hey, thats nice.Quote:
Originally Posted by penagate
chem
You do realize that this effectively means including the compiler in each program that uses this feature, right?Quote:
- Dynamic code modification
Awesome ideas penagate.
Jake, since I have nothing to do at the moment I was thinking of making a custom control in VB6 that you could plug into the the IDE. The control would be an RTB that allows easy syntax coloring and has added events (like for returning what word was right-clicked/double-clicked).
It won't be tailored directly to LF, but it will have all the features we need (that way I can submit it to the code-bank when I am done.
Jake, the only question I have for you is will you use it?
Create it, and lets see what it's all about. I'm curious to see this control myself. Be sure it's got a Treeview with the [+] and [-] to open and close code sections of sub routines like VB.NET has. That would be awesome.
Also, be sure to add this, if possible. This is just an idea, but I would like user created subs/functions be colored whenever typed and used as a link so when a person clicks on it, it will jump right where the sub/function has been created. That way there people don't have to waste time searching for the sub/function, and makes it user friendly.
That is on the list of To Do's, but I can't do that until I figure out a way of letting the user (of the control - IE: You) define what starts and ends a code block. I want this to be a general purpose control unless I have no other way of doing things.Quote:
Originally Posted by Jacob Roman
That won't be part of the control it's self, but there will be events and methods that let you do that very easily.Quote:
Originally Posted by Jacob Roman
I want to code an event that will return the word that was right-clicked/double-clicked on. Then you you could use a method that I suppy with it to move to the proper line easily.
An unfortunately good point that I hadn't thought of.Quote:
Originally Posted by CornedBee
Collapsable blocks would just be { and } ;)
And #region ... #endregion if you want to add that too.
{ and } wouldn't work if I wanted to make it general purpose (VB does things differently), but I have decided to tailor it to LF specifically. I am actually not going to start from scratch.
JA provided me with a custom control called CodeSense that I plan to extend for use with lightfusion. It already has most of the features we need, but I can add the few that are sitll missing.
Check out Notepad++. It's free and I use it all the time as a Notepad replacement (and for a lot of coding). It has customisable lists for folder open and folder close keywords. If you want to make the control truly adaptable then I suggest go that route ;)
Niggle which I just noticed now since I'm not on my own computer: The braces { } and brackets ( ) look very similiar in Courier New. I never noticed that before since I have all my fixed-width fonts set to Lucida Console, which I vastly prefer. Just something to consider for those making the IDE :)
I noticed it to about 8 pages back what I was suggesting using them for instring variables.
Pfft. You're blind pena :p Sifn't be able to tell the difference :)
I've always had Courier New for every type of programming I've done, even for those that default to something else (like FixedSys for MASM). Perhaps the ability to change fonts and the colour each keyword is highlighted is in order :)
chem
I'm gonna work on much of the IDE as I can, and even though it will be far from complete, I will upload the source code this weekend to allow other team members to get a crack at it, and make improvements. I haven't been able to get on my fathers computer for the past couple of days (mainly cause of my brother playing those MMOFPS's for hours on end), which is where my LightFusion project is at. But I will try and get on tonight to work on it.
Jake. 2 things:
We still havn't decided to what we are translating LF into and we havn't made any progress on our list of rules.
We are gonna attempt to make the compiler and linker on our own (which will be later on), but if we fail and cannot do it, then we will try making a precompiler.
I have posted a thread over in the Assembly section on converting assembly to machine language, but got no replies yet.
Also, as for the list of rules, since you guys have more access to the computer than I do, due to my situation, the rest of the team is gonna have to add to the list of rules.
I really think a compiler and a linker is a little too much and will give us no room to speed things up. At least with an GNU assembler/linker all the hard work is done for us at great speeds AND
PS - Chem and I decided it would be better to temporarily remove him from the project until we get to the point of making the library functions. That way he won't feel over loaded (minishop. school, etc.)
You plan to temporarely remove penagate? He can temporarely not work on the library functions. Right now, we need to focus on three things. The IDE, the syntax, and the rules/features of LightFusion. Once we get a great deal done, then we can jump into the other things. Let's focus on this step by step.
PS: What is GNU?
GNU = GNU's Not Unix ;)
No I don't plan on removing penagate. He has offered tons of syntax suggestions and other help (including graphics).Quote:
Originally Posted by Jacob Roman
Jake, I have been thinking about it, and I really think myself and/or penagate should do the IDE in VB6. We all know VB6 and only you know C++ (or at least I don't think penagate knows it). I know you have been working on it a lot, but it is easier to apply custom controls in VB (like tabbed code windows and an awesome text box control that our very own Joacim Andersson made (well not made, but extended).
This allows you to work on the syntax and compiler all the time instead of spreading youself thin. It also keeps me busy and I am sure I can delegate a good portion of the work to penagate and it will give him something to do also.
Please seriously consider this. I think it would be better for everyone.
http://www.gnu.org/
From their own page:
Quote:
The GNU Project was launched in 1984 to develop a complete UNIX like operating system which is free software: the GNU system, (GNU is a recursive acronym for “GNU's Not UNIX”; it is pronounced “guh-noo,” “noo” being like the American “new”). Variants of the GNU operating system, which use the kernel Linux, are now widely used; though these systems are often referred to as “Linux”, they are more accurately called GNU/Linux systems.
[...]
We support the FSF's mission to preserve, protect and promote the freedom to use, study, copy, modify, and redistribute computer software, and to defend the rights of Free Software users. We support the freedoms of speech, press, and association on the Internet, the right to use encryption software for private communication, and the right to write software unimpeded by private monopolies.
Thanks CornedBee. I didn't know that much about it. When I said GNU I was reffering to a free compiler/linker and I think GNU provides/makes those.
Yep, that's part of an operating system.
Quote:
Originally Posted by eyeRmonkey
Actually I'm strong in VB, since I've been working with it for 9 years, and only have a little experience with C++, which is like 2 years, most of it being from Borland 8 years ago, till I gave up on it a year later cause it got too difficult for me. Then years later, I got into VC++ 5.0, then took a term of Intro to C in college, then obtained my free copy of VS.NET 2003 Professional Edition from the computer lab at my college, and got into C++ from that.
Thats fine, but I know NO C++ so I won't be able to help in anything written in that. Thats why I think I should do the IDE in VB with some help from penagate. Please consider it and get back to me.
I basically know C conceptually, and not very familiar at all with the OO extensions in C++. So no real practical experience with it, but I understand it so it's not hard for me at all. But, if you don't understand it, it's a bit daunting. Coming from VB makes it doubly hard as the two languages are not really on the same level, so you can't treat it as an equivalent. You need to fully understand how VB works inside out in order to apply any of that knowledge to working in C/C++, and even then there isn't a lot to be gained from it. If I was learning it all again I'd start with C and then a short shift to C++ instead of VB.
But, I'm not fussed how we do the IDE. I think the compiler is way more important. Unless Jake can split the work on that up, I'm not too sure how we can all contribute in that area.
I agree with CornedBee that the IDE isn't important at all right now, BUT there isn't anything for me to do until we decide what we are translating LF into and even then we can't write Library functions for a while.
The IDE is just something to keep me busy. I have made a really good start on it today so we will see how things go. I will post what I have made in a week or so. It looks really professional so far.
PS - Penagate, hows that logo coming? Or it coming at all? :)
Tell ya what, I'll write the IDE in C++ (source code to be uploaded this weekend although not done), and you write it in VB, and we will see which we will like better. I do agree that VB's version will be easier, but this is also a great learning experience for me in C++, and so far it's looking pretty sharp. I would love to have that object you plan on making, which is like a RichTextBox, only better.
As far as that code window I was making, Joacim Andersson has already made one (which he extended from a project that used to be open source). It has 1000 more features than I was going to add, but there are stioll a few that I would like to add.
The IDE looks awesome so far (in VB). I plan on using tabbed windows instead of MDI because in reality, I can't think of a time that I have ever used my windows side by side. Tabbed windows lets you maximize space and organize stuff easier.
Also, for VB there are a few add-ins that I am using to make the IDE look really professional. All the icons for menus and toolbars are XP/3D looking. I am going to post a thread in chit-chat to look for some people that would help me look for icons that match the set I already.
Like I said, in about a week I will post it. If you want to keep working on the IDE as a learning experience thats cool and if it turns out better then the VB version then we can use it.
Alright, kool. It'll be far from complete after I upload it, but it's a start, and it will allow others to continue working on it from where I left off, if they aren't gonna use VB of course like you and penagate, though I am gonna continue working on it as well. It's part of the team work.
Sorry EM, I can't think of any logo ideas at the moment :(
hi guys. I could help with parse code, also have syntax ideas which would reduce sourcecode whitespace.
Fire away :)