Site Contents

Intro & News

E-mail Contact

RSS 2.0 Feed

Development

Developer Books

Developer Links

Developer Tools

Microsoft Links

Check .NET Version

Comment Reflower

NDoc 2.0 Alpha

Region Tools

Struct Performance

WPF Performance

Weird .NET Issues

Miscellaneous

Structured Documents

FrameMaker & DITA

Windows & High DPI

Other Links

Other Software

Subscriptions

Projects

Tektosyne

Class Diagrammer

Hexkit

Star Chess

Civilization IV

Civilization V


Developer Links

This page contains links to reference information, articles, libraries, and sample code on all kinds of programming subjects. Please see Developer Books for book reviews and Developer Tools for free and commercial software.

  • The American National Standards Institute (ANSI) is no longer the sole maintainer of standards on programming languages (the standards are now officially set by ISO in Switzerland) but it’s the best place to get language standards online. Downloadable PDF versions of the C 99 (document 9899-1999) and C++ 2003 (document 14882-2003) standards can be bought for a measly $30 apiece, as opposed to the CHF 106–352 that ISO demands for the exact same documents! People with too much money can get the overpriced editions from ANSI, too: just use 9899:1999 and 14882:2003 as the document numbers (note the use of colons instead of hyphens).

    Unfortunately, the new C 11 (document 9899:2011) and C++ 11 (document 14882:2011) standards are currently only available in the “colon edition” on both stores, for a whopping USD 387–403 or CHF 338–352. I’ll update this entry if cheaper ANSI versions become available. Meanwhile, Open Standards provides free downloads of the final public drafts, C 11 N1539 and C++ 11 N3242.

  • The Art of Assembly Language teaches the ins and outs of an almost forgotten programming language, including Win32 programming in assembler. Also check out Steve Gibson’s Windows in Assembler page, and the MASM download links on the Microsoft Links page.
  • CodeProject is mostly a huge mess of unedited contributions of dubious quality. Three articles by Wesner Moise stand out: Arrays Undocumented, Pointers Undocumented, and Strings Undocumented describe the inner workings and the run-time performance of these fundamental data types in amazing detail.
  • The developer.* magazine hosts a fascinating essay by Jack W. Reeves, Code as Design. The original 1992 essay was either ignored or misunderstood, so Reeves attempted to clarify his views again in 2005. Both articles and Reeves’ original letter are available as a single PDF download, and I encourage every developer to read them.
  • The European Computer Manufacturers Association (ECMA) in Switzerland maintains the standards for a variety of programming languages and APIs. All documents are available as free downloads in Adobe PDF format. Here are some interesting picks from the Standards Index:
  • Floating point arithmetic continues to befuddle unwary programmers. Lahey Computer Systems hosts a concise yet comprehensive introductory essay by Bruce M. Bush, entitled The Perils of Floating Point. A much longer and very detailed treatise is available as a part of Sun Microsystems’ Numerical Computation Guide, namely What Every Computer Scientist Should Know About Floating-Point Arithmetic by David Goldberg (PDF version). – Fortran programmers should also check out Lahey’s Fortran Resources page.
  • The MVP Help Technology Centre and The Helpware Group each provide a large repository of tools and information for the various Microsoft Windows help file formats, including the current HTML Help technology.
  • HTML Help by the Web Design Group (WDG) is unrelated to Microsoft’s eponymous help file format. The site offers tips & tutorials, reference documents, and free tools for website authors, including the WDG HTML Validator that can process individual pages or an entire site.
  • InstallSite covers the world of Windows installers, ranging from product reviews to discussion forums and usage tips.
  • Intel’s Processor Manuals are available for free download as PDF documents, including a three-volume reference to the Intel 64 and IA-32 architectures with a complete instruction set reference and optimization hints.
  • NASA has placed a variety of software projects in an open source repository. Most are mere curiosities for people who aren’t launching spacecraft, but there are also some data processing packages of more general interest.
  • The Open Source Initiative (OSI) offers a lot of propaganda material for their cause, but also the text of many open source licenses, including (L)GPL, BSD, and MIT. Pick one you like for your own software distribution!
  • Performance optimizations are often neglected due to a widespread misinterpretation of the old adage that “premature optimization is the root of all evil.” The result is the notorious infestation of modern desktop systems with sluggish bloatware. Randall Hyde’s The Fallacy of Premature Optimization and Joe Duffy’s The 'premature optimization is evil' myth deconstruct the myth and restore optimization to its rightful place in software design.

    Also check out Duffy’s follow-up post, Dense, and pointer-free, on the little-known performance benefits of simple arrays over pointer structures.

  • Fortran specialist Polyhedron maintains a comparison database covering Fortran compilers for Windows and Linux. Language support, diagnostic capabilities, third-party support, and execution benchmarks for all available compilers are listed. Make sure to check this site when you’re thinking about purchasing a Fortran compiler.
  • Portable Network Graphics (PNG) is a universal graphics file format based on the royalty-free LZ77 compression algorithm (also used in ZIP), which is why it can offer excellent compression rates (unlike RLE-based formats such as PCX) without requiring licensing payments (like LZW-based formats such as GIF). PNG supports any color depth known to man and is by no means restricted to “networks”. The official website offers not only complete, up-to-date format specifications but also free developer libraries (in C) to read and write PNG files.
  • Random number generation can be problematic when the generated numbers aren’t quite so random after all. If you are using a generator with a small native range, such as Microsoft’s C/C++ rand() library function, your range projection method could be the culprit. The usual modulo and division methods are both guaranteed to miss or over-emphasize many values for certain target ranges.

    I’ve written a small test program (59 KB) comparing modulo/division against a bucketing algorithm that retains the generator’s distribution quality, and against two generators which are fairly immune to these problems due to their large native range: the Mersenne Twister and the System.Random class of the .NET Framework.

  • C# MVP Jon Skeet has published a large number of valuable articles on potentially thorny .NET issues, from floating-point arithmetic and Unicode handling to type constructors and parameter passing. More articles can be found on the companion website for his recent (and excellent) book, C# in Depth.
  • The Unicode Consortium maintains the eponymous character code standard. Available resources include downloadable PDF code charts, the offline Unibook character browser, and an extensive FAQ collection. – Also check out Jon Skeet’s Unicode and .NET tutorial.
  • Wotsit.org: The Programmer’s File and Data Format Resource hosts snippets of unedited information on a myriad of file format specifications. No guarantees are made but it’s worth a try if you’re confronted with an obscure piece of data.

This page was last updated on 08 January 2012.
Current version available at http://www.kynosarges.org/