Random Ramblings
2010-12-11
Introduction
This essay contains various random thoughts that I have had. I note down my thoughts here, and if I accumulate enough ideas around them, I may write an essay about them, implement them in a piece of software, or something of the sort.
Unification
Functions are Classes
Functions are actually classes. Calling a function is essentially the same as creating an instance of the class of the function. This instance would hold the parameters that were passed to the function, and the function's local variables. The code and any variables that are shared by multiple invocations need only be present once (just like static properties in Java).
Programs are Functions
Programs are just a special case of functions. Both are passed arguments and return values. Usually, the return values from programs are discarded, and the program interacts through side effects. Functions can be used in the same way.
The distinction of programs and functions is undesirable, as it makes the system less flexible. A function cannot be called from the user interface, except through a program wrapped around it. Programs can be invoked from inside programs only with clumsy function calls that don't fit the rest of the model well. Program invocation is a very expensive operation compared to calling a function.
If programs and functions were one and the same, program invocation would become as quick as a function call. This would encourage modularity, which would, in turn, add flexibility and facilitate code reuse. This may result in faster, smaller, and more flexible system environments.
Also, substituting functions for programs might lead to a more functional style in software, which would further increase flexibility and may have other benefits.
Types are Values
The description of a (composed) type can be seen as a value, e.g. an instance of a class Type. Such an instance could include a reference to any supertypes, plus some fields indicating which properties and methods this specific type adds to the mix.
Slashdot Posts
These are links to posts I made on Slashdot that I consider particularly valuable. The ideas and opinions expressed in them might someday make it into essays...and some already have.
- Slowing Down Dictionary Attacks on SSH
- Independent Music Recommendation Services
- Why People Don't Know About DRM
- Microsoft and POSIX (Non-)Compliance
- The Right to Read, In Real Life
- My Gripe with Patents
- The Problem with American Politics, Corporate Sponsorship, and the Press
- Bush Causes Hurricanes
- Unsafe Software Not Just a Problem on Windows
- Why More People Aren't Using Linux
- Windows Not Productive/Usable
- Open Source Answers to WinFS
- QNX, Microkernels, and Why Darwin/x86 is Slow
- XMPP Worse Than IRC, IMO
- Alternative Root Servers and Dropping TLDs
- Universal 3D Acceleration and Standards
- The EU Software Patent Directive
- Guns and Patents
- What Good Do Software Patents Bring?
- Mobile Phones and Web Browsing
- How to Prevent Microsoft from Taking Over the Web
- How Microsoft Threatens the Web
- Why Publishing Vulnerabilities is a Good Thing
- Why Embedding Fonts in Web Pages Doesn't Work
- CPU Efficiency Comparison
- Always be Wary of Hyped Products
- Power Sources are Improving
- Scalability is Not a Language Feature
- Why IE Market Share Matters
- Firefox is Not Fast
- Authenticating Mail Senders
- Lightweight Linux
- What is Insecure about Windows
- Why Java Applets Don't Work on Windows
- Solution to Annoying Mobile Phones/Users
- A Widget-Based Approach to Remote GUIs
- Research Without Patents
- Trying harder doesn't make software more secure, but it doesn't need to
- CLI Programs I Use(d to Use)
- The OpenBSD Installer is One Of the Best
- Got r00t?
- Make Hardware, Let the Community Write Software
- The Purpose of DRM
- Why Companies Add DRM to their Systems
- Standardizing Driver Interfaces
- Paravirtualization as a Universal Driver Interface
- Why Are We NOT Making Ethanol?
- Running as an Unprivileged User is No Panacea
- PGP Made Easy
Comments made by others: