Questions tagged [history]
For questions relating to past design decisions in programming language design.
11
questions
14
votes
1
answer
2k
views
What language was the first to treat null checks as smart casts to non-nullable types?
As far as I know, for many decades, in mainstream programming languages, there were only two options to handle null-like optionality:
Pointer or reference types are always nullable (the famous "...
8
votes
2
answers
717
views
The history of "finally" in exception handling?
According to Wikipedia:
The cleanup behavior now generally called "finally" was introduced in NIL (New Implementation of LISP) in the mid- to late-1970s as UNWIND-PROTECT. This was then ...
4
votes
1
answer
213
views
Earliest implementation of pattern matching as a programming language feature
As far as I can tell pattern matching was first proposed as a language feature by Burstall (1969). However, it was a proposal for a feature in the language ISWIM, which itself never had a completed ...
8
votes
4
answers
2k
views
Why are mixed declarations more challenging to implement than forcing all declarations to be at the top of a scope?
C89 had a requirement that all declarations must appear at the top of the scope before any statements:
...
42
votes
6
answers
12k
views
Why do programming languages use the asterisk * for multiplication?
Having had very little math(s) education I'm trying to bring myself up to speed for university, which currently involves teaching myself the times tables, where X ...
29
votes
1
answer
4k
views
Why did JavaScript choose to include a void operator?
In JavaScript, there is an operator void that, given an expression, evaluates it but then ignores the result and evaluates to ...
19
votes
2
answers
2k
views
Why do they use bind in Haskell over Kleisli composition?
In monads, Kleisli composition has the type
infix oK: ('b -> 'c monad) -> ('a -> 'b monad) -> ('a -> 'c monad)
and it satisfies the nice algebraic ...
12
votes
0
answers
240
views
Why were OS/360 PL/I procedure calls so expensive?
In Guy Steele’s famous paper Debunking the “expensive procedure call” myth or, procedure call implementations considered harmful or, LAMBDA: The Ultimate GOTO, he describes the poor performance of ...
17
votes
3
answers
3k
views
Why does MATLAB have left division/solve?
In MATLAB (and Octave), the \ (or mldivide) and \. operators are provided with the exact ...
11
votes
2
answers
341
views
Why did Objective-C remove `NSZone`?
NSZone is a type representing a memory allocation. NSObject implements the allocWithZone: ...
6
votes
2
answers
474
views
Why does C++ require private methods to be declared with public ones?
C++ and Objective-C both require forward declaration of the methods and fields on a class. Objective-C lets you hide the existence of internal/private methods & fields altogether:
...