Also we shouldn't say the feature in Simple is rivalry. This is something that any language core team could merge if:
Also if we were to compare it with yorlang. I don't suspect yorlang will be developed into becoming a fully mature laguage, based on examining the language owners point of view.
For me, what I'll also want to know is Simple's vision. As the only closely related statement I saw about this on the readme is,
"SIMPLE is a plain and innovative programming with multi-paradigm. It can be embedded in C/C++ projects. The language is portable to various OS including windows, macOS, any linux and unix distros and other OS. The language is small and fast."
For emphasis: a plain and innovative language .
Of which such a feature falls under.
Hence it's better to come up with a more concise vision statement, if that was not what was meant.
@Youngestdev for both large and small programs the Console is the better alternative, check my recent update the examples no more uses
@ instead they uses the stdout, stderr and stdin from the Console module. This will ensure more security and more advance way of printing and reading from standard stream. the following are being alternated
stdout.print() #instead of display stdout.println() #instead of `@`
displaycan be spared for use for quick debug and short samples like the native hello world. the
std streams in console are very efficient as they also resolve escape characters and the
printf() which works like the native C printf is under development
@/all I am adding compilation to object code to simple-lang to get ride of the module and make the entire source into one file of bytes codes like javac. The compiled source will be independent of the modules, such that when the compiled version is taken to another computer which does not have the modules it will execute. The advantages are below :
to compile to object code after implementation
$ simple --simplify simple.sim
It generate a corresponding object file in the same folder
e.g the rule
... assignment : Identifier assignmentOperator ( Identifier | Number | String | List | invokeBlock ) | Identifier assignmentOperator classInit | Identifier assignmentOperator propertyStmt ; ... Identifier : [a-zA-Z_] [a-zA-Z_0-9]* ; ... assignmentOperator : '=' | '+=' | '-=' | '*=' | '/=' | '%=' | '<<=' | '>>=' | '&=' | '|=' | '^=' ;
The 'assignment' rule is how simple-lang parse assignment statement
Identifier assignmentOperator ( Identifier | Number | String | List | invokeBlock ) = Identifier = A valid identifier assignmentOperator = one of the assignment operator in the above rules (Identifier = as abover) (Number = a valid integer) (String = A valid string) (List = a list item) (invokeBlock = calling a block)
With the above that means this is valid
Name = "Sokeng" because (Name is an Identifier, = is an assignmentOperator, "Sokeng" is a string) which satisfy the rule
Identifier assignmentOperator ( Identifier | Number | String | List | invokeBlock )
Name = *+#because this satisfies the rule
Identifier assignmentOperator arithmethicOperator*and it not part of the assignment rule