Tech Focus: Remembering Dennis Ritchie
Dennis Ritchie, Father of C, dies
Dennis Ritchie, trailblazer in digital era, dies at 70
Last week two giants of the computing industry died within a few days of one another after long illnesses – Dennis Ritchie and Steve Jobs. Under Jobs' driven and focused leadership at Apple, his company changed the face of personal computing, portable entertainment, and mobile phones.
Working quietly and collaboratively at Bell Labs for most of his life, Ritchie was the creator of the C language (with Brian Kernighan) and co-developer ofUNIX – the building blocks by which Jobs' engineers and more generally embedded systems developers are able to build today's pervasively connected computing devices.
As some of the design articles and columns included here indicate, using C effectively requires a lot of care and feeding on the part of the programmer. But, as the many projects in which it has been used will attest, the effort is worth it. When using C or thinking of moving on to another language, programmers should remember what Ritchie himself said: “C is quirky, flawed, and an enormous success. ” And what he said about UNIX might also equally apply to the C language: “UNIX is very simple, it just needs a genius to understand its simplicity .”
Dennis Ritchie's legacy may not end with these contributions. Still to be evaluated will be the impact of the last major projects with which he was involved: The Plan9/Inferno Distributed OS and the Limbo distributed programming language . Tellingly, one company that has paid close attention to everything developed by the team he worked with at Bell Labs is Google. Its new Go programming language draws upon both C and Limbo and is designed for use in today's distributed computing environment.
Adopting C programming conventions
This ESC paper discusses some common problems found in a lot of code and suggests strategies for avoiding them.
Energy efficient C code for ARM devices
Here is an overview of some of the techniques for optimizing C-code for use on the ARM architecture. (Paper from ARM TechCon 2010.)
Tips for efficient embedded code generation
An understanding of the practical compiler optimizations allows the developer to write the most efficient code, and to know where to focus his time in improving the his product's performance. Following are a number of coding examples and tips for efficient code generation on compilers.
How to analyze C-code for parallelization
Computer scientists and engineers have understood for a long time – almost from the inception of computer science as a discipline – that a possible route to accelerating the execution of a computational task is to exploit the parallelism inherent in its program flow.
Doing C-code generation better: from graphical code to embedded target
How to use high-level design tools and their C-code generation capabilities to improve the design flow by exploring different use cases and how to reduce the expertise required to program embedded targets.
Doing C code unit testing on a shoestring: Part 1- The basics and the tools
In a three part article, Ark Khasin describes a new way to use the pre-processor in your standards-compliant C compiler for unit testing for safety specs such as IEC 61508. First up: unit testing requirements and what you will need.
Expressive vs. permissive languages: Is that the question?
The ease with which code is analyzable depends of the language type you use
Optimizing C programs for embedded SoC applications
Dror Maydan and Steve Leibson provides some guidelines for optimizing C programs in embedded SoC applications using compiler code optimizing efficiency and source code programming styles.
What's the cheapest way to get rid of bugs? Inspect code early and often.
Seventeen steps to safer C code
Here are 17 tips for writing safety-critical C code using methods adapted from C++ and Ada.
Six Rules for Writing Clean Code
What constitutes an effective coding style? Here are six general rules for writing clean code that will help you steer clear of the problems that poor coding style creates.
Tutorial: Achieve reliable embedded code with MISRA C
No software engineering process can guarantee reliable code, but following the right coding guidelines can dramatically reduce the number of errors in your code.
How to Reduce Code Size (and Memory Cost) Without Sacrificing Performance
Through an iterative process of building application code using different compiler optimization options and profiling the result, developers can hone in and identify infrequently used and non-critical sections of code to trade off performance where it matters least for reduced code size, providing minimal impact on system performance.
Designing hardware with C-based languages
With increasing design complexity and shortening time-to-market, hardware designers have sought to use higher levels of abstraction for both verification and design. For many hardware engineers, C-based languages (C/C++ or SystemC) have become a means to specify designs for verification, in addition to offering a starting point for implementation.
Embedded Systems Bookshelf
Embedded Books Reading Room
Bernard Cole's favorite links to book excerpts.
Airport fiction blows. A look at books other engineers are reading and why you should read them, too. Recommend and write a review yourself. E-mail Brian Fuller.
Jack Ganssle's Bookshelf
A list of book reviews by Jack Ganssle, contributing technical editor of Embedded Systems Design and Embedded.com.
Max's Cool Beans
Clive “Max” Maxfield, the editor on Programmable Logic DesignLine, often writes about interesting books.
Mentor's new Sourcery CodeBench IDE is based on GNU toolchain
Sourcery CodeBench from Mentor Graphics Corporation is a next-generation integrated development environment (IDE) based on the open source GNU toolchain.
J-Link Ultra debug probe for ARM Cortex enables power debugging
The J-Link Ultra debug probe from IAR Systems supports power debugging within IAR Embedded Workbench and is designed for use with ARM Cortex devices.
SOFTWARE TOOLS: ULINKpro provides debug and trace for Cortex-M3 MCUs
Keil has released of the ULINKpro debug and trace unit, which introduces support for ETM Instruction Trace on Cortex-M3 microcontroller devices.
Software tool suite simplifies source-code analysis
Klocwork Insight Pro increases productivity for the Agile software developer.
Cloud tools automate sequential C code analysis for multi-threading
A cloud-based tool for parallelizing sequential C code has been developed by Vector Fabrics BV (Eindhoven, The Netherlands).