Win a copy of Re-engineering Legacy Software this week in the Refactoring forum
or Docker in Action in the Cloud/Virtualization forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Is there a particular insight when one "gets" Clojure?

 
Igor Mechnikov
Ranch Hand
Posts: 100
Chrome Linux VI Editor
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I really like the fact that proponents of Clojure, CL, Scheme, Haskell, etc.. are so enthusiastic about their favorite languages.
One of the themes I hear is that at some point, perhaps not the first time one attempts to learn a language, he finally gains certain insight.
Is there anything to this?
 
Hussein Baghdadi
clojure forum advocate
Bartender
Posts: 3479
Clojure Mac Objective C
  • Likes 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Yes.
Coding, coding and coding.
Every language has its own culture and an idiomatic way to solve problems.
Practice and you will get it with time.
 
Amit Rathore
author
Greenhorn
Posts: 20
Clojure
  • Likes 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
One of the many insights, for me personally, was the fact that a program that interprets other programs is itself just a program. The idea of DSLs became less "cool" and "magical" when I realized that, and LISP and Clojure programmers design systems naturally in such metalinguistic abstractions. It is just a normal way of doing things.

The other thing I found was that bottom-up design was much more natural in a functional programming language such a Clojure, and being a LISP, it became an even better vehicle for it.

I'm sure other folks have had other or similar revelations!
 
Huahai Yang
Greenhorn
Posts: 10
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
The insight to me seems to be the freedom of expressing and composing high level data transformations. Once I realize that, I feel this is a more human like thinking than what imperative language taught us to do. Now I feel the imperative languages are glorified machine codes, one is still manipulating registers, memory locations, and such. These are all notions of the implementation details of a Von Neuman machine. OOP tried to hide those, but in the process created another layer of details for us to get around. Functional language let you think directly about how you are going to manipulate YOUR DATA, regardless how the data might be represented in the machine.
 
It is sorta covered in the JavaRanch Style Guide.
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic