HN user

felixangell

163 karma

Programmer!

    github.com/felixangell  
    felixangell.com  
    mail@felixangell.com
Posts5
Comments21
View on HN

This is very much the case! I started tinkering with compilers around 4 years ago when I was 16. If it was possible for me to do then, I'm sure it's possible for anyone else to learn too.

When I write articles like these, I think of what I would have liked to have read when I was first getting into the topic at hand.

I have the best of both worlds here where all of my amex credit bills come out from my Monzo account and my salary is paid into my Monzo. The other features of the bank are what appeal to me personally, the fact that the UI is so much nicer to use than most other banks, as well as they are pretty progressive in terms of features. I can see when my credit card bills will come out (it warns you a few days prior with an estimated amount of the bill), and I can see rundowns of my spending, etc.

To be honest, the project is kind of mimicking Slick2D which is a simple Java framework that introduced me into graphics programming in the first place.

My kind of dream project here is to maybe make a little tutorial series on how to use the library making a small game with it. Maybe inspire a few young people to get into graphics/game programming to show how simple it is - in the go domain specifically. The library is kind of a no thrills graphics library, maybe I should market it that way.

The project doesn't really market itself too much right now, and I don't think I will focus on that till I've written a reasonably polished game in it either. But thank you for that link I will bookmark it.

Kind of just throwing the project up on here for people to look at & critique.

And that is a point... the feature project is a text editor. Though I think it looks a bit more impressive than the alternative which is a little game I'm working on in my spare time.

The library itself is worked on from time to time. The last commit was a few days ago (a small patch however).

Maybe you would like the BetterC mode in the D programming language... if you mean you like C for it's syntax too. A lot of modern systems prog. languages seem to adopt a more modern syntax, i.e. types after the names rather than before, no semi-colons, etc.

D stays true to C in this regard and offers a lot of fancy features. And the BetterC mode sounds suited to your requirements in that the language features doesn't over complicate things.

I would say compiles is a more general form of transpiles. Transpiling meaning it compiles into a higher level form i.e. c, C++, JavaScript, and compile meaning it compiles into a more lower level form i.e assembly, bytecode, etc?

That's just how I look at it anyway.

The link to optimizing an ANSI C interpreter is broken, it's missing a colon after the protocol. I dunno if there's anyone here that can fix that, just thought I'd say it anyway.

Actually it's not the colon, there are two protocols:

    http://http://dl.acm.org/citation.cfm?id=199526
    ^^^^^^^
My bad.

As a maintainer of an open source project, we often get a lot of proposals from people - my project is a compiler. And while some of them are interesting, there are a few who are suggested by people who don't really have any experience in language design, so usually we have to say no to a lot of features.

When someone knows what they're on about, it's probably the architecture of our project that doesn't allow us to implement a specific feature; or would make it incredibly difficult to do so. And when you're dealing with even larger projects like Nginx or something, you have to work on it to know if something would work in terms of the project, which is tricky unless you've worked on it extensively.

We've even had a guy who said we shouldn't use LLVM because it's slow (it's not), and he didn't like it. What I'm getting at with this point is that some people suggest ideas that a) change the entire course of the project, or b) are kind of silly and subjective.

TL;DR It's complicated

Very similar to Ark: www.github.com/ark-lang/ark. Except Ark has no GC, has tagged enums, ownership is enforced, and a few other smaller differences.

A nice introduction, I'm currently working on a compiler which uses LLVM for code generation... it was very difficult to get into at first. Especially since I was using C (now Go), so I would have to work through 2/3 layers of language and documentation. (Was just C to C++, now it's Go, to C, to C++).

If you're interested in learning more about LLVM, there are some good open source projects that use it. If you aren't using C++, people have also ported the kaleidoscope tutorial project to Haskell, Rust, C, etc... Additionally, a lot of bigger compilers like Rust, and Clang use it - Swift also uses LLVM, and should be open source soon?

Hi, for is basically a while loop yes. We haven't implemented ranges yet, so this is the example we chose since it works, and it's fairly concise to fit on the website.

I chose `:=` and `=` mostly because of personal preference.

It started off as a side project by myself, I'm a student so I work on it every now and then, but I'm 17 so I have bigger things to prioritise like my education. The large commit count is due to a certain someone cough Vedant cough making several accounts and doubling the commit history when he re-authors his commits.

The fact that it's a year old is because the language has changed loads in the past, since I considered it a side-project that I would just play around with. However, after I stuck to something, it gained a bit more popularity and people started to help me out with it. Now we have ported to Go, with a decent sized team working on it (when we can).