So google have re-invented ASN.1. Yay. Oh well I’m not sure why they didn’t just write a nice ASN.1 compiler and release that. At least they have something right. XML does suck for many uses.
After chatting about that a friend mentioned YAML. Hmm, YAML looks worse than XML. It purports to be human readable and writable but it needs a more complex context-senstive parser than XML. Avoid YAML.
That lead me on a meandering wander through the inter-tubes that visited this totally awesome anti-XML rant along the way. Wow, I could only dream of being able to flame like that, I just don’t have the patience. He has plenty more to say too. His perl and c++ observations are rather entertaining.
So I ended up reading a lot of lisp groups and rants. The lisp guys know how to put down just about everything. Along with a bit more reading and because I have a negative feeling toward guile (I forget why now – something to do with footprint and threading I think) – I’ve decided to skip scheme, and I think i’ll look at Lisp instead. After a bit of searching (damn google being hard to find things) I started reading Practical Common Lisp, and it seems a good read so far. After 2 chapters I can already start to see why lisper’s look with such disdain on other languages (although even the first bit of the scheme book I read gave me an inkling of that).
Chatting to a work-mate, larabee came up. It is all about a leap of fatih apparently. Hmm, looks dumb to me. I just hope this doesn’t mean every other gpu vendor gets caught in the catch up game when people start writing their shaders in x86. (which i’m sure is exactly what intel does hope).
I’m about to have a few weeks break! Although I should probably do stuff around the house, or do some exercise, I will probably just hack and read. And maybe some cooking, and watching the tour de france in the short term.
Nay! YAML is mainly a serialization language for cases where you really can’t define a namespace and a validation scheme. It’s great for having readable config files when a flat ini file is not enough.
You seem to be missing the point of both YAML *and* Google Protocol Buffers.
YAML is great not because the parser can be simpler, but because it’s simpler for *humans* to write. Ruby on Rails uses it extensively for its config files. What would you prefer?
development:
adapter: mysql
host: localhost
database: abc
username: foo
password: bar
or
mysql
localhost
abc
foo
bar
The YAML version is easier to read and easier to write. It looks similar to a .ini file but supports hierarchical data of various types. YAML is great for configuration files and for serializing hierarchical data. XML is just too verbose for those purposes.
As for Google Protocol Buffers, the main advantage is that it’s *simple*. ASN.1 is a full-fledged standard with a consortium around it. According to Wikipedia, ASN.1 includes a bunch of other standards. The first Google result returns http://asn1.elibel.tm.fr/, which looks like a website written in 1998. It doesn’t exactly encourage me to read it. None of the tutorials that I’ve seen so far look simple, and all of them look like as if they’re written a decade ago. Sorry, most of the time I just want to serialize some simple data. The learning curve of ASN.1 better be worth it if I am to use it.
Google Protocol Buffers on the other hand is well-documented. The website looks good, and so it invites me to actually read all that text. It’s simple and does only one thing: serialization of data. I don’t want an IPC mechanism, I don’t want remote objects, I just want to serialize some data. And since I didn’t already know ASN.1, and the data that I’m serializing is only used within the same application, there is no reason why I should choose ASN.1 over Google Protocol Buffers.
As a result of that anti-XML essay (and others like it), I’m proposing the Stupid Political Analogy Enhancement Act of 2008, IL.3856, which builds on the legal framework set forth in the Stupid Nazi Analogy Act of 1985:
Muddled Bush Administration Analogy : The Fucking Point > 1:3 = Argument fail.
You should have a look at ocaml and haskell… they’re both more readable than lisp.
The Intel tech could be cool (thinking x86 code for the GPU) if an app written for larrabee can run on the CPU if the additional processing units aren’t there. This would be a scheduling issue, hopefully handled by the OS.
Did you check PLT Scheme? http://plt-scheme.org/
Their implementation is really good.
Nay! YAML is mainly a serialization language for cases where you really can’t define a namespace and a validation scheme. It’s great for having readable config files when a flat ini file is not enough.
You seem to be missing the point of both YAML *and* Google Protocol Buffers.
YAML is great not because the parser can be simpler, but because it’s simpler for *humans* to write. Ruby on Rails uses it extensively for its config files. What would you prefer?
development:
adapter: mysql
host: localhost
database: abc
username: foo
password: bar
or
mysql
localhost
abc
foo
bar
The YAML version is easier to read and easier to write. It looks similar to a .ini file but supports hierarchical data of various types. YAML is great for configuration files and for serializing hierarchical data. XML is just too verbose for those purposes.
As for Google Protocol Buffers, the main advantage is that it’s *simple*. ASN.1 is a full-fledged standard with a consortium around it. According to Wikipedia, ASN.1 includes a bunch of other standards. The first Google result returns http://asn1.elibel.tm.fr/, which looks like a website written in 1998. It doesn’t exactly encourage me to read it. None of the tutorials that I’ve seen so far look simple, and all of them look like as if they’re written a decade ago. Sorry, most of the time I just want to serialize some simple data. The learning curve of ASN.1 better be worth it if I am to use it.
Google Protocol Buffers on the other hand is well-documented. The website looks good, and so it invites me to actually read all that text. It’s simple and does only one thing: serialization of data. I don’t want an IPC mechanism, I don’t want remote objects, I just want to serialize some data. And since I didn’t already know ASN.1, and the data that I’m serializing is only used within the same application, there is no reason why I should choose ASN.1 over Google Protocol Buffers.
The blog stripped my XML tags, so here’s a pastie: http://pastie.org/231894
As a result of that anti-XML essay (and others like it), I’m proposing the Stupid Political Analogy Enhancement Act of 2008, IL.3856, which builds on the legal framework set forth in the Stupid Nazi Analogy Act of 1985:
Muddled Bush Administration Analogy : The Fucking Point > 1:3 = Argument fail.
You should have a look at ocaml and haskell… they’re both more readable than lisp.
Everyone has an opinion on languages, framework support for the task you want to do is most important. e.g. http://www.joelonsoftware.com/items/2006/09/01.html
The Intel tech could be cool (thinking x86 code for the GPU) if an app written for larrabee can run on the CPU if the additional processing units aren’t there. This would be a scheduling issue, hopefully handled by the OS.