3 ms·
See also http://danluu.com/butler-lampson-1999/ http://danluu.com/butler-lampson-1999/ Here are some more that come to mind: Sandboxing+permissions+isolation.
by jamii 10y ago
See also http://danluu.com/butler-lampson-1999/ http://danluu.com/butler-lampson-1999/
Here are some more that come to mind:
Sandboxing+permissions+isolation. Being able to easily install, safely use and cleanly uninstall untrusted software totally changed the way most people consume software, on both the web and mobile. (Virtualization is neither sufficient (because I do want to give some apps access to some hardware) nor necessary (see NaCl))
Types. The static-typing wars may still be raging in other domains, but the vast majority [1] of our infrastructure is written in statically-typed languages, and many popular dynamic languages are growing gradual-typing tumours.
LLVM. Writing a compiled language used to be a major effort. Codegen quality was a huge incumbent advantage. Five years ago C, C++ were pretty much it for compiled languages, with some heroic efforts like OCaml and GHC on the sidelines. Nowadays pretty much all the language and database research that I see involves LLVM.
Packaging. Both OS and library package managers have come a long way since 1950, and to a first approximation 100% of programmers use one or the other.
[1] http://danluu.com/boring-languages/ http://danluu.com/boring-languages/
- nickpsecurity 10y agoTrying to take your categories and find where they started. Re isolation. From high-assurance security, I believe the first, secure kernel that was general-purpose was this one: http://csrc.nist.gov/publications/history/schi75.pdf http://csrc.nist.gov/publications/history/schi75.pdf Types. Guess that would be ALGOL. LLVM. BCPL seems to have gotten the idea started with a two-pass compiler that went from complicated stuff to byte-code (O-code) then to assembly. That got ported to PDP-11 in form of B & then C. Wirth further developed it & popularized it with P-code in Pascal/P. Helped non-compiler experts port it to 70 architecture in 2 years whereas compiler experts could target something easy. Did it at hardware level with Modula-2 & M-code assembly. So, either Richards of BCPL or Wirth of P-code get credit for such a concept. Maybe both. re packaging. I got nothing. Anyone know what the first package managers were that had something inspiring modern functionality? Those ahead of their time.
- dom0 10y agoI believe the first package manager was "pkg" in System V (early 80s). The modern notion of package-manager-with-builtin-download-and-uprades only came in the mid-to-late 90s, when internet bandwidth grew enough to make that feasible. The first one of these might've been FreeBSD ports.
- nickpsecurity 10y agoAppreciate feedback on pkg. Far as other thing, I was hesitant to say that given mainframes or minicomputers connected over leased lines might have had something built-in or from 3rd parties. Some tool to easily package and push stuff from HQ to branch offices, warehouses, stores, etc. Just speculating. Strange if nobody automated the process.
- jslabovitz 10y agoNot so strange. It was way less common to push out software the way we do now. Software releases were generally pretty major events. Leased lines were often slow and very expensive. Even into the mid-eighties getting a software distribution or update via magnetic tape was the most common method. Even for software from user groups and other non-commercial sources were distributed on tape. (Source: I did Unix and Tandem programming the early 80s.) So if we look at methods of tape distribution, even the very first edition of Unix in ~1971 had tap (an early ancestor of tar) [1] which saved & restored filenames, mtimes, modes, and owner info. You could argue that a tp/tar archive is a primitive packaging system. [1] http://man.cat-v.org/unix-1st/1/tap http://man.cat-v.org/unix-1st/1/tap The other instance I can think of is the shar format [2] that was used to distribute software over Usenet from the early 1980s. Shar was basically a fancy text file that you piped through a shell (yeah, I know). Because binary compatibility was rare, most shar files resulted in a directory of source code, which you'd then compile -- basically, like a 'modern' tarball. [2] https://en.wikipedia.org/wiki/Shar https://en.wikipedia.org/wiki/Shar
- nickpsecurity 10y ago
- dom0 10y agoFilesystems, while they always had rather strange semantics, derived from ease of implementation, not ease of use, also made a leap with the introduction of journaling / logging the early 90s. IBM JFS was the first one here.
- tlb 10y agoTypes are probably subsumed in his definition of programming languages. 1955 FORTRAN had static types, at least distinguishing INT and REAL. I think CHAR came later. 1958 LISP had dynamic types (list, symbol, int).