background preloader

Advanced Programming Languages

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.

Beginning Game Development: Part I – Introduction | Coding4Fun Articles Part I – Introduction Welcome to the first article of an introductory series on game programming using the Microsoft .NET Framework and managed DirectX 9.0. This series as aimed at beginning programmers who are interested in developing a game for their own use with the .NET Framework and DirectX. In this series, we are going to build a simple game to illustrate the various components of a commercial game. Tools: Before we start writing our first game we need to talk about the tools we will use. The most important tool for any developer is the Integrated Development Environment (IDE). Visual Studio 2005 (also known by the codename “Whidbey") is the third version of the standard Microsoft IDE for .NET Framework-based applications. The second important tool we need to create a great looking game is a graphics Application Programming Interface (API). At some point in your game development experience you are going to have to create or modify graphics. What makes a successful game? Our Game idea:

50 Places You Can Learn to Code (for Free) Online If you’re curious about learning a programming language then you’re in luck: there’s no shortage of resources for learning how to code online. University-level courses, tutorials, cheat sheets, and coding communities all offer excellent ways to pick up a new language, and maybe even a new job, too. Read on, and you’ll discover 50 great places to learn how to code, for free, online. University Many big names in education including MIT and Stanford offer programming courses, absolutely free. General If you’re just dipping your toes into programming, or you want to find a variety of resources, these sites offer several different ways to learn how to code. Community Learn how to code on these sites with a heavy community influence ready to offer help to newbs. Language Specific Drill down to the language you really want on these sites, offering expansive learning in one or two specific languages.

Six ways to write more comprehensible code I learned to write, clear, maintainable code the hard way. For the last twelve years, I've made my living writing computer games and selling them over the Net using the marketing technique that was once charmingly known as shareware. What this means is that I start with a blank screen, start coding, and, a few tens of thousands of lines of code later, I have something to sell. This means that, if I make a stinky mess, I'm doing it in my own nest. So I have been well rewarded by learning about good, sane programming techniques. But there are many who, like me, stumbled into programming in an unexpected or unusual way and never had anyone drill this stuff into them. The example case For illustration purposes, our example program throughout this article is a hypothetical computer game called Kill Bad Aliens. Figure 1. The game will take place in periods of time called Waves. Killing an alien gives you some points. When a bomb hits you, your ship blows up and another appears. Back to top Oh?

Everything you need to know about pointers in C Style used in this document This is regular text. This is a , some code, and some sample output. This is a line of code. This is output you'd see on your screen. Definition of a pointer A pointer is a memory address. (Mmm, short paragraphs.) Starting off Say you declare a variable named . int foo; This variable occupies some memory. Now let's declare another variable. int *foo_ptr = &foo; is declared as a pointer to int. As I said, occupies some memory. Think of every variable as a box. is a box that is sizeof(int) bytes in size. This is true of all variables, regardless of type. The point of that is that the pointer is not the variable! The pointer has a type, too, by the way. multiple indirection . Interlude: Declaration syntax The obvious way to declare two pointer variables in a single declaration is: int* ptr_a, ptr_b; Given this, what is the type of ? *bzzt* Wrong! The type of is int. C's declaration syntax ignores the pointer asterisks when carrying a type over to multiple declarations. lvalue .

code school C++ Style Languages: C++, Objective-C, Java, C# - Hyperpolyglot a side-by-side reference sheet grammar and invocation | variables and expressions | arithmetic and logic | strings | regexes | dates and time | fixed-length arrays | resizable arrays | tuples | dictionaries | functions | execution control | exceptions | concurrency | file handles | files | file formats | directories | processes and environment | libraries and namespaces | user-defined types | generic types | objects | polymorphism | reflection | net and web | unit tests | debugging and profiling General version used The compiler version used for this sheet. show version How to get the compiler version. implicit prologue Code which examples in the sheet assume to have already been executed. hello world How to write, compile, and run a "Hello, World!" file suffixes For source files, header files, and compiled object files. The gcc compiler will treat a file with any of the following suffixes as C++ source: .cc .cp .cxx .cpp .CPP .c++ .C block delimiters How blocks are delimited. statement terminator c++

C Craft - Chapter 1. Introduction C is the desert island language. This is my favourite statement from a talk Rob Pike gave in 2001. Despite its age, despite many flaws, C is still the de facto standard, the lingua franca. Why? As with other older languages, inertia is partly to blame, but this cannot be the only reason. C must possess a near-perfect balance of vital language features. Or as Linus Torvalds puts it, “C is the only sane choice”. One of C’s designers, Dennis Ritchie, gives a modest account of the evolution of C. The canonical reference, Kernighan and Ritchie’s "The C Programming Language" is slim, yet contains much more than the language specification. Not only is C easy for humans to understand, but machines too can pick up the language quickly. I can roughly envision the assembly generated by a C statement, so I can make educated guesses about time and space efficiency. Brevity is the soul of wit. In my Eiffel days, I was encouraged to write "integer", not "int", "character", not "char", and so on.

January 2006 One more set of features that we need to learn, and then we get to go play. This is an important lesson -- we have reached the point where you can start doing some interesting stuff. So, just to get it under your fingers, there will be more than one assignment this time. Arrays In any sort of non-trivial application you are going to need to track collections of things. This is where the notion of collections comes in. The first, the simplest, and BY FAR the most common sort of collection is called an array. Suppose we wanted to declare an array of 10 integers. int[] myArray; Now, in Java, an array is an object in its own right. myArray = new int[10]; The number of elements in the array is called its dimension. Now, be very careful here. myArray[0] = 0; myArray[1] = 1; and so forth. We also have some shortcuts that we can use when we go to declare these things. int[] k = new int[3]; Or, we could declare, dimension and init the array all at one throw.... float[] z = {1.414, 3.1415, 1.6815}; i++;

Some lesser-known truths about programming | Dot Mac My experience as a programmer has taught me a few things about writing software. Here are some things that people might find surprising about writing code: Averaging over the lifetime of the project, a programmer spends about 10-20% of his time writing code, and most programmers write about 10-12 lines of code per day that goes into the final product, regardless of their skill level. Good programmers spend much of the other 90% thinking, researching, and experimenting to find the best design. Bad programmers spend much of that 90% debugging code by randomly making changes and seeing if they work.A good programmer is ten times more productive than an average programmer. A great programmer is 20-100 times more productive than the average.

10 places where anyone can learn to code Teens, tweens and kids are often referred to as “digital natives.” Having grown up with the Internet, smartphones and tablets, they’re often extraordinarily adept at interacting with digital technology. But Mitch Resnick, who spoke at TEDxBeaconStreet, is skeptical of this descriptor. Mitch Resnick: Let's teach kids to code Fluency, Resnick proposes in this TED Talk, comes not through interacting with new technologies, but through creating them. The point isn’t to create a generation of programmers, Resnick argues. In his talk, Resnick describes Scratch, the programming software that he and a research group at MIT Media Lab developed to allow people to easily create and share their own interactive games and animations. At Codecademy, you can take lessons on writing simple commands in JavaScript, HTML and CSS, Python and Ruby. While we’re at it: bonus!

If you code HTML, Zen Coding will change your life If you write HTML for a living, and you don't know Zen Coding yet, you are missing out big time. This is basically the coolest thing I've seen all week. I have been using it for a few days now; at first it seemed kind of gimmicky and I wasn't sure I could grasp the syntax, but today I really got to explore it, and woah is it awesome. Okay, I'll stop tripping over myself with excitement over here and try to tell you what this thing does, in a nutshell: It expands abbreviations into complete HTML structures (divs, tables, cells, links, lists), and does it in the most freaking intelligent way I have seen in a long time. I'm serious! For instance, that arcane-looking string of text in the screenshot expands with a single keystroke into this: This thing leaves any other tag-completion method I have ever seen for HTML in the dust. There are existing implementations for multiple editors, such as Komodo Edit (which is the one I'm using). There are easy ways to wrap existing lines with tags.

Related: