https://en.wikipedia.org/wiki/Q_(programming_language_from_K...
Not every readme is a sales pitch for Enterprise Quality(tm) software.
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.
Of course this flexibility is one of the reasons why Perl is no longer popular - everyone has "preferences" and allowing too much freedom just means you cannot read others' programs easily.
when there is only one way to do it, then you and i will write identical code and it will be therefore easy to maintain, an idea put forward by Charles Simonyi before you were born.
perl's hodgepodge semantics do make sense if you had already lived on the cli in a perl-less world and already knew grep, sed, awk, etc. because that's where perl grabbed its ideas from and you would already be familiar with them and it would not seem like more of a hodgepodge than what you already knew.
there is more than one way to do it (semantically) is not there is more than one way to write it (syntactically) The boolean algebra of sets and the boolean algebra of logic are isomorphic (which in a strong sense is "same syntax"), but they are not semantically the same at all, is what I mean by semantics.
the point I was making has nothing to do with perl's hodge podge of semantics, i simply want to know what the semantics of Q are, and the syntax presentation in the examples hardly distinguishes its semantics from any other post algol language.
I'm not saying the language should support multiple/lax syntaxes, I'm saying that when I edit a file I should see what I like, and when you edit the file you should see what you like; I should never see what you like unless we agree to share. Same semantics, not same syntax. The syntax would not be part of the language. The fact that syntax is part of our languages is how noobs get syntax confused with semantics and then never learn that semantics are the only important thing.
Some kind of syntax.conf where syntax would be defined?
I guess that would mean a syntax compiler stage to an intermediate language- kind of like the way many “languages” compile down to js?
Or perhaps a shallower version of that idea, with a “plain” syntax and the syntax wrapper lives in a pre-render in the IDE?
How would you choose to accomplish this?
when we load code into an editor, we get colored syntax highlighting that's done on the fly according to rules which have a syntax of their own. So, perhaps it could be done at that level.
I would prefer if I ran "make syntax" on my repository, and you ran "make syntax" on yours, and we both ran "git semantics" to update the hub. The reason I prefer that is then I could use cli tools I'm used to, like grep, and only have to keep in mind "my syntax" which I would use for all the languages I code in. Then I could write my own helper tools... or, I could also write helper tools that worked on the semantic version and would not need complex parsers of braces, quotes, backslashes, etc.
these ideas are not orginal to me, the language CGOL https://en.wikipedia.org/wiki/CGOL was lisp that looked C or algol style. The language CLU https://en.wikipedia.org/wiki/CLU_(programming_language) was OOP that was implemented all as calls to member functions, but then there was a layer of syntactic sugar on the surface so you could write x+y and it would turn into .add(x,y), they had identical semantics.
Tools beyond compilers are based on a text representation of code.
I'm thinking to VCS and code review tools. So a whole suite of user (developer) facing tools would be needed beyond the compiler.
I'm thinking to:
- graphical "languages" like Scratch
- MS Excel: a French version of Excel has different names for functions than English Excel.
- bytecode based languagesThe syntax of the language itself seems somewhat go-inspired, which I suppose is natural.
./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.
pbohun•6mo ago
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.
pbohun•6mo ago