brokenco.de/_posts/2011-01-24-s-a-d-seasonal-a...

57 lines
3.1 KiB
Markdown

---
layout: post
title: S.A.D. - Seasonal Ada Disorder
tags:
- opinion
- software development
- ada
nodeid: 306
created: 1295881200
---
Last Sunday, I announced the "0.1" release of my
[memcache-ada](http://adacommons.org/Memcache) project on
[comp.lang.ada](http://groups.google.com/group/comp.lang.ada/browse_thread/thread/c70dc869310ffb51#),
thus ending a 2 month experiment with the Ada programming language.
In my [previous
post](http://unethicalblogger.com/posts/2010/12/ada_surely_you_jest_mr_pythonman)
on the topic, I mentioned some of the things that interested me with regards to
Ada and while I didn't use all the concepts that make Ada a powerful language,
I can now confidentally say that I know enough to be dangerous (not much more
though).
<center><img src="http://agentdero.cachefly.net/unethicalblogger.com/images/terminaloperator.png" alt="Old school"/><br><em>This is what my coworkers thought of me, learning Ada.</em></center>
All said and done I spent *less than* two months off and on creating
memcache-ada, mostly on my morning and evening commutes. The exercise of
beginning and ending my day with a language which tends to be incredibly strict
was interesting to say the least. Due to the lack of an REPL such as Python's,
I found myself writing more and more unit and integration tests to get a *feel*
for the language and the behavior of my library.
<!--break-->
Due to my "fluency" in Python, I tend to think in Python when scratching out
code, similar to how a native speaker of a language will write or speak "from the hip" instead of doing
large amount of mental work to construct statements. With Ada, not only
am I not yet "fluent", the langauge won't let me get away with as much as
Python allows me.
The overhead of writing Ada, in my opinion, is a double-edged sword, I can very
quickly informally test, debug and rewrite Python but with Ada such a process
is (in my opinion) onerous. My 20 minute walk to the train station would be
spent contemplating how and what I wanted to write and where. By the
time I sat down on the train, I had thought out and designed things internally, so I would
immediately write out tests around my ideas and assumptions before writing code to pass the
tests. The time spent writing code was minimal since I rarely had to rewrite code, I can think of only one function that had to be rewritten after it had passed tests (botched some socket reading) in the whole project.
I'm not yet sure what will be my next project in Ada, I am certain that I don't
want to build anything of consequence in C again. Working with a language, like
C, that not only gives you the rope with which to hang yourself but will often
times push you off the chair is more masochism than I feel comfortable with
these days. Ada on the other hand will allow you to hang yourself, but it'll
make damn certain that have the perseverence to go through with it. Frankly, I
don't have that kind of drive to really shoot myself in the foot anymore. I
want to build software that works with a language that doesn't want to make me
suffer, which means I'll be in a weird Ada + Python love triangle until future notice.