background preloader

Great Works in Programming Languages

Great Works in Programming Languages
In September, 2004, I posted a query to the Types list asking people to name the five most important papers ever written in the area of programming languages. This page collects the responses I received. (A few are missing because I am still tracking down bibliographic information.) Many thanks to Frank Atanassow, David Benson, Nick Benton, Karl Crary, Olivier Danvy, Mariangiola Dezani, Dan Friedman, Alwyn Goodloe, Pieter Hartel, Michael Hicks, Robert Irwin, Luis Lamb, Rod Moten, Rishiyur Nikhil, Tobias Nipkow, Jens Palsberg, and John Reynolds for contributing. Additional suggestions are welcome. (Bibtex format preferred!) The greatest of the great (mentioned by many people): C. Peter J. Robin Milner. Gordon Plotkin. John C. Pretty great works (mentioned by multiple people): Luca Cardelli. Luis Damas and Robin Milner. Edsger W. Edsger W. William A. Robert Kowalski. Peter J. John McCarthy. Eugenio Moggi. Greg Morrisett, David Walker, Karl Crary, and Neal Glew. George C. Gordon D. Gordon D. Related:  general knowledgeNewBlogs

Advanced Programming Languages Introduction Research Syntax Semantics Static Semantics ( Type Theory ) Dynamic Semantics Semantic Related Developments Abstract Interpretation Program Transformation Decompilation Partial Evaluation Pragmatics ( Software Patterns , Generic Programming , Visual Programming , Persistence , Reflectiveness , Hyperprogramming) Semiotics Implementation Techniques: Garbage collection , Abstract Machines Some Conferences (not updated) People and Groups Teaching Introduction to Programming Languages Selecting First Programming Language Courses about Programming Languages Courses about Foundations of Programming Languages Courses about Language Processors Paradigms Comparing Programming Languages Functional Programming ( Haskell, ML) Logic Programming (Prolog) Object Oriented Programming (Java, C++, Smalltalk, ...) Cross Paradigms : Logic-Functional , Object Oriented-Functional , Object Oriented-Logic My List of Programming Languages Selected Bibliography Selected Papers Selected Books Acknowledgments Backus Naur Form (BNF) C.

How to set up a Private Continuous Deployment Server with Drone Let's start with a (personal) definition: Continuous Deployment (CD) is an automated process by which code commits are turned into a trusted executable in the hands of users. Massive, hardened Continuous Deployment systems have been quietly driving large software companies for years. Amazon's internal Brazil build system, for example, provides a full visualization of the delivery pipeline, and even includes the possibility of human testing as part of the process. But CD isn't just for the big boys. Having recently come to this conclusion for myself, I spent some time setting up a private CD system using a new project called Drone. Introduction to Drone Drone is an exciting new Continous Integration platform built on Docker. Like many CI platforms, the idea is that your Drone instance listens to commits on your application's repository and builds your app according to some drone-specific files that you've created. Here's what a build looks like from the Drone UI. 1. 2. $ curl localhost:80 #!

Hallmarks of a Great Developer - Test Guide If you ask me, I'll tell you a great developer Plans before coding A great developer takes the time to plan an approach before designing or coding. Always knows why A great developer always knows exactly why they wrote a particular line of code, and why they wrote it the way they did. Writes situation-appropriate code Any developer can write code. Deviates where and when necessary A great developer not only knows the canonical implementation but understands it is the canonical implementation. Knows when not to change code A great developer knows that changing code is sometimes worse than fixing it. Approaches debugging scientifically A great developer knows that debugging is a science not an art and approaches it as such. Walks through their code A great developer knows that they don't really know their code until they've stepped through it. Knows the language and platform intimately A great developer knows the programming language (and platform) in use inside and out. Groks the tools Documents

A quick tutorial on implementing and debugging malloc, free, calloc, and realloc Let’s write a malloc and see how it works with existing programs! This tutorial is going to assume that you know what pointers are, and that you know enough C to know that *ptr dereferences a pointer, ptr->foo means (*ptr).foo, that malloc is used to dynamically allocate space, and that you’re familiar with the concept of a linked list. If you decide to work through this tutorial without really knowing C, please let me know what parts could use more exposition. If you want to look at all of this code at once, it’s available here. The tests are from Andrew Roth, who had a github repo lying around with some tests for malloc. Preliminaries aside, malloc’s function signature is void *malloc(size_t size); It takes as input a number of bytes and returns a pointer to a block of memory of that size. There are a number of ways we can implement this. If we want to implement a really simple malloc, we can do something like But speaking of free, how does free work? void free(void *ptr); should work. $ .

Free Programming and Computer Science Books How to Set Up a Home Server with an Intel NUC Servers are the computers you never see, but use the most. The act of loading the average webpage on your laptop involves calls to hundreds of servers, like ad servers, web servers, and content delivery network servers. The "cloud" is a nebulous mass of servers that invisibly process and store information. The Internet itself is based on a global backbone of DNS servers. In early 2014 I put together a home server, and it's turned out to be one of the best things I've ever done for my tech-self. Here are some things I've done with my first machine: Serve personal websites Aggregate news feeds into a database Logged in remotely via SSH and VPN Run Docker containers Run a Continous Deployment tool Run a personal cloud with SFTP Run poorly implemented number crunchers overnight I'm having so much fun that I now need more servers if I'm to keep doing more cool computer stuff at home. 1. Intel NUC — (Pictured at top.) 2. Assembling a NUC is very simple. 2.1 Install WiFi Card 2.3 Install Memory

Pointer Basics This document introduces the basics of pointers as they work in several computer languages -- C, C++, Java, and Pascal. This document is the companion document for the Pointer Fun with Binky digital video, or it may be used by itself. This is document 106 in the Stanford CS Education Library. This and other free materials are available at Some documents that are related to this one include... Section 1 -- Pointer Rules One of the nice things about pointers is that the rules which govern how they work are pretty simple. 1) Pointers and Pointees A pointer stores a reference to something. The above drawing shows a pointer named x pointing to a pointee which is storing the value 42. Allocating a pointer and allocating a pointee for it to point to are two separate steps. 2) Dereferencing The dereference operation starts at the pointer and follows its arrow over to access its pointee. 3) Pointer Assignment Below are versions of this example in C, Java, C++, and Pascal.

Invent with Python Bookshelf - Free Python Programming Books 438 pages pages, May 2010 56 reviews, 3 star 0 2 star 0 1 star 0 366 pages pages, Jan 2012 436 pages pages, Apr 2013 448 pages, Feb 2015 21 reviews, 435 pages pages, Dec 2013 228 pages pages, Feb 2014 1600 pages pages, Jul 2013 455 pages pages, Jan 2010 494 pages pages 320 pages pages, Sep 2014 7 reviews, 164 pages pages 34 reviews, 342 pages pages 100 pages pages, Sep 2014 230 pages pages, Jul 2014 6 reviews, 216 pages pages, Aug 2014 432 pages pages, Feb 2014 3 reviews, 4 star 0 416 pages pages, Aug 2014 15 reviews, 100 pages pages, Aug 2014 3 reviews, 2 reviews, 240 pages pages, Jul 2014 300 pages pages, Aug 2012 265 pages pages, Jul 2014 100 pages pages, Jul 2014 124 pages pages, Jun 2014 12 reviews, 352 pages pages, Jul 2014 8 reviews, 238 pages pages, Jun 2014 134 pages pages, May 2014 502 pages pages, May 2014 16 reviews, 258 pages pages, May 2014 256 pages pages, Apr 2014 634 pages pages, Apr 2014 1 reviews, 368 pages pages 9 reviews, 480 pages pages, Jun 2014 3 reviews, 234 pages pages, Mar 2014 4 reviews, 208 pages pages