Hacker News new | past | comments | ask | show | jobs | submit login

I'd love clarification on a few points, from anyone who understands everything Alan says here:

Think of the internet -- to live, it (a) has to allow many different kinds of ideas and realizations that are beyond any single standard

Is he referring here to alternative protocols from http, or to the fact that behind the single http protocol are servers written in myriad languages and styles?

If you focus on just messaging -- and realize that a good metasystem can late bind the various 2nd level architectures used in objects

What is a metasystem? Can you provide an example? Similarly, what are 2nd level architectures?

the realization that assignments are a metalevel change from functions, and therefore should not be dealt with at the same level

what does he mean here? what are the two "metalevels" of assignments vs functions? what are examples of other "metalevels"? i've just never heard these terminology in this context, so don't know where to start in understanding it...




> Is he referring here to alternative protocols from http, or to the fact that behind the single http protocol are servers written in myriad languages and styles?

My interpretation is that the design of TCP/IP (and maybe HTTP?) focuses on the behavior of the components from the perspective of how they communicate with one another, not how they behave internally. They follow the Robustness Principle: Be conservative in what you do, and liberal in what you accept from others.

> What is a metasystem? Can you provide an example? Similarly, what are 2nd level architectures?

It took me a long time to understand what this means. Basically, a metasystem is a blurring of the language and the code you write within that language. Smalltalk is an example of such a system because you can change the language itself from within the language and the environment.

There are downsides to such a system, though, including the proliferation of many fragmented, inconsistent environments. To take a deliberately ridiculous example, let's imagine Ruby was a metasystem. You write some code in your rails app that allows a third method privacy mechanism beyond public, private, and protected. Or, that you decide you want multiple inheritance in ruby.

That's powerful -- and dizzying for many people not accustomed to thinking about their languages at that level. So, what Alan is suggesting is that we erect "fences" of some kind to both allow this power in our languages but in a protected manner, so that we mitigate the risk of the fragmented world that could result. (Since you've essentially created a new "flavor" of ruby by changing its behavior.)

There is a fantastic book on this topic called "The Art of the Metaobject Protocol" that I highly recommend. It guides you through building an object oriented language construct from within Common Lisp.

I don't know what he means by 2nd-level architectures, nor what he's saying about assignments being meta-level change from functions.


the realization that assignments are a metalevel change from functions, and therefore should not be dealt with at the same level

I have no idea what Kay himself meant by this, but I personally appreciate that they are very different (and maybe my perspective aligns with his).

A function prescribes how to transform input data and produce output data. An assignment manipulates the environment of the scope itself - you are updating some state somewhere in the runtime, the interpreter or main memory.


Regarding the internet (and the design of TCP/IP in particular), here's a comment by Alan from his recent AMA:

https://news.ycombinator.com/item?id=11960130

One interesting point from a talk of his - the internet has never broken or been unavailable since they turned it on, even though it has gone through about 3 successive generations of hardware/software.


So the idea, essentially, is that TCP/IP is like a "free form field" where people can write whatever they want, and then everyone is free to create their own structure on top of that, to suit their needs. In contrast to some protocol that accepted only, say, XML? His point, then, is that not forcing such structure was a crucial ingredient in the internet's success?


The TCP messaging analogy here is that the design was a protocol, which focused on how different components in a TCP system communicate with each other. Rather than a design that focused on how each component worked internally.

The inter-communication was the central design, not the intra-communication.

Many OOP programmers today spend the bulk of their time thinking about how their objects should work rather than how they should communicate.


> Many OOP programmers today spend the bulk of their time thinking about how their objects should work rather than how they should communicate.

Which is the "proof" that OOP was oversold. This is called "structured programming". It's not evil :-)

http://www.yegor256.com/2014/05/05/oop-alternative-to-utilit...


Well, TCP/IP was just about the mechanics of getting 2 machines to be able to communicate with each other. He hints at the end of that comment on how to expand that to include meaning and interpretation of the actual message. One way of thinking about it - how would we communicate with an alien civilization? In a way that's how 2 machines that never interacted before could negotiate common meaning.


> One way of thinking about it - how would we communicate with an alien civilization? In a way that's how 2 machines that never interacted before could negotiate common meaning.

Interesting. Actual attempts to solve this, such as the Arecibo message, always reference "universal" constants like prime numbers, atomic structure, the speed of light, etc, to establish a common language.

I'm not sure I understand what the analog would be for two computers?


Unfortunately, I'm not quite sure either. Alan Kay has a very socratic way of communicating (at least from reading through all his comments on the AMA) and I often feel like he's been sitting in a higher plane of thought for so long that the only way he is able to communicate his ideas is by 'forcing' the recipient to make the same jumps he has (a bit like the square in Flatland). I could be completely misunderstanding where he was going with those thoughts.


I think he's referring to primitive GET, PUT, POST, DELETE message passing verbs that enable more complex and abstract compositions.


HTTP != internet


Sure... a packet/socket/port level interpretation works too.

The spirit of his point, though, appears to be creating decoupled systems from simple message passing protocols.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: