This looks very interesting. I'm hoping there will be more documentation. For example, docs for the standard library/packages and explanation about the design of the language (does it use garbage collection? how does the type system work? how does the foreign function interface work? etc.).
Technically I could find all these things out by reading all the source code, but that's a lot of work just to see if the language meets my needs.
Why oh why don't these projects even do simple web searches or stop to think that their users might want to search (and find relevant answers for) their language, library, or other project before picking the same bad names over and over again?
A quick look suggests strong typing and that's a huge plus. The syntax is easy to understand and read, but I hope it will be consistent - if writeInt, why not writeStr etc. too?
I wish we could get away from putting syntax and naming betweeen us and languages.
io.write is really annoying to me. rw.read and rw.write makes much more sense, or io.in io.out.
io.writeInt writes an int as what, ascii/unicode, or binary? an Int is likely already binary/2's complement, and the language should print strings too, it's just a bad name.
leaving parentheses out surrounding predicates and/or a semicolon at the end should be my choice, not yours, it has nothing to do with the language and I have preferences.
If languages provided flexible syntax per user, divorcing themselves from syntax, then the further description of the language would be semantic. I have no idea what the semantics of this Q are, or are intended to be, and that's what matters. Compilation speed? that's not a language.
From reading the readme, it seems the Language was designed to explore increasing compile speed, and producing optimized code without using LLVM. Yet all the comments are about the syntax. Never change, programmers. Personally, I would have painted the bikeshed blue.
Yeah normally I hate those "but there's already an abandoned programming language from the 80s that had a total of 2 users called X" but in this case the Q array language is pretty well known.
16 comments
[ 3.6 ms ] story [ 36.0 ms ] threadTechnically I could find all these things out by reading all the source code, but that's a lot of work just to see if the language meets my needs.
https://en.wikipedia.org/wiki/Q_(programming_language_from_K...
https://en.wikipedia.org/wiki/Q_Sharp
https://q-lang.sourceforge.net/qdoc.pdf
https://code.kx.com/q/
io.write is really annoying to me. rw.read and rw.write makes much more sense, or io.in io.out.
io.writeInt writes an int as what, ascii/unicode, or binary? an Int is likely already binary/2's complement, and the language should print strings too, it's just a bad name.
leaving parentheses out surrounding predicates and/or a semicolon at the end should be my choice, not yours, it has nothing to do with the language and I have preferences.
If languages provided flexible syntax per user, divorcing themselves from syntax, then the further description of the language would be semantic. I have no idea what the semantics of this Q are, or are intended to be, and that's what matters. Compilation speed? that's not a language.
./q examples/hello/hello.q
signal: killed
./q examples/collatz/collatz.q
signal: killed
Even copying q files into q's folder doesn't work
Ah, didn't notice the issue is already in discussion: https://git.urbach.dev/cli/q/issues/6
Interesting that one of the goals is not to depend on llvm :D
The syntax looks clean and concise.
The small binaries and claimed speed are pluses.
Hope it picks up.