background preloader

Programming

Facebook Twitter

‪Lecture 45: What makes a good programmer? - Richard Buckland UNSW‬‏ ‪Lecture 24: eXtreme Programming - Richard Buckland‬‏ The Invention of C++ - Nice bit of net lore. 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. This is not an exaggeration – studies since the 1960’s have consistently shown this. Small_talk.gif (GIF Image, 742x914 pixels) - Scaled (70%) Sometimes, The Better You Program, The Worse You Communicate. 'peSHIr' on Fri, 05 Jun 2009 10:39:57 GMT, sez: So *this* is why I communicate so horribly! ;-) 'Mike Woodhouse' on Fri, 05 Jun 2009 11:34:33 GMT, sez: My Wife [giving some typically incomplete instructions]: You know what I mean Me: I don't. [a thermo-nuclear Row ensues] My wife doesn't program. 'DylanW' on Fri, 05 Jun 2009 11:56:36 GMT, sez: I have never before felt like my chosen career was actually doing me harm.

(Kidding. 'Doekman' on Fri, 05 Jun 2009 12:06:01 GMT, sez: So what you are saying is actually that you have less than average programming skills? 'wpfleischmann' on Fri, 05 Jun 2009 12:56:12 GMT, sez: re: (1) Human communication is a lossy medium, so it requires significant redundancy. 'Stephan L.' on Fri, 05 Jun 2009 13:19:35 GMT, sez: Like Doekman says, you can read this the other way around: here are four reasons why the better you communicate with typical human beings, the worse you are as a programmer :-) 'Kyle Lanser' on Fri, 05 Jun 2009 13:55:44 GMT, sez: I Disagree. False; 1. Has_many :through - Circle of death. The Brainfuck Programming Language. Brainfuck is the ungodly creation of Urban Müller, whose goal was apparently to create a Turing-complete language for which he could write the smallest compiler ever, for the Amiga OS 2.0. His compiler was 240 bytes in size. (Though he improved upon this later -- he informed me at one point that he had managed to bring it under 200 bytes.)

I originally started playing around with Brainfuck because of my own interest in writing very small programs for x86 Linux. I also used it as a vehicle for writing a program that created ELF files. The Language A Brainfuck program has an implicit byte pointer, called "the pointer", which is free to move around within an array of 30000 bytes, initially all set to zero. The Brainfuck programming language consists of eight commands, each of which is represented as a single character. The semantics of the Brainfuck commands can also be succinctly expressed in terms of C, as follows (assuming that p has been previously defined as a char*): Resources.

Data Structures and Algorithms by John Morris. Dictionary of Algorithms and Data Structures. Bill the Lizard: Books Programmers Don't Really Read. Mark Twain once said that a classic novel is one that many people want to have read, but few want to take the time to actually read. The same could be said of "classic" programming books. Periodically over on Stack Overflow (and in many other programming forums) the question comes up about what books are good for programmers to read.

The question has been asked and answered several times, in several different ways. The same group of books always seems to rise to the top, so it's worth it to take a look at these books to see what everyone is talking about. Books Most Programmers Have Actually Read I've read all of these books myself, so I have no difficulty believing that many moderately competent programmers have read them as well. Among the most commonly recommended programming books there is another group that deserves special consideration.

Books Programmers Claim to Have Read. Ruby Programming Language. -[ The x2o Dimension ]- :: Sofware List for a Better Computing :: September :: 2005. My Favorite Smallware. About Audacity. Video. Structure and Interpretation of Computer Programs. 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. How to Design Programs.

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. When I'm chasing down a bug at 3 a.m., staring at a nightmare cloud of spaghetti code, and I say, "Dear God, what idiot child of married cousins wrote this garbage? ", the answer to that question is "Me. " So I have been well rewarded by learning about good, sane programming techniques.

Some of these practices are described in this article. 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 Figure 1. Killing an alien gives you some points. Oh? Resources for Programming Language Research. 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. Code school. Lesson: Object-Oriented Programming Concepts (The Java™ Tutorials > Learning the Java Language) If you've never used an object-oriented programming language before, you'll need to learn a few basic concepts before you can begin writing any code. This lesson will introduce you to objects, classes, inheritance, interfaces, and packages. Each discussion focuses on how these concepts relate to the real world, while simultaneously providing an introduction to the syntax of the Java programming language.

What Is an Object? An object is a software bundle of related state and behavior. What Is a Class? A class is a blueprint or prototype from which objects are created. What Is Inheritance? Inheritance provides a powerful and natural mechanism for organizing and structuring your software. What Is an Interface? An interface is a contract between a class and the outside world. What Is a Package?

A package is a namespace for organizing classes and interfaces in a logical manner. Questions and Exercises: Object-Oriented Programming Concepts. 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. The goal of this series is to have fun creating a game and learn game development and DirectX along the way. Game programming and DirectX have their own terms and definitions that can be difficult to understand, but after awhile, you’ll crack the code and be able to explore a new world of possibilities. I will keep things as straightforward as possible and decode terms as they appear. Another part of the learning curve comes from the math you’ll need to deal with DirectX. I am going to point out some resources along the way that will help you brush up on, or learn, the math skills you’ll need to keep going in DirectX.

Tools: Finally, you need to know where to go to get help. Our Game idea: End Sub. Java Games Programming - CSC207. GameTutorials - Programming with a personality, from start to finish. Create a sick game with Processing. 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. Video. The C Library Reference Guide.