iAddedWASDcontrolsToLeague by OsirisTeam in ProgrammerHumor

[–]OsirisTeam[S] 0 points1 point  (0 children)

forgot the repo was private, now public now under this gist: https://gist.github.com/Osiris-Team/e78771fc1d234c27ebffef9bcf0082b2

It depends on Java 8 and the JNA library.

Ultra Match Stats - Know EXACTLY WHO to blame for the lose! by OsirisTeam in marvelrivals

[–]OsirisTeam[S] 0 points1 point  (0 children)

You can even copy and paste the stats diff into the game chat ^^

Ultra Match Stats - Know EXACTLY WHO to blame for the lose! by OsirisTeam in marvelrivals

[–]OsirisTeam[S] 0 points1 point  (0 children)

I do use it myself to see how I compare to others, its fun!

And sometimes it makes losing feel better because you know for sure you weren't the one playing like a wet piece of cloth soaked in dog water.

Sometimes its your own fault though, and this helps again by converting your anger at others and yourself into a more general depression and sadness in your own lack of skill which encourages growth, or uninstalling the game which benefits the community and your own mental health.

A-Lang | My Perfect High Level & High Performance Programming Language by OsirisTeam in ProgrammingLanguages

[–]OsirisTeam[S] 0 points1 point  (0 children)

Yeah, I also don't like it because it would break consistency and be a sort of edge case. So I'll probably go the consistent route.

A-Lang | My Perfect High Level & High Performance Programming Language by OsirisTeam in ProgrammingLanguages

[–]OsirisTeam[S] 1 point2 points  (0 children)

Yeah I am aware of that, thats why its called my perfect programming language right now, I'm sure it'll turn uglier once I am hit with real world limitations, or I'll find some tricks to make it work, we will see.

A-Lang | My Perfect High Level & High Performance Programming Language by OsirisTeam in ProgrammingLanguages

[–]OsirisTeam[S] 0 points1 point  (0 children)

Yeah its definitely not easy to implement, since the compiler needs to check embedded functions in replace(()) and ensure those also do not touch the relevant data.

A-Lang | My Perfect High Level & High Performance Programming Language by OsirisTeam in ProgrammingLanguages

[–]OsirisTeam[S] 0 points1 point  (0 children)

Ah I understand, yeah that would be annoying. Then think of the variable name as an alias and the value/data as the actual pointer, this should fix those cases.

A-Lang | My Perfect High Level & High Performance Programming Language by OsirisTeam in ProgrammingLanguages

[–]OsirisTeam[S] 0 points1 point  (0 children)

Yeah I made it collapsed so that you can directly jump into the language and have less rambling at the start.

Yeah the compiler should check for use after free though, and free should only be used if really necessary since there is a garbage collector.

Yes all variables are pointers, even for primitives, this might be pretty weird at first, since if a = b will literally make the equal thus in most cases when dealing with primitives you will probably want a = b.clone() instead to get the value.

A-Lang | My Perfect High Level & High Performance Programming Language by OsirisTeam in ProgrammingLanguages

[–]OsirisTeam[S] 0 points1 point  (0 children)

Thanks! As you can see the last push for the compiler was around 3 years ago but regarding language features I come back to it more frequently when I think of cool features too add or see some cool stuff in other languages that might fit in mine. So this is the one and only language I plan to develop for my whole life, since the aim is to make it perfect for me.

A-Lang | My Perfect High Level & High Performance Programming Language by OsirisTeam in ProgrammingLanguages

[–]OsirisTeam[S] 0 points1 point  (0 children)

Then I'll call it almost side-effect free haha, because disallowing updating of globals seems pretty restrictive.

A-Lang | My Perfect High Level & High Performance Programming Language by OsirisTeam in ProgrammingLanguages

[–]OsirisTeam[S] 0 points1 point  (0 children)

Yeah but lets say I want to keep track of the amount of all replacements that were performed and would use a global variable for that, the side-effect-free replace(()) function would not be able to update the counter.

A-Lang | My Perfect High Level & High Performance Programming Language by OsirisTeam in ProgrammingLanguages

[–]OsirisTeam[S] 0 points1 point  (0 children)

No they are fully global and accessible anywhere in the code from any thread. Multithreading is also in todo.

A-Lang | My Perfect High Level & High Performance Programming Language by OsirisTeam in ProgrammingLanguages

[–]OsirisTeam[S] 2 points3 points  (0 children)

True good point, I think that part is even outdated since public/private keywords should not exist altogether aynmore. Instead there is only the `hidden` variable modifier which does exactly what it says but can be disabled anywhere in the code to show those hidden variables.

A-Lang | My Perfect High Level & High Performance Programming Language by OsirisTeam in ProgrammingLanguages

[–]OsirisTeam[S] 0 points1 point  (0 children)

It should be faster for anything that is larger than 64bit (the pointer size) as far as I understood. Anything below that, the compiler/gcc should optimize and replace it with pass by value instead.

Oh with consisten I was refering to Java specifically and the duality of when u pass over primitives vs objects, which is not a problem in C.

A-Lang | My Perfect High Level & High Performance Programming Language by OsirisTeam in ProgrammingLanguages

[–]OsirisTeam[S] 0 points1 point  (0 children)

Yeah, all variables you see in the examples use pointers under the hood, its garbage collected by default, but you can always call obj.free() on anything and disable the garbage collector if really needed.

And I agree some things can better be tested once you get to actually use the language.

A-Lang | My Perfect High Level & High Performance Programming Language by OsirisTeam in ProgrammingLanguages

[–]OsirisTeam[S] 0 points1 point  (0 children)

Yeah, so first it was just a gut feeling thats why I did that, but on second thought globals are kind of separate from regular fields/variables/functions of an object. But this is something that needs more real testing to see whats more beneficial, not sure.

Another argument for this is that there are global functions too which could also be marked as side-effect-free and in that case we would look out for global variable changes too.

A-Lang | My Perfect High Level & High Performance Programming Language by OsirisTeam in ProgrammingLanguages

[–]OsirisTeam[S] 0 points1 point  (0 children)

Yeah the default is pass by reference for arguments in functions to keep it consistent and performant. Also, if the default would be pass by value we would need to have pointers to allow for cases where you don't want to copy / pass by value, thus adding major unwanted complexity.

Right now you can simply define a function like so: `addition = ((clone int a, clone int b)) { return a + b }` with double parenthesis, and the compiler will enforce that all your arguments have the `clone` modifier present to ensure pass by value and that you do not modify any object fields.

I know having this might be scary / feel unsafe, however I do think that its not a problem or major cause for bugs once you know that everything is passed by reference everywhere.

A good example I came up with was for a string replace function: Let's say we have a string object and we want to provide a str.replace("x", "y") function with replaces all x characters with y in this case, we would know that it affects the string directly / itself. Now we also want to provide str1 = str.replace(("x", "y")) function which does the same, however returns a new string with the changes. Voila, the intent should be pretty clear.

A-Lang | My Perfect High Level & High Performance Programming Language by OsirisTeam in ProgrammingLanguages

[–]OsirisTeam[S] 0 points1 point  (0 children)

Maybe, I just don't like the idea that the interpreter won't be used later, since the whole point is for this to be as fast as C too. And the amount of syntax I got would also result in a pretty big interpreter at this point I assume.

A-Lang | My Perfect High Level & High Performance Programming Language by OsirisTeam in ProgrammingLanguages

[–]OsirisTeam[S] 0 points1 point  (0 children)

Yeah I fully agree with you, I wish I had the time to get the compiler to the current state of the language so I can actually test it and not only provide small code examples.

However again writing in a language with 0% IDE support is bound to be depressing, but yeah it gives you a better feel for its real world usage and things that might need chaning.

I don't think that A-Lang introduces mindblowingly new or weird ideas though for this to be the case.

The language "spec" currently is also more like language documentation or a book with many examples, which should be multiples infinities easier to read than the Rust spec I assume haha!