BitC was linked on reddit a few days ago and caught my interest.  It's
pretty close to the programming language I've been thinking about in my head
in many respects (but I lacked the ability to get it done).  I've been
pretty dissatisfied with most languages out there and have resorted to using
python for most purposes just because it gets the job done the fastest.

I have a few comments:

I really think compiling to LLVM bytecode is the right way to go.  The
homepage mentions that LLVM work began in March, but the source code doesn't
seem to use it at all.  Is it still your intention to use LLVM?

One thing that clang does really well is proper error messages.  This is
also, to me, one of the main attractive properties of python (although the
errors are at runtime).  g++, on the other hand, has completely
incomprehensible error messages if you make a mistake with anything that
uses templates.  In my opinion, it would be a good move to make error
messages a focus early on.

I know that the language isn't final right now, but from what I've read, you
have most of the language finalized.  There are still some features, like
literal types, that are useful but not vital to get it working.  If you were
to work out the syntax for the language, it'd already be useful for
development.  The advantage of getting it working early is that you'd get to
test what you have on a wider audience and perhaps attract extra help.

One other minor issue I've been thinking about is: in some statically typed
languages, serialization is just a pain.  C++ serialization libraries tend
to require implementation of a serialization function for each class, which
is fine for simple classes without pointers, but pointers tend to complicate
serialization (for example the timezone pointer in boost's datetime, which
prevented them from implementating serialization for timezone-dependent
datetimes).  Python's pickle module (being automatic) is a very nice
solution, but is obviously not possible in many statically typed languages.
I'm not sure if it'd have any other uses, but for serialization, it'd be
useful to be able to iterate over fields of a struct or at least be able to
convert it to a (string, value) map and to be able to construct instances of
types from the fields.

I'm a little concerned about the increasing complexity of the language
recently.  Particularly, literal types and the lifting solution that was
posted earlier seems like a huge workaround.  I can understand the
motivation for objects, but it falls under the "added complexity" part.  I
think complexity tends to be a huge detractor for languages like Haskell and
C++ (where it's only useful to use a certain subset of the language).

Also, I'd be interested in helping if you're looking for it.

Jonathan Hseu
_______________________________________________
bitc-dev mailing list
[email protected]
http://www.coyotos.org/mailman/listinfo/bitc-dev

Reply via email to