background preloader

7 lines of code, 3 minutes: Implement a programming language

7 lines of code, 3 minutes: Implement a programming language
A small (yet Turing-equivalent) language The easiest programming language to implement is a minimalist, higher-order functional programming language known as the lambda calculus. The lambda calculus actually lives at the core of all the major functional languages--Haskell, Scheme and ML--but it also lives inside JavaScript, Python and Ruby. It's even hiding inside Java, if you know where to find it. A brief history Alonzo Church developed the lambda calculus in 1929. Back then, it wasn't called a programming language because there were no computers; there wasn't anything to "program." It was really just a mathematical notation for reasoning about functions. Fortunately, Alonzo Church had a Ph.D. student named Alan Turing. Alan Turing defined the Turing machine, which became the first accepted definition of a general-purpose computer. What makes this remarkable is that there are only three kinds of expressions in the lambda calculus: variable references, anonymous functions and function calls. Related:  lars.b

300 Free eBooks: Download Great Classics for Free Download 800 free eBooks to your Kindle, iPad/iPhone, computer, smart phone or ereader. Collection includes great works of fiction, non-fiction and poetry, including works by Asimov, Jane Austen, Philip K. Dick, F. Scott Fitzgerald, Neil Gaiman, Tolstoy, Dostoevsky, Shakespeare, Ernest Hemingway, Virginia Woolf & James Joyce. Also please see our collection 1,000 Free Audio Books: Download Great Books for Free, where you can download more great books to your computer or mp3 player. Learn how to load ebook (.mobi) files to your Kindle with this video Religious Texts Assorted Texts This list of Free eBooks has received mentions in the The Daily Beast, Computer World, Gizmodo and Lifehacker.

46 Simple Python Exercises This is version 0.45 of a collection of simple Python exercises constructed (but in many cases only found and collected) by Torbjörn Lager (torbjorn.lager@ling.gu.se). Most of them involve characters, words and phrases, rather than numbers, and are therefore suitable for students interested in language rather than math. Very simple exercises Higher order functions and list comprehensions Simple exercises including I/O Somewhat harder exercises A sentence splitter is a program capable of splitting a text into sentences.

Why talent is overrated - Oct. 21, 2008 (Fortune Magazine) -- It is mid-1978, and we are inside the giant Procter & Gamble headquarters in Cincinnati, looking into a cubicle shared by a pair of 22-year-old men, fresh out of college. Their assignment is to sell Duncan Hines brownie mix, but they spend a lot of their time just rewriting memos. They are clearly smart - one has just graduated from Harvard, the other from Dartmouth - but that doesn't distinguish them from a slew of other new hires at P&G. What does distinguish them from many of the young go-getters the company takes on each year is that neither man is particularly filled with ambition. Neither has any kind of career plan. Every afternoon they play waste-bin basketball with wadded-up memos. These two young men are of interest to us now for only one reason: They are Jeffrey Immelt and Steven Ballmer, who before age 50 would become CEOs of two of the world's most valuable corporations, General Electric (GE, Fortune 500) and Microsoft (MSFT, Fortune 500).

Five mini programming projects for the Python beginner After Shelly wrote this post, Webucator, a company that provides Python training, volunteered to create solutions for these projects. They've made a series of videos that'll help you out if you need it. Learning a new programming language is both the most exciting and the most humbling experience. For me, that language has recently been Python, which I’ve been learning over these last few months. With that in mind, here are five mini programming projects to get you started on learning Python. 1. The Goal: Like the title suggests, this project involves writing a program that simulates rolling dice. Concepts to keep in mind: RandomIntegerPrintWhile Loops A good project for beginners, this project will help establish a solid foundation for basic concepts. 2. The Goal: Similar to the first project, this project also uses the random module in Python. 3. The Goal: Inspired by Summer Son’s Mad Libs project with Javascript. 4. The Goal: Remember Adventure? 5.

Logorrhea (psychology) In psychology, logorrhea or logorrhoea (from Ancient Greek λόγος logos and ῥέω rheo "to flow") is a communication disorder, sometimes classified as a mental illness, resulting in excessive wordiness and sometimes incoherent talkativeness. Logorrhea is present in a variety of psychiatric and neurological disorders[1] including aphasia,[2] localized cortical lesions in the thalamus,[3][4] mania,[citation needed] or most typically in catatonic schizophrenia.[citation needed] Examples of logorrhea might include talking or mumbling monotonously, either to others, or more likely to oneself. Logorrhea should not be confused with pressure of speech, which is characterized by the "flighty" alternation from topic to topic by tenuous links such as rhyming or punning.[5] Logorrhea is a symptom of an underlying illness, and should be treated by a medical professional. Jump up ^ Arseni, C.; Dănăilă, L. (1977).

Design Patterns In software engineering, a design pattern is a general repeatable solution to a commonly occurring problem in software design. A design pattern isn't a finished design that can be transformed directly into code. It is a description or template for how to solve a problem that can be used in many different situations. Uses of Design Patterns Design patterns can speed up the development process by providing tested, proven development paradigms. Often, people only understand how to apply certain software design techniques to certain problems. In addition, patterns allow developers to communicate using well-known, well understood names for software interactions. Creational design patterns These design patterns are all about class instantiation. Structural design patterns These design patterns are all about Class and Object composition. Behavioral design patterns These design patterns are all about Class's objects communication. Criticism Targets the wrong problem Lacks formal foundations

Living and Working Abroad Para leér esta entrada en Español píque aquí *************************************************************************************************************** This is not some theoretical piece about how you might do if you decide to live and work abroad. I’ve been ‘doing it’ for more than 30 years now, it was in 1980 that I left my home country, Germany, and in all humility, I am an expert. I spent seven month in India, lived three years in Greece, another three years in England, and I have been living in Mexico for the past 20 odd years.The years in between I roamed the world. I have not been with any multinational company that sent me to those places. When I started off I didn’t have a profession. I started to develop myself at the beginning of the nineties as a language teacher, since by then I spoke several languages. Let me tell you right from the start, it wasn’t easy. But looking back over the past 30 odd years, I wouldn’t change my life for anything else. Find out for yourself.

A Beginner's Guide to Design Patterns Ever wondered what design patterns are? In this article, I'll explain why design patterns are important, and will provide some examples, in PHP, of when and why they should be used. Design patterns are optimized, reusable solutions to the programming problems that we encounter every day. There are three basic kinds of design patterns: structural creationalbehavioral Structural patterns generally deal with relationships between entities, making it easier for these entities to work together. Creational patterns provide instantiation mechanisms, making it easier to create objects in a way that suits the situation. Behavioral patterns are used in communications between entities and make it easier and more flexible for these entities to communicate. Design patterns are, by principle, well-thought out solutions to programming problems. Let's imagine that you've been given the responsibility of creating a way to merge two classes which do two different things based on the situation.

A map of the Tricki | Tricki This is an attempt to give a quick guide to the top few levels of the Tricki. It may cease to be feasible when the Tricki gets bigger, but we might perhaps be able to automate additions to it. Clicking on arrows just to the right of the name of an article reveals its subarticles. If you want to hide the subarticles again, then you should click to the right of them rather than clicking on the name of one of the subarticles themselves, since otherwise you will follow a link to that subarticle. What kind of problem am I trying to solve? General problem-solving tips Front pages for different areas of mathematics How to use mathematical concepts and statements

Design Patterns | Object Oriented Design Welcome to Cinder Hi. My name is Robert Hodgin, and I am the author of this tutorial (with helpful input from Andrew Bell, Mike Creighton, and Noah King). I want to help others get started with Cinder because learning a new framework can be intimidating. Things are going to be pretty informal. Think of this as a quick-start guide. Instead of exhaustively covering a topic before moving on to the next, I am going to meander around a bit and sample some of Cinder's many features along the way. In Section One, I will show you how to go from a brand new Cinder project to a particle engine with both local and global forces, and then use it to achieve some artistic effects. In Section Two, I will tweak the particle engine from Section One and use it as a basis for a flocking simulation. Below you will find some brief chapter descriptions. Chapter 1: Getting Started In the first chapter, we will set up a new project and learn how to load and display images. Okay, enough with the introduction.

Related: