Acid_Snake wrote:Infinite Chalupas wrote:Basically, I'm working on designing a new programming language.
I'm also working on my own language (got modular programming, basic OOP and syntax working), and from what I can tell by your definition, you're gonna make the same mistakes that makes Java and C# a no-go for most serious programmers, big-budget game developers and hackers: outdated C syntax (for C it's understandable, it's a freaking old language, but when modern languages do this it feels like kicking the creator in the ***)
Most good languages are C based. I love the python syntax, don't get me wrong, but it's a bigger kick in the *** when a single misplaced space can destroy your entire program. I am bringing something new to the table with the scope accessing. The idea came to mind from back when I was writing N64 assembly mods, how efficient it would be if I could relocate my code without having to use an assembly stub.
Acid_Snake wrote:, no low-level access (and lets be honest, adding pointers doesn't make your language low level, for the most part C# pointers are useless), virtual machine *** that slows the whole thing down,
This is meant to compile to native code (or rather, compile to an intermediate assembly language, then from that to the actual assembly language, then to machine code) One of the reasons I decided to do this to begin with was because of the nasty GNU AT&T syntax that makes low-level stuff tedious and almost impossible. The assembler should adhere to the architecture's specification in my opinion.
Acid_Snake wrote:forced OOP-only ideals which force you to do code smells (like static classes), overly convoluted descriptors (private static final unsigned long int x = 0, wtf?),
I've thought about that quite a bit actually. Despite my favorite language being C, I do believe programs should be well structured, so namespaces and classes are a must. As for the overly convoluted descriptors, I think you're looking too much into it. The only one you actually need is "static". Members are public by default. The others have no actual purpose other than to restrict the developer; as there is no difference between a private and public member at runtime. You can go without using them if you want, but they're essential for team projects as a way of communication, saying to anyone else who may be working with your code that "you shouldn't use this private function, because it could change", or "you shouldn't extend this object".
Acid_Snake wrote:no proper modular programming (and badly implemented namespaces, if implemented at all) and overall treating programmers like **** while still doing a lot of implicit stuff (which is in itself a contradiction, but these two languages do it).
Namespaces were never intended for modularity, as the name suggests, they were meant to shorten object names and encapsulate objects into spaces to prevent symbol conflicting.
================================================
Also, just a glimpse of the syntax I've been working on so far:
Code: Select all
namespace MyNamespace
{
class MyClass
is private, static, and final
{
method DoStuff()
throws MyException
{
for (var i = 0; i < 5; i++)
{
if (i == 4)
throw MyException.Create("MyExceptionText");
}
}
}
interface MyInterface
{
method DoMoreStuff();
}
class MySubclass
extends MyClass,
implements MyInterface,
and is public
{
property MyProperty as int is public
{
get { return 0; }
};
method DoMoreStuff()
returns int
{
return 0;
}
}
}
I thought it would be a good idea to use "as", "is", and "and" keywords to move the attributes to the right of the object declarations, which would allow them to optionally be placed on a new line; thus making the code more legible. Thoughts?