Extreme programming by Bruce Eckel

http://mindview.net/Books/TICPP/ThinkingInCPP2e.html
http://www.odioworks.com/download/TICPP-2nd-ed-Vol-one.zip

About article

Number of words: 1175
Computer science content: medium
Math content: none
English language complexity: medium

Learning objectives

Sub-areas covered

Keywords

compiler – a computer program (or a set of programs) that transforms source code written in a computer language (the source language) into another computer language; usually from a programming language to
an executable form
class – an abstract model that is used to create objects of that class; it consists of data fields representing properties - and functions which define actions that an instance of the class can perform
CRC card (Class Responsibility Collaboration) – a brainstorming tool used in the design of object-oriented software; it is typically used when first determining which classes are needed and how they will interact
interface (or protocol) – a definition of how objects can cooperate by specifying required operations and their effect without explicitly stating the actual implementation
OOP (Object-oriented programming) – a programming paradigm that uses "objects", i.e. data structures consisting of data fields and methods together with their interactions, to develop applications and computer programs
project integration – a process of merging smaller components of a project, so they can work together
run-time system – a collection of software designed to support the execution of computer programs written in some computer language; the run-time system may provide software services such as subroutines and libraries for common operations, implementation of programming language commands, type checking, debugging, and even code generation and code optimization
semantics – a field concerned with the rigorous mathematical study of the meaning of programming languages and models of computation; the formal semantics of a language is given by a mathematical model that describes the possible computations described by the language
UML (Unified Modeling Language) – a standardized general-purpose modeling language in the field of software engineering; UML includes a set of graphical notation techniques to create visual models of classes and their interactions

Summary

Extreme Programming (XP) is a set of software development techniques intended to improve productivity, save time and help create more reliable code. The two most important XP elements are: “test-first programming”
and “pair programming”. XP test writing assumes that we should treat coding and testing equally. That is why code should be written for the tests, not tests for the code. Furthermore, tests ought to be run with every build of the project and never be deleted from it. The tests are supposed to be updated as often as possible in order to make sure that every piece of code works properly in any condition. Another XP methodology is pair programming. There are two people per workstation - one is coding while the other one's responsibility is to keep the whole picture of a problem and help the coder in transforming the idea into the application. They can swap whenever they need or want, so the whole process remains effective.

Programowanie ekstremalne to metoda tworzenia oprogramowania, której celem jest podniesienie efektywności
i jakości pracy programistów. W artykule poruszone są dwa założenia XP, odróżniające je od klasycznego podejścia. Pierwsza zasada mówi, by zacząć pracę od pisania testów, stawiając ten aspekt tworzenia oprogramowania na równi z pisaniem kodu. Koncepcja ta wymusza kontrolowanie poprawności działania aplikacji poprzez obowiązkowe testowanie na każdym etapie jej tworzenia. Takie podejście względem nawet bardzo małych fragmentów kodu ma zapewnić spójność i poprawność całości projektu. Drugą istotną ideą programowania ekstremalnego jest pisanie w parach, które opiera się na współpracy dwóch osób przy jednym stanowisku Jedna z nich pisze kod programu a druga nadzoruje na bieżąco jego poprawność i analizuje go
w szerszym kontekście. Osoby te mogą się dowolnie zmieniać dla uniknięcia zmęczenia i maksymalizowania wydajności pracy.

Pre-reading questions

Click on the question to get suggested answers.

1. Why was C++ invented?

2. Why is C++ so popular?

3. Why is the choice of a programming language important when you start a project? Name some languages you know.

4. What is the purpose of source code maintenance? Is C++ harder to maintain than other languages?