I suspect programming in clojure effectively is as much about changing
the *way* you develop as much as it is about about the shape of the
solution.  It sounds as if you are suggesting this is so.

I am about to start my first clojure project tomorrow which is to
replace an existing web app which is a case study in how short term
wins quickly build up technical and architectural debt.  It is also a
wonderful example of how painful it is to live in a world where the
code base is so bad that changing it is too dangerous so lets add
another layer .....   Yuck.

How did you find IntelliJ iDEA for clojure?  I have used both it and
eclipse (STs) for years but am considering emacs (with which I have a
beginner's competency).  I am intentionally not using spring or
hibernate and I expect the project will be fairly small in the short
term actually so I think emacs might be  achievable....  (I am also
switching from spring MVC and jquery to conjure and yui3 - this is all
about using the right technology from the start and I love vert iCal
learning curves :)

To explain why this madness might actually be a great idea - the
existing app will be deployed with some additional json services so
the new app will initially just be a very thin skin that uses those
json services in the short term.  Later on the functionality will be
rewritten in the new app.

Exciting times!

Sent from my iPad

On 6 Nov 2011, at 16:49, Dennis Haupt <d.haup...@googlemail.com> wrote:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> "special cases" that depend on mutable state are evil. i avoid mutable
> states as much as possible, no matter which language i am using.
> what i meant were cases where i roughly think about 3/4 of all cases,
> start coding and along the way i notice that in one case in need
> another input parameter for my function and have to refacto
> everything i have written so far.
>
> my experience is that you need to balance out planning and actual
> coding. there's a limit for planning. if you plan too much, it won't
> help. you'll just introduce problems and won't notice it because you
> are skipping the reality check. reality never misses a case, but even
> the smartest guy/gal does :)
>
> what i do in <random oo language> is to just start somewhere and code
> recursively. as soon as something gets to complex, i split it up or do
> minor refactorings. this works pretty good and i rarely end up in a
> situation where i have to go back a big step. i rarely lose speed,
> even if i encounter a surprise.
>
> i'll become faster once i get used to clojure, but i doubt i'll be
> able to be as fast as in scala or java. this is not because the
> language itself is bad. java is really verbose, but that doesn't
> matter at all. i don't write java code. i use intellij idea. it writes
> and rewrites java code for me.
> with equal tool support, i'd prefer clojure over java.
>
>
>
>
>
> Am 06.11.2011 14:48, schrieb Colin Yates:
>> But aren't the "edge cases" fewer given the notion that functions
>> should be entirely defined by their inputs as oppose to being
>> dependant on mutable state external to he function, in the most
>> part.
>>
>> I am agreeing with you, and find these real world experiences
>> incredibly useful.
>>
>> Sent from my iPad
>>
>> On 6 Nov 2011, at 13:03, Dennis Haupt <d.haup...@googlemail.com>
>> wrote:
>>
>> Am 06.11.2011 13:44, schrieb Colin Yates:
>>>>> I have a hunch (as oppose to IME as I don't have any yet :))
>>>>> that Clojure doesn't require as much due to at least the
>>>>> following points:
>>>>>
>>>>> - there is much less incidental complexity and ceremony
>>>>> required to manage (and therefore refactor) - implementations
>>>>> in Clojure require more thought and are much more focused on
>>>>> one thing then in Java, therefore there is a much higher
>>>>> chance that you get it right the first time
>>
>> this is a double edged sword. you *do* get it right *if* you think
>> it through, but reality is often more complex than you assume. if
>> you suddenly see that you forgot to handle special case x, you are
>> punished harder than in <random statically typed oo language>.
>>
>> in oo, you can do a few "emergency hacks" before everything
>> becomes unmaintainable. in clojure, i could not do this without
>> committing maintenance suicide immediately. for each case that
>> popped up surprisingly, i had to do a bit of refactoring.
>>
>> that whole "dynamically typed" thing is creeping me out.
>>
>>
>>>>>
>>>>> To put it another way, how much refactoring we we do in Java
>>>>> is down to managing the complexity of the problems inherent
>>>>> in Java the language; complecting state and identity for
>>>>> example.
>>>>>
>>>>> A concrete example: I know I often refactor code out of one
>>>>> class into a utility once that becomes useful by other
>>>>> classes.  The reason I need to do this is because in java the
>>>>> functionality is ring fenced by the data that it works on
>>>>> (I.e. encapsulation in the container called a class).  In
>>>>> clojure that association can be made but right off the get-go
>>>>> data and functionality are separate.
>>>>>
>>>>> Just my two-pence worth and I still haven't written more than
>>>>> 2 lines of clojure so it probably isn't worth 2p :)
>>>>>
>>>>> Sent from my iPad
>>>>>
>>>>> On 5 Nov 2011, at 12:16, Dennis Haupt
>>>>> <d.haup...@googlemail.com> wrote:
>>>>>
>>>>> hi,
>>>>>
>>>>> i'm half done with my asteroids clone. i stumbled over a few
>>>>> problems and wanted to know how others already solved them
>>>>> :)
>>>>>
>>>>> i am used to "less concrete programming". i ask my tools to
>>>>> do the actual analysis and coding for me: * where is that
>>>>> used? * rename that * show me all errors * add a parameter
>>>>> here * autocomplete this for me, i am too lazy to even
>>>>> remember the exact method name * show me a list of all
>>>>> methods and fields starting with an "e" that fit in here. i
>>>>> know the one i want is in that list.
>>>>>
>>>>> as elegant as clojure may be as a language, it's dragging me
>>>>> down to almost native text editing which i did more than 10
>>>>> years ago when i wrote a game in turbo pascal.
>>>>>
>>>>> how did you solve these problem and get some tool-support?
>>>>> or don't you miss it because of something i am not aware of?
>>>>>
>>>>>
>>>>>
>>>>>>
>>>>>> -- You received this message because you are subscribed to
>>>>>> the Google Groups "Clojure" group. To post to this group,
>>>>>> send email to clojure@googlegroups.com Note that posts from
>>>>>> new members are moderated - please be patient with your
>>>>>> first post. To unsubscribe from this group, send email to
>>>>>> clojure+unsubscr...@googlegroups.com For more options,
>>>>>> visit this group at
>>>>>> http://groups.google.com/group/clojure?hl=en
>>>>>
>>
>>
>>>
>>> -- You received this message because you are subscribed to the
>>> Google Groups "Clojure" group. To post to this group, send email
>>> to clojure@googlegroups.com Note that posts from new members are
>>> moderated - please be patient with your first post. To
>>> unsubscribe from this group, send email to
>>> clojure+unsubscr...@googlegroups.com For more options, visit this
>>> group at http://groups.google.com/group/clojure?hl=en
>>
>
>
> - --
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v2.0.14 (MingW32)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
>
> iQIcBAEBAgAGBQJOtrqmAAoJENRtux+h35aGq3sP/0qqZLVcGeeGO54WtKZhuRiN
> s3aZRilvzY3mWjZGbKaDMNkqK+BeHLCwg+Pvs9SyJuflF2cb8OGilLahGhIICmiQ
> Lm4jPwx0sK5YzCZmoYUui3ruUz8Q2mFatAjXsLpXh4ent8mnIyjqi9oS932SVJKz
> 6YrU+qjCbz8+S2TbJjI9LIqvwXoEeaD4A6qWhXcTraji/+UohUZlkGtEFgZIf6vW
> r3Stgp0w1w+a04dxfJipBtu8X5eOZvHNjhUp/7T1D4T/aRkzs2jnDwvF+zmA9aat
> bQswDrYiabqHpnwIPXk92+I6YCLnSF9jw8Fbw6XpgrAFjshikRh1a0PUoYL+wXPV
> EDCb925mmKF/0mjCrbEFxVMOwxk11rNqqWuVPE80kMfVpY/hNChBXgbysJ4koff4
> V+Tm0fd5iLjwc9oBXkOm+3dccQx0cIj4hFdWTfzn89PQRJFE85L7Q3AiMUvBUHzC
> K+fksovbdWtdxIg8ZnOuGkaYEgsJ+zKy6WHOFfi0f0mYkosDJ3ZEcdyiglBKaO83
> VOq8MfqgGhRKHwdD7sB6gm+AhnO6uDLw1fSiKFb25UF0htBDrOkoRai3Gm8jP6IT
> 4+g3EK0u+IYwD2rTo5A18aj2o2eS56v99Bh9u+0FQ+5EZNzbVzwgDdy3ZH4cglVs
> 1JRFJz2BVO8XfUmpHFAd
> =dbqy
> -----END PGP SIGNATURE-----
>
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with your 
> first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to