gordonbrander + compsci   28

Nomic - Wikipedia, the free encyclopedia
Nomic is a game created in 1982 by philosopher Peter Suber in which the rules of the game include mechanisms for the players to change those rules, usually beginning through a system of democratic voting.

I wonder: this may actually be a great way to test how a democratic system works in the long term. It's a like a microcosm version of democratic government, with players exploiting the boundaries of law (for profit?).
politics  logic  compsci  development  philosophy  game 
6 weeks ago by gordonbrander
Reflective Facilities in Smalltalk-80
When a message is sent to a Smalltalk-80 object, the method dictionaries associated with that object's class and its superclasses are searched at runtime. If none of these classes implement a method for a given message, the Smalltalk virtual machine sends the object the message doesNotUnderstand:. The original message selector and message arguments are bundled together in a Message object and passed as the argument to doesNotUnderstand:. The default method for this message is stored in class Object. This method invokes the Smalltalk debugger, since sending an object a message it does not implement is usually a sign of programmer error. However, objects that override doesNotUnderstand: can intercept unimplemented message at runtime, and process them as they see fit.

So, actually, it sounds like SmallTalk 80 did bind message names to method names, much like JavaScript or any other OOP language. Earlier versions of the language did not. It sounds like Actor-based languages work essentially the way I expected SmallTalk would.
compsci  development  web  oop  smalltalk 
6 weeks ago by gordonbrander
Scripting: Higher Level Programming for the 21st Century
Implementation inheritance... is a bad idea that makes software harder to manage and reuse. It binds the implementations of classes together so that neither class can be understood without the other: a subclass cannot be understood without knowing how the inherited methods are implemented in its superclass, and a superclass cannot be understood without knowing how its methods are inherited in subclasses. In a complex class hierarchy, no individual class can be understood without understanding all the other classes in the hierarchy.

Nonetheless, object oriented programming does provide at least two useful features. The first is encapsulation: objects combine together data and code in a way that hides implementation details. The second useful feature is interface inheritance, which refers to classes that provide the same methods and APIs even though they have different implementations. This makes the classes interchangeable, which encourages reuse.

JavaScript's prototypal inheritance side-steps the implementation inheritance issue by making everything implemented by the class observable on a prototype object.
development  javascript  compsci  web  pattern 
6 weeks ago by gordonbrander
Introduction to Arrowlets
Arrowlets is a JavaScript library that uses the concept of arrows to make the task of composing event-handlers easy. Event handlers are written as normal functions, as you would today, and Arrowlets provide flexible combinators to easily compose sequence of events, animation, asynchronous network access, and making long-running computations while keeping the UI responsive.
javascript  haskell  functional  web  development  compsci  reactiveprogramming 
7 weeks ago by gordonbrander
jQuery is a Monad « Important Shock
...Basically, it treats `this` as an implied first parameter.
jquery  javascript  functional  development  compsci 
7 weeks ago by gordonbrander
Twitter / @littlecalculist: Wow. Promises are a polymo ...
Wow. Promises are a polymorphic equi-recursive abstract structural type encoding a monadic style of asynchronous programming. In JavaScript.
functional  development  compsci 
7 weeks ago by gordonbrander
Functional programming - HaskellWiki
A great summary of the concepts that make up functional languages.
haskell  functional  compsci  learn  development 
7 weeks ago by gordonbrander
Less Sugar/More Meat » Blog Archive » Introducing Reactive: Events
Semantically, Events can be thought of as lists of time/value pairs where the times are non-decreasing
functional  haskell  development  web  compsci  learn  reactiveprogramming 
7 weeks ago by gordonbrander
What is Reactive Programming? - Paul Stovell
A fun explanation in story form. Reactive programming could be implemented as event-driven observables or through an event loop.
functional  development  web  JavaScript  learn  compsci  reactiveprogramming  from iphone
8 weeks ago by gordonbrander
JavaScript’s two zeros
Ah geeze, in JavaScript, -0 is a thing. Though -0 === +0, it is not the same in bits.
The canonical solution for determining the sign of a zero is to divide one by it and then check whether the result is -Infinity or +Infinity
javascript  development  web  compsci 
9 weeks ago by gordonbrander
Expression problem - Wikipedia, the free encyclopedia
As quoted by Brendan Eich:
Denial that the expression problem exists is a common symptom of overzealous functional or object-oriented dogmatism.

http://twitter.com/pcwalton/status/176741289700769792
compsci  development  pattern  functional  oop  learn 
12 weeks ago by gordonbrander
Up and Down the Ladder of Abstraction
How can we design systems when we don't know what we're doing?

The most exciting engineering challenges lie on the boundary of theory and the unknown. Not so unknown that they're hopeless, but not enough theory to predict the results of our decisions. Systems at this boundary often rely on emergent behavior — high-level effects that arise indirectly from low-level interactions.

When designing at this boundary, the challenge lies not in constructing the system, but in understanding it. In the absence of theory, we must develop an intuition to guide our decisions. The design process is thus one of exploration and discovery.
compsci  visualization  design  development  math  learn 
february 2012 by gordonbrander
Understanding Computation
As of February 2012 I’m writing a book for O’Reilly Media. Its working title is “Understanding Computation”.

It’s a book about old, deep ideas from theoretical computer science, deconstructed and explained in an engaging, practical way for an audience of working programmers.

Yes, please.
development  compsci  book  learn 
february 2012 by gordonbrander
bl.ocks.org - 1893974 - Mitchell's Best-Candidate
Mitchell's best-candidate algorithm generates a new random sample by creating k candidate samples, and picking the best of k. Here the "best" sample is defined as the sample that is farthest away from previous samples.

An interesting way to generate noise.
javascript  visualization  art  math  compsci  development 
february 2012 by gordonbrander
Coursera
An online CompSci course started by a Stanford professor.
stanford  teaching  school  disruption  compsci  development 
february 2012 by gordonbrander

Copy this bookmark:



description:


tags: