Grab your windbreaker jacket cause it’s a cold, stormy day in hell. Microsoft is going to release the Windows 7 USB/DVD download tool under the GNU General Public License, the de facto Open Source license.
Okay, so they might have a strong moral, even legal, obligation to do so since the tool contains code licensed under the GPL already (you cannot change source code licensed under the GPL without making your changes publicly available under the same terms) — still, it’s the thought that counts, ..right?
The new, AJAX-powered version of the “C gibberish ↔ English” translation tool cdecl is a gem for any C programmer who has ever scratched their head wondering what a complex statement like char (*(*(* const x[3])())[5])(int) or (double (^)(int , long long ))foo actually means. Give it a try!
Google has just announced the release of a new computer programming language named, quite creatively, Go. It is similar to the C family of imperative programming languages, but strives to be as simple in syntax as dynamic languages like Python and JavaScript. It aims to be very fast (both at compile time and at execution), safe, concurrent, memory-managed, speedy (in terms of developer productivity) and Open Source. Quite interestingly, some of its main authors are programming godsRob Pike and Ken Thompson.
Here is an example of a simple web server written in Golang:
I’m not sure what I think about Go yet; all of its features look extremely attractive, but I can’t shake the feeling of something being “off” somehow. For instance, I’m not particularly fond of the function name capitalization, and there are no generics/templates in the language (yet). I suppose the former might largely be a matter of conditioning, though.
One aspect of Golang that has really impressed me is how fast it compiles; you really have to see it to believe it. Projects with several thousand lines of source code compile in less than a tenth of a second on an average workstation. Sadly, I think this might mean we won’t be having as many office chair sword duels in the future:
Have a look at the Google Go TechTalk for an introduction to and overview of the language:
Note that Go (or Golang) isn’t to be confused with the Go! Programming Language. Why Google chose an almost identical name, or why they chose such a common word at all, I don’t understand. I’m rather fond of the term ‘Golang’ since, well, it makes sense. Ericsson previously made its own language, Erlang, so it’s only a natural addition.
Epic Games just released the Unreal Development Kit, a fully-featured SDK based on the award-winning Unreal 3 engine that powers a wide range of today’s most popular games; and it’s free for educational and non-commercial use — wow!
There are some rather heavy licensing fees once you start making money from your game — $0 (zero) up-front, and a 0% royalty on you or your company’s first $5,000 (US) in UDK related revenue, and a 25% royalty on UDK related revenue above $5,000 (US) — though, if you take into consideration that you can upgrade to the real Unreal engine licensing and skip the royalty fees once you reach fame and fortune, the Unreal Development Kit remains extremely attractive for any kind of game development.
“MIT 6.00 — Introduction to Computer Science and Programming” is one of the best introductions to programming I’ve seen, and I guess I shouldn’t expect less from the Massachusetts Institute of Technology. 24 video recordings of Computer Science lectures (totalling roughly 20 hours) by Professors Eric Grimson and John Guttag, current and former heads of Electrical Engineering and Computer Science at MIT. The course focuses on, quite simply, teaching you how to think like a programmer and solve problems computationally. Historically, LISP was the language of choice for Computer Science introductions at MIT, but was since replaced by every imperative programmer’s new darling, Python.
To quote the overview given in the first video, the course revolves around:
Computational thinking
Understanding code
Understanding abilities and limits
Mapping problems into computation
I highly recommend watching this if you’re new to programming, a hobby programmer, or even if you’re pretty well-versed — I’m sure there are nuggets of useful information inthere for everyone. Give Lecture 1 a look; if you like it, I’ve embedded the entire course after the jump, but it can also be found on the official course website, along with assignments, exams and solutions.
Lecture 1: Goals of the course; what is computation; introduction to data types, operators, and variables
A man flying in a hot air balloon suddenly realizes he’s lost. He reduces height and spots a man down below. He lowers the balloon further and shouts to get directions, “Excuse me, can you tell me where I am?”
The man below says: “Yes, you’re in a hot air balloon, hovering 30 feet above this field.”
“You must work in Information Technology,” says the balloonist.
“I do” replies the man. “How did you know?”
“Well,” says the balloonist, “everything you have told me is technically correct, but It’s of no use to anyone.”
The man below replies, “You must work in management.”
“I do” replies the balloonist, “But how’d you know?”
“Well”, says the man, “you don’t know where you are, or where you’re going, you expect me to be able to help. You’re in the same position you were before we met, but now it’s my fault.”
Interesting automated software test system concept. The goal is to design this for the Linux kernel, but it should be very useful in other regards as well.
Interesting piece by Jeff Atwood on spaces versus tabs in code. I specifically enjoyed the reference to Whitespace and thank Jeff for introducing me to such a wonderful programming language. Out you go, Python.
Procedurally generated landscape flyby demo with impressive graphics and audio, and oh yeah — a total size of four kilobytes! Absolutely mind-blowing. You can run the original 4kb demo application (Windows) yourself if you have a powerful machine.
When you’re watching the flyby, keep in mind that it’s 41 times smaller than Notepad and 625 times smaller than the everyday Visual C++ alarm clock application I happen to be using. It’s quite amazing what can be accomplished with such a small amount of code.
This is an extract from Fred Brooks’ (Frederick P. Brooks, Jr.) book, The Mythical Man-Month. This is one of the best explanations of why programming is so interesting. It touches on all aspects of the mystique of programming. If you haven’t read the book, go out, buy it, and read it. The book was first published in 1974 and then republished in 1995. What Fred Brooks had to say then based on his experiences with the development of the OS/360 system is still relevant today.