Related sites: | site map |

# aiju.de Home of aiju

- › about me/
- › b/
- › code/
- › donate
- › electronics/
- › legal
- » misc/
- - › books
  - › c style
  - › electronics
  - » languages
  - › pic32mz usb
  - › puzzles
  - › science troll
  - › sloc
  - › software
  - › unicode
- › plan 9/

# Notes on Languages

- I really like static typing because it eliminates a common source of errors.
- I really like pointers because they make the distinction between a value and a reference explicit.
- I'm fine with both manual memory management and garbage collection. Manual memory management adds awkwardness (particularly to code with a functional style). Garbage collection adds uncertainty.
- I like having goto. It would drive me insane not having break, return or continue (see also "structured programming").
- I'm not a fan of automatic exception handling (like in C++). It usually leads to anything unusual being flagged as an error. It's troublesome with concurrent programs.
- I like having a good way to do threading, in particular having channels for communication.
- I dislike OOP. While it can mean vastly different things to different people, it usually boils down to unnecessary abstraction and complexity.

Notes on particular languages:

- I really like C, despite its weak spots. The most annoying problem is the lack of a good standard library. Plan 9 fixes that.
  - I like the syntax, except for the precedence issue with the `&` operator.
  - Type declarations can be crazy, but it's usually not a problem in practice and can always be worked around using `typedef`.
- I like Go, although I feel it's not much of an improvement over Plan 9 C. It has much nicer interfaces than C on other systems though.
  - I don't like the syntax. I hate forced braces.
  - I don't like having 1 MB binaries for small programs.
- I hate C++ (although I've used it a lot in the past). The languages has too many crazy complex features.
- I hate Java and C# for similar reasons. Add to that the forced use of object orientation and a completely insane standard library.
- I like writing shell scripts with `rc`, but I don't like the bourne shell.
- Python is kind of okay for testing algorithms. Awkward to write larger programs in.
- Perl is a mess.
- LISP is fun although it gets messy quickly.
- I admire FORTH for its simplicity but I can't wrap my head around all the stack dancing.