I was thinking about the previous blog post I made about first year undergrad programming languages (found here)

I shall express my opinion, feeling and experience about programming languages:

  • My first programming languages (before uni) were: QBASIC, VisualBASIC and C++. I found using Delphi very awkward when I came to uni, it was like walking into a straight jacket.
  • If you know C++, Objective-C, C# or Java then it is easy to move to any of the others in the same group.
  • I feel that one Object Oriented language (e.g. Java or C++… C++ is quite good because procedural programming can be covered with C too) and one functional language (e.g. Haskell) is the best set-up for the first year of undergraduate study. OO is a solid foundation for all modern software development, and Functional Programming is excellent for data structures and algorithmics.
  • If you know either Ruby or Python, then its easy to go to the other (although Ruby programmers may find Pythons whitespace quite restrictive). I have to admit, BASIC and Perl are not too far away from Ruby or Python either!
  • If your university doesn’t delve into logic programming or expert systems programming then have a go at some Prolog and some CLIPS in your own time. Both are very interesting languages which have benefits over the standard languages you currently hear on the job market (i.e. java and C#). Beware they are very different in philosophy, so you will have to adopt a different thinking methodology.
  • If you have to develop in Delphi, then explore some other forms of Pascal such as: Chrome Object-Pascal, Oberon and Zonnon.
  • Be aware of cross-platform ability. If you can make it cross-platform then do (have a look at the Mono Project.

Right, so I have told you about my experience. But seriously, if you are a prospective undergrad then do not base your choice of uni on the programming language(s) they teach, because it really is the theory that is important and not the exact syntax of a language.

(the aboves are just my current opinion, and you should try to form your own opinion on the subject… but it is useful to gather other peoples thoughts too)

Technorati Tags: , ,

I have started to construct a list of programming languages found in first year undergraduate computing/computer science/software engineering degrees. Please see this website for a list:

http://www.vanirsystems.com/ProgLangsUnis.html

Please get in contact with me:

  • If you are a current student at a university and don’t see the first year languages of your university (or I have made a mistake)
  • Are a prospective student of a university not listed and would like me to find them out for you (or you have found them out)

If you are a prospective student then please do not judge an institution based on the programming language that they teach. A course is all about the theory that they teach, and its all about the ability to implement something and not in any particular programming language.

This list arose out of a discussion about whether or not a particular programming language should be required for courseworks which shouldn’t actually test whether you know a particular language but should test that you can implement it. (For example, an Agent Technology system should not really need the requirement of being in the Delphi programming language, as the student could develop an agent and its environment in any language he/she likes (e.g. java, ruby, C#, C++… anything really)).

Feel free to comment here if you would like to add to the list, alternatively feel free to skype or email me. My contact details are on my business page: http://www.vanirsystems.com/

Thanks,

Daniel

(this list has kind of evolved from thoughts within the Brookes Computing Society)

Technorati Tags: , , , , , ,

academic @ 21 April 2007, “No Comments”

6 More Days until I find out whether my 12 page article has been accepted for a workshop this June in Austria. I am hoping that it is, quite obviously, but I am not sure how likely it is… either way I am going to be motivated to write more and more research articles in the future.

I also (will probably) be starting my full time job on 1st May at a map making / GIS company. I think they would appreciate my academic writing and high motivation for research.

That is all for now,

Daniel

Technorati Tags: , ,

I just read this by Steve Cayzer

I really could have done with researching SML in my undergrad project, Steve notes that it isn’t strictly Semantic as labels aren’t inferred… this is something that Balder could provide!

Technorati Tags: , ,

academic @ 23 March 2007, “No Comments”

I feel that I should probably learn TeX, as I am (hopefully) going to be writing more and more articles in the future then it is probably quite necessary as I have noticed that a lot of journals and computing books are written/type-setted using TeX or LaTeX.

I think the best thing for me to do would probably to find a TeX template, and then play with the formatting/structure a bit. Anyone know any good basic TeX templates for me to use?

Thanks,

Daniel

Technorati Tags: , ,

This post is a bit of an update of this one

The Ruby can stay the same:
search_engines = %w[Google Yahoo MSN].map do |engine| "http://www." + engine.downcase + ".com"
end

But we can refine the Haskell even further than I originally posted, by saying the following:

search_engines = map (\engine -> "http://www." ++ downcase engine ++ ".com") ["Google","Yahoo","MSN"] where downcase = map toLower

The above uses a lambda expression (\) to state that engine comes in later… its quite hard to explain lambda expressions unless you have done functional programming. Basically you can state that a function takes in something without actually saying that it takes in something. Graham Huttons book and Simon Thompsons books are good references to check it out for Lambda Calculus. In both the Ruby and Haskell implementations we are using lambda expressions, in this example engine is our term (key).

(Thanks to Ian Bayley for providing me with some hints about this)

(p.s. in the Haskell implementation, toLower is a character function… which if you are using some newer versions of Hugs you will need to add “import Char” to the top of your hs/lhs program if you want to use it)

Technorati Tags: , , ,

I have completed my project, got the final report all nicely bound, my poster printed off. Its all done.

I have put some information on the Vanir Systems website, available here: http://www.vanirsystems.com/balder/

Don’t be afraid to get in contact if you would like to know more information about it.

(I would like to make Balder public, unfortunately it requires a lot of server installations which you can’t find on the average hosting package)

Thanks,

Daniel

Technorati Tags: , , , , , ,

This blog post will test out an Annotea comment or two.

Annotea is available at: http://www.w3.org/2001/Annotea

Technorati Tags: , ,

Mark Oxenham just pointed out something to me on wikipedia.

The Waterfall Model was actually an example of a risky software development model in an article in 1970 by W.W. Royce. Royce apparently used an Iterative development model.

I just think its so funny, that all these universities and colleges teach the waterfall software development technique when it was actually created as an example of a “grandiose” methodology that “invites failure”. Plus it also seems like agile/extreme-programming or spiral techniques are actually being employed within software development companies nowadays anyway, meaning that the waterfall model is even more useless…. well… I suppose it give first year students the very basics of software development methodology.

Wikipedia article: http://en.wikipedia.org/wiki/Waterfall_model (accessed 15th March 2007)

Royce, Winston W. (1970): Managing the Development of Large Software Systems: Concepts and Techniques. In: Technical Papers of Western Electronic Show and Convention (WesCon). August 25-28, 1970, Los Angeles, USA.: http://portal.acm.org/citation.cfm?id=41801

Technorati Tags: , , ,

Everybody I tell this to seem to be shocked, I have changed the programming language and tool that I am using from:

  • Java with Sesame Repository

To:

  • Ruby with Redland

This means I am currently going through a complete re-write of my undergraduate project —- 2 weeks before it has to be handed in. But I have done this for several reasons:

  • I know Ruby like the back of my hand, and can develop in it quickly
  • Ruby is a nice language that programs can be developed in quickly
  • Ruby has a binding into Redland
  • Redland is a very quick RDF and Semantic Web library/tool, and it is very stable
  • Ruby is a functional object oriented language, and it will be interesting to dive into more of the functional side of it (as an external bit of research to my undergraduate project)
  • Ruby has Ruby On Rails, which is an excellent Ruby Library for developing web applications. My project is a web app.
  • Ruby has excellent webservices tools, which will be useful when connecting to web 2.0 sites.

One nice thing I have noticed is comparing a simple ruby file that makes an RDF file, with the RDF file. Look at the sizes:

filename filesize type
foaf.rb 920 Bytes Ruby Program
foaf.rdf 1452 Bytes FOAF/RDF Document

That is a difference of 532 Bytes!

Which means that it is more efficient to write a ruby program for each RDF document than it is to write each RDF document. Although I have to admit - this program is generating non-abbreviated RDF/XML, the rdf file would be a lot smaller if it was abbrev-rdf/xml. But at the same time, my ruby file isn’t the smallest it could be either!

Technorati Tags: , , , ,