Google Code offered in: 中文 - English - Português - Pусский - Español - 日本語
CARVIEW |
Programming Languages
In this section, you will find a set of video-taped lectures from Google Video on various technology areas. These videos are great opportunities for students and faculty to hear directly from some of the current pioneers in high-tech. They can also potentially serve as "guest lectures" for courses in these areas.
Advanced Concepts in C++
Advanced Concepts in Java
Programming in Python
C++
C++ Threads
-
Presenter: Lawrence Crowl
The next C++ standard will provide direct support for threads, including a model of memory, atomics, variables, launching, scheduling, synchronization, and termination. This talk will present the current threading model and outline the remaining work.
New Features in the Next C++ Standard
-
Presenter: Lawrence Crowl
The upcoming C++ standard will have many new features, several major and many minor. The major features are concurrency, template concepts, move semantics, generalized constant expressions, automatic variable typing, and garbage collection. We will present an overview of the major features and breeze through a list of other features, commenting on their likeliness to make the standard.
Java
The Java Memory Model
-
Presenter: Jeremy Manson
This talk describes the Java Memory Model and how it affects the ways concurrent software should be written. Recent changes to the memory model, which were incorporated into JDK 5, redefined the semantics of threads, synchronization, volatile variables, and final fields. The new memory model provides efficient and provably correct techniques for safely and correctly implementing concurrent operations. These techniques are compatible with existing good programming practice, although care needs to be taken in a couple of corner cases.
Most programmers can avoid depending on low-level details and instead just use the high-level concurrency abstractions provided in the new concurrency libraries. However, for those who have to write their own concurrency abstractions, understanding the building blocks of concurrency can be vitally important.
This talk will provide a simple and clear definition of what synchronization actually does, define the semantics of volatile variables and the java.util.concurrent.atomic package (and how they can be used to create efficient concurrent implementations), and describe how final fields can be used to provide thread-safe immutable objects without synchronization.
Effective Static Race Detection
-
Presenter: Alex Aiken
This talk presents a novel approach to detecting races in concurrent Java programs. The approach is sound in that it detects all races and is precise in that it misidentifies few non-races as races. The approach is also effective, finding tens to hundreds of serious and previously unknown synchronization bugs in real-world programs.
Python
Understanding Python
-
Presenter: Thomas Wouters
The Python language, while object-oriented, is fundamentally different from both C++ and Java. The dynamic and introspective nature of Python allow for language mechanics unlike that of static languages. This talk aims to enlighten programmers new to Python about these fundamentals, the language mechanics that flow from them and how to effectively put those to use. Among the topics covered are duck-typing, interfaces, descriptors, decorators, metaclasses, reference-counting and the cyclic-garbage collector, the divide between C/C++ data and Python objects and the CPython implementation in general.
Python Design Patterns
-
Presenter:Alex Martelli
Design Patterns must be studied in the context on the language in which they'll get implemented (the Gang of Four made that point very strongly in their book, though almost everybody else seems not to have noticed). This talk explores several categories of classic "elementary" DPs in a Python context -- Creational, Masquerading, Adaptation, and Template.
Python 3000
-
Presenter: Guido Van Rossum
Since the renewed Python 3000 effort was announced at PyCon 2006, a lot has happened. We've implemented about half of the promised changes in a branch, we've solidified the schedule, there's a refactoring tool that can do source-to-source translations, and we've produced several gigabytes of discussion about language change proposals (most of which were deemed too radical in the end). In this talk, a preview of a keynote to be given at PyCon 2007, I'll discuss the Python 3000 road map, status, and what this means for the average Python user.
Google Code offered in: 中文 - English - Português - Pусский - Español - 日本語