Programming Langauge choices for SDN

Inspired by a recent post by @etherealmind, I’ve been thinking about the pros and cons of learning different programming languages, and what would be best suited for SDN.

C

Pros:  The standard when it comes to sockets and “hard core” network programming.  

Cons:  Pointers, memory allocation, and a tendency (for me at least) to build monolithic code.

APIs/Frameworks of interest:  onePK

Java

Pros:  Widespread use, and lots of libraries for doing things.  Cross-platform.  OpenDaylight uses it.

Cons:  Requires a lot of “cruft” to do simple things.  

APIs/Frameworks of interest:  onePK, Spring, OSGI, OpenDaylight

Python

Pros:  Great high level language, lots of libraries, used by many projects like POX

Cons:  Less useful for OpenDaylight stuff

APIs/Frameworks of interest:  onePK, Django, OpenStack (added 2013-25-04)

Ruby

Pros:  Another nice high level language, Rails, used in Chef/Puppet, seems to work well for building DSLs

Cons:  Less useful for OpenDaylight and onePK

APIs/Frameworks of interest:  Chef, Puppet, Rails

Javascript/Coffeescript/Node.js

Pros:  Widespread use in web programming.  Node.js allows for server side stuff to be build and is fast due to V8.  Node.js encourages event-driven programming which may map well to network stuff.  

Cons:  “Different” syntax (which gets somewhat fixed by Coffeescript)

APIs/Frameworks of interest:  Express

Scala

Pros:  A functional language that runs on JVM, interop with Java, “cleaner” than Java

Cons:  Not as widespread use.  

APIs/Frameworks of interest:  Lift

Clojure/Clojurescript

Pros:  Like Scala, is a functional language for the JVM.  Can use Java libraries.  It’s a LISP (this can be good or bad depending on your point of view).  Clojurescript allows you to also write Javascript code in Clojure.

Cons:  Doesn’t seem to work well with OSGI.  Smaller user base.

APIs/Frameworks of interest:  Compojure

Its tough to find one language that does everything I want, with minimal fuss.  At first glance it seems like Java can do everything, with Python as a close second.  I’m interested in the JVM functional languages such as Clojure and Scala, but it may be tough to get help with problems when using those languages.  What I’ll probably end up doing is use Python when I can, then drop to Java when necessary.  Am I missing anything?  Feedback is welcome!

Advertisements

3 thoughts on “Programming Langauge choices for SDN

  1. Tulisan ini sekali diperlukan oleh para muslim.

    Sebab baju adalah kebutuhan pokok yang melekat pada kehidupan kita.
    Seluruh muslim niscaya mau terlihat menarik.
    Dan cara yang tersering dilakukan adalah dengan memperhatikan pakaian kita.
    Sebagai seorang muslim, ada kaidah – kaidah pokok yang harus
    dipenuhi ketika memilih baju kita. Sebab dengan busana yang benar, kita tidak saja tampil menawan, tapi juga memperoleh balasan pahala.

    Toko online Baju Muslim Murah akan menolong Sis supaya memperoleh baju muslim
    yang tepat.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s