Archive for January, 2011|Monthly archive page

Netcraft confirms: Java is dying.

Read this: http://www.forrester.com/rb/Research/future_of_java/q/id/57381/t/2. And this: (german) http://derstandard.at/1295570851185/Marktforscher-Java-Community-Prozess-steht-vor-dem-Aus

I cannot disagree. With Oracle in total control over the Java programming language and the JCP finally revealed as the hogwash it has always been, the future of Java as anything different than a replacement for Cobol is very uncertain.

Why not throw Oracle Java out the OpenSource stack completely? Let’s build upon Google’s work, use the Dalvik virtual machine and – starting from the current Harmony implementations – diverge from the Java language an bring it forwards to the 21 Century. There is so much innovation going on in the Java worlds that does and did not stem from either Sun or Oracle. Think about the Spring Framework, about Play or Wicket.

I’d love to see the Open Source community start a true JCP, taking over control of the language. And since not even Gosling is happy the way Oracle handles the situation, it might be fairly easy to get prominence on board.

Just thinking…

Advertisements

Fisher-Yates shuffle in python

For a pet project I needed a array randomizer. I thought up an algorithm that I thought should work. It did, but funnily enough; I ended up re-discovering the Fisher-Yates shuffle. Here’s an implementation in Python.

import random
import math

def array_randomizer(arr):
	random.seed()
	index = len(arr) - 1
#	print "index is ", index
	while index > 0:
		rand = math.floor(random.random() * (index + 1))
		picked_element = int(rand)
		arr[index], arr[picked_element] = arr[picked_element], arr[index]
		index -= 1
	return arr
		
def analyze_array(template_arr, arr):
	ret = []
	for element in template_arr:
		v = arr.index(element)
		ret.append(v)
	return ret
		
def summarize(sum_array, val_array):
	for index in range(len(val_array)):
		sum_array[index] = val_array[index] + sum_array[index]

if __name__ == '__main__':
	a = ['a', 'b', 'c', 'd', 'e', 'f' ]
	sum_array = [0.0] * 6 # initialize array with zeros
	runs = 100000
	
 	for i in range(0,runs):	
		res_array = array_randomizer(a[:]) # copy array
#		print "random: ", res_array
		val_array = analyze_array(a, res_array)
		summarize(sum_array, val_array)

	print map( lambda x: x / runs, sum_array)