Softwaring in Clojure

With Yoav Rubin

Abstract: Clojure is a modern dialect of Lisp with strong emphasis on practicality and simplicity that is hosted on the most commonly used platforms, namely the JVM, CLR and Javascript engines.

As such, Clojure can be incorporated into real world software projects with minimal friction and allow developers to add functional components to non-functional software. Basically, Clojure is a language that supports not just programming, but also softwaring.

In this talk we'll have a bird's eye view of Clojure and then explore several key features that provide its 'softwaring' capability:

  1. Interaction with other components and especially Java interop
  2. Managing the territory allocated for the Clojure component with Clojure's namespace system
  3. Being part of a deployable software - Clojure's testing facilities as well as  design-by-contract using pre/post conditions to functions.

Speaker bio:

Yoav Rubin is a software engineer in IBM Research - Haifa, with interest ranging from Java and web technologies through programming paradigms all the way to neuroscience and laser microscopy. During fall semester, 2011, Yoav lectured the course "Functional Programming on the JVM" in Haifa University.

Join or login to comment.

  • Yardena

    The video is now up: https://vimeo.com/45860532

    July 17, 2012

  • Ronen N.

    I would suggest using google group for discussions, this comment system isn't suitable for long text sections

    June 14, 2012

  • Ronen N.

    I would say that Clojure way of thinking made them possible in the first place,
    Clojure is much more powerful then Java and has better facilities for powerful abstractions, as for performance, Clojure was designed with performance in mind there is some penalty but nothing that can't be solved, Also Clojure isn't academic at all, its industry ready all the way

    June 14, 2012

  • Matan S.

    Hi Ronen, thanks for the links! these projects are actually interesting also regardless of Clojure. Would you say that they could not emerge so quickly without an efficient language like Clojure? Would you say that Clojure projects are somewhat easier to evolve than say Java, as Clojure is less-limited? Is there a performance penalty, or a penalty when interfacing with non-academic aspects like IO, Network, database calls, compared to just Java?

    June 14, 2012

  • Boris F.

    very nice overview of clojure

    June 14, 2012

  • Ronen N.

    There are two humble OOS project that iv published:

    https://github.com/narkisr/couch-fuse couchdb fuse fs

    https://github.com/narkisr/gelfino gelf log processing

    June 14, 2012

  • Ronen N.

    Yoav managed to spark interest and keep the talk fun and approachable

    June 14, 2012

  • Ronen N.

    * http://incanter.org/ R like environment

    June 14, 2012

  • Ronen N.

    Saf, I think that Clojure shines for:
    * Processing unstructured data (think processing a steam of json data, filtering aggregating etc..).
    * DSL's you have macros at your disposal you can create your own constructs
    * Concurrent code, like processing events from external systems
    There a lot of cool projects to look at:
    * https://github.com/nathanmarz/cascalog a datalog query language over hadoop
    * https://github.com/nathanmarz/storm "real time" event processing on large scale.

    June 14, 2012

  • Dotan N.

    Let's agree to disagree and resolve this tomorrow at the office :)

    June 13, 2012

  • David G.

    Dotan, scala has no ceremony. sbt is just immature . use maven and have fun

    June 13, 2012

  • Dotan N.

    For me, yes. Its extremely less ceremony than using Java and Scala, type hinting makes it more attractive than JRuby on occasions. I'm also using a little of the many concurrency constructs it offers.

    June 13, 2012

  • Matan S.

    Thanks Dotan,
    Would it be a safe interpretation saying that you mainly currently use Clojure wherever you want to create logic on top existing JVM libraries (glue) and then it's just more useful than Java?

    June 13, 2012

  • Dotan N.

    Matanster, I used Clojure where I needed a glue language between Java libraries. The fact that the developer experience (lein) was great helped tremendously, and it was much less taxying on the brain than Scala (SBT). LOC was very small, as described in the article you've linked. I now tend to use Clojure where ever I need this kind of glue capability, concurrency and static JVM typing. For other JVM uses I would use JRuby.

    June 13, 2012

  • Matan S.

    Hi Yoav, I had to leave early (didn't figure we'll start late).
    Could you relate to #3 in your initial writing above.... what testing facilities? All I saw was the ability to write 'test functions' just like you'd have unit tests in Java. Did I miss something more?

    Thanks!

    June 13, 2012

  • Matan S.

    Nice short article and comment trail - http://agile.dzone.com/news/one-night-clojure-makes-scala, I found it related in a high-level sense. Anyone who wrote Clojure software care to write about real-life decisions in which parts of your system you implemented in Clojure and which not??

    June 13, 2012

  • uri g.

    would nice to see recording/presentation...

    June 13, 2012

  • Nadav W.

    Hi all,
    At reception, tell you're here for Sayeret Lambda. They might want to call me to come pick you up for the first few arrivals (contact me at[masked] if there's a problem).
    The event will take place on the 3rd floor.
    After you exit the elevator, turn right and right again -- we'll be in the conference room.

    June 13, 2012

  • Matan S.

    Now I'm really looking forward... thanks guys

    May 18, 2012

  • Zvi A.

    Soft-wiring in Clojure ;)
    You wire functions to namespaces, data structures and to each other

    May 17, 2012

  • Yoav R.

    Actually, as I see it, all three of these items are needed to have "softwaring" capabilities. Moreover, I tried to order them by importance, E.g, for me, the most crucial aspect of softwaring is the ability to seemlessly integrate with other components in a way that supports bi-directional interaction (#1 above).
    I prefer not to compare to other languages, as this is more of a talk about Clojure, and less about softwaring (though I will be happy to hear how to do softwaring in other languages)

    May 17, 2012

  • Dotan N.

    Matanster, what are you asking exactly?

    May 17, 2012

  • Matan S.

    Could you answer or relate to some of that prior to the meetup already?

    May 17, 2012

  • Matan S.

    Ok, got it. Honestly I had believed any large piece of software has gone (or should have gone:) softwaring not just writing disparate components... how deep does it go explaining why Clojure lends itself to softwaring more than say, Java or Scala? or does it? is it only in the testing facilities (#3 above)? Is Clojure only nifty, aesthetic, compact or does it really at large enable higher level softwaring?

    May 17, 2012

  • Matan S.

    Softwaring?
    (newbe)

    May 16, 2012

People in this
Meetup are also in:

Create a Meetup Group and meet new people

Get started Learn more
Allison

Meetup has allowed me to meet people I wouldn't have met naturally - they're totally different than me.

Allison, started Women's Adventure Travel

Sign up

Meetup members, Log in

By clicking "Sign up" or "Sign up using Facebook", you confirm that you accept our Terms of Service & Privacy Policy