Questions tagged [history]

For questions relating to past design decisions in programming language design.

Filter by
Sorted by
Tagged with
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 "...
Eldritch Conundrum's user avatar
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 ...
Stumpy Joe Pete's user avatar
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 ...
Daphne Preston-Kendal's user avatar
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: ...
user16217248's user avatar
  • 7,245
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 ...
Hashim Aziz's user avatar
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 ...
mousetail's user avatar
  • 6,696
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 ...
Gergely's user avatar
  • 303
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 ...
Alexis King's user avatar
  • 7,779
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 ...
Adám's user avatar
  • 3,018
11 votes
2 answers
341 views

Why did Objective-C remove `NSZone`?

NSZone is a type representing a memory allocation. NSObject implements the allocWithZone: ...
Bbrk24's user avatar
  • 8,553
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: ...
Bbrk24's user avatar
  • 8,553