Reality check: EC2 + Ubuntu + Atom (from GitHub) + Clojure?

349 views
Skip to first unread message

kirby urner

unread,
Jul 31, 2015, 11:13:37 PM7/31/15
to Clojure
My day job is teaching Python, but in a school that teaches much else
besides.  We're small and I'd say prototypical given how quickly the
technology is evolving.

The description in the blog post below is science fiction from my angle,
but I'm aiming for a lot of realism:

http://worldgame.blogspot.com/2015/07/pws-personal-workspace.html

What I'm scheming is a track through the CS part of STEM that goes:

Python -> Java -> Clojure

and then leaves it to each student to build out from there, having
tackled both OO and FP mindsets.  Jumping into the C family or
into another LISP family language would be feasible after such a
sequence.

Given that sequence as a premise, I'm imagining a unified Ux and
wonder if I'm on the right track here.  Any feedback welcome.

Kirby


kirby urner

unread,
Aug 2, 2015, 6:17:18 PM8/2/15
to Clojure
Having done some more research, I see Atom 1.0 is still very new
which likely accounts for the a paucity of replies, an no Youtubes
on the topic (that I could find).

Anyway, it's not a set in stone requirement -- in the virtual school
of my dreams [1] -- that every course should use the same IDE, just
it's nice when that's an option.

I'm using IntelliJ with the Cursive plug-in for Clojure currently, having
tried LightTable before (for which I did find a demo with Clojure).

The old Mac OSX I'm running on my Mac Air won't even boot Atom,
so I've got a ways to go exploring that particular configuration. [2]

I'll be on the lookout for demo Youtubes.  It's a little inconvenient
searching on Atom + Clojure given the "atom" concept is core to
Clojure as a part of the language. :-D

Kirby

[1]  http://controlroom.blogspot.com/2015/08/asynchronous-learning-engine-ale.html

[2]  Atom 1.0 requires Mac OSX 10.8 or above, but will run in Ubuntu (so that's
a VM option).

Mark Engelberg

unread,
Aug 2, 2015, 8:51:17 PM8/2/15
to clojure
Intellij might be your best option for a unified development platform for Java, Clojure, and Python.  It won't be free though.


Mikera

unread,
Aug 2, 2015, 10:01:40 PM8/2/15
to Clojure
If you want a free / open source alternative, then Eclipse also offers a great environment for developing Java, Clojure and Python.

The Counterclockwise plugin for Eclipse is great - certainly has provided everything I want in a Clojure dev environment (integrated REPL, paredit mode, good syntax highlighting, integrated docstrings, auto-complete etc.)

Jason Lewis

unread,
Aug 2, 2015, 10:06:03 PM8/2/15
to clojure
IntelliJ CE (the free version) has served me well for Java and (playing with) Cursive for Clojure. I can't speak to Python.

For Clojure nothing beats emacs + CIDER, and emacs is a fine choice for Python. I generally stick to IntelliJ for Java, but I do know a few people who use emacs for Java and then do a run through an IDE for static analysis and automated refactoring as a second step. 

FWIW, I think it's worth learning the tradeoffs between editors and IDEs; I wish I'd learned the difference earlier on. Maybe Python/emacs -> Java/IntelliJ -> Clojure/emacs? Learning emacs and IntelliJ might be a bit of cognitive overhead, but (insert some old saw about a good craftsmen knowing his tools). 

I can't imagine using Atom for Java, and using it for Clojure seems like a terrible idea; no inline eval, no integrated REPL, no jump-to-fn-definition, no jump-to-docstring... I used it briefly when I was still doing Ruby, it was acceptable on the days when the latest update didn't cause it to crash every 15 minutes.



On Sun, Aug 2, 2015 at 8:51 PM Mark Engelberg <mark.en...@gmail.com> wrote:
Intellij might be your best option for a unified development platform for Java, Clojure, and Python.  It won't be free though.


--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@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+u...@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 unsubscribe from this group and stop receiving emails from it, send an email to clojure+u...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Colin Fleming

unread,
Aug 3, 2015, 6:02:38 AM8/3/15
to clo...@googlegroups.com
For Clojure nothing beats emacs + CIDER

As a clearly biased participant here (I develop Cursive) I'd like to politely disagree with this. Lots of people are switching to Cursive from Emacs, including many that you've heard of. Obviously different strokes for different folks etc, but a lot of experienced Emacs users are finding enough additional value in Cursive (and potentially other environments, but I can't really speak to them) that they're willing to go through the pain of switching editing environments to get it. A lot of people also switch from one to the other depending on what they're doing - lein and boot provide enough of a layer that this is not painful and allows you to use the strengths of one or the other.

Obviously I'm delighted if people are happy with the tools that they're using, whatever they may be, but I do think it's time to lay to rest the myth that Emacs is the only (or unequivocally the best) environment for Clojure. That hasn't been true for a long time - there are lots of good options.

Joe R. Smith

unread,
Aug 3, 2015, 9:57:34 AM8/3/15
to clo...@googlegroups.com
I’ll come out as an Emacs -> Cursive convert. I had been using emacs for Clojure development for 6+ years before I switched. Originally I had no intention of actually switching, but, as Colin suggested, I found enough additional value in Cursive to make my experimentation with Cursive permanent.

kirby urner

unread,
Aug 3, 2015, 10:26:34 AM8/3/15
to Clojure
On Mon, Aug 3, 2015 at 3:02 AM, Colin Fleming <colin.ma...@gmail.com> wrote:
For Clojure nothing beats emacs + CIDER

As a clearly biased participant here (I develop Cursive) I'd like to politely disagree with this. Lots of people are switching to Cursive from Emacs, including many that you've heard of. Obviously different strokes for different folks etc, but a lot of experienced Emacs users are finding enough additional value in Cursive (and potentially other environments, but I can't really speak to them) that they're willing to go through the pain of switching editing environments to get it. A lot of people also switch from one to the other depending on what they're doing - lein and boot provide enough of a layer that this is not painful and allows you to use the strengths of one or the other.

Obviously I'm delighted if people are happy with the tools that they're using, whatever they may be, but I do think it's time to lay to rest the myth that Emacs is the only (or unequivocally the best) environment for Clojure. That hasn't been true for a long time - there are lots of good options.


CURRENT USE CASE:

I appreciate all this feedback re choice of editor.  My situation is I've spent the last few years a working school that teaches Java, Python, Ruby etc. using either:

(1) browser plugins for code editing and bash shell access (beginner level) or

(2) Eclipse IDE. [1]

We provision each student using Eclipse with a Windows machine in the cloud, back ended into a Linux file system (mapping a Windows V:-drive -- for Virtual -- to the student's sandbox).  

So they're using Eclipse on client Windows (we pay license fees for that) back ending into Linux.

One reason we do that is "realism" i.e. we're simulating / emulating a plain vanilla US corporate cubicle (one could argue), but the main reason is Visual Studio.  We want to use that too and that's Windows-only.

HYPOTHETICAL FUTURE:

In the hypothetical model I'm working on, based on all of the above, we replace Windows with Ubuntu in the cloud, on an EC2 instance.

Then for Python do something with I-Py Notebooks and VPython for 2D + 3D graphics, but then it's starting to look like maybe staying with Eclipse for Java and Clojure, Ruby and Rails...  not Atom, as I was originally considering. [2]

However, provisioning students with tools they'll use for a few months then move on, is quite different from making a personal choice as to one's favorite IDE.

So even now my comments to students involve mentioning other IDEs they might want to try, i.e. there's no evangelism for any specific IDE, though there is evangelism for Open Source, this being O'Reilly of OSCON fame. [3]

REQUIREMENTS BASED ON CURRENT DESIGN:

Two other pieces of this puzzle:

(A) when a student hacks on a Python or Java project and want's mentor feedback, it's *not* a matter of the mentor remoting in to the student instance or accessing the students V: drive.  Rather, we have software infrastructure by the talented Michael Long that zips up the entire Eclipse project and sends it to the mentor's computer, where it unzips.  The mentor can run the code, find bugs, make changes, without touching the student's original.  The mentor can send the whole project back, though usually quotes and comments are sufficient.

(B) when a student submits work to the mentor, notification goes to a queue with a time stamp.  The mentor pulls student work off the queue, which is what triggers the zip / unzip transfer, making the whole process quite decoupled and asynchronous.  In other words, each mentor is presented with a "dashboard" of queued submissions per course.  I currently teach four courses whereas other mentors have taught many more.

So I spend hours every day in Eclipse, looking at one student project after another, either passing the project or sending it back with feedback for more revision.

OPEN SOURCE ANGLE:

What I'm brainstorming is a similar workflow migrated from Windows clients to Ubuntu instances on EC2, meaning a rewritten workflow.  The parent company has neither the in-house skills nor the funds to accomplish this overhaul and indeed all the aforementioned capability was intact prior to our school's purchase.

A typical move in such situations is to wonder if there's a nucleus here that could help a lot of similar enterprises i.e. what if we package up the workflow engine as some Open Source product (I'm calling it Asynchronous Learning Engine or ALE) such that any school or corporate training division could do the same:  provision training studios in the cloud pre-wired to facilitate student-mentor workflows as described above? [4]

My motivation for sharing these details here is precisely to start gauging the interest level around such an Open Source project, which I think could be of help to colleges and universities as well.   There'd be room for lots of value added, i.e. the curriculum itself, the actual leaning materials, are not specified by the ALE.

SUMMARY:

Anyway, that's the big picture of what I'm working on.  In our current Windows incarnation, we do not yet include Clojure in our curriculum, and I am just starting to learn it.  I've studied Scheme in the past but never used it professionally. 

I'm a fairly old guy (57) who got into solo applications development back in the days of xBase (proprietary).  I came to Python around version 1.6 (it's 3.5 today).

Based on feedback so far, I'm leaning towards staying with Eclipse while continuing to alert students to their options. 

Again, we regard our tools as semi-transient.  Some of our Python students are new to programming and have never used an IDE. 

As a mentor, I use PyCharm on my local platform (when not in the cloud), which is basically IntelliJ skinned for Python-only (JetBrains builds them both).  I've been using Cursive. 

I have not tried the Eclipse Counterclockwise plugin yet, but have been watching Youtubes about it and see it could be quite effective for our purposes. [5]

Kirby

PS:  another thing ALE does not do in my world is give mentors a way to assign letter grades or compute grading curves or whatever.  Our model is of an obstacle course with feedback and developing "muscles" by doing or by "making" (this "leaning by making" lingo is what attracted the founder of Make: magazine to buy us for the parent company in the first place).  Just keep submitting versions until the mentor says it's good.  In programming, it's OK to take longer, but it's not OK to write buggy code and call it "good enough".  So if a college or high school intent on sticking with letter grades were to use ALE, that part could be part of the value added.  That keeps ALE more general purpose anyway, and of potential in-house value to large enterprises with training needs.


[1]  What we currently cover:  http://courses.oreillyschool.com/courseList.html

[2]  Initial consideration of Atom from GitHub:
http://worldgame.blogspot.com/2015/07/pws-personal-workspace.html

[3]  My slides from most recent OSCON in Portland, Oregon:
https://www.flickr.com/photos/kirbyurner/sets/72157653861631353





Fluid Dynamics

unread,
Aug 3, 2015, 11:18:22 AM8/3/15
to Clojure
On Monday, August 3, 2015 at 10:26:34 AM UTC-4, kirby urner wrote:

(A) when a student hacks on a Python or Java project and want's mentor feedback, it's *not* a matter of the mentor remoting in to the student instance or accessing the students V: drive.  Rather, we have software infrastructure by the talented Michael Long that zips up the entire Eclipse project and sends it to the mentor's computer, where it unzips.  The mentor can run the code, find bugs, make changes, without touching the student's original.  The mentor can send the whole project back, though usually quotes and comments are sufficient.

Oh, dear God. You *do* know what used to happen to any unix box where "Help! I'm a newb, please help me, why won't my script work" was reliably synonymous with "sudo root" except for not needing the root password, right?
Better that it be the virtual box in the cloud than the mentor's computer if that should ever happen.

PS:  another thing ALE does not do in my world is give mentors a way to assign letter grades or compute grading curves or whatever.

On the other hand, if a mentor grades on a curve, he deserves anything that happens to his computer from running students' code there. :)

kirby urner

unread,
Aug 3, 2015, 11:35:29 AM8/3/15
to Clojure
On Mon, Aug 3, 2015 at 8:18 AM, Fluid Dynamics <a209...@trbvm.com> wrote:
On Monday, August 3, 2015 at 10:26:34 AM UTC-4, kirby urner wrote:

(A) when a student hacks on a Python or Java project and want's mentor feedback, it's *not* a matter of the mentor remoting in to the student instance or accessing the students V: drive.  Rather, we have software infrastructure by the talented Michael Long that zips up the entire Eclipse project and sends it to the mentor's computer, where it unzips.  The mentor can run the code, find bugs, make changes, without touching the student's original.  The mentor can send the whole project back, though usually quotes and comments are sufficient.

Oh, dear God. You *do* know what used to happen to any unix box where "Help! I'm a newb, please help me, why won't my script work" was reliably synonymous with "sudo root" except for not needing the root password, right?
Better that it be the virtual box in the cloud than the mentor's computer if that should ever happen.

Good points!

Yeah we don't do that.  The provisioning of an Ubuntu instance in the cloud (or a Windows instance in today's version of the ALE) is all about not helping students with complicated configuration / installing; all platform specific -- and they don't need sudo rights on the instance we give them, which instance vanishes without a trace when coursework is done. 

There's no huge tech support staff necessary to this picture, since the only umbilical cord to the learning environment is RDP (remote desktop), which is platform specific.  But is also the only piece we have to help with, many free and easy solutions available (I use CoRD from a Mac OSX (where I'm root if I wanna be -- but this is not part of ALE).

As a mentor I'm on this very same setup in the cloud (running ALE, in-house version -- we call it Nano). I'm doing my job in a cloud instance via remote desktop to a rack space somewhere.

In role of  "mentor" I've never been root and don't need to be; Eclipse fills my entire desktop, no need to touch Windows guts at all -- Terminal takes me to my Linux sandbox (where I'm just another user, like the students are)).

We do, on the other hand, encourage students to SFTP their own work back to local platforms where they take responsibility for setting up their own setup, mirroring ours if they like (Eclipse + MySQL... basically LAMP) or going their own way. 

It's not for us to tell them what to do when home alone.

 

PS:  another thing ALE does not do in my world is give mentors a way to assign letter grades or compute grading curves or whatever.

On the other hand, if a mentor grades on a curve, he deserves anything that happens to his computer from running students' code there. :)


We let mentors pick their own pronoun. :-D

I'm trying to stay open minded about curve grading.  I was a classroom teacher in the brick and mortar sense, both full and part time, and I know there's such a thing as healthy competition. 

I also know a lot of our students really like a tough coach who takes no nonsense, but on the other hand there's no comparison, no standing out as better or worse. 

Sometimes I'll say "good job, most students average three attempts to get this -- par for the course -- you got a hole in one" (no I'm not a golfer in real life) but there's no public scoreboard, no "grades" one has to live with (or live up to, as the case may be). 

Everyone gets the same certificate.

Good grades helped get me into Princeton though (from the Philippines), i.e. those of us at the high end of the curve have always liked the curve, or benefited.  But I see no reason to bake it into ALE at a primitive level.  Could be an add on:  curve-grade.clj  :-D

Kirby




Mark Engelberg

unread,
Aug 3, 2015, 4:26:04 PM8/3/15
to clojure
I currently use Eclipse Counterclockwise and have me eye on Cursive (will evaluate it more seriously when it is officially released).  Eclipse is reasonably well suited for beginners working in Clojure, I think.  Certainly it has the simplest install process of any of the platforms right now.  When I go out and do Clojure training, I start everyone on Counterclockwise for the first few sessions, and then allow them to move to whatever platform they want.  It is a fine choice.

The main reason I mentioned Intellij was because I didn't know whether there was a satisfactory Python plugin for Eclipse and you said you wanted to do all three languages on one IDE.

In my role as a tutor to bright comp sci kids, I was using Clojure for personal use several years before I was willing to start teaching it to kids, mainly because when Clojure first came out, emacs was pretty much the only game in town, and I knew it wouldn't go well if I tried to teach new programming language concepts to kids while simultaneously inflicting upon them an alien editor that behaves completely differently from every other editor they've ever used.  So I waited until Counterclockwise reached sufficient maturity before incorporating Clojure into my tutoring.


kirby urner

unread,
Aug 3, 2015, 7:13:07 PM8/3/15
to Clojure
On Mon, Aug 3, 2015 at 1:25 PM, Mark Engelberg <mark.en...@gmail.com> wrote:

 
The main reason I mentioned Intellij was because I didn't know whether there was a satisfactory Python plugin for Eclipse and you said you wanted to do all three languages on one IDE.



Gotcha.  The answer is yes, it's called PyDev and even our older version meets our needs.  Per the link to course content (we open source the textbooks, just as one may browse in a college book store, to see what the profs are using) our needs in the IDE department are modest. 

A current weakness is our not using Eclipse's native ability to back end into version control.  There's only so much one wants to cover when billing the course as Python, plus we're meeting our students as solo coders, not as dev teams.  ALE could take it all a lot further, in terms of course-ware topology.

http://courses.oreillyschool.com/  (recap of our learning environments: CodeRunner, Eclipse, and Visual Studio)

I'm really new to IntelliJ but a happy user of Pycharm, same JetBrains behind both. 

Even if we stick with Eclipse I could see advising students to check out that platform. 

To use a particular IDE is not to be mean or dismissive to all others.  On the contrary, I admire vim while using it sparingly, just like I'm not often in a jazz bar on the piano (after closing time maybe, if I know the owner).

New Yorker says StarBucks is actually good for the local shops because it schools people in the culture, via something known and mainstream (i.e. safe) and that gives them the confidence to branch out and get off the beaten track.

Likewise a glancing but not unpleasant experience with Eclipse could feed a next generation of Emacs users.  It's more the whole idea of "dashboards for developers" that we want to get across, and Eclipse is a good example, both multi-language and free.

 
In my role as a tutor to bright comp sci kids, I was using Clojure for personal use several years before I was willing to start teaching it to kids, mainly because when Clojure first came out, emacs was pretty much the only game in town, and I knew it wouldn't go well if I tried to teach new programming language concepts to kids while simultaneously inflicting upon them an alien editor that behaves completely differently from every other editor they've ever used.  So I waited until Counterclockwise reached sufficient maturity before incorporating Clojure into my tutoring.


My trajectory is similar in that I've used Python with middle through high school aged, most recently with Saturday Academy, piloting what I call Martian Math in my four-aspect Digital Math (the others being Supermarket, Casino, and Neolithic.

I know that sounds weird but the Neolithic-to-Martian axis gives like a timeline (math meets history) with a science fiction view of the future. The other axis, with Supermarket the persistence layer (inventory, bookkeeping) and Casino representing risk, investment, probabilities.  Makes a nice package in that you can fit anything in.

http://wikieducator.org/Digital_Math  FYI.

Anyway, just saying, like you I've not ventured to teach any LISP-family language and in my post to edu...@python.org recently (another listserv) it was all about { Python -> Java -> Clojure } sequence with the former in high school and the latter not expected until college unless you want an accelerated experience. 


In other words, just to sketch a possibility (one among many):

(A) use what Phillips-Andover uses, Mathematics for the Digital Age and Programming in Python, with that high schoolish age group, then

(B) move to Java,

(C) then cap with Clojure, which coming from Java means you'll appreciate about interop, i.e. you know your heritage.

Not saying that's the best or only trajectory, just that's a good example of what I imagine the ALE (Asynchronous Learning Machine) --  with some Open Source license -- could provide the bare bones for.

In favor of the { Python -> Java -> Clojure } track is that it gives the full dose of OO on the way to FP, and it's in climbing out to that level that you feel more control over heritage in OO.  I don't think OO is over, but that the discipline of FP will keep OO from decaying as quickly. :-D

With Clojure, the Java stack is still yours (I understand about the .NET version) -- and not just the JVM but the libraries.

Plus (maybe not everyone knows this here):  Python likewise comes in a flavor that targets the JVM as well:  Jython, open source from Oracle. 

Seems a promising ecosystem all round!  Thanks for engaging (both here and on edu-sig).
 
Kirby

kirby urner

unread,
Aug 6, 2015, 7:26:34 PM8/6/15
to Clojure

To recap this thread:  I started by looking at GitHub's Atom as an IDE for
Asynchronous Learning Engine (ALE), a name I'm using for an
Open Source project.  I'm interested in Clojure + Java + Python as
an example "flight path" through our "curriculum space".

Turns out Eclipse is a strong candidate if a single IDE is required. 

IntelliJ with Cursive is where I'm starting, great beginning!  I use
PyCharm at work.

I now have Python and Clojure both implementing a special kind
of vector class using PyDev for Python and CounterClockwise
for Clojure:

http://mybizmo.blogspot.com/2015/08/eclipse-for-python-java-clojure.html

Just screen shots at this point. 

I'm finding much to like in the ease of use department. 

Eclipse remains a strong contender though of course Emacs can do all this too.

Kirby
 

Colin Fleming

unread,
Aug 7, 2015, 6:11:38 AM8/7/15
to clo...@googlegroups.com
Note that IntelliJ will actually do Python and Clojure in the same (free, OSS) IDE if you only need the community edition of Python, i.e. you don't need support for frameworks like Django or the web stuff.

If you do need the Ultimate edition of IntelliJ, you can get free licences for open source and/or academic work by applying to JetBrains.

--

Gary Verhaegen

unread,
Aug 7, 2015, 8:02:30 AM8/7/15
to clo...@googlegroups.com
Sorry for steering the discussion away from tooling, but have tou looked at Racket and the research in teaching programming that's been going on around it for the past ~20 years?

One of their findings was that beginning with functional programming (1 semester FP followed by 1 semester OOP) yielded better OOP prpgrammers than a full year of OOP teaching. Some of them have recently branched out from the original scheme-base syntax to a more python-like one. If you're designing a curriculum for teaching FP and OOP I believe it's worth investigating.

And to steer back towards tooling, you could then use DrRacket, which is a fantastic beginner's editor with debugger and code analyzer integrated.

kirby urner

unread,
Aug 7, 2015, 10:29:21 AM8/7/15
to Clojure
On Fri, Aug 7, 2015 at 5:02 AM, Gary Verhaegen <gary.ve...@gmail.com> wrote:
Sorry for steering the discussion away from tooling, but have tou looked at Racket and the research in teaching programming that's been going on around it for the past ~20 years?

One of their findings was that beginning with functional programming (1 semester FP followed by 1 semester OOP) yielded better OOP prpgrammers than a full year of OOP teaching. Some of them have recently branched out from the original scheme-base syntax to a more python-like one. If you're designing a curriculum for teaching FP and OOP I believe it's worth investigating.

And to steer back towards tooling, you could then use DrRacket, which is a fantastic beginner's editor with debugger and code analyzer integrated.


Thanks for these thoughts.

By way of background...

Yes, I checked into DrScheme / PLT before it became Racket.  At the time I was on a pilgrimage, away from my commercial bread and butter language, the lowly Xbase, and seeking "computer graphics" (so I could do more geometry on the side).  I went to Java then Scheme, then became enamored of J which I suppose is functional (its heritage is APL).  Then Python (while still earning my bread and butter with Xbase i.e. VFP9).

We stereotype kid-newcomers to programming as demanding to "write games" but that's putting words in their mouths, a lot of 'em anyway, as many'd be just as happy with some fancy visuals, both moving and still.  Fractals (as in Mandelbrots and Mandelbulbs) fit here.

A language like Mathematica can provide 2D and 3D visuals. Our school had pre-OST (O'Reilly) roots in working with Wolfram, round tripping those notebooks twixt calc students and their teachers (this was before I joined). 

But in using a dedicated ray tracer (in this curriculum, POV-Ray) you're less confined to "mathematical" topics i.e. go ahead and do photo-realistic art (plus it's free, which Mathematica only is on a Pi, right?).

So in my Python for kid-newcomers, my back end has been

(A)  for 2D:  POV-Ray, the free ray tracer (povray.org, CompuServ license) and
(B)  for 3D:  a lot of Visual Python (vpython.org) -- once it came down the pike, with VRML before that (the Ux is quite similar -- rotate colorful shapes in real time, that your program defined).

Here's a summary of how I'd mix 'em for my classrooms in Portland Oregon (often under the auspices of saturdayacademy.org):

http://www.4dsolutions.net/ocn/pymath.html

The individual stills you get from a POV-Ray may be strung together into movies ("cartoons" lets call 'em). 

So I'm really explaining the movie industry and the fact of "render farms" behind rendered movies like Shrek and Toy Story.  For kid-newcommers, this information is relevant as most of 'em are already avid movie and TV program consumers -- and we want them to be makers of same (active not just passive -- both produce *and* consume).

Back to your points:

Saying good grounding in FP makes for better OOP programmers does indeed sound credible. 

But in a way that can be a matter of style i.e Python may be used to emphasize immutability, or to create a bog of mushy objects all secretly connected underground by tendrils.  Python is like clay in that way.

So for example, with my Quadrays (a defrecord in Clojure), when I negate one, I could have had it "stay the same vector, just now facing the other way" i.e. give it mutable state. 

But if direction can change and yet we say it's "the same", then what *can't* change?  It gets messy when you let "the same things" mutate.

So I of course don't do it that way. 

The VectorOps protocol is about returning new immutable Quadrays (or XYZ vectors), Clojure style.  -v1 creates a new Vector, versus changing the state of v1.

Saying FP -> OOP is a useful pattern maybe somewhat subversive of what's preached in the strict FP camp? 

Some of the most theological say you won't need a life after FP, i.e. why would we even bother with an OOP language?  Would anyone still care for them?  Saying FP makes good OOP coders begs the question of whether we want any OOP coders.  Some FPers are eager to stomp 'em out perhaps?  That's extremist, I agree.

Realistically, the two camps are meeting in the middle as Python can be used in FP-ish ways, plus there's Hy, which overlays a LISP syntax, targeting the same VM. https://github.com/hylang/hy

That Clojure shares a JVM with OOP's Java is the ultimate truce, right?  So we could just make it more a circle or spiral (of styles more than just languages) and go FP -> OOP -> FP -> OOP... in some kind of chaotic oscillation. Isn't that what we mean by "inter-op" already?  :-D
 
Kirby

kirby urner

unread,
Aug 7, 2015, 10:33:52 AM8/7/15
to Clojure
On Fri, Aug 7, 2015 at 7:29 AM, kirby urner <kirby...@gmail.com> wrote:

So in my Python for kid-newcomers, my back end has been

(A)  for 2D:  POV-Ray, the free ray tracer (povray.org, CompuServ license) and
(B)  for 3D:  a lot of Visual Python (vpython.org) -- once it came down the pike, with VRML before that (the Ux is quite similar -- rotate colorful shapes in real time, that your program defined).


Actually (quick addendum), POV-Ray does stellar 3D stills... it's the Time dimension that gets between 2D and 3D (as I'm leaving out a true Z given screens are really flat).  With VPython as with VRML you have that "twirling a polyhedron with a mouse" experience, whereas in 2D, it's a "still life".

Kirby


Reply all
Reply to author
Forward
0 new messages