Monday, September 15, 2014

Learn the C / C++ Programming Languages

You may think to yourself,"Why C/C++ as a programming language?  There are so many other languages that are hot/cool/interesting, like Ruby or Python.  These languages are better tailored for my needs."  These are good reasons, but you still should learn C.

Compiling open source applications from source

Not every open source application has a binary package.  Quite a number of them still need compiling from source to work correctly.

Porting an application from BSD or Linux to _____

Unix is not just BSD or Linux, there are multiple other flavors:  OS X, Solaris,  AIX, and HP-UX to name a few.  If you are tasked with deploying network applications on these different Unix flavors, you will be using your C programming skills to port these applications from the source code.

Open source network operating systems

Quagga, Bird, Vyatta, XORP are open source network operating systems used by multiple companies.  These programs are in C/C++.  If you need to troubleshoot these applications, you are going to need to know C.  For example, you understand that a certain type of packet crashes your router.  By reading through the source code you discover the bug has to do with a heap allocator.

Software Defined Networks (SDN)

If SDN become a major part of networking, network engineers in the near future will have to know a programming language.   This person will need to have in-depth and wide knowledge of network engineering as well as knowing a C-like language to program the SDN controllers and related components.

Shout-outs

Thanks to Reddit's /r/networking users, ArghCisco and Snowbirdie, for indirectly helping me with this blog post.

Recommended Reading

The C Programming Language, 2nd Edition by Brian W. Kernighan et al.

C: How to Program, 7th Edition  by Paul Deitel et al.

2 comments:

  1. Very arguable.

    "Compiling open source applications from source"
    Running configure && make && make install doesn't require any programming skill at all.

    "Porting an application from BSD or Linux"
    That`s a job for C programmer, not network engineer.

    "Open source network operating system"
    Debugging these application is a job for C programmer, not network engineer.

    "Software Defined Networks"
    Will be managed via GUI or CLI, that will be written by C programmers for us.

    Network engineer will never need to write anything in C. It would be wiser to spend your precious time learning something you will actually need in your daily work, like routing protocols, binary math, subnetting etc.

    ReplyDelete
  2. > Running configure && make && make install doesn't require any programming skill at all.

    That is only if it works. You have to know C to get some applications working.

    > Will be managed via GUI or CLI, that will be written by C programmers for us.

    Forrester Research would disagree with you.

    http://www.riverbednews.com/2014/03/attention-network-engineers-your-future-will-be-automated/

    ReplyDelete