The Null Device

Posts matching tags 'programming'


Edward C++hands, or an essay by Bartosz Milewski on why C++ is harmful to progress:

I’ve been looking for a good analogy of what programming in C++ feels like and I remembered this 1990 Tim Burton movie, Edward Scissorhands.
Having scissors for hands in not all that bad. Edward has many talents: he can, for instance, create stunning dog hairdos.
I often have these kinds of thoughts after attending C++ conferences: this time it was Going Native 2013. The previous year, the excitement was all about the shiny new C++11 Standard. This year it was more of a reality check. Don’t get me wrong — there were many stunning dog hairdos on display (I mean C++ code that was elegant and simple) but the bulk of the conference was about how to avoid mutilation and how to deliver first aid in case of accidental amputation.
The gist of the article is that, because of backward compatibility requirements with C (also known as “high-level assembly language”), C++ is a deathtrap, with numerous potential pitfalls and even more schemes to mitigate them, each with its own flaws and shortcomings:
The C++ lore is that you should avoid naked pointers, avoid arrays, avoid delete. So the remedy for the lameness of malloc is operator new, which is also broken because it returns a dangerous pointer and pointers are bad. We all know (and have scars on our faces to prove it) that you should use the Standard Library containers and smart pointers whenever possible. Oh, and use value semantics for passing things around. No wait! Value semantics comes with a performance penalty because of excessive copying. So what about shared_ptr and vectors of shared_ptr? But that adds the overhead of reference counting! No, here’s a new idea: move semantics and rvalue references.
Milewski's solution is to move to a functional language like Haskell, or if you can't, write your C++ code as if it were in Haskell:
Of course, you might recognize all these pro-concurrency and parallelism features as functional programming — immutability and pure functions in particular. At the risk of sounding repetitive: Haskell is way ahead of the curve with respect to parallelism, including GPU programming. That was the reason I so easily converted to Haskell after years of evangelizing good programming practices in C++. Every programmer who’s serious about concurrency and parallelism should learn enough Haskell to understand how it deals with it. There is an excellent book by Simon Marlow, Parallel and Concurrent Programming in Haskell. After you read it, you will either start using functional techniques in your C++ programming, or realize what an impedance mismatch there is between parallel programming and an imperative language, and you will switch to Haskell.

c++ functional programming programming programming languages tech 1


Coding Horror has a list of new coding jargon; pithy or apposite terms coined to describe things which, for better or worse, recur in programming:

Yoda Conditions: Using if(constant == variable) instead of if(variable == constant), like if(4 == foo). Because it's like saying "if blue is the sky" or "if tall is the man".
A Duck: A feature added for no other reason than to draw management attention and be removed, thus avoiding unnecessary changes in other aspects of the product.
(This pattern recurs in other industries; it's known to illustrators as a “hairy arm”.)
Stringly Typed: A riff on strongly typed. Used to describe an implementation that needlessly relies on strings when programmer & refactor friendly options are available.
Baklava code: Code with too many layers... While thin layers are fine for a pastry, thin software layers don’t add much value, especially when you have many such layers piled on each other. Each layer has to be pushed onto your mental stack as you dive into the code. Furthermore, the layers of phyllo dough are permeable, allowing the honey to soak through. But software abstractions are best when they don’t leak. When you pile layer on top of layer in software, the layers are bound to leak.
Smurf Naming Convention: When almost every class has the same prefix. IE, when a user clicks on the button, a SmurfAccountView passes a SmurfAccountDTO to the SmurfAccountController. The SmurfID is used to fetch a SmurfOrderHistory which is passed to the SmurfHistoryMatch before forwarding to either SmurfHistoryReviewView or SmurfHistoryReportingView. If a SmurfErrorEvent occurs it is logged by SmurfErrorLogger to ${app}/smurf/log/smurf/smurflog.log

programming stupidity tech 0


PHP: a fractal of bad design; a good essay on why PHP, one of the most popular web programming languages, is horribly, irreparably flawed:

PHP is not merely awkward to use, or ill-suited for what I want, or suboptimal, or against my religion. I can tell you all manner of good things about languages I avoid, and all manner of bad things about languages I enjoy. Go on, ask! It makes for interesting conversation. PHP is the lone exception. Virtually every feature in PHP is broken somehow. The language, the framework, the ecosystem, are all just bad. And I can’t even point out any single damning thing, because the damage is so systemic. Every time I try to compile a list of PHP gripes, I get stuck in this depth-first search discovering more and more appalling trivia. (Hence, fractal.)
Imagine you have uh, a toolbox. A set of tools. Looks okay, standard stuff in there.
You pull out a screwdriver, and you see it’s one of those weird tri-headed things. Okay, well, that’s not very useful to you, but you guess it comes in handy sometimes.
You pull out the hammer, but to your dismay, it has the claw part on both sides. Still serviceable though, I mean, you can hit nails with the middle of the head holding it sideways.
You pull out the pliers, but they don’t have those serrated surfaces; it’s flat and smooth. That’s less useful, but it still turns bolts well enough, so whatever.
And on you go. Everything in the box is kind of weird and quirky, but maybe not enough to make it completely worthless. And there’s no clear problem with the set as a whole; it still has all the tools.
Now imagine you meet millions of carpenters using this toolbox who tell you “well hey what’s the problem with these tools? They’re all I’ve ever used and they work fine!” And the carpenters show you the houses they’ve built, where every room is a pentagon and the roof is upside-down. And you knock on the front door and it just collapses inwards and they all yell at you for breaking their door.
That’s what’s wrong with PHP.
I always thought of PHP as Perl's brain-damaged little brother.

(via frogworth) design php programming web 3


In 2001, a chap by the name of Aaron Ardiri wrote a port of Lemmings to the PalmOS PDA platform. Now, he has given himself 36 hours to port it to two modern mobile platforms, the iPhone and Palm webOS, with OSX and Windows desktop ports for good measure. Ardiri posted his progress, and interim OSX binaries, to a liveblog here; it seems to be down, but there's a long, scroll-like screenshot of the whole thing here. It's quite interesting, in its descriptions of how coding practices have changed as platforms have become less cramped, and of the process of adapting 2001-vintage PalmOS code to larger (mostly UNIX-based) systems.

Ardiri is considering adding another port to Android; I imagine this would involve some means of translating ancient, low-level C code into Java (or else a C compiler that produces Dalvik bytecode). If he's just dealing in C-based platforms, he could add Nokia's various platforms and (from what I hear) Samsung's new "Bada" OS, though whether there'd be much reason to bother is an open question.

iphone lemmings osx palm palmos programming retrocomputing software tech webos 0


A Brief, Incomplete, and Mostly Wrong History of Programming Languages:

1842 - Ada Lovelace writes the first program. She is hampered in her efforts by the minor inconvenience that she doesn't have any actual computers to run her code. Enterprise architects will later relearn her techniques in order to program in UML.
1987 - Larry Wall falls asleep and hits Larry Wall's forehead on the keyboard. Upon waking Larry Wall decides that the string of characters on Larry Wall's monitor isn't random but an example program in a programming language that God wants His prophet, Larry Wall, to design. Perl is born.
1995 - At a neighborhood Italian restaurant Rasmus Lerdorf realizes that his plate of spaghetti is an excellent model for understanding both the World Wide Web and that web applications should mimic their medium. On the back of his napkin he designs Programmable Hyperlinked Pasta (PHP). PHP documentation remains on that napkin to this day.

humour perl php programming programming languages tech 0


Seen at Maker Faire: Two guys from ARM (the people who designed the CPU in your mobile phone and probably a dozen other devices you own) have designed an amazingly elegant new microcontroller prototyping board, for making electronic gadgets even more easily than with the Arduino. Called mbed, it consists of a board with a USB port and 40 pins. The pins do the usual things (analogue/digital I/O, USB, Ethernet, &c.), but that's not the impressive thing about it; the impressive part is the design of the whole system, which brings web-style agile development to microcontroller-based gadgets.

When you get an mbed, you plug it into your computer (which may be a Windows PC, a Mac, a Linux box or anything else which can mount USB drives); it then appears as a USB disk, containing one file: a web link. You go to the web link, which directs you to mbed's web site, where you log in or create an account; from then on, you have an integrated development environment in your browser, with source navigation, syntax highlighting and a compiler. Your code is hosted online on mbed's servers (the system uses the Subversion version control system as a store). Create a new project, and you get a "Hello World" program (written in C++) which, by default, flashes one of the mbed board's built-in LEDs. Hit the Compile button, and your browser soon prompts you to download a .bin file of the compiled program. Save it to the mbed card's drive, hit the reset button on it, and your program runs.

That's not all, though; the mbed card can work with a plethora of hardware modules, from Nokia-style LCD displays to GPS units, Bluetooth modems and more. Which is where the next bit of elegance comes in. There exists an ecosystem of modular classes for driving these various devices. To attach a supported device, all you have to do is add the class for it to your project (by pasting the URL of its Subversion repository into a dialog box; the IDE does the rest for you), instantiate it as an object and call its methods. For example, here is code for drawing on a Nokia-style LCD display:

MobileLCD lcd(p5,p6,p7,p8,p9);  // the I/O pins
lcd.printf("Hello world\n");
lcd.fill(0,64,128,128, 0xffffff);
This goes some way towards making building gadgets as easy as building web applications with a framework like Django or Ruby On Rails.

mbed is somewhat more expensive than the Arduino (the price quoted was about £45 for the mbed board itself, whereas Arduino-compatible boards go for £13 or so). However, the elegance of the design, its ease of use and sheer niftiness could make it worth the price.

arm diy hacks mbed programming tech 3


Apple have just released the specifications for the iTunes LP format, a way of encoding extra content to wrap around music albums, and it looks very elegant. As mentioned before, an iTunes LP is a directory containing the original media and graphic files, as well as XML metadata, HTML/CSS for presentation, and code in JavaScript for the navigation. The JavaScript code uses a framework named TuneKit, which, in characteristic Apple fashion, is elegantly Model-View-Controller; rather than littering DOM objects with event handlers, an author defines controller classes which deal with the relevant events.

Apple say that they will start accepting automated submissions of iTunes LP content to the iTunes Store in the first quarter of 2010. Of course, as the format is open, there is nothing preventing people from rolling their own and selling them from other sites.

I wonder how long until there are open-source iTunes LP players for platforms such as Linux.

apple html itunes javascript programming tech 8


Taking the concept of "minimal electronica" to a new level, a group of artists have created a collection of music tracks composed in only 140 characters of SuperCollider source code. You can listen to or download the tracks here.

(via MeFi) electronic music music programming supercollider tech 0


Joe Hewitt, the developer of the iPhone Facebook application, has publicly sworn off iPhone development, over Apple's heavy-handed approval policies:

My decision to stop iPhone development has had everything to do with Apple’s policies. I respect their right to manage their platform however they want, however I am philosophically opposed to the existence of their review process. I am very concerned that they are setting a horrible precedent for other software platforms, and soon gatekeepers will start infesting the lives of every software developer.
The web is still unrestricted and free, and so I am returning to my roots as a web developer. In the long term, I would like to be able to say that I helped to make the web the best mobile platform available, rather than being part of the transition to a world where every developer must go through a middleman to get their software in the hands of users.”
I wonder whether this will make enough waves to shake Apple into loosening their grip somewhat. Perhaps that'll take Jamie Zawinski to take up iPhone development, attempt to port DaliClock to it and then storm off in a huff.

apple censorship facebook free software iphone joe hewitt programming protest 0


Geekier-than-thou technology blog Ars Technica have posted a detailed technical review of Snow Leopard, the latest revision of MacOS X, which delivers few new features but instead comprehensively overhauls the inner workings of the system. And there are a lot of interesting things there, from transparent compression of files to the shift to 64-bit and the replacement of the legacy QuickTime system with a new, Objective C-based one, not to mention a judicious sprinkling of user-interface improvements and technologies brought over from the iPhone programme. (Core Animation, it seems, is everywhere, and there's a CoreLocation service which can determine where a machine is.)

One of the most intriguing improvements (to me, as a programmer, anyway) is one at the lowest level: Apple have quietly extended the C language, adding anonymous/lambda functions and closures, which they call "blocks". So now you can create and pass back blocks of code (more or less) as if you were in Lisp, Python or JavaScript, like so:

typedef void (^work_t)(void);
void repeat(int n, work_t block) { 
  for (int i = 0; i < n; ++i) 
repeat(5, ^{ printf("Hello world\n") });
Which, of course, opens the door to functional-style algorithms like map/filter/reduce, passing predicates as function arguments, and other nifty tricks which people in the functional-programming world have been doing without a second thought for decades.

The code in bold is a block. It's not the prettiest syntax in the world, though it is consistent with C, and gets lexical scope. There are more technical details on blocks here (fun fact: a block is an Objective C runtime object, though can be used from vanilla C), and Apple's own documentation here. Apple have made the blocks extention open source, contributing it back to both GCC and the LLVM compiler they're moving to, and submitting it to the C standards working group (as in this paper), so there's a decent chance that they'll filter through to other platforms. (How quickly they're adopted elsewhere is, of course, another matter.)

Blocks in themselves are nifty for the functional-programming enthusiasts, though understandably may seem esoteric to everybody else. Apple, however, are making thorough practical use of them in a new subsystem named Grand Central Dispatch, which allows programmers to rewrite processor-intensive processes in terms of fine-grained units of work, pass them to queues, and have them automatically spread across however many processors the machine has free at the time; which, in theory at least, should greatly increase efficiency without requiring much more effort on the programmer's part.

(via MeFi) C apple functional programming osx programming tech 0


InformIT has an interview with Donald Knuth; he's skeptical about multicore processors, unit testing and reusable code, doesn't like the idea of eXtreme Programming™, and has more or less conceded that literate programming is unlikely to become mainstream any time soon, whilst still believing that it is a superior way to write code:

In my experience, software created with literate programming has turned out to be significantly better than software developed in more traditional ways. Yet ordinary software is usually okay—I’d give it a grade of C (or maybe C++), but not F; hence, the traditional methods stay with us. Since they’re understood by a vast community of programmers, most people have no big incentive to change, just as I’m not motivated to learn Esperanto even though it might be preferable to English and German and French and Russian (if everybody switched).
Jon Bentley probably hit the nail on the head when he once was asked why literate programming hasn’t taken the whole world by storm. He observed that a small percentage of the world’s population is good at programming, and a small percentage is good at writing; apparently I am asking everybody to be in both subsets.
With the caveat that there’s no reason anybody should care about the opinions of a computer scientist/mathematician like me regarding software development, let me just say that almost everything I’ve ever heard associated with the term "extreme programming" sounds like exactly the wrong way to go...with one exception. The exception is the idea of working in teams and reading each other’s code. That idea is crucial, and it might even mask out all the terrible aspects of extreme programming that alarm me.

(via Wired) computer science donald knuth programming tech 0


Something I didn't know until today: the Facebook API includes a complete SQL-style query language for querying one's social graph, which allows you to do things like:

SELECT name, pic, status, music FROM user WHERE uid in (select uid2 from friend where uid1 = 1234567890)
FQL, as it's called, can be called from the Facebook API, or you can play with it here (using the fql.query method).

(via brad) facebook nifty programming social software sql web 0


The core developers of Python (a rather elegant open-source programming language, in which, incidentally, this website is written) have broken ground on Python 3000, the massive, compatibility-breaking overhaul they intend to give Python, fixing the mistakes, shortcomings and inelegancies in the current version. Here are the things that will change, and here are the things that won't.

It's heartening to see that lambda functions (once slated to be abolished) have been given a reprieve. Otherwise there would have been no concise way of passing anonymous functions as a data type, and instead of being able to do something like (to quote a rather silly example):

greeters = { 
    'english'     : lambda name: "Hello, %s"%name,
    'french'      : lambda name: "Bonjour, %s"%name,
    'australian'  : lambda name: "G'day, %s"%name
one would have to take the long way around, doing something like:
def greet_english(name):    return "Hello, %s"%name
def greet_french(name):     return "Bonjour, %s"%name
def greet_australian(name): return "G'day, %s"%name

greeters = { 'english': greet_english, ... }
And I don't buy the argument that anonymous functions are bad form, and that each chunk of code should have a name that describes what it does. There are many instances where one wants to specify a tiny fragment of code which will fit into a larger mechanism like a small but crucial cog (be it in a function call, a data structure or wherever), without the bureaucratic overhead of giving it a name. Otherwise we may as well be programming in Java or COBOL or some Vogon-designed abomination of a language.

programming python python 3000 2


Bruce Schneier has a post about an interesting way to beat buffer overrun attacks:

Fortunately, buffer-overflow attacks have a weakness: the intruder must know precisely what part of the computer's memory to target. In 1996, Forrest realised that these attacks could be foiled by scrambling the way a program uses a computer's memory. When you launch a program, the operating system normally allocates the same locations in a computer's random access memory (RAM) each time. Forrest wondered whether she could rewrite the operating system to force the program to use different memory locations that are picked randomly every time, thus flummoxing buffer-overflow attacks.
Memory scrambling isn't the only way to add diversity to operating systems. Even more sophisticated techniques are in the works. Forrest has tried altering "instruction sets", commands that programs use to communicate with a computer's hardware, such as its processor chip or memory.
This produces an elegant form of protection. If an attacker manages to insert malicious code into a running program, that code will also be decrypted by the translator when it is passed to the hardware. However, since the attacker's code is not encrypted in the first place, the decryption process turns it into digital gibberish so the computer hardware cannot understand it.

(via schneier) bruce schneier machine language programming security 0


A request for help from one "Adoh Fadduq" of the United Arab Emirates, found in

Insha Allah, I am now trying to choose an editor for my software development and typesetting work. I have closely considered Emacs, which fits my needs in some respects. I do, however, feel that there is a big security issue with it for me and my brethren: Emacs was largely developed by Jews and for Jews. Considering how cunning the Jews are, I would not be surprised to find that they have hidden special bugs and booby traps inside emacs, in order to spy on and disrupt work of my Allah believing brethren. Are my concerns justified?

(via dreamstooloud) anti-semitism emacs islam jewish paranoia programming united arab emirates wtf 0


The Tory programming language is a programming language that takes the form of a series of Conservative election pledges:

The following example loops endlessly, outputting the ascii values 0 to 255:
We will spend more on hospitals!
We will jail anyone not in jail already!
We will spend billions limiting immigration!
We will deport anyone we can deport!
We will abolish schools!

(via gimbo) humour politics programming tories uk 0


Nifty Python hack of the day: a C-style switch() construct, implemented without using dictionaries (instead using a class and yield).

(via pythonurl) programming python tech 0


A fairly informative dissection and analysis of Google Maps and how it does its magic. It's pretty interesting; unlike GMail (the other example of an impressive DHTML-based interface from Google), Maps doesn't use XMLRPC, but instead just fetches tiles in JavaScript and uses a hidden frame to communicate with the server, and the browser's inbuilt XSLT engine to parse the result. Which all makes for some very impressive hack value.

ajax google google maps javascript programming tech web web 2.0 0


Glyph Lefkowitz is not only the developer/prime mover of an impressively elegant Python-based network programming framework, but has also written some nuanced and insightful essays about various topics, including a good argument for extending Python rather than embedding it (i.e., there are many good reasons other than laziness for it), a righteous excoriation of the Ayn Rand Institute's take on the "War on Terrorism", and a very astute attempt at a framework for ethics in software development, which does a good job of unmuddying the waters. Go and read.

glyph lefkowitz programming python twisted 0


This looks fairly nifty: Unununium, a thoroughly modular operating system, following the principle that the utility of a system is proportional to the number of connections possible between its components. It's implemented in Python (the kernel contains a Python interpreter), consists of small pieces, loosely joined, and also aims to be completely persistent (so that the machine's state is retained when it is powered off). And, of course, probably won't take the world by storm, though could well become the next Oberon. (via gimbo)

operating systems programming python 0


Why's Poignant Guide to Ruby, a gleefully insane and yet surprisingly useful beginner's guide to the Ruby language, peppered with zany examples and illustrated with cartoons, and sidebars rambling about gigantic robot monkey brains and such. A bit like those children's guides to TRS-80 BASIC programming and such that were around in the 1980s, only on much stronger drugs.

Ruby's a fairly nifty language; though probably a bit too overshadowed by both Perl and Python, which are technically more ordinary-looking but good enough for most things and have inertia behind them, to become big. Still, I should probably get around to doing more with it at some stage.

programming ruby 0


Dating Design Patterns, or, adapting object-oriented software design methodology to the task of picking up women (or, as the authors put it, "attempting to implement getLaid method successfully on FEMALE platform"); the "design patterns" have names like "Jini Singles Bar", "Pan-Dimensional Renaissance Differentiator" and "Reverse Polarity" (which sounds more like Star Trek than OOP).

Classic Method Call: The recommended parameters for Just Asking.
Structured Exposure, a.k.a. Container-Managed Dating: How to use commonly available dating containers to achieve maximum sessions with less time and effort and an array of services you don't have to write yourself.

Umm, OK... (via Slashdot; where else?)

dating design patterns geek humour parody programming sex tech 0


Python 2.3 is officially out, and brings with it lots of features. Generators are now a first-class part of the language (and not part of __future__), which allows a sort of lazy evaluation; Python can import modules from ZIP files; there is the enumerate() function, which allows you to iterate over a sequence's indices and values more efficiently, as well as Set and Boolean types; and there are a number of nifty new modules, such as a correct CSV handler, and more. Oh, and it's apparently 25% faster too.

functional programming programming python 2


The latest development in Trustworthy Computing technology: NewCode, a programming language based on Orwellian principles. It is (theoretically) impossible to express security vulnerabilities in NewCode.

humour language orwellian programming security 2


An internal memo from Sun about what's wrong with Java:

  • The support model seems flawed
  • The JRE is very large.
  • Extensions do not support modularity.
  • It is not backward-compatible across minor releases.

Interestingly enough, the memo goes on to compare Java to Python, with Java coming out of it not looking very good.

java programming python 0


The Year in Scripting Languages, a roundup of what happened in 2002 in the worlds of Python, Perl, Ruby, Tcl and Lua.

(Lua? Oh yes, it appears to be a new embedded scripting language of Brazilian origin. No idea what it looks like, as the site doesn't actually show any code.)

"Forget about Basic and go for Lua! Lua is just as easy to use, but a lot more powerful. Lua is also very easy to extend."
-- Jon Kleiser, in

lua perl programming python ruby tcl 0


Via Richard's blog, a USENET rant on why XML is evil. It meanders a bit, in the classic crackpot sense (the extension of the metaphor of XML as a bad child into a reference to diaper fetishism, segueing into a digression on why Americans like big breasts, is but one example), but I must say I agree somewhat with the sentiment; to whit, XML is useful as a markup language for text, but putting everything in XML (as some are advocating) is just silly. For one, for most things, there is too much syntactic overhead compared with other formats, and the idea seems to suffer from the Microsoft Fallacy (i.e., the assumption that clock cycles are too cheap to care about and may be squandered at will).

(I was thinking recently of the data format for a project I've been working on (more info on that later), and was toying with making it XML-based; after all, everybody else is doing it, aren't they? Though I'll probably make it some sort of Python-like pseudocode notation, or something otherwise lighter.)

programming python xml 1


A preview of what's new in Python 2.3.

programming python 0


Python 2.2 now has iterators and generators, like some of the more outré functional languages (not to mention Ruby and SuperCollider). Here is a good tutorial.

generators programming python 0


Linux geekery: A great big list of Linux sound hacking links. Everything from sound processing libraries to revolutionary new DSP APIs to file reading code to MIDI classes for Python and Tcl. Also, CDfs, which lets you mount a CD (including multiple sessions and audio tracks) as a special file system.

linux programming sound 0


MacOS X geek-out: Qt is now available for MacOS X. Mind you, there's no X11-style free licence. Meanwhile, Apple say they have ported Tk to MacOS X. Which means that Tkinter may soon be available to Python scripts running on OSX.

Now hopefully someone will get around to writing a Gtk backend for Quartz (the MacOS X windowing/drawing mechanism). (There are already backends for Win32 and frame buffers, so it shouldn't be impossible.) Then it will be possible to run GIMP on MacOS X without an X server.

Another thing I'd like to see would be some Python bindings to Cocoa/AppKit. (Given the nature of the Objective C runtime, it may be doable.)

osx programming qt 0


Penguinheads, take note: Borland's Kylix development environment for Linux is now available for free , but only for developing GPLed software. Which is a nice gesture on Borland's part, giving something back to the free software community and all. (you probably saw this on Slashdot already)

gpl linux programming software 0


Python roundup: An interview with Guido van Rossum, creator of Python, in which he reveals how he wrote the language, and why it will be the next big thing, taking the mantle now held by the popular mutant camel Perl. And if that isn't enough, here's Eric S. Raymond's take:

Ugly programs are like ugly suspension bridges: they're much more liable to collapse than pretty ones, because the way humans (especially engineer-humans) perceive beauty is intimately related to our ability to process and understand complexity. A language that makes it hard to write elegant code makes it hard to write good code.

I agree with ESR; Perl has its uses for quick file parsing jobs, but isn't really suited to large programming tasks (especially when there are better languages). Python is currently my favourite language for day-to-day use. I've looked at Ruby briefly, and it looks possibly more elegant than Python (some of the OO syntax reminds me of SuperCollider on the Mac), though isn't yet quite as mature as Python.

elegance perl programming python 0


As the Amiga claws its way out of the grave and prepares to reconquer the world, it brings its own twist to the virtual-machine era: a virtual assembly language. That's right; rather than add a C/Pascal syntax or doing something doovy like Python, the Amiga people stayed true to the hardcore demo-jock traditions of the faithful and made it look like assembly language, only with infinite registers and other enhancements. 'Cause high-level languages are for pussies. Not quite sure whether it'll catch on, but it's interesting.

amiga assembly language programming 0


A good opinion on why a Linux Visual Basic clone is a stupid idea. I agree; technically, VB's syntax has nothing to offer that Python (or even Perl) cannot trump by orders of magnitude, and VB compatibility would depend on having all the Windows guts there. The only reason I can think of for even considering such a daft enterprise is to have something on paper to impress clueless management types.

linux programming visual basic 0


This looks most interesting: Python WebWare; not as heavy as Zope, but it has some interesting-looking components such as Python Server Pages and WebKit.

programming python web 0


There's an interesting discussion on Slashdot about how human languages influence programming languages, and how languages designed by non-English-speakers would differ from ones designed by English-speakers. (Oddly enough, some of the most elegant recent programming languages come from non-English-speaking countries; Ruby and Python, for example, are of Japanese and Dutch origin, respectively, while Perl is very American. What does this say about the clarity of the English language?)

language perl programming python ruby tech 0


An interesting programming contest, which involves writing a program which automatically summarises news items in haiku form. Given the complexity of the task, any satisfactory solutions are going to have to be quite interesting... (via Slashdot)

ai haiku natural language processing programming science tech 0


Good rant about the surfeit of open-source projects: (Freshmeat)

Is there a cool KDE application? Rewrite it from scratch with the GTK+ toolkit. Don't contribute enhancements to the existing project. Don't even evaluate their codebase for potentially reusable code; that goes against the spirit of COMPETITION. You need to write something... cooler. Is there a Java version yet? Rewrite it. What about a console version? Rewrite it. A applet? Rewrite. An EPPLET? REWRITE. A pure assembly version? RE. WRITE. ... Remember that rewriting is always a more creative process than porting, and there's nothing more important in mental health than a creative outlet. Doing a search on the appindex for "icq" will demonstrate how popular this method of project development/psychotherapy can be.

open-source programming rant 0

This will be the comment popup.
Post a reply
Display name:

Your comment:

Please enter the text in the image above here: