7
lorentz
2y

If you can see yourself experimenting with an early alpha programming language to provide feedback and perhaps contribute, what feature would you expect from the get go? (Up)Vote in comments, add if missing

Comments
  • 0
    1. Language server / VSCode extension
  • 7
    2. Standard library
  • 0
    3. Package manager
  • 0
    I chose standard library because I assume without it, it won't have support for sockets / communication for example. Same for file io I guess
  • 4
    Standard library.

    Tooling like VSCode is *nice*… but as long as the language is in alpha, the amount of work to adapt to the changes is better spent else where.

    Packaging ... Packaging is hard. Hard to get right, hard to test, hard as you need a lot of expertise - best in several formats / distributions, cause packaging is the master of "details matter".

    Get the language right, then worry about how to adapt it to a good packaging (e.g. all the funky stuff like static vs shared linking, security, hosting, ...)...

    By that time you will hopefully have a good spec of the language plus be more in beta / first rc stage, which makes implementing tooling a lot easier.
  • 3
    @retoor fair point, file IO and sockets are now top prio because you can't build anything interesting without them.
  • 1
    @lorentz I wrote my own language in c. It had python like performance. Sadly, not on github and also raped the project a bit on the end. But implementing if else and loop was quite an adventure to get nice code for that. Also - the lexer was challenging
  • 1
    @retoor I use Rust, Chumsky is a dream but tokenization is still tricky because I allow users to define new operators.

    With the lambda calculus, a lot of control structures come for free.
  • 1
    I don't have performance metrics yet and I'm a bit afraid frankly, execution means walking a linked list and deallocating nodes representing dead branches.
  • 1
    @lorentz I had a linked list for tokens and a "frame" linked list. The frame contained all vars in scope. They linked list had as well a parent as next and prev. Garbage collection scoped was easy. Less easy: return variables.. So garbage collect should clean all vars in exception of returned one. Returning array containing reference vars - party
  • 1
    Calculation with * having priority over +. Found amazing way to do it including support for 3 * (4+4)
  • 1
    The choice to index first slot by 0 or by 1.
  • 2
  • 0
    @lorentz will you throw it on github? I would like to see how you created the lexer
  • 2
    @retoor it was my bachelor's project, it's in a grim shape after the final crunch. I'll finish the report, fix the readme and link it this week.
  • 0
  • 0
    Standard library defo, can't live without them anymore nowadays.
  • 0
    Is this some sort of uni paper you're doing? If so I'd love to read it after publication, that's the one part of computer science I'm particularly interested in.
  • 1
    @Ranchonyx there's a bunch of markdown and a manually composed PDF. It exists because I had to do a paper, I was never taught how to write a research paper so it doesn't look like one, it was required to be at least 12k words so it's too long and I didn't leave enough time so a bunch of stuff is missing at the same time. I'll eventually convert it into a series of terse but informative articles which are worth reading.

    I write programming languages, not novels.
  • 1
    @lorentz Cool cool, still, I have no standards so if you ever publish the paper or programming language I'd love to check it out, do let me know if you don't mind.
  • 1
    @Ranchonyx The language will definitely be released for comments this week, though there's a lot more to do. Basically I just want to write a decent readme and update all the comments to represent reality instead of talking about discarded or delayed features that I imagined to be core functionality a year ago.
  • 0
    @lorentz cool cool, looking forward to it.
  • 2
    Here's the repo, I cleaned everything up to a level where with some effort everything can be understood:

    https://github.com/lbfalvy/orchid
  • 1
Add Comment