Another Word For It Patrick Durusau on Topic Maps and Semantic Diversity

April 18, 2014

Learn Clojure…

Filed under: Clojure,Functional Programming,Programming — Patrick Durusau @ 4:01 pm

Learn Clojure – Clojure Koans Walkthrough in Light Table IDE

You have heard of Clojure and no doubt the Clojure Koans.

Now there are videos solving the Clojure Koans using the Light Table IDE.

I first saw this at Clojure Koans by Christopher Bare.

April 16, 2014

Hitchhiker’s Guide to Clojure

Filed under: Clojure,Functional Programming,Humor,Programming — Patrick Durusau @ 8:31 pm

Hitchhiker’s Guide to Clojure

From the webpage:

The following is a cautionary example of the unpredictable combination of Clojure, a marathon viewing of the BBC’s series “The Hitchhiker’s Guide to the Galaxy”, and a questionable amount of cheese.

There have been many tourism guides to the Clojure programming language. Some that easily come to mind for their intellectual erudition and prose are “The Joy of Touring Clojure”, “Touring Clojure”, “Clojure Touring”, and the newest edition of “Touring Clojure Touring”. However, none has surpassed the wild popularity of “The Hitchhiker’s Guide to Clojure”. It has sold over 500 million copies and has been on the “BigInt’s Board of Programming Language Tourism” for the past 15 years. While, arguably, it lacked the in-depth coverage of the other guides, it made up for it in useful practical tips, such as what to do if you find a nil in your pistachio. Most of all, the cover had the following words printed in very large letters: Don’t Worry About the Parens.

To tell the story of the book, it is best to tell the story of two people whose lives were affected by it: Amy Denn, one of the last remaining Pascal developers in Cincinnati, and Frank Pecan, a time traveler, guidebook researcher, and friend of Amy.

There isn’t any rule (that I’m aware of) that says computer texts must be written to be unfunny.

I think my only complaint is that the story is too short. 😉

Enjoy!

April 15, 2014

Erik Meijer – Haskell – MOOC

Filed under: Functional Programming,Haskell — Patrick Durusau @ 7:46 am

Erik Meijer tweeted:

Your opportunity to influence my upcoming #Haskell MOOC on EdX. Submit pull requests on the contents here: https://github.com/fptudelft/MOOC-Course-Description

What are your suggestions?

April 10, 2014

Using Datomic as a Graph Database

Filed under: Clojure,Datomic,Functional Programming,Graphs — Patrick Durusau @ 6:32 pm

Using Datomic as a Graph Database by Joshua Davey.

From the post:

Datomic is a database that changes the way that you think about databases. It also happens to be effective at modeling graph data and was a great fit for performing graph traversal in a recent project I built.

I started out building kevinbacon.us using Neo4j, a popular open-source graph database. It worked very well for actors that were a few hops away, but finding paths between actors with more than 5 hops proved problematic. The cypher query language gave me little visibility into the graph algorithms actually being executed. I wanted more.

Despite not being explicitly labeled as such, Datomic proved to be an effective graph database. Its ability to arbitrarily traverse datoms, when paired with the appropriate graph searching algorithm, solved my problem elegantly. This technique ended up being fast as well.

Quick aside: this post assumes a cursory understanding of Datomic. I won’t cover the basics, but the official tutorial will help you get started.
….

If you are interested in Datomic, Clojure, functional programming, or graphs, this is a must read for you.

Not to spoil any surprises but Joshua ends up with excellent performance.

I first saw this in a tweet by Atabey Kaygun.

April 9, 2014

BumbleBee, a tool for spreadsheet formula transformations

Filed under: Excel,Functional Programming,Programming,Spreadsheets — Patrick Durusau @ 4:13 pm

BumbleBee, a tool for spreadsheet formula transformations by Felienne Hermans.

From the webpage:

Some spreadsheets can be improved

While looking at spreadsheet and how they are used, over the past years I have noticed that many users don’t make their spreadsheets as easy as they could be. For instance, they use A1+A2+A3+A4+A5 instead of the simpler SUM(A1:A5) Sometimes because they are unaware of a simpler construct, or because the spreadsheet evolved over time. For instance, in used to be A1+A2, then A3 was added and so forth. Such complex formulas were exactly the aim of our previous work on smell detection.

If you say smell, you say… refactorings!

So in order to improve spreadsheets, we and other researchers have developed a number of refactorings to improve spreadsheet formulas. Over the last few months, I have been working on BumbleBee, a tool to perform not only refactorings, but more general transformations on spreadsheet formulas.

Update on her work on refactoring spreadsheets, along with a BumbleBee paper preprint, along with an installer for Excel 2010.

Imagine, going where users are using data.

This could prove to be explosively popular.

Glasgow Haskell Compiler — version 7.8.1

Filed under: Functional Programming,Haskell — Patrick Durusau @ 2:17 pm

The (Interactive) Glasgow Haskell Compiler — version 7.8.1

From the announcement:

The GHC Team is pleased to announce a new major release of GHC. There
have been a number of significant changes since the last major release,
including:

  • New type-system features
    • Closed type families
    • Role checking
    • An improved solver for type naturals
  • Better support for cross compilation
  • Full iOS support
  • Massive scalability improvements to the I/O manager
  • Dynamic linking for GHCi
  • Several language improvements
    • Pattern synonyms
    • Overloaded list syntax
    • Kind-polymorphic ‘Typeable’ class
  • A new parallel –make mode
  • Preliminary SIMD intrinsic support
  • A brand-new low level code generator
  • Many bugfixes and other performance improvements.

The full release notes are here:

http://haskell.org/ghc/docs/7.8.1/html/users_guide/release-7-8-1.html

Other links:

http://www.haskell.org/ghc/ Downloads.

http://www.haskell.org/ Haskell homepage

April has gotten off to a good start, now wondering what else is coming in April?

Erlang OTP 17.0 Released!

Filed under: Erlang,Functional Programming — Patrick Durusau @ 2:00 pm

Erlang OTP 17.0 has been released

From the news release:

Erlang/OTP 17.0 is a new major release with new features, characteristics improvements, as well as some minor incompatibilities. See the README file and the documentation for more details.

Among other things, the README file reports:

OTP-11719

The default encoding of Erlang files has been changed from ISO-8859-1 to UTF-8.

The encoding of XML files has also been changed to UTF-8.

A reminder that supporting UTF-8 as UTF-8 is greatly preferred.

Learning Lisp With C

Filed under: C/C++,Functional Programming,Lisp,Programming — Patrick Durusau @ 12:53 pm

Build Your Own Lisp by Daniel Holden.

From the webpage:

If you’re looking to learn C, or you’ve ever wondered how to build your own programming language, this is the book for you.

In just a few lines of code, I’ll teach you how to effectively use C, and what it takes to start building your own language.

Along the way we’ll learn about the weird and wonderful nature of Lisps, and what really makes a programming language. By building a real world C program we’ll learn implicit things that conventional books cannot teach. How to develop a project, how to make life easy for your users, and how to write beautiful code.

This book is free to read online. Get started now!

Read Online!

This looks interesting and useful.

Enjoy!

April 1, 2014

Functional programming books overview

Filed under: Books,Functional Programming — Patrick Durusau @ 4:20 pm

Functional programming books overview by Alex Ott.

From the webpage:

The first variant of this article was published in the first issue of Russian magazine "Practice of functional programming", but I decided to continue to maintain it, as more books were released (Russian version of this article also includes description of books published in Russian). You can leave comments and suggestions in the comment widget on this page, or send them to me via e-mail (Updates to this page usually happening not so often — every 2-3 months).

Descriptions for the books are relatively short — just to give an overview of the book’s topics, otherwise this article will become too big. For some of books there are more detailed reviews published in my blog. You can also follow my reviews on Goodreads.

If you will order some of these books, please (if possible), use links from this page — this allows me to buy new books and add them to review.

If your bookshelf isn’t already bulging with functional programming books or if you want to test its limits, this is a very good site to visit and to recommend others visit.

The listing here is more than enough for holidays and birthdays into the foreseeable future.

March 27, 2014

LVars:…

LVars: Lattice-based Data Structures for Deterministic Parallel and Distributed Programming by Lindsey Kuper.

At 144 slides and no sound, you probably need to pick up some background to really appreciate the slides.

I would start with: A ten-minute talk about my research, continue with later post under LVars and then onto:

LVars project repo: http://github.com/iu-parfunc/lvars

Code from this talk: http://github.com/lkuper/lvar-examples

Research blog: http://composition.al

Take up the slides when you feel comfortable with the nomenclature and basic concepts.

March 25, 2014

Is Parallel Programming Hard,…

Filed under: Clojure,Erlang,Functional Programming,Parallelism,Programming — Patrick Durusau @ 8:08 pm

Is Parallel Programming Hard, And, If So, What Can You Do About It? by Paul E. McKenney.

From Chapter 1 How To Use This Book:

The purpose of this book is to help you understand how to program shared-memory parallel machines without risking your sanity.[1] By describing the algorithms and designs that have worked well in the past, we hope to help you avoid at least some of the pitfalls that have beset parallel-programming projects. But you should think of this book as a foundation on which to build, rather than as a completed cathedral. Your mission, if you choose to accept, is to help make further progress in the exciting field of parallel programming—progress that should in time render this book obsolete. Parallel programming is not as hard as some say, and we hope that this book makes your parallel-programming projects easier and more fun.

In short, where parallel programming once focused on science, research, and grand-challenge projects, it is quickly becoming an engineering discipline. We therefore examine the specific tasks required for parallel programming and describe how they may be most effectively handled. In some surprisingly common special cases, they can even be automated.

This book is written in the hope that presenting the engineering discipline underlying successful parallel-programming projects will free a new generation of parallel hackers from the need to slowly and painstakingly reinvent old wheels, enabling them to instead focus their energy and creativity on new frontiers. We sincerely hope that parallel programming brings you at least as much fun, excitement, and challenge that it has brought to us!

I should not have been surprised by:

16.4 Functional Programming for Parallelism

When I took my first-ever functional-programming class in the early 1980s, the professor asserted that the side- effect-free functional-programming style was well-suited to trivial parallelization and analysis. Thirty years later, this assertion remains, but mainstream production use of parallel functional languages is minimal, a state of affairs that might well stem from this professor’s additional assertion that programs should neither maintain state nor do I/O. There is niche use of functional languages such as Erlang, and multithreaded support has been added to several other functional languages, but mainstream production usage remains the province of procedural languages such as C, C++, Java, and FORTRAN (usually augmented with OpenMP or MPI).

The state of software vulnerability is testimony enough to the predominance of C, C++, and Java.

I’m not real sure I would characterize Erlang as a “niche” language. Niche languages aren’t often found running telecommunications networks, or at least that is my impression.

I would take McKenney’s comments as a challenge to use functional languages such as Clojure and Erlang to make in-roads into mainstream production.

While you use this work to learn the procedural approach to parallelism, you can be building contrasts to a functional one.

I first saw this in Nat Torkington’s Four short links: 13 March 2014.

March 20, 2014

Clojure Cookbook has arrived!

Filed under: Clojure,Functional Programming,Programming — Patrick Durusau @ 8:52 pm

Clojure Cookbook has arrived

clojure cookbook

From the webpage:

Over the past year, the Clojure community came together to write a wondrous tome chock full of their collective knowledge. At over 70 contributors, 1600 commits and nearly 200 recipes, this is something special, folks.

Clojure’s very own crowd-sourced cookbook, Clojure Cookbook, is available now.

The author’s are accepting pull requests at: https://github.com/clojure-cookbook/clojure-cookbook.

Must be already planning on a second edition! 😉

Don’t be shy!

Enjoy!

March 5, 2014

F#

Filed under: F#,Functional Programming,Programming — Patrick Durusau @ 5:32 pm

Microsoft-backed F# language surges in popularity by Paul Krill.

From the post:

The Microsoft-backed F# functional programming language is gaining traction, with the platform showing a meteoric year-over-year rise on the Tiobe Programming Community Index gauging language popularity.

Ranked 69th on the index a year ago, F# has risen to the 12th spot in this month’s rankings, with a 1.216 percent rating. As the index headline notes, “F# is on its way to the Top 10.”

Microsoft Research’s F# page says the language is object-oriented and enables developers to write simple code to solve complex problems. “This simple and pragmatic language has particular strengths in data-oriented programming, parallel I/O programming, parallel CPU programming, scripting, and algorithmic development,” Microsoft said. F# originated at Microsoft Research; the F# Software Foundation has been formed to advance the language. The Microsoft Cloud Platform Tools group technically is in charge of F#.

F# Software Foundation. Did you know that F# has an open source license? Just an observation.

You can check the Tiobe Index.

Any topic map software in F#?

March 4, 2014

Classic papers on functional languages

Filed under: Functional Programming,Programming — Patrick Durusau @ 1:08 pm

Classic papers on functional languages by Kwang Yul Seo.

An interesting collection of five (5) classic functional programming papers that don’t duplicate the list by Jim Duey here.

BTW, you may want to follow http://kwangyulseo.com/ if you are interested in functional programming.

March 3, 2014

CQRS with Erlang

Filed under: Erlang,Functional Programming — Patrick Durusau @ 7:47 pm

CQRS with Erlang by Bryan Hunter.

Summary:

Bryan Hunter introduces CQRS and one of its implementations done in Erlang, outlining the areas where Erlang shines.

You will probably enjoy this presentation more after reading: Introduction to CQRS by Kanasz Robert, which reads in part:

CQRS means Command Query Responsibility Segregation. Many people think that CQRS is an entire architecture, but they are wrong. CQRS is just a small pattern. This pattern was first introduced by Greg Young and Udi Dahan. They took inspiration from a pattern called Command Query Separation which was defined by Bertrand Meyer in his book “Object Oriented Software Construction”. The main idea behind CQS is: “A method should either change state of an object, or return a result, but not both. In other words, asking the question should not change the answer. More formally, methods should return a value only if they are referentially transparent and hence possess no side effects.” (Wikipedia) Because of this we can divide a methods into two sets:

  • Commands – change the state of an object or entire system (sometimes called as modifiers or mutators).
  • Queries – return results and do not change the state of an object.

In a real situation it is pretty simple to tell which is which. The queries will declare return type, and commands will return void. This pattern is broadly applicable and it makes reasoning about objects easier. On the other hand, CQRS is applicable only on specific problems.

Demo Code for the presentation.

February 28, 2014

Dotty open-sourced

Filed under: Functional Programming,Scala — Patrick Durusau @ 7:05 pm

Dotty open-sourced by Martin Odersky.

From the post:

A couple of days ago we open sourced the Dotty, a research platform for new new language concepts and compiler technologies for Scala.

https://github.com/lampepfl/dotty

The idea is to provide a platform where new ideas can be tried out without the stringent backwards compatibility constraints of the regular Scala releases. At the same time this is no “castle-in-the-sky” project. We will look only at technologies that have a very good chance of being beneficial to Scala and its ecosystem.

My goal is that the focus of our research and development efforts lies squarely on simplification. In my opinion, Scala has been very successful in its original goal of unifying OOP and FP. But to get there is has acquired some features that in retrospect turned out to be inessential for the main goal, even if they are useful in some applications. XML literals come to mind, as do existential types. In Dotty we try to identify a much smaller set of core features and will then represent other features by encodings into that core.

Right now, there’s a (very early) compiler frontend for a subset of Scala. We’ll work on fleshing this out and testing it against more sources (the only large source it was tested on so far is the dotty compiler itself). We’ll also work on adding transformation and backend phases to make this into a full compiler.

Are you interested in functional programming and adventurous?

If so, this is your stop. 😉

February 25, 2014

Starting to Demo the Wolfram Language [Echoes of Veg-o-matic?]

Filed under: Functional Programming,Wolfram Language — Patrick Durusau @ 2:54 pm

Starting to Demo the Wolfram Language by Stephen Wolfram.

From the post:

We’re getting closer to the first official release of the Wolfram Language—so I am starting to demo it more publicly.

Here’s a short video demo I just made. It’s amazing to me how much of this is based on things I hadn’t even thought of just a few months ago. Knowledge-based programming is going to be much bigger than I imagined…

You really need to watch this video.

Impressive demo but how does it run on ordinary hardware and network connectivity?

Not unlike the old Veg-o-matic commercial:

Notice where the table top is locate relative to his waist. Do you have a table like that at home? If not, the Veg-o-matic isn’t going to work the same for you.

Was Stephen on his local supercomputer cluster or a laptop?

Excited but more details needed.

February 18, 2014

Functional Programming Day! – Book Sale!

Filed under: Books,Functional Programming — Patrick Durusau @ 3:58 pm

Functional Programming Day! at Manning – Until 12 PM EST – February 18, 2014.

How was I supposed to know Manning was going to use my birthday for “Functional Programming Day?”

I didn’t read my email after lunch and now I see the email blast.

Enter: dotd021814cc in the Promo box when you check out.

Applies to:

  • Java 8 in Action: Lambdas, Streams, and functional-style programming
  • Elixir in Action
  • Erlang and OTP in Action
  • Functional Programming in Scala
  • Scala in Action
  • Scala in Depth
  • Akka in Action
  • F# Deep Dives
  • Real-World Functional Programming
  • Clojure in Action, Second Edition
  • Joy of Clojure, Second Edition

I will ask Manning to coordinate with me next year if they want to use my birthday for functional programming day. Not that I mind but a little advance notice would be courteous. 😉

Enjoy and retweet this!

February 17, 2014

Introduction to Clojure – Modern dialect of Lisp (Part 1)

Filed under: Clojure,Functional Programming,Programming — Patrick Durusau @ 8:33 pm

learnclojure

Introduction to Clojure – Modern dialect of Lisp (Part 1) by Ricardo Sanchez and Karsten Schmidt.

A tutorial with lots of references is a good sign. The authors are not afraid for you to look elsewhere for information. They know you will be back.

To give the authors time to write part 2, there is a healthy selection of further reading and other resources at the end of part 1.

Enjoy!

February 14, 2014

Clojure 1.6.0-beta1

Filed under: Clojure,Functional Programming,Programming — Patrick Durusau @ 9:16 pm

Clojure 1.6.0-beta1 by Alex Miller.

From the post:

Clojure 1.6.0-beta1 is now available.

Try it via
– Download: http://central.maven.org/maven2/org/clojure/clojure/1.6.0-beta1
– Leiningen: [org.clojure/clojure “1.6.0-beta1”]

Highlights below or see the full change log here:
https://github.com/clojure/clojure/blob/master/changes.md

We expect Clojure 1.6.0-beta1 to be close to a release candidate; no other big changes are planned. Please give us your feedback and final issues if you find them so we can do the final release!

Just in time for the weekend, particularly if you like checking beta releases for “issues.”

Enjoy!

February 13, 2014

Reasoned Programming

Filed under: Clojure,Functional Programming,Logic,Programming — Patrick Durusau @ 2:49 pm

Reasoned Programming by Krysia Broda, Susan Eisenbach, Hessam Khoshnevisan, and Steve Vickers.

From the preface:

Can we ever be sure that our computer programs will work reliably? One approach to this problem is to attempt a mathematical proof of reliability, and this has led to the idea of Formal Methods: if you have a formal, logical specification of the properties meant by `working reliably’, then perhaps you can give a formal mathematical proof that the program (presented as a formal text) satisfies them.

Of course, this is by no means trivial. Before we can even get started on a formal proof we must turn the informal ideas intended by `working reliably’ into a formal specification, and we also need a formal account of what it means to say that a program satisfies a specification (this amounts to a semantics of the programming language, an account of the meaning of programs). None the less, Formal Methods are now routinely practised by a number of software producers.

However, a tremendous overhead derives from the stress on formality, that is to say, working by the manipulation of symbolic forms. A formal mathematical proof is a very different beast from the kind of proof that you will see in mathematical text books. It includes the minutest possible detail, both in proof steps and in background assumptions, and is not for human consumption &emdash; sophisticated software support tools are needed to handle it. For this reason, Formal Methods are often considered justifiable only in `safety critical’ systems, for which reliability is an overriding priority.

The aim of this book is to present informal formal methods, showing the benefits of the approach even without strict formality: although we use logic as a notation for the specifications, we rely on informal semantics &emdash; a programmer’s ordinary intuitions about what small, linear stretches of code actually do &emdash; and we use proofs to the level of rigour of ordinary mathematics.

A bit dated (1994) and teaches Miranda, a functional programming language and uses it to reason about imperative programming.

Even thinking about a “specification” isn’t universally admired these days but the author’s cover that point when they say:

This `precise account of the users’ needs and wants’ is called a specification, and the crucial point to understand is that it is expressing something quite different from the code, that is, the users’ interests instead of the computer’s. If the specification and code end up saying the same thing in different ways &emdash; and this can easily happen if you think too much from the computer’s point of view when you specify &emdash; then doing both of them is largely a waste of time. (emphasis added, Chapter 1, Section 1.3)

That’s blunt enough. 😉

You can pick up Miranda, homesite or translate the examples into a more recent functional language, Clojure comes to mind.

I first saw this in a tweet by Computer Science.

February 9, 2014

Introducing PigPen: Map-Reduce for Clojure

Filed under: Clojure,Functional Programming,MapReduce — Patrick Durusau @ 8:06 pm

Introducing PigPen: Map-Reduce for Clojure by Matt Bossenbroek.

pigpen

From the post:

It is our pleasure to release PigPen to the world today. PigPen is map-reduce for Clojure. It compiles to Apache Pig, but you don’t need to know much about Pig to use it.

What is PigPen?

  • A map-reduce language that looks and behaves like clojure.core
  • The ability to write map-reduce queries as programs, not scripts
  • Strong support for unit tests and iterative development

Note: If you are not familiar at all with Clojure, we strongly recommend that you try a tutorial here, here, or here to understand some of the basics.

Not a quick read but certainly worth the effort!

February 2, 2014

Clojure for the Brave and True Update

Filed under: Clojure,Functional Programming,Programming — Patrick Durusau @ 11:01 am

There is now a Clojure for the Brave and True Update list.

You can either subscribe there or wait for me to post about the latest chapters. 😉

BTW, Daniel has a post with the title: Book Cover Concept, Revisions & Free Books. As you can guess from the title there is a book cover “doodle,” plans for the coming weeks and a short listing of pubic resources on Lisp.

Enjoy!

January 12, 2014

Coeffects: The next big programming challenge

Filed under: Context,Context-aware,F#,Functional Programming — Patrick Durusau @ 8:20 pm

Coeffects: The next big programming challenge by Tomas Petricek.

From the post:

Context-aware programming matters

The phrase context in which programs are executed sounds quite abstract and generic. What are some concrete examples of such context? For example:

  • When writing a cross-platform application, different platforms (and even different versions of the same platform) provide different contexts – the API functions that are available.
  • When creating a mobile app, the different capabilities that you may (or may not) have access to are context (GPS sensor, accelerometer, battery status).
  • When working with data (be it sensitive database or social network data from Facebook), you have permissions to access only some of the data (depending on your identity) and you may want to track provenance information. This is another example of a context.

These are all fairly standard problems that developers deal with today. As the number of devices where programs need to run increases, dealing with diverse contexts will be becoming more and more important (and I’m not even talking about ubiquitous computing where you need to compile your code to a coffee machine).

We do not preceive the above things as problems (at best, annoyances that we just have to deal with), because we do not realize that there should be a better way. Let me digg into four examples in a bit more detail.

This post is a good introduction to Tomas’ academic work.

A bit further on Tomas explains what he means by “coeffects:”

Coeffects: Towards context-aware languages

The above examples cover a couple of different scenarios, but they share a common theme – they all talk about some context in which an expression is evaluated. The context has essentially two aspects:

  • Flat context represents additional data, resources and meta-data that are available in the execution environment (regardless of where in the program you access them). Examples include resources like GPS sensors or databases, battery status, framework version and similar.
  • Structural context contains additional meta-data related to variables. This can include provenance (source of the variable value), usage information (how often is the value accessed) or security information (does it contain sensitive data).

As a proponent of statically typed functional languages I believe that a context-aware programming language should capture such context information in the type system and make sure that basic errors (like the ones demonstrated in the four examples above) are ruled out at compile time.

This is essentially the idea behind coeffects. Let’s look at an example showing the idea in (a very simplified) practice and then I’ll say a few words about the theory (which is the main topic of my upcoming PhD thesis).

I don’t know that Tomas would agree but I see his “coeffects,” particularly “meta-data related to variables,” as keying off the subject identity of variables.

Think of it this way: What is the meaning of any value with no express or implied context?

My answer would be that a value without context is meaningless.

Be example, how would you process the value “1” Is it a boolean? Integer? A string?

Imbuing data with “meta-data” (or explicit identity as I prefer) is a first step towards transparent data.

PS: See Petricek and Skeet’s Real-World Functional Programming.

January 9, 2014

Clojure for the Brave and True

Filed under: Clojure,Functional Programming,Programming — Patrick Durusau @ 7:53 pm

Clojure for the Brave and True by Daniel Higginbotham.

From the webpage:

For weeks, months — no! from the very moment you were born — you’ve felt it calling to you. Every time you’ve held your keyboard aloft, crying out in anguish over an incomprehensible class hierarchy; every time you’ve lain awake at night, disturbing your loved ones with sobs over a mutation-induced heisenbug; every time a race condition has caused you to pull out more of your ever-dwindling hair, some secret part of you has known that there has to be a better way.

Now, at long last, the instructional material you have in front of your face will unite you with the programming language you’ve been longing for.

Are you ready, brave reader? Are you ready to meet your true destiny? Grab your best pair of parentheses: you’re about to embark on the journey of a lifetime!

You have to admit it is a great title!

Probably the start of a * for the Brave and True series. 😉

Newspeak: It’s doubleplusgood

Filed under: Functional Programming,Newspeak,Programming — Patrick Durusau @ 11:41 am

Newspeak: It’s doubleplusgood

From the webpage:

What is Newspeak?

Newspeak is a new programming language in the tradition of Self and Smalltalk. Newspeak is highly dynamic and reflective – but designed to support modularity and security. It supports both object-oriented and functional programming.

Like Self, Newspeak is message-based; all names are dynamically bound. However, like Smalltalk, Newspeak uses classes rather than prototypes. As in Beta, classes may nest. Because class names are late bound, all classes are virtual, every class can act as a mixin, and class hierarchy inheritance falls out automatically. Top level classes are essentially self contained parametric namespaces, and serve to define component style modules, which naturally define sandboxes in an object-capability style. Newspeak was deliberately designed as a principled dynamically typed language. We plan to evolve the language to support pluggable types.

After I posted Deconstructing Functional Programming by Gilad Bracha, I wanted to highlight Newspeak and list some resources for it.

Listed at the website:

Documents

Downloads (latest version September 14, 2013)

Newspeak Programming Language (Google Group)

Video & Audio

One additional resource I discovered:

Parsing JSON with Newspeak by Luis Diego Fallas.

What else have I missed?

January 6, 2014

Clojure TV Channels

Filed under: Clojure,Functional Programming,Programming — Patrick Durusau @ 4:47 pm

Stuart Sierra mentions ClojureTV in Clojure 2013 Year in Review.

As of today, I could some eighty-one (81) videos.

Once you finish there, there are one hundred and eleven (111) waiting for you at: InfoQ Clojure presentations.

I just spot checked but I am not picking up duplicates between these two video sources.

Say potentially one hundred and ninety-two (192) Clojure videos between these two sites.

You don’t have to wait for the new seasons to start on cable TV. 😉

January 3, 2014

…Scala and Breeze for statistical computing

Filed under: Functional Programming,Programming,Scala — Patrick Durusau @ 11:00 am

Brief introduction to Scala and Breeze for statistical computing by Darren Wilkinson.

From the post:

In the previous post I outlined why I think Scala is a good language for statistical computing and data science. In this post I want to give a quick taste of Scala and the Breeze numerical library to whet the appetite of the uninitiated. This post certainly won’t provide enough material to get started using Scala in anger – but I’ll try and provide a few pointers along the way. It also won’t be very interesting to anyone who knows Scala – I’m not introducing any of the very cool Scala stuff here – I think that some of the most powerful and interesting Scala language features can be a bit frightening for new users.

To reproduce the examples, you need to install Scala and Breeze. This isn’t very tricky, but I don’t want to get bogged down with a detailed walk-through here – I want to concentrate on the Scala language and Breeze library. You just need to install a recent version of Java, then Scala, and then Breeze. You might also want SBT and/or the ScalaIDE, though neither of these are necessary. Then you need to run the Scala REPL with the Breeze library in the classpath. There are several ways one can do this. The most obvious is to just run scala with the path to Breeze manually specified (or specified in an environment variable). Alternatively, you could run a console from an sbt session with a Breeze dependency (which is what I actually did for this post), or you could use a Scala Worksheet from inside a ScalaIDE project with a Breeze dependency.

It will help if you have an interest in or background with statistics as Darren introduces you to using Scala and the Breeze.

Breeze is described as:

Breeze is a library for numerical processing, machine learning, and natural language processing. Its primary focus is on being generic, clean, and powerful without sacrificing (much) efficiency. Breeze is the merger of the ScalaNLP and Scalala projects, because one of the original maintainers is unable to continue development.

so you are likely to encounter it in several different contexts.

I experience the move from “imperative” to “functional” programming being similar to moving from normalized to non-normalized data.

Normalized data, done by design prior to processing, makes some tasks easier for a CPU. Non-normalized data omits the normalization task (a burden on human operators) and puts that task on a CPU, if and when desired.

Decreasing the burden on people and increasing the burden on CPUs doesn’t trouble me.

You?

December 22, 2013

Clojure Cookbook – Update

Filed under: Clojure,Functional Programming,Programming — Patrick Durusau @ 3:52 pm

Clojure Cookbook: Recipes for Functional Programming by Luke vanderHart and Ryan Neufeld.

clojurecookbook

In June of 2013 I pointed you to: GitHub clojure-cookbook for the project developing this book.

O’reilly has announced that the early release version is now available and the projected print version is due out in March of 2014 (est.).

If you have comments on the text, best get them in sooner rather than later!

December 21, 2013

Deconstructing Functional Programming

Filed under: Dart,Functional Programming,Newspeak — Patrick Durusau @ 8:49 pm

Deconstructing Functional Programming by Gilad Bracha.

From the summary and bio:

Summary

Gilad Bracha explains how to distinguish FP hype from reality and to apply key ideas of FP in non-FP languages, separating the good parts of FP from its unnecessary cultural baggage.

Bio

Gilad Bracha is the creator of the Newspeak programming language and a software engineer at Google where he works on Dart. Previously, he was a VP at SAP Labs, a Distinguished Engineer at Cadence, and a Computational Theologist and Distinguished Engineer at Sun. He is co-author of the Java Language Specification, and a researcher in the area of object-oriented programming languages.

A very enjoyable presentation!

I really like the title in the bio: Computational Theologist.

Further resources:

Dart Language site.

Room 101 Gilad’s blog.

Newspeak Language site.

« Newer PostsOlder Posts »

Powered by WordPress