[j-nsp] MX104 capabilities question

Phil Mayers p.mayers at imperial.ac.uk
Thu Jul 7 03:59:53 EDT 2016


On 07/07/16 02:21, Gavin Henry wrote:

> That last sentence is quite a sweeping statement about C.

The underlying basis for the statement - C is a hard language to program 
well - is not at this point a controversial one, IMHO.

> You can make great software in any language. I think this argument is
> false.

I think the argument has a lot going for it.

C is a difficult language to use well; even developers with decades of 
experience get caught out by the subtleties of things like pointer 
aliasing and integer behaviour. There's a huge research effort by smart 
people to improve that situation - as an example, things like ubsan in 
Clang to detect and warn on use of undefined behaviour. John Regehr's 
blog is a good read on the topic of how gnarly C can be, for those 
interested.

I think it's totally reasonable to argue that other languages can fit a 
problem set better than C, can reduce the cognitive load on the 
developer, and can prove more amenable to things like static analysis 
and automated testing.

Other languages could include, here, a restricted subset of C with 
least-surprise behaviours. But TBH, given the focus on multicore, I 
think a language with better support for concurrency would be a more 
appropriate choice (Erlang was mentioned; it's a shame that never took 
off, it's really ideally suited for the task of network protocol speaker).

Developers are people, and recognising the human limits of the process 
is important. Frankly, I would agree with the notion that C is a very 
poor choice for almost anything outside hardware-level work (kernel, 
driver) these days, simply because CPU is cheap, and human cognition 
expensive, and higher level languages trade costs in former for savings 
in the latter.

Cheers,
Phil


More information about the juniper-nsp mailing list