This is the second of many themed Rebases to come…our first was the book edition. In related news, the column has also been going on for over a year now! If you’ve got ideas for projects to feature or themes, don’t be afraid to message me.
Featured Project
ooc is a statically typed, object oriented language with some functional programming hints that’s growing up right here on GitHub. The compiler is currently written in Java, and it boils down to C99 so it can run anywhere. Grab the zip from the Downloads section or clone away and set it up. The language has some neat features: everyone’s favorite generic types, a clean import
/use
system that makes Ruby’s require
look like yesterday’s news, and the cover
keyword that allows for some really neat abstractions over types and clean interfacing with other C code. If you’re a language geek or need a breath of fresh air, check it out.
Notably New Projects
rock is an ooc compiler written in ooc, of course. This has some great examples of quite complex ooc code and aims to replace the Java compiler.
ooc-sqlite3 is an SQLite driver that’s also just getting off the ground, but it’s starting to pick up some steam. Next stop: a web framework!
woot is ooc’s first unit testing system, and is headed towards a bright future since it’ll be used to test ooc itself. This dogfood is tasty!
ooc-glew uses GLEW to open up the power of OpenGL to ooc. There’s also a little Ruby magic baked in to generate the bindings since there’s a lot of functions.
Stirling3D is also for the graphically minded. This project is a graphics/physics engine that also hooks into OpenGL and is starting to render some neat stuff.
ooc-yajl is a set of bindings to yajl, a former featured project that is a lightning fast JSON parsing library. It’s also a neat example of how easy it is to hook into C libraries and how the .use
files work.
or just write C :P its not that hard
After studying Haskell all day, another object oriented language just feels ... pointless.
@dag You seem to be missing the point here. Have you read the homepage/examples? Haskell is awesome, but it's not even in the same league. Make sure you understand before bashing.
@visionmedia Have you used C in a large scale project? Its modularity is terrible - ooc is not only "another syntax on top of it". But I guess you'd have to actually try it to see the benefits =)
Almost all language-to-language compilers have one big drawback - and that is real debugging.
When you hit bug in low-level language representation you have to learn low-level language and usually also the way how high-level language is compiled down to low-level one.
Suitable for a world without bugs.
@darwin ooc is really easy to debug, because it maps so straight-forwardly to C. Function names are readable thanks to the use of suffixes instead of automatic name mangling. #line directives are generated (you can disable that too), so it shows the .ooc line numbers. I'm using gdb (and its various frontends, e.g. Nemiver) almost daily with ooc code, and it works out fine.
@nddrylliog Yes, I have. That's when the feeling of pointlessness crept up on me. I'm not bashing, just noting a feeling. Maybe you shouldn't make assumptions before bashing. As an OOP language, ooc is likely very cool. It just feels pointless to employ the OOP paradigm for something new.
@dag Well I'm pleased to learn that you have =) So you think FP deprecates OOP? ooc is not exactly oop-centric. Among others, closures are coming. It is a well-known fact that FP is less than friendly with input/output, for example, which can't be underestimated. I see FP and OOP as complementary (yes, maybe somewhat like the Scala guys).
Btw, dag & other comments readers, from what you read about ooc, what feature(s) are you missing the most?
totally just bugging :p but as for debugging its not going to be easily adopted unless the user knows C, and otherwise pretty much misewell use C unless its blown away. Still a cool toy language tho id love to have time to work on one
ooc is awesome and I've already been writing a few small projects with it. One of the nicest languages I've ever used, and fast, too!
Can't wait for Rock to take off.
First time I saw ooc, it clicked nearly instantly (I've been dabbling in bits of C recently, as well). It got me really excited to be hacking in C and the like again... I really enjoyed reading the docs and getting it running so simply.
In my opinion, @nddrylliog nailed it. It really does address most of the problems I have with really diving into C.
Thanks for featuring it, too... hopefully the community will profit from it!
hey @defunkt and @mtodd, thanks for the positive feedback =)
so far, doing ooc has been an amazing journey, and I'm still learning everyday. Thank y'all for your support and ideas/contributions.
while the development may seem slower these days - it's not. I'm working hard on rock, and it will definitely bring ooc to the next level.
stay tuned, have fun =)
Side-effects are just so scary when you've seen that you can live without them. It's not just that functional programming is nice, it's that purely functional programming feels so safe and comfortable. I think monads solve I/O quite nicely. What are objects good for? Isolation? Everything is isolated and immutable in a purely functional language. Namespaces? Modules! Hide away things like state? Monads! Name and structure data? Types!
I'm seriously not trying to bash any language, including ooc. Object orientation is a great improvement to some alternatives. ooc is quite possibly a great improvement to some alternatives. I think the compile-to-C thing is interesting, that caught my interest with Vala too, although I think Vala's compile-to-GObject is a little more cool technically - while ooc might be a more cool language in general (C#-style is quite boring).
Maybe it's difficult to make a purely functional language cleanly compile to C. Maybe compile to Haskell, hah!