Sodium Dreams
Sparse updates from Brendan Berg
Should a Computer Science Degree Require Learning C?
Just to add to the discussion started by Bijan and picked up by Marco:
The first programming language I learned was Logo. Being seven at the time, I had no idea I was using a functional language. I didn’t care what was going on under the hood—I just liked being able to write programs that turned my Apple II screen into a phosphorescent spirograph.
Over the next ten years I programmed in BASIC, VisualBasic, JavaScript, C, a little bit of C++, and Java. I thought that the differences between languages were just syntax.
Once I started taking college-level CS courses, I began to get the differences between languages. I was in over my head taking an Artificial Intelligence course as a freshman, and using Java didn’t make writing A* search any easier than using C. But when the professor told us to write a program to simulate how a robot might rearrange stacks of alphabet blocks, and told us to use a funny little logic programming language called CLIPS, suddenly everything was easy! I could represent the world with rules and facts, and I didn’t need to worry about pointers or objects because they didn’t mean anything in a world where everything was an alphabet block. The only things that mattered in this world were concepts like “move” and “on-top-of.”
That was my first exposure to a situation where matching the language to the problem made a huge difference. Yes, I could have written the program in C. But it would have taken ten times the effort to get the same result.
Over the course of four years, I was introduced to functional and logic programming. I programmed in machine code. Yes, machine code—I spent a week flipping DIP switches with the tip of my pen, implementing multiplication and division algorithms in the Z80 instruction set. I’m not a good programmer simply because I learned C. Yes, some of my courses happened to use C, but it was learning about computation at all different levels of abstraction that really made me a good programmer.
My computer science professors weren’t teaching specific languages, they were teaching different ways of thinking about problems. Now, if I’m writing for speed and efficiency, I use C. If I want to do rapid prototyping, I use Python or Java. And if I’m building a simple embedded system, I might not use a programming language at all, I might just burn state transition tables into an EPROM.
We need to be careful not to dictate which languages to learn. Why should someone learn C instead of Pascal? Who gets to say it’s better to teach Lisp than SML? If the answer to why we should be teaching C is, “it was good enough for me so it’s good enough for you and here’s a nickel, kid, buy yourself a real computer,” we need to seriously ask ourselves where the new ideas in computer science are going to come from.
While the trend of dropping C in favor of Java or (shudder) C# is turning some schools into nothing more than flavor-of-the-month clubs, requiring one specific low-level language is no better. Sure, if I had to chose a single language that would teach students as much about computation as possible, it would be C. But the best computer science programs teach concepts, not languages. Graduates need to understand pointers, recursion, automata, regular languages, and computational complexity, and this is best done by exposing students to a number of different languages that excel at each of those concepts.
bijan↪ Sep 22, 2008#technology#education22 notes
The iPhone Continues to Ruin the Desktop Experience
I popped over to Google Maps on my trusty MacBook Pro, looking for the nearest Staples. It took me a couple seconds to realize that Mac OS X doesn’t give me a nifty Core Location button.
Location-based technologies are an obvious addition to mobile devices and portable computers, but I would argue that even desktop computers would benefit from knowing their location in meatspace. Eliminating a step in the “find stores / ATMs / movie theaters / homicides near me” process would be worth it alone.
↪ Aug 7, 2008#interactions#technology
The Same Way Baby Birds Are Fed
It seems that our reblogging culture has reduced technology journalism to regurgitating blockquotes, and thoughtful analysis has been replaced with whatever chunks of poorly researched opinion can be picked out of the associated bile. In this case, John Brownlee over at Boing Boing Gadgets engages in such journalistic bulimia with his coverage of Apple’s lawsuit against the seedy Mac clone manufacturer Psystar.
The CNet article he cites speculates that if Apple concedes anything at all, its legal department will be faced with a game of corporate whack-a-mole. Of course it would serve online journalists well to do some preliminary research before writing, because we’ve seen almost the exact same lawsuit before in Apple Computer, Inc. v. Franklin Computer Corp: company clones Apple product, Apple sues company, Apple leaves courthouse while bailiffs scrape company’s remains off walls with spatulas.1
Apparently Boing Boing Gadgets readers lap up vapid commentary with little regard for rational thought on the matters covered. Never mind that it’s unlikely Apple would lose their case, or that it’s doubtful the appearance of clone manufacturers caught Apple off-guard. Some people just want to hear about the potential undoing of one of the nation’s most talked-about companies.
Clearly, Brownlee is game. In addition to a trite Mortal Kombat reference,2 Brownlee offers this analytic gem: “It would be interesting to see how Apple might react to [a] worst-case scenario. A return to a proprietary CPU architecture, perhaps?” When it comes to Apple mysticism, we discover that even established pundits keep falling for the same lines. The prospect of Apple licensing the Mac OS X is a tired refrain, and I’m pretty sure that speculation over processor choice went out of style with trucker hats.
We’ll forgive Brownlee for neglecting to draw the right conclusions from Apple’s recently completed major transition away from PowerPC architecture, since there’s no Wikipedia entry on why running back inside the burning building one just evacuated isn’t recommended. I suppose, however, that it’s asking too much for a tech writer to actually, you know, understand hardware.
These days, who has the time to do actual research for an article? If someone did, he’d learn that Apple doesn’t need to use proprietary chips to prevent other hardware manufacturers from installing OS X on unapproved devices because it can be done in software with a copyrighted bootloader. He would also learn that their previous CPU architecture wasn’t proprietary either.
The PowerPC was developed jointly by Apple, Motorola, and IBM, and it uses a freely available instruction set. Many operating systems supported the architecture—in addition to Mac OS versions 7.1.2 through 10.5, at least nine Linux distributions and Unix variants developed by IBM and Sun Microsystems support the chip. Even Windows NT3 ran on PowerPC hardware.
Critical thinking skills are hardly ever effectively conveyed in Internet posts, but neither are they commonly practiced by readers. Bloggers, playing both parts, must be even more careful, or their publications run the risk of decaying into tabloid vomitoria.
-
Actually, the District Court found in favor of Franklin Computer, but the ruling was overturned a year later by the Third Circuit Court of Appeals. ↩
-
It’s trite when he references courtroom violence, but not when I do. That’s the nature of a double standard. Also, he makes a direct and unimaginative comparison between a trial and a video game, I just think the image of scraping up puréed organs with a cooking utensil is funny. ↩
-
The PowerPC wasn’t too proprietary for Microsoft. ↩
↪ Jul 24, 2008#technology#critique
Flashback
I’ve been thinking about Adobe Flash lately. It occupies an interesting position in the marketplace—outside of online video (which shouldn’t be using Flash Video in the first place), it seems like the only places we consistently see Flash are in annoying multimedia advertisements and in brand-promoting microsites.
Before I get flamed for being a Flash-hater (not that it seems particularly likely), I should point out that Flash still has some neat tricks up its sleeve. Flash still seems like the best way to get live audio and video from a user’s computer, and even though it’s rarely seen, it’s possible to populate a flash interface with dynamic content from a server.
The lack of Flash support on the iPhone may prove to be worse for Adobe than for Apple. Despite Adobe’s claims of working on a Flash player for the iPhone, it seems clear that even if Adobe engineers get it working, Apple maintains ultimate veto power by controlling the App Store. The existence of an emerging platform that isn’t simply blithely ignoring Flash but is actively avoiding it should be a signal to Adobe that it needs to get with the program.
So why isn’t this a bigger problem for Apple? Quite simply, the technologies Flash provides for rich application development have been superseded by open standards built into the web browser itself. You no longer need to go through Adobe to get scriptable vector graphics in a web page. Browsers like Safari and Firefox are adopting SVG canvas support, and by scripting these canvasses with JavaScript, a smart programmer can create a standards-compliant flash-like website without the need for a plug-in.
There are a few key things still missing from this new toolset, namely the ability to easily create keyframe animations and a painless WYSIWIG editor. If Adobe is unable to adjust their strategy based on a growing trend that is practically lit up with searchlights, I have serious doubts that they’ll be able to maintain any serious share of the online market. I’m sure that if Adobe doesn’t make a move, a couple of young and ambitious programmers will be more than willing.
↪ Jun 30, 2008#technology#critique
Hardcopy

My boyfriend was flipping through a copy of my thesis today and spilled some water on it. Without thinking, my first reaction was to say, “Don’t worry. I have a hard copy on the computer.”
Have we reached some sort of tipping point in favor of the paperless office? Paper tears easily; it becomes yellow and brittle; it is a sponge for humidity, oil, and dirt; it presents myriad environmental issues. A hard copy used to be a way to be extra super sure that important information wouldn’t get lost, but with today’s reliable hardware and regular backups it’s quite likely that digital formats will outlast physical ones.
↪ May 29, 2008#technology#interactions
