Update on the Natural Programming Project
Google engEDU
1 hr 8 min – Sep 26, 2007
Google Tech Talks
September 26, 2007
ABSTRACT
The Natural Programming Project is working on making programming languages and environments easier to learn, more effective, and less error prone. We are taking a human-centered approach, by first studying how people perform their tasks, and then designing languages and environments that take into account people’s natural tendencies. We focus on all kinds of programmers: professional programmers, novice programmers who are trying to learn to be experts, and "end-user programmers" who are people who program because they must to achieve their "real jobs." This talk will update my talk to Google from October 27, 2005, and cover the exciting progress we have made since then. After briefly reviewing our old work on designing languages for novices, our new systems and studies will be presented. We have a new version of the the Whyline tool, which allows programmers to directly ask "why" and "why not" questions of their Java programs and get a visualization of the answers. The previous version for Alice decreased debugging time by a factor of 8 and increased programmer productivity by 40%, and pilot studies of the new version suggest a factor of two improvement in time. Other new work helps programmers keep track of their "working sets," since our research showed that programmers spend about 38% of their time navigating around code. Most of coding today is making use of APIs, and we have evaluated a number of APIs and design patterns using HCI techniques, to reveal how to make their easier to use for programmers. We also have a brand new study of the practices and problems for Interaction Designers working on interactive behaviors. Read the rest of this entry »
Sphere: Related ContentC++0x Initialization Lists
Google engEDU
1 hr 2 min – Feb 21, 2007
Google Tech Talks
February 21, 2007
ABSTRACT
Getting initialization right is an important part of programming. Over the years, this has led to a mess of language facilities and techniques. This talk describes how C++0x (most likely) will address two issues: how to get a uniform syntax and semantics for all initialization and how to allow initialization by general lists. Obviously, people will want the solution to be really simple and completely compatible. As ever, the resolution is to be almost completely compatible and almost simple. This talk will describe sequence constructors, homogeneous and heterogeneous initializer lists, and (as far as time allows) fit generalized constant expressions, prevention of narrowing conversions, and variadic templates into this picture. Read the rest of this entry »
Sphere: Related ContentBeyond Test Driven Development: Behaviour Driven Development
Google engEDU
48 min – Mar 17, 2006
Google TechTalks
March 17, 2006
Dave Astels
Dave Astels (co-author of "A Practical Guide to eXtreme Programming" and author of Jolt Award winning "Test-driven Development: A Practical Guide") has over 2 decades of experience in the software field, most of that involved with object-oriented technologies and techniques. Dave has been studying, practicing, teaching, evangelising, and coaching XP and Agile Processes since 1998. Dave’s experience ranges from embedded process control systems to consumer products (both consumer electronics and shrinkwrapped software) to energy trading systems. Dave is an independant software consultant specializing in the areas of agile process, programming practices, and object design/architecture. Dave is one of the thought leaders in the area of TDD, and now BDD.
ABSTRACT
Test Driven Development (TDD) has become quite well known. Many developers are getting benefit from the practice. But it is possible that we can get even more value. A new practice is getting attention these days: Behaviour Driven Development (BDD).
BDD removes all vestiges of testing and instead focuses on specifying the behaviour desired in the system being built. This talk will be focus on Ruby and will introduce a new BDD framework: rSpec. The ideas, however, are language independent. Read the rest of this entry »
Sphere: Related ContentAdvanced Topics in Programming Languages: A Lock-Free Hash Table
Google engEDU
59 min – Mar 28, 2007
Google Tech Talks
March 28, 2007
ABSTRACT
I present a lock-free concurrent Hash Table implementation with better single-thread performance than most Hash Tables, and better multi-thread performance than all other implementations I tried. I demonstrate scaling up to 768 CPUs even with high mutation rates. I show correctness by looking at the problem in a very different light than the usual "happens-before" / memory-order / fencing style of thinking.
Speaker: Dr. Cliff Click
Dr. Cliff Click, Azul Systems. Chief JVM Architect, Distinguished Engineer With more than twenty-five years experience developing compilers Cliff serves as Azul Systems’ Chief JVM Architect. Cliff joined Azul in 2002 from Sun Microsystems where he was the architect and lead developer of the HotSpot Server Compiler, a technology that has delivered dramatic improvements in Java performance since its inception. Previously he was with Motorola where he helped deliver industry leading SpecInt2000 scores on PowerPC chips, and before that he researched compiler technology at HP Labs. Cliff has been writing optimizing compilers and JITs for over 15 years. He is invited to speak regularly at industry and academic conferences, and has published many papers about HotSpot technology. Cliff holds a PhD in Computer Science from Rice University. Read the rest of this entry »
Sphere: Related ContentSeattle Conference on Scalability: MapReduce Used on Large Data Sets
Google engEDU
30 min – Jun 23, 2007
Google Tech Talks
June 23, 2007
ABSTRACT
2007 Google Seattle Conference on Scalability:
Using MapReduce on Large Geographic Datasets
Speaker: Barry Brumitt, Google, Inc.
MapReduce is a programming model and library designed to
simplify distributed processing of huge datasets on large clusters of
computers. This is achieved by providing a general mechanism
which largely relieves the programmer from having to handle
challenging distributed computing problems such as data
distribution, process coordination, fault tolerance, and scaling. While
working on Google maps, I’ve used MapReduce extensively to
process and transform datasets which describe the earth’s
geography. In this talk, I’ll introduce MapReduce, demonstrating its
broad applicability through example problems ranging from basic
data transformation to complex graph processing, all the in the
context of geographic data. Read the rest of this entry »