Project delays: why good software estimates are impossible 10 years ago
I like this Quora answer on the subject: https://www.quora.com/Why-are-software-development-task-esti...
HN user
[ my public key: https://keybase.io/lucindo; my proof: https://keybase.io/lucindo/sigs/dtStmvC8XJrzdbV_YeOGkLu4t9PEv0Vu7aMm0OWinQo ]
I like this Quora answer on the subject: https://www.quora.com/Why-are-software-development-task-esti...
+1
just for fun:
function copylist(lst) {
return mapcar(function (x) { return x; }, lst);
}
function last(lst) {
if (null == lst) {
return null;
} else if (null == cdr(lst)) {
return lst;
} else {
return last(cdr(lst));
}
}
ugly append: function append() {
var lst = null;
var i = 0;
for (; i < arguments.length && null == lst; i++) {
if (null != arguments[i]) {
lst = copylist(arguments[i]);
}
}
for (; i < arguments.length; i++) {
if (null != arguments[i]) {
setcdr(last(lst), copylist(arguments[i]));
}
}
return lst;
}
the fun: function qsort(lst) {
if (null == lst) {
return null;
} else {
var pivot = car(lst);
var nlst = cdr(lst);
return append(qsort(filter(function (x) { return x < pivot; }, nlst)),
list(pivot),
qsort(filter(function (x) { return x >= pivot; }, nlst)));
}
}
function powerset(lst) {
if (null == lst) {
return null;
} else {
var first = car(lst);
var rest = powerset(cdr(lst));
return append(list(list(first)),
mapcar(function (x) { return append(list(first), x); }, rest),
rest);
}
} function cons(x, y) {
return function(m) {
return m(x, y);
}
}
function car(x) {
return x(function(a, d) { return a; });
}
function cdr(x) {
return x(function(a, d) { return d; });
}
or function cons(x, y) {
return function (m) {
return m(x, y, function (n) { x = n }, function (n) { y = n });
}
}
function car(x) {
return x(function (a, d, sa, sd) { return a; });
}
function cdr(x) {
return x(function (a, d, sa, sd) { return d; });
}
function setcar(x, y) {
return x(function (a, d, sa, sd) { sa(y); });
}
function setcdr(x, y) {
return x(function (a, d, sa, sd) { sd(y); });
}
function list() {
arguments.shift = Array.prototype.shift;
if (arguments.length == 0) {
return null;
} else {
return cons(arguments.shift(), list.apply(this, arguments));
}
}
function mapcar(fun, lst) {
if (null == lst) {
return null;
} else {
return cons(fun(car(lst)), mapcar(fun, cdr(lst)));
}
}
function reduce(fun, init, lst) {
if (null == lst) {
return init;
} else {
return fun(car(lst), reduce(fun, init, cdr(lst)));
}
}
function filter(fun, lst) {
if (null == lst) {
return null;
} else {
if (fun(car(lst))) {
return cons(car(lst), filter(fun, cdr(lst)));
} else {
return filter(fun, cdr(lst));
}
}
}Q: What would you do differently if you could do it all over again?
Reddit: Stick with Lisp. (...)
You can tell us your results with KDD data sets: http://kdd.ics.uci.edu/