Get Screwed with C programming


  • Non-terminated comment, "accidentally" terminated by some subsequent comment, with the code in between swallowed.
  •         a=b; /* this is a bug
            c=d; /* c=d will never happen */
  • Accidental assignment/Accidental Booleans
  •         if(a=b) c;      /* a always equals b, but c will be executed if b!=0 */
    Depending on your viewpoint, the bug in the language is that the assignment operator is too easy to confuse with the equality operator; or maybe the bug is that C doesn't much care what constitutes a boolean expression: (a=b) is not a boolean expression! (but C doesn't care).
    Closely related to this lack of rigor in booleans, consider this construction:
            if( 0 < a < 5) c;      /* this "boolean" is always true! */
    Always true because (0

    Or consider this:

            if( a =! b) c;      /* this is compiled as (a = !b), an assignment, rather than (a != b) or (a == !b) */

  • Unhygienic macros
  •         #define assign(a,b) a=(char)b
            assign(x,y>>8)
    becomes
                   x=(char)y>>8    /* probably not what you want */ 
     
  • Mismatched header files

  • Suppose foo.h contains:
            struct foo { BOOL a};
      file F1.c  contains
            #define BOOL char
            #include "foo.h"
      file F2.c contains 
            #define BOOL int
            #include "foo.h"
    now, F1. and F2 disagree about the fundamental attributes of structure "foo". If they talk to each other, You Lose! 
     
  • Phantom returned values

  • Suppose you write this
        int foo (a)
        { if (a) return(1); } /* buggy, because sometimes no value is returned  */
    Generally speaking, C compilers, and C runtimes either can't or don't tell you there is anything wrong. What actually happens depends on the particular C compiler and what trash happened to be left lying around wherever the caller is going to look for the returned value. Depending on how unlucky you are, the program may even appear to work for a while.

    Now, imagine the havoc that can ensue if "foo" was thought to return a pointer! 
     

  • Unpredictable struct construction

  • Consider this bit packing struct:
        struct eeh_type
        {
                uint16 size:          10;   /* 10 bits */
                uint16 code:           6;   /* 6 bits */
        };
    Depending on which C compiler, and which "endian" flavor of machine you are on, this might actually be implemented as
            <10-bits><6-bits>
    or as
            <6-bits><10-bits>
    Also, again depending on the C compiler, machine architecture, and various mysterious preference settings,
    the items might be aligned to the nearest 8, 16, 32, or 64 bits.
    So what matters? If you are trying to match bits with a real world file,
    everything!
    Need another way to lose big? How about this:
    Rect foo = {0,1,2,3}; // assign numbers to the first four slots
    You may think you know what those four slots are, but there's at least an
    even chance you'll have to discover the hard way if the structure ever
    changes.

  • Indefinite order of evaluation (contributed by Xavier @ triple-i.com)
  •         foo(pointer->member, pointer = &buffer[0]);
    Works with gcc (and other compilers I used until I tried acc) and does not with acc. The reason is that gcc evaluates function arguments from left to right, while acc evaluates arguments from right to left.
    K&R and ANSI/ISO C specifications do not define the order of evaluation for function arguments. It can be left-to-right, right-to-left or anything else and is "unspecified". Thus any code which relies on this order of evaluation is doomed to be non portable, even across compilers on the same platform.

    This isn't an entirely non controversial point of view. 
     

  • Easily changed block scope (Suggested by Marcel van der Peijl )
  •     if( ... ) 
            foo(); 
        else 
            bar();
    which, when adding debugging statements, becomes
        if( ... ) 
            foo();          /* the importance of this semicolon can't be overstated */
        else 
            printf( "Calling bar()" );      /* oops! the else stops here */
            bar();                          /* oops! bar is always executed */
    There is a large class of similar errors, involving misplaced semicolons and brackets. 
     
  • Permissive compilation (suggested by James M. Stern)

  • I once modified some code that called a function via a macro:
            CALLIT(functionName,(arg1,arg2,arg3));
    CALLIT did more than just call the function. I didn't want to do the extra stuff so I removed the macro invocation, yielding:
            functionName,(arg1,arg2,arg3);
    Oops. This does not call the function. It's a comma expression that:
    1. Evaluates and then discards the address of functionName
    2. Evaluates the parenthesized comma expression (arg1,arg2,arg3)
    C's motto: who cares what it means? I just compile it! My own favorite in this vein is this:
            switch (a) {
            int var = 1;    /* This initialization typically does not happen. */
                            /* The compiler doesn't complain, but it sure screws things up! */
            case A: ...
            case B: ...
            }
    Still not convinced? Try this one (suggested by Mark Scarbrough ):
    #define DEVICE_COUNT 4 
    uint8 *szDevNames[DEVICE_COUNT] = {
            "SelectSet 5000",
            "SelectSet 7000"}; /* table has two entries of junk */
  • Unsafe returned values (suggested by Bill Davis s@dw3f.ess.harris.com>) 

  • char *f() { 
       char result[80]; 
       sprintf(result,"anything will do"); 
       return(result);    /* Oops! result is allocated on the stack. */ 
     }


    int g() 
       char *p; 
       p = f(); 
       printf("f() returns: %s\n",p); 
    The "wonderful" thing about this bug is that it sometimes seems to be a correct program; As long as nothing has reused the particular piece of stack occupied by result
     

  • Undefined order of side effects. (suggested by michaelg@owl.WPI.EDU and others) 
  • Even within a single expression, even with only strictly manifest side effects, C doesn't define the order of the side effects. Therefore, depending on your compiler, I/++I might be either 0 or 1. Try this:
    #include 
    int foo(int n) {printf("Foo got %d\n", n); return(0);}
    int bar(int n) {printf("Bar got %d\n", n); return(0);}
    int main(int argc, char *argv[]) 
    {
      int m = 0;
      int (*(fun_array[3]))();
      int i = 1;
      int ii = i/++i;
      printf("\ni/++i = %d, ",ii);
      fun_array[1] = foo; fun_array[2] = bar;
      (fun_array[++m])(++m);        
    }
    Prints either i/++i = 1 or i/++i=0;
    Prints either "Foo got 2", or "Bar got 2" 
     
  • Uninitialized local variables 
  • Actually, this bug is so well known, it didn't even make the list! That doesn't make it less deadly when it strikes. Consider the simplest case:
    void foo(a)
    { int b;
      if(b) {/* bug! b is not initialized! */ }
    }
    and in truth, modern compilers will usually flag an error as blatant as the above. However, you just have to be a little more clever to outsmart the compiler. Consider:
    void foo(int a) 
    { BYTE *B;
       if(a) B=Malloc(a);
              if(B) { /* BUG! B may or may not be initialized */ *b=a; } 
    }
  • Cluttered compile time environment 
  • The compile-time environment of a typical compilation is cluttered with hundreds (or thousands!) of things that you typically have little or no awareness of.  These things sometimes have dangerously common names, leading to accidents that can be virtually impossible to spot.

    #include
    #define BUFFSIZE 2048 
    long foo[BUFSIZ];                //note spelling of BUFSIZ != BUFFSIZE


    This compiles without error, but will fail in predictably awful and mysterious ways, because BUFSIZ is a symbol defined by stdio.h.  A typo/braino like this can be virtually impossible to find if the distance between the the #define and the error is greater than in this trivial example. 
     

  • Under constrained fundamental types

  • I've been seriously burned because different compilers, or even different options of the same compiler, define the fundamental type int as either 16 or 32 bits..  In the same vein, name any other language in which boolean might be defined or undefined, or might be defined by a compiler option, a runtime pragma (yes! we have booleans!), or just about any way the user decided would work ok. 
     
  • Utterly unsafe arrays 
  • This is so obvious it didn't even make the list for the first 5 years, but C's arrays and associated memory management are completely, utterly unsafe, and even obvious cases of error are not detected.

     int thisIsNuts[4]; int i; 
      for ( i = 0; i < 10; ++i ) 
      { 
        thisIsNuts[ i ] = 0;     /* Isn't it great ?  I can use elements 1-10 of a 4 element array, and no one cares */ 
      }

    Of course, there are infinitely many ways to do things like this in C. 

    Comet vaporized in Sun





    For the first time, technology has allowed NASA to observe a comet being vaporized as it approached the sun. Solar Dynamics Observatory recorded Comet C/2011 N3 nearing the sun and burning to nothing over a 20-minute span in July.

    NASA describes the event as "Comet corpses in the solar wind." Almost daily, comets are vaporized by the sun, but this was the first time technology allowed for it to be recorded.

    The comet was about the size of an aircraft carrier and was part of the Kreutz family of comets believed to be remnants of a giant parent comet that broke apart some 2,500 years ago.

    Mutant Microbes converting into Biofuel



    A promising new system can convert fronds of brown seaweed into biofuel, opening up a new possible source of energy that could help replace fossil fuels, like gasoline. The secret: bacteria genetically engineered to break down a previously inaccessible sugar in seaweed, called alginate. The researchers who developed this new system used it to generate ethanol, a biofuel that is added to gasoline; however, it has the potential to produce not just ethanol but other biofuels, they and others say. The new system is like a Lego platform. With changes to the components in the process, the same microbe-based system could be used to produce a variety of products. 

    For instance, the system could be used to turn seaweed into a source (also called a feedstock) for other biofuels, which could include butanol — an alcohol, like ethanol, that is blended into gas — or chemicals used in biodiesel, which has properties similar to conventional, petroleum-based diesel. 

    Two questions remain :
    Is it economically feasible to use seaweed to produce biofuel? 
    And is it environmentally attractive? 

    Seaweed now joins the cadre of plants — from corn to single-celled algae — that offer tantalizingly renewable and domestically produced alternatives to fossil fuels. In the United States, ethanol made from corn is added to gasoline; in Brazil, cars are powered largely, sometimes completely, by ethanol made from sugar cane. But converting corn and sugar cane into fuel can be problematic, since both are also food crops. 


    Even other potential biofuel sources, like switchgrass, can compete for land in a world whose population is growing and seeking a more resource-intensive diet. Seaweed — a relatively unexploited source of nutrition, is high in sugars, which are precursors for most biofuels. Seaweed also lacks lignin, a compound that makes cell walls rigid in land plants and that must be removed before such plants can be turned into fuel. Even so, until now, seaweed appeared to have limited potential as a feedstock for biofuel, since one of its primary sugars, alginate, couldn't be broken down efficiently enough to produce biofuel on an industrial scale. The bug Marine microbes already have the ability to break down alginate, transport the products and metabolize them. E. coli do something similar, spitting out ethanol at the end of a multi-step process. The last of the steps could be replaced to produce other biofuels, or even chemicals such as plastics and polymer building blocks. This system also takes advantage of other sugars in the seaweed, mannitol and glucan, since the E. coli already possessed the ability to break down mannitol, and commericially available enzymes can easily break glucan down into a more accessible form, glucose. This system could be used in any brown seaweed (seaweeds also come in green and red). 

    Cultivating seaweed along three percent of the world's coastlines, where kelp already grows, could produce 60 billion gallons of ethanol.

    Seaweed's advantages, its high sugar content and lack of lignin, make it a viable source for biofuel from a cost perspective. Looking ahead There is also the environmental question.  One challenge will likely be seaweed's demand for nutrients, such as nitrogen and phosphorus, which are not naturally abundant in the oceans. 

    Moore’s Law broken




    IBM announced that after five years of work, its researchers have been able to reduce from about one million to 12 the number of atoms required to create a bit of data. The breakthrough may someday allow data storage hardware manufacturers to produce products with capacities that are orders of magnitude greater than today’s hard disk and flash drives.

    Looking at this conservatively...instead of 1TB on a device you’d have 100TB to 150TB. Instead of being able to store all your songs on a drive, you’d be able to have all your videos on the device. Today, storage devices use ferromagnetic materials where the spin of atoms are aligned or in the same direction.

    The IBM researchers used an unconventional form of magnetism called antiferromagnetism, where atoms spin in opposite directions, allowing scientists to create an experimental atomic-scale magnet memory that is at least 100 times denser than today’s hard disk drives and solid-state memory chips.

    While the science behind what IBM researchers accomplished is complex, the results are quite simple: They put a spin on the old adage that “opposites attract.” Instead today’s method for magnetic storage where iron atoms are lined up with the same magnetic polarization, requiring greater distance between them, IBM created atoms with opposite magnetization, pulling them more tightly together.

    “Moore’s Law is basically the drive of the industry to shrink components down little by little and then solve the engineering challenges that go along with that but keeping the basic concepts the same. The basic concepts of magnetic data storage or even transistors haven’t really changed over the past 20 years,”. 

    Miniaturized information storage in atomic-scale antiferromagnets. The binary representation of the letter 'S' (01010011) was stored in the Neel states of eight iron atom arrays. The researchers started with one iron atom and used the tip of scanning tunneling microscope to switch magnetic information in successive atoms. They worked their way up until eventually they succeeded in storing one bit of magnetic information reliably in 12 atoms. The tip of the scanning tunneling microscope was then used to switch the magnetic information in the bits from a zero to a one and back again, allowing researchers to store information.

    IBM used iron atoms on copper nitrate to perform its experiments, but other materials could theoretically require even fewer atoms to store a bit of data. The researchers then combined 86 bits make one byte of data, such as a letter or number. IBM then put many of the bytes together to create information. The first word they spelled using the new technique: T-H-I-N-K, which required five bytes of information or 400 magnetized atoms.

    Antiferromagnets is not the only data storage project that IBM is working on. Last year, the company produced its first Racetrack Memory circuit, which could also lead to silicon chips with the capacity of today’s hard drives, but the durability and performance of flash drives. “In the technology world, hopefully this will gather some momentum to allow them to use antiferromagnetic structures as active elements and then solve the all the technological problems around that,”.

    50 Open Source Computer Learning Class



    Learn the basics of computer science, and get a foundation in how computer science works.
    1. Introduction to Computer Science: Learn about the history of computing, as well as the development of computer languages. A great basic course on introductory computer science.
    2. Introduction to Computer Science and Programming: A series of video lectures from MIT about computer science, and the basics of programming.
    3. Introduction to Computers: UC Berkeley offers a course on the basics of computing and science.
    4. Artificial Intelligence: Learn about the basics of artificial intelligence and how it has been developed for computer applications.
    5. Breadth Topics in Computing Science: This class from Capilano University offers a wide view of computer science. Learn about design, programming and more for different opportunities in computer science.
    6. The Anthropology of Computing: This MIT course offers an interesting look into the development of computers and their impact on human society.
    7. Human Computer Interaction: Basic information on how humans interact with computers, and how to better design usability, from the University of Washington.

    Comprehensive Computer Science Collections

    If you are interested in courses that are a little more comprehensive in nature, you can get a good feel for computer science from the following collections:
    1. Computer and Computer Systems: An overall view of computers and how they are organized into systems.
    2. Science and Technology: Connexions, from Rice University, offers a comprehensive course on different types of computer science.
    3. Information and Technology: Many of the courses offered by the University of Tokyo include English translations, so you can get a good grasp of information and technology.
    4. Electrical and Computer Engineering: Choose from a variety of courses that can give you a good grasp of the principles behind computer engineering.
    5. Electrical Engineering and Computer Science: Learn about electrical engineering and computer science can be combined to create amazing technology.
    6. Science and Technology: Choose from a variety of courses on technology and computers, as well as science, from OER Commons.

    Programming and Languages

    Get a handle on computer programming, and learn about different computer languages used in programming.
    1. Building Programming Experience: Helpful hints for building up your programming capabilities.
    2. Computer Language Engineering: Overview of how computer languages are developed, and how to program them.
    3. Programming Languages: Provides a basic overview of programming languages, offering special insight into Scheme +.
    4. AJAX: Land of Code offers this tutorial related to programming with AJAX.
    5. C Programming: The University of Strathclyde provides this course on using the C programming language.
    6. Fundamentals of C++: This course is offered at free-ed.net, and provides insight and helpful hints on programming with C++.
    7. Java Programming: This course is written by a computer science professor at Orange Coast College, and is provided through the Sofia Open Content Initiative.
    8. Perl Lessons: Learn about Perl, and how to use it, especially with CGI.
    9. PHP Tutorial for Beginners: Get an overview of PHP, and how it can be used in a variety of circumstances.
    10. Ruby Programming: Learn about Ruby, and learn how to use it for your projects.

    Computer Software

    Learn about software development, and the importance of software in computer programming.
    1. Designing the user interface: This software design course from The Open University helps you learn the principles of usability.
    2. Modelling object-oriented software: Learn about object-oriented software, and how it can be used to structure systems.
    3. Software development for enterprise systems: An overview of how to design software meant for business.
    4. Software Engineering for Web Applications: Learn about how to design software for web apps.
    5. Elements of Software Construction: MIT takes you through the basics of constructing software.
    6. Software Engineering Concepts: Learn the fundamental concepts behind engineering and developing software.

    Computer Systems and Information Technology

    Learn how to construct computer systems, and get the basic outlines of information technology.
    1. Systems Design and Administration: Learn how to design and administer computer systems from Dixie State College.
    2. Applied Parallel Computing: Learn about how you can use parallel computing systems.
    3. Machine Structures: UC Berkeley offers a course on the structure of computers, and how they can interact in systems.
    4. Operating Systems and System Programming: Get a handle on operating systems, how they work, and how to program them properly.
    5. Information Technology and the Labor Market: Learn about IT, the demand for it, and how IT is reshaping the way things are done.
    6. Global Issues in Information Technology: Weber State University introduces different issues in IT.
    7. Finding information in information technology and computing: An overview of how information is arranged, and how to look for what you need.

    Computer Processes and Data

    Learn more about computer processing and data management.
    1. An introduction to data and information: The Open University offers a helpful course on data and how it works in a computer environment.
    2. The database development life cycle: A basic overview of how data development takes place.
    3. Introduction to Algorithms: Algorithms are necessary for processing information. This MIT course introduces you to them.
    4. Introduction to Communication, Control, and Signal Processing: Learn how computers process information and data.
    5. Data Structures: Learn how data is structured, and how you can create your own structures.
    6. Data and processes in computing: Follow data and processes development as part of computer science.
    7. Representing and manipulating data in computers: A course in how you can use data for specific purposes.

    Web Development

    Part of computer science is being able to develop programs, applications and systems for the Internet.
    1. Understanding Computers and the Internet: A look at computers and their importance to the Internet.
    2. Digital Typography: Get an understanding of how to design typography for the Internet.
    3. Information Visualization: Learn how to visualize information, and present it in a way that others can relate to.
    4. User Interface Design and Implementation: A course from MIT about how you can design a usable interface, and implement it.
    5. Communicating in Cyberspace: Learn how to communicate effectively using computers.
    6. Search Engines: Technology, Society and Business: Get a handle on how search engines work, and how important they have become to society and to business.
    7. Communications and Information Policy: Learn about different policies involved with communicating online.

    Concentrated solar power systems


    From Science



    One could only hope that our entire energy future will look as whimsical as the solar power station in Sanlúcar la Mayor near Seville.

    This power plant consists of a pair of "concentrated solar power systems," which function in an unusual way. A mirror array on the ground consisting of 624 mirrors moves throughout the day, tracking the sun and focusing its beams onto the tip of a 160-meter-tall tower. The focused light heats up a tank of water at the tip of the tower, which in turn powers the steam turbine of an electrical generator. This simple process can generate up to 20 megawatts of energy.

    The first of the pair of solar towers in the Sanlúcar la Mayor plant, the PS-10, began operation in the spring of 2007. When the entire complex is completed in the 2013, the plant will produce enough energy for 180,000 homes, equivalent to the needs of the city of Seville. The tower will prevent the emission of more than 600,000 metric tons of greenhouse gases each year.

    Unfortunately, the price of electricity produced by this power station is still three times higher than energy produced by conventional means.

    British English Vs American English






    British English
    American English
    1st year undergraduate
    freshman (undergraduate)
    2nd year (school)
    sophomore (undergraduate)
    3rd year (school)
    junior (undergraduate)
    4th year (school)
    senior (undergraduate)
    999 (help)
    911 (help)
    aerial (radio/TV)
    antenna
    allotment
    community garden
    alsation
    German shepherd/ police dog
    angry
    mad/angry
    anorak
    parka
    articulated lorry
    trailer truck
    aubergine
    eggplant
    autumn
    fall
    bank holiday
    legal holiday
    banknote
    bill
    bap
    hamburger bun
    bat
    ping pong paddle
    bath (noun)
    bathtub
    bath (verb)
    bathe (verb)
    bespoke/made to measure
    custom made
    big dipper
    roller coaster
    bill
    check (restaurant)
    bill/account
    account
    billion = million million
    billion = thousand million
    biscuit (sweet)
    cookie
    biscuit (unsweetened)
    cracker
    black or white?
    with or without? (milk/cream in coffee)
    black or white? (in coffee/tea)
    cream or sugar? (in coffee/tea)
    black treacle
    molasses
    blackleg
    scab
    blind (window)
    shade (window)
    block of flats
    apartment house
    blue jeans
    dungarees/jeans
    bomb (success)
    bomb (disaster)
    bonnet (car)
    hood (car)
    book
    make reservation
    boot (car)
    trunk (car)
    bootlace/shoelace
    shoestring
    bottom drawer
    hope chest
    bowler/hard hat
    derby
    box room
    lumber room
    braces
    suspenders
    brainstorm
    muddled (mind)
    break (school)
    recess
    bridge roll
    hotdog bun
    briefs
    shorts/jockey shorts
    brilliant
    nice
    brilliant idea
    brainstorm (noun)
    broad bean
    lima bean
    butter muslin/cheese cloth
    cheese cloth
    candy floss
    cotton candy
    car park
    parking lot
    caravan
    trailer/camper/mobile home/recreation vehicle
    caretaker/porter
    janitor
    catapult
    slingshot
    cattle grid
    Texas gate
    central reservation
    median strip/divider (road)
    centre (city/business)
    down town
    chairman
    president (business)
    chemist
    druggist
    chemist's shop
    drugstore/pharmacy
    chest of drawers
    bureau/dresser
    chicory
    endive
    chintzy
    chintz-sprigged material
    chips
    French fries
    chocolate/sweets
    candy
    cinema
    movie house/theatre
    cloakroom
    coat check/hat check
    cloakroom attendant
    hat check attendant
    clothes peg
    clothes pin
    collar stiffener
    collar stay
    collar stud
    collar button
    conscription
    draft
    contraceptive
    rubber
    convoy
    caravan
    cooker
    stove
    cornflour
    corn starch
    corporation
    city/municipal government
    cot/crib
    baby bed/crib
    cotton
    thread
    cotton reel
    spool
    cotton wool
    cotton balls/absorbent cotton
    courgettes
    zucchini
    courtshoe
    pump
    cow gum
    rubber cement
    cream cracker
    soda cracker
    crisps
    chips (potato)
    cul-de-sac
    dead-end
    cupboard
    closet
    curtains
    drapes
    desiccated (as iin coconut)
    shredded (as in coconut)
    detached (housing)
    one-family house
    diamante'
    rhinestone
    directory enquiries
    information/directory assistance
    district
    precinct
    diversion
    detour
    drain (indoor)
    sewer pipe/soil pipe
    draper
    drygoods store
    draught excluder
    weather stripping
    draughts
    checkers
    drawing pin
    thumbtack
    dress circle
    mezzanine/loge
    dressing gown
    bathrobe
    dual carriageway
    divided highway
    dummy
    pacifier
    dungarees
    overalls
    dustbin/bin
    garbage can/ash can/ trash can
    dynamo
    generator
    earth wire/earth
    ground wire
    eiderdown
    comforter
    endive
    chicory
    Esq./Mr
    Mr.
    estate agent
    Realtor/real estate agent
    estate car
    station wagon
    face flannel
    washcloth
    fair (fun)
    carnival
    fete
    fair (fun)
    fiddly
    tricky (to do)
    filling station
    gas station
    film
    movie
    first floor
    second floor
    fish slice
    spatula/pancake turner
    fitted carpet/wall to wall
    wall to wall
    flat
    apartment/unit
    flex
    electric cord/wire
    fly-over
    overpass
    football/soccer
    soccer
    fortnight
    two weeks
    foyer
    lobby/foyer
    full-stop
    period (punctuation)
    gallery
    balcony (theater)
    gangway
    aisle
    gaol
    jail
    garden
    yard
    gear lever
    gear shift
    geyser
    water heater (gas)
    gobsmacked
    dumbstruck/amazed
    goods truck (railway)
    freight truck (railway)
    goose pimples
    goose bumps
    gramophone/record player
    phonograph/record player
    green fingers
    green thumb
    green pepper
    bell pepper
    grill (verb)
    broil
    ground floor
    first floor
    guard (railway)
    conductor
    gym shoes/plimsolls/ tennis shoes/trainers
    sneakers/tennis shoes
    haberdashery
    notions
    hair grip/kirby grip
    bobbie pin
    hairslide
    barette
    handbag
    purse/pocket book
    hardware
    housewares
    headmaster/mistress
    principal
    hire purchase
    time payment/instalment plan
    holiday
    vacation
    homely-pleasant
    homely-ugly
    hoover (noun)
    vacuum cleaner
    hoover (verb)
    vacuum (verb)
    housing estate
    sub-division
    ice/sorbet
    sherbet
    iced lolly
    popsicle
    icing sugar
    powdered sugar/ confectioner's sugar
    identification parade
    line-up
    immersion heater (electric)
    water heater (electric)
    interval
    intermission
    ironmonger
    hardware store
    jab
    shot (injection)
    jeans
    dungarees
    joint (meat)
    roast
    jug
    pitcher
    jumper/sweater/pullover
    sweater/pullover
    kiosk (telephone/cigarette)
    booth (telephone)
    kipper
    smoked herring
    knock up (tennis)
    warm up (tennis)
    knock up (verb)
    wake up (verb)
    label
    tag
    larder
    pantry
    lavatory/toilet/w.c./loo
    toilet/john/bathroom/rest room
    lay-by
    rest area/pull-off (road)
    leader: (1) leading article in newspaper/
    (2)1st violin in orchestra

    (1) editorial
    (2) concert master

    leader (1st violinist)
    concert master
    leader (newspaper)
    editorial
    left luggage office
    baggage room
    let
    lease/rent
    lift
    elevator
    limited (company)
    incorporated
    liver sausage
    liverwurst
    lodger
    roomer
    loo
    rest room
    lorry
    truck
    lost property
    lost and found
    lounge suite
    business suit
    mackintosh
    raincoat
    mad
    crazy
    make pregnant/put in the family way
    knock up
    marrow (similar)
    squash (similar)
    methylated spirits
    denatured alcohol
    mileometer
    odometer
    mince
    hamburger meat
    mincer
    meat grinder
    moped
    motorbike
    motorbike/motorcycle
    motorcycle
    motorway
    freeway/super highway
    nappy
    diaper
    neat (drink)
    straight (drink)
    newsagent
    newsdealer/news stand
    nought
    zero
    noughts and crosses
    tic-tac-toe
    number plate
    licence plate
    off licence/wine merchant
    liquor store
    shoddy/cheap
    chintzy
    oven gloves/cloth
    pot holders/gloves
    overtake/pass (vehicle)
    pass (vehicle, etc.)
    pack
    deck (cards)
    pantechnicon/removal van
    moving van
    pants
    shorts (underwear)
    paraffin
    kerosene
    parcel
    package
    pavement/footpath
    sidewalk
    pelmet
    valence
    personal call
    person-to-person
    petrol
    gas
    pillar box
    mail box/mail drop
    plus-fours
    knickers
    point/power point
    outlet/socket
    post (noun and verb)
    mail (noun and verb)
    postal code
    zip code
    postman
    mail carrier
    postponement
    raincheck
    pram (perambulator)
    baby carriage/baby buggy
    press studs
    snaps
    prison
    penitentiary
    public convenience (outdoors)
    rest room/toilet/ comfort station/ladies or men’s room
    public school/private school
    private schoo/
    pudding/dessert
    dessert
    purse
    change purse
    pushchair
    stroller
    put down/entered (goods bought)
    charged (goods bought)
    put through (telephone)
    connect (telephone)
    quay
    wharf/pier
    queue (noun)
    line (noun)
    queue (verb)
    stand in line/line up
    rasher (bacon)
    slice (bacon)
    reception (hotel)
    front desk (hotel)
    receptionist
    desk clerk
    removal van
    moving van
    return ticket
    round trip ticket
    reverse charges
    call collect
    reversing lights
    back-up lights
    ring up/phone
    call/phone
    road
    pavement
    robin (small red-breasted bird, symbol of Christmas)
    robin (large red-breastedbird, symbol of 1st day of spring)
    roof/hood
    top (car)
    roundabout/island (road)
    traffic circle
    rubber/india rubber
    eraser
    rubbish
    garbage/trash
    saloon car
    sedan
    scribbling pad/block
    scratch pad
    sellotape
    scotch tape/cellophane
    semi-detached
    duplex
    semolina
    cream of wheat
    service flats
    apartment hotel
    settee
    love seat
    settle up
    pay
    shop assistant
    sales clerk
    shopwalker
    floorwalker
    sideboard
    buffet
    sideboards
    sideburns
    silencer
    muffler
    single ticket
    one way ticket
    sitting room/lounge/ drawing room/living room
    living room
    skipping rope
    jump rope
    skirting board
    baseboard
    sledge/toboggan
    sled
    sleeping car
    pullman/sleeper
    smalls (washing)
    underwear (washing)
    sofa
    davenport/couch
    solicitor
    lawyer/attorney
    spanner
    monkeywrench/wrench
    spirits (drink)
    liquor
    spring onion (similar)
    scallion
    staff (academic)
    faculty
    stalls (theatre)
    orchestra seats
    stand (for public office)
    run (for public office)
    standard lamp
    floor lamp
    state school
    public school
    sticking plaster
    adhesive tape
    stone (fruit)
    pit (fruit)
    sultana
    raisin
    sump (car)
    oilpan (car)
    surgery (doctor’s/dentist’s)
    office (doctor's/dentist's)
    surgical spirit
    rubbing alcohol
    suspender belt
    garter belt
    suspenders
    garters
    swede
    rutabaga/turnip
    sweets/chocolate
    candy
    sweetshop/confectioner
    candy store
    Swiss roll
    jelly roll
    tadpole
    pollywog
    tap
    faucet
    tea trolley
    teacart
    teat (baby’s bottle)
    nipple (baby’s bottle)
    telegram
    wire
    term (academic -three in a year)
    semester (school-two in a year)
    tights
    pantie hose
    time-table
    schedule
    tin
    can
    tip (noun and verb)
    dump (noun & verb)
    toilet/cloakroom (indoors)
    restroom
    torch/flashlight
    flashlight
    traffic lights
    stop lights/traffic signals/stop signals
    trolley (shopping)
    shopping cart
    trousers/slacks
    pants/slacks
    truncheon
    nightstick
    trunk call
    long distance
    tube/underground
    subway
    turn-ups (trousers)
    cuffs (pants)
    unit trust
    mutual fund
    upper cirle
    first balcony
    valve (radio)
    tube
    van
    delivery truck
    vest
    undershirt
    visually position
    eyeball (verb)
    waistcoat
    vest
    wallet
    billfold
    wardrobe
    closet (hanging clothes)
    wash up
    dishes, do the
    wash your hands
    wash up
    washing up liquid
    dish detergent
    washing up powder
    laundry detergent
    wellies
    boots
    Welsh dresser
    hutch
    windcheater
    windbreaker
    windscreen
    windshield
    wing mirror
    rearview mirror
    wing/mudguard
    fender
    winker/indicator
    blinker (car)
    wonky
    broken/twisted
    Woolworths
    dime store/five and ten
    zebra crossing
    crosswalk
    zed (letter z)
    zee (letter z)

    previous
    Related Posts with Thumbnails