I am currently reading for a BSc. in Software Development, and the time has come for me to start thinking about a topic for my thesis.
I have recently started learning C by myself and I now wish to base my dissertation on something that involves low level development. This is because I wish to get very familiar with low level fundamental programming.
Something that I have in mind is maybe creating a Domain Specific Language targeting something small. Or maybe something that involves Compiler techniques; maybe comparing the techniques used by different compilers and measure them ?
Something else I also thought of doing was something based on Joel Spolsky's articles The Perils of JavaSchools and The Law of Leaky Abstractions; the point of the thesis being that if students only get taught Abstractions and High Level languages rather then low level fundamental languages, they will not be able to understand the problems that arise when the Abstraction breaks.
I also think that it would worth mentioning that it is becoming harder for employers to find exceptional programmers with a language such as Java or C#, instead of C.
Can you please share some thoughts and ideas with me as regards my mentioned topics?
[Update]
I think that I will do my thesis on the dangers of modern day abstractions of Software Development.
inked has made a very interesting point, especially with this statement:
If easy to use tools were made available so everyone could build rocket ships, would they be good rocket ships that could be navigated reliably and safely and used by, "the masses?"
I think that if I focus my thesis specifically on this, it would actually lead to somewhere.
What do you think? Anyone care to elaborate more on this idea?
[Update] MarkJ posted the following comment for inked's answer:
The solution to the "rocket ship" problem is better regulation of the industry. There are easy-to-use tools out there that allow you to build aircraft (perhaps not rocket ships) but in most civilised countries it's against the law to lift them off the ground, because you'd be endangering the public. Similarly laws prevent unqualified people setting up as electricians or gas engineers. When software development is more mature as an industry - it's still quite new - there will be similar restrictions
I think that this is quite an interesting point and also worth mentioning and expanding upon. Software Development is quite a recent industry and maybe in the future, there will be restrictions as to which software is "released to the public".
Can anyone please elaborate further on this point?
[Update]
Here are the links that I have collected up till now that may help me with my research:
- Alex Martelli's Talk
- All Abstractions Are Failed Abstractions, by Jeff Atwood
- The Perils of JavaSchools, by Joel Spolsky
- The Law of Leaky Abstractions, by Joel Spolsky
- Back to Basics, by Joel Spolsky
- Abstraction in Software - The Good, Bad and Ugly, by Debasish Ghosh
Can you please point me to any more related articles as regards the subject of 'the problems with abstractions'?