Introduction

This book covers a vast array of information related to packetC. It is a complete language reference and contains background information on many unique parts of packetC. As packetC shares much of its grammar with C, the book focuses on being an instructional language reference and not a general C programming introduction, since extensive texts exist on that topic. Focusing the unique aspects of packetC, this book explores many of the use cases that drove the new language features present in packetC. Throughout this book, you will find sections that will highlight why deviations were made for security, parallel-processing, or network rationales. While the book is instructional, chapters are organized in such a way that they can serve as a reference tool well beyond the initial learning of the language.

Scope

What this book doesn't cover:

  • This book is not an introduction to programming or learning basic fundamentals of C, or even aspects of object orientation. A programmer is expected to have used C or C++ and be well-versed in general computer science.
  • The concepts behind networking, network protocols, packets, and the way in which they work is a presumed skill-set of the reader. These are requisite to an understanding of the aspects of the language discussed in this book.
  • The basic concepts around parallel processing and how multi-core processing systems have evolved is presumed to be at least casually understood by packetC developers.
  • This is neither a tutorial on CloudShield systems nor how to use the CloudShield PacketWorks IDE that integrates the first packetC compiler and debuggers.
  • While some references to workflow in an IDE are made showing step-by-step how to create, compile, and load, these are confined to limited chapters focusing on examples aiding the developer with tool-chain aspects important to packetC. No specific references to a user manual or specific development environment releases are provided. In this way, we keep this book focused on the language and not a specific development environment release.
  • C99 defines many specific constraints of the C language. We presume that C99 can be referenced elsewhere and that the user is generally familiar with this modern variant of C. packetC Programming will address the deviations and stress unique points that differ between releases, but it will not focus on teaching it.
  • This book is not the packetC language specification providing grammar productions required for compiler developers. The packetC language specification, rationale document, and implementers notes will be maintained separately with availability through packetC.org as it is a living document. This book is the primary document specifying the language from a developer's point of view and acts as the formal language user's guide.
  • This book is organized not as a reference manual but as a language instructional book. Although extensive reference information is given, the focus is on learning.

What this book covers:

  • packetC and how to program applications in it
  • The computer science behind our approach to network and packet processing, along with which equipment and operating systems it helps accelerate
  • The computer science behind our approach to secure coding and presumptions of the equipment and operating systems that execute packetC programs
  • The parallel programming model of packetC and how computer science mechanisms such as Inter-Process Communications and Symmetric Multi-Processing are implemented and simplified for packetC developers
  • Grammar deviations from C99 and unique aspects of packetC
  • The compilation framework surrounding packetC packet, library, and shared modules
  • How to leverage existing C code and applicability of C standard libraries
  • The concept of Open Source for data plane applications operating within the network using packetC
  • Where to go to learn more about packetC

Organization

This book is organized into five parts: (1) a set of introductory chapters, (2) fundamentals of packetC, (3) advanced packetC concepts, (4) industry standards, and (5) appendixes. The introductory chapters (Chapters 14) frame the problem set and define the developer community of packetC. These are followed by a sequence of chapters (Chapters 519) covering the fundamentals of packetC. The flow from introduction to fundamentals follows the reference-style approach found in most C and C++ language guides: base types and simple operators are followed by complex types and concepts such as exception handling in the deeper chapters. Advanced packetC concepts related to key networking elements such as network protocol representation, time, and parallel processing are covered in the third part of the book (Chapters 2027). Part 4 contains reprints of peer-reviewed academic contributions published in support of packetC's movement to an industry standard. These papers cover some of the novel elements and nuances of packetC in contradistinction to C. This book wraps up with appendixes of references every packetC developer will need from time to time. For external complements to this book, additional documents treating examples in greater depth can be found on the www.packetC.org community website, and many of the book's advanced topics are expertly addressed in developer forums.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.128.226.255