Discussion:
programming languages recap for 2013
Nimret Sandhu
2014-01-07 22:43:48 UTC
Permalink
http://www.drdobbs.com/jvm/the-rise-and-fall-of-languages-in-2013/240165192?elq=23f4deb1b95d44e0b33ecdb9fb89f456

interesting read :)

cheers,
-
Nimret Sandhu
http://www.nimret.org
Yehuda Romano
2014-01-12 20:09:21 UTC
Permalink
My 8th grade daughter expressed interest in learning Java programming.
Not being a teacher, it is was quite challenging for me to properly introduce someone with no knowledge of computer science to this topic. She also tried a free class with an instructor who uses Greenfoot - http://www.greenfoot.org/ which hides a lot of the complexity of Java. Interestingly, she preferred my approach (bare bone, core language).
I would like to be able to set aside regular time for us to engage in learning Java and was wondering if anybody can share information / recommendations regarding instructional teaching resources, good introductory books, practical projects to accompany the learning process which gradually expose the student to core aspects of Java .
I am familiar with http://codeacademy.com; however, not sure how good their teaching method is.
Thanks,
Yehuda Romano
Jason Osgood
2014-01-12 21:41:59 UTC
Permalink
I would love, love, love to hear more about teaching programming.

Experiences with Blue/J, code.org, local code camps, everything.

As I come across stuff of interest, I’ll cc seajug, and ask that others do the same.
Post by Yehuda Romano
My 8th grade daughter expressed interest in learning Java programming.
Not being a teacher, it is was quite challenging for me to properly introduce someone with no knowledge of computer science to this topic. She also tried a free class with an instructor who uses Greenfoot - http://www.greenfoot.org/ which hides a lot of the complexity of Java. Interestingly, she preferred my approach (bare bone, core language).
I would like to be able to set aside regular time for us to engage in learning Java and was wondering if anybody can share information / recommendations regarding instructional teaching resources, good introductory books, practical projects to accompany the learning process which gradually expose the student to core aspects of Java .
I am familiar with http://codeacademy.com; however, not sure how good their teaching method is.
Thanks,
Yehuda Romano
Douglas Pearson
2014-01-12 22:08:53 UTC
Permalink
I know you're asking specifically about Java tools here but with my
daugther (who is in 6th grade) we've found that a tool called Game Maker
Studio (https://www.yoyogames.com/studio) seems like a great bridge between
a visual programming style and real programming in a language. That tool
uses it's own custom scripting language, but all the major concepts are
there - variables, objects, classes, loops, conditionals, subroutines,
events etc. You can create art assets and rooms in the tool itself, but to
make anything happen requires programming. It also supports things like
creating an iphone app directly from the tool, so if you make something fun
you can show it off to your friends.

I think it can be hard to learn any language where there's not much visual
feedback since so much today of what kids expect is to put together cool
things on screen and that inspires them to go on to learn more.

The key for helping make this particular tool attractive is that there's a
big community of users, so there's a ton of youtube video tutorials out
there made by members of that community and my daughter has spent many an
hour watching the videos and following their lead. That helps her continue
to learn beyond the time I can spend teaching her directly. The company of
course provides tutorials and sample projects as well.

We tried a few other directions before hitting on this. Some tools are too
visual with not enough of a real language behind them. Others are pure
languages (we tried Flash/Actionscript first instead of Java because of its
better visuals again) but the learning curve was steep and there's a lot of
typing needed to really get things to come to life.

Just another view on this.

Doug
Post by Jason Osgood
I would love, love, love to hear more about teaching programming.
Experiences with Blue/J, code.org, local code camps, everything.
As I come across stuff of interest, I’ll cc seajug, and ask that others do the same.
My 8th grade daughter expressed interest in learning Java programming.
Not being a teacher, it is was quite challenging for me to properly
introduce someone with no knowledge of computer science to this topic. She
also tried a free class with an instructor who uses Greenfoot -
http://www.greenfoot.org/ which hides a lot of the complexity of Java. I
nterestingly, she preferred my approach (bare bone, core language).
I would like to be able to set aside regular time for us to engage in
learning Java and was wondering if anybody can share information
/ recommendations regarding instructional teaching resources, good
introductory books, practical projects to accompany the learning process
which gradually expose the student to core aspects of Java .
I am familiar with http://codeacademy.com; however, not sure how good
their teaching method is.
Thanks,
Yehuda Romano
Martin Paulo
2014-01-13 00:39:45 UTC
Permalink
With regard to 'hearing more about teaching programming': There is Software
Carpentry (http://software-carpentry.org/index.html).

It's Python oriented, and targets researchers, but they do have a set of
lesson plans up, and do regular workshops/etc.

It's probably a bit advanced for an 8th grader, but the lesson plans (
http://software-carpentry.org/v4/index.html) could be plundered in some way
to help explain some of the concepts, etc..

Martin
Post by Douglas Pearson
I know you're asking specifically about Java tools here but with my
daugther (who is in 6th grade) we've found that a tool called Game Maker
Studio (https://www.yoyogames.com/studio) seems like a great bridge
between a visual programming style and real programming in a language.
That tool uses it's own custom scripting language, but all the major
concepts are there - variables, objects, classes, loops, conditionals,
subroutines, events etc. You can create art assets and rooms in the tool
itself, but to make anything happen requires programming. It also supports
things like creating an iphone app directly from the tool, so if you make
something fun you can show it off to your friends.
I think it can be hard to learn any language where there's not much visual
feedback since so much today of what kids expect is to put together cool
things on screen and that inspires them to go on to learn more.
The key for helping make this particular tool attractive is that there's a
big community of users, so there's a ton of youtube video tutorials out
there made by members of that community and my daughter has spent many an
hour watching the videos and following their lead. That helps her continue
to learn beyond the time I can spend teaching her directly. The company of
course provides tutorials and sample projects as well.
We tried a few other directions before hitting on this. Some tools are
too visual with not enough of a real language behind them. Others are pure
languages (we tried Flash/Actionscript first instead of Java because of its
better visuals again) but the learning curve was steep and there's a lot of
typing needed to really get things to come to life.
Just another view on this.
Doug
Post by Jason Osgood
I would love, love, love to hear more about teaching programming.
Experiences with Blue/J, code.org, local code camps, everything.
As I come across stuff of interest, I’ll cc seajug, and ask that others do the same.
My 8th grade daughter expressed interest in learning Java programming.
Not being a teacher, it is was quite challenging for me to properly
introduce someone with no knowledge of computer science to this topic. She
also tried a free class with an instructor who uses Greenfoot -
http://www.greenfoot.org/ which hides a lot of the complexity of Java. I
nterestingly, she preferred my approach (bare bone, core language).
I would like to be able to set aside regular time for us to engage in
learning Java and was wondering if anybody can share information
/ recommendations regarding instructional teaching resources, good
introductory books, practical projects to accompany the learning process
which gradually expose the student to core aspects of Java .
I am familiar with http://codeacademy.com; however, not sure how good
their teaching method is.
Thanks,
Yehuda Romano
--
=================================================================

Martin Paulo, BSc.
Software Developer


Tel : +61-3-9434 2508 (Home)
Tel : 04 205 20339 (Mobile)
Site: http://www.thepaulofamily.net

"Nobody goes there any more. It's too crowded" - Yogi Berra.
Linden Anderson
2014-01-13 04:31:00 UTC
Permalink
Scratch has been fun for my family.

http://scratch.mit.edu
Rick Gordon
2014-01-13 20:44:45 UTC
Permalink
I've seen 4th Grade girls doing Scratch programs, so its possible.
There's the Manning "Hello World" using Python book that is more targeted
for the 8th grade level.
My oldest daughter used it, and learned from it. 2nd Edition just shipped I
think.


On Sun, Jan 12, 2014 at 8:31 PM, Linden Anderson
Post by Linden Anderson
Scratch has been fun for my family.
http://scratch.mit.edu
Konstantin Ignatyev
2014-01-13 21:29:25 UTC
Permalink
Looks like there is an agreement: do not use Java as language to teach kids.

I can certainly attest to that: Java is horrible language to use as first
language: it is too remote from hardware to teach about computer internals
(registers, pointers etc.) and too inconsistent to teach about computing
concepts: Object Orientation or Functional Programming.

When I tried to teach my son Java (he had a class in High School) I tried
to step into novice shoes and realized how badly we are brainwashed (me for
sure)
For example it made sense to me:
Person p = new Person();

But that is terrible, it is redundant, and it is mind bending backward to
make writing compiler writing easier!

The train of thought is something like this:
we need to create variable to store person object, so more natural syntax
should be

var p = new Person()

Now, try to explain to novice the difference between int and Integer and
all that crazy ceremony with getters and setters.....




There is a very good talk

which I think is relevant to this thread. It asks question: Why you want to
program? What you want to create in the end?
Post by Rick Gordon
I've seen 4th Grade girls doing Scratch programs, so its possible.
There's the Manning "Hello World" using Python book that is more targeted
for the 8th grade level.
My oldest daughter used it, and learned from it. 2nd Edition just shipped
I think.
On Sun, Jan 12, 2014 at 8:31 PM, Linden Anderson <
Post by Linden Anderson
Scratch has been fun for my family.
http://scratch.mit.edu
--
Konstantin Ignatyev

PS: If this is a typical day on planet Earth, humans will add fifteen
million tons of carbon to the atmosphere, destroy 115 square miles of
tropical rainforest, create seventy-two miles of desert, eliminate between
forty to one hundred species, erode seventy-one million tons of topsoil,
add 2,700 tons of CFCs to the stratosphere, and increase their population
by 263,000

Bowers, C.A. The Culture of Denial: Why the Environmental Movement Needs a
Strategy for Reforming Universities and Public Schools. New York: State
University of New York Press, 1997: (4) (5) (p.206)
Xuecheng Yin
2014-01-13 21:52:02 UTC
Permalink
Last year I encouraged my son, currently 6th grader, to attack one python course from Rice Univ. on Coursera. Not successful.

Last few weeks, I am tutoring an 12th grader with his Java classes. From time to time, I have to scratch my head and wondering "oh, is Java so hard to learn?". 

My son does enjoy the scratch.mit.edu. He quickly build up games that his younger brother can do quick test drive.



On Monday, January 13, 2014 1:29 PM, Konstantin Ignatyev <***@gmail.com> wrote:

 
Looks like there is an agreement: do not use Java as language to teach kids.

I can certainly attest to that: Java is horrible language to use as first language: it is too remote from hardware to teach about computer internals (registers, pointers etc.) and too inconsistent to teach about computing concepts: Object Orientation or Functional Programming.

When I tried to teach my son Java (he had a class in High School) I tried to step into novice shoes and realized how badly we are brainwashed (me for sure)
For example it made sense to me:
Person p = new Person();

But that is terrible, it is redundant, and it is mind bending backward to make writing compiler writing easier!

The train of thought is something like this:
we need to create variable to store person object, so more natural syntax should be

var p = new Person()

Now, try to explain to novice  the difference between int and Integer  and all that crazy ceremony with getters and setters.....


 
There is a very good talk http://youtu.be/csyL9EC0S0c
which I think is relevant to this thread. It asks question: Why you want to program? What you want to create in the end? 
Post by Rick Gordon
 
I've seen 4th Grade girls doing Scratch programs, so its possible.
There's the Manning "Hello World" using Python book that is more targeted for the 8th grade level.
My oldest daughter used it, and learned from it. 2nd Edition just shipped I think.
Post by Linden Anderson
Scratch has been fun for my family.
http://scratch.mit.edu
--
Konstantin Ignatyev
 
PS: If this is a typical day on planet Earth, humans will add fifteen million tons of carbon to the atmosphere, destroy 115 square miles of tropical rainforest, create seventy-two miles of desert, eliminate between forty to one hundred species, erode seventy-one million tons of topsoil, add 2,700 tons of CFCs to the stratosphere, and increase their population by 263,000
 
Bowers, C.A. The Culture of Denial: Why the Environmental Movement Needs a Strategy for Reforming Universities and Public Schools. New York: State University of New York Press, 1997: (4) (5) (p.206)
CANNON, JIM
2014-01-13 22:39:23 UTC
Permalink
Teach them machine code, then assembler, then C, then C++ and then Java will be a breath of fresh air. Object orientation is an abstract concept that many people have trouble with. Not everyone is cut out to write low level code, nor do they need to. If they have a class in Java then they should learn Java, but if they just want to learn about computers or programming constructs there are easier ways to do it. I have passed the entries in this tread along to my grandson (Junior in high school) so that he can look at the suggestions and pick one that he likes.

If you find the thing that will make people learn and like programming let me know, I will point everybody else in my family at it. So far there is just one other computer geek out of 20 plus people in my family.

Fun topic guys.

Thank you
Jim Cannon

From: ***@yahoogroups.com [mailto:***@yahoogroups.com] On Behalf Of Konstantin Ignatyev
Sent: Monday, January 13, 2014 1:29 PM
To: ***@yahoogroups.com
Subject: Re: [seajug] Teaching Java Programming to Kids


Looks like there is an agreement: do not use Java as language to teach kids.

I can certainly attest to that: Java is horrible language to use as first language: it is too remote from hardware to teach about computer internals (registers, pointers etc.) and too inconsistent to teach about computing concepts: Object Orientation or Functional Programming.

When I tried to teach my son Java (he had a class in High School) I tried to step into novice shoes and realized how badly we are brainwashed (me for sure)
For example it made sense to me:
Person p = new Person();

But that is terrible, it is redundant, and it is mind bending backward to make writing compiler writing easier!

The train of thought is something like this:
we need to create variable to store person object, so more natural syntax should be

var p = new Person()

Now, try to explain to novice the difference between int and Integer and all that crazy ceremony with getters and setters.....




There is a very good talk http://youtu.be/csyL9EC0S0c
which I think is relevant to this thread. It asks question: Why you want to program? What you want to create in the end?


On Mon, Jan 13, 2014 at 12:44 PM, Rick Gordon <***@gmail.com<mailto:***@gmail.com>> wrote:

I've seen 4th Grade girls doing Scratch programs, so its possible.
There's the Manning "Hello World" using Python book that is more targeted for the 8th grade level.
My oldest daughter used it, and learned from it. 2nd Edition just shipped I think.

On Sun, Jan 12, 2014 at 8:31 PM, Linden Anderson <***@gmail.com<mailto:***@gmail.com>> wrote:


Scratch has been fun for my family.

http://scratch.mit.edu
--
Konstantin Ignatyev

PS: If this is a typical day on planet Earth, humans will add fifteen million tons of carbon to the atmosphere, destroy 115 square miles of tropical rainforest, create seventy-two miles of desert, eliminate between forty to one hundred species, erode seventy-one million tons of topsoil, add 2,700 tons of CFCs to the stratosphere, and increase their population by 263,000

Bowers, C.A. The Culture of Denial: Why the Environmental Movement Needs a Strategy for Reforming Universities and Public Schools. New York: State University of New York Press, 1997: (4) (5) (p.206)
Yehuda Romano
2014-01-14 05:18:19 UTC
Permalink
Thanks for all the suggestions and insights.
Let's keep in mind that the goal here is mainly to expose these young minds to the world of programming and not necessarily set in stone their future career path. I agree that perhaps Java is not a good choice for exploratory learning and will consider one of the other aforementioned programming languages.

Found this article which is definitely relevant to this discussion:http://lifehacker.com/how-and-why-to-teach-your-kids-to-code-510588878

Cheers.
--Yehuda Romano
To: seajug-***@public.gmane.org
From: jc9868-60p5jsuXm+***@public.gmane.org
Date: Mon, 13 Jan 2014 22:39:23 +0000
Subject: RE: [seajug] Teaching Java Programming to Kids































Teach them machine code, then assembler, then C, then C++ and then Java will be a breath of fresh air.
Object orientation is an abstract concept that many people have trouble with.
Not everyone is cut out to write low level code, nor do they need to.
If they have a class in Java then they should learn Java, but if they just want to learn about computers or programming constructs there are easier ways to do it.
I have passed the entries in this tread along to my grandson (Junior in high school) so that he can look at the suggestions and pick one that he likes.


If you find the thing that will make people learn and like programming let me know, I will point everybody else in my family at
it. So far there is just one other computer geek out of 20 plus people in my family.

Fun topic guys.

Thank you
Jim Cannon



From: seajug-***@public.gmane.org
[mailto:seajug-***@public.gmane.org] On Behalf Of Konstantin Ignatyev

Sent: Monday, January 13, 2014 1:29 PM

To: seajug-***@public.gmane.org

Subject: Re: [seajug] Teaching Java Programming to Kids










Looks like there is an agreement: do not use Java as language to teach kids.





I can certainly attest to that: Java is horrible language to use as first language: it is too remote from hardware to teach about computer internals (registers, pointers etc.) and
too inconsistent to teach about computing concepts: Object Orientation or Functional Programming.





When I tried to teach my son Java (he had a class in High School) I tried to step into novice shoes and realized how badly we are brainwashed (me for sure)


For example it made sense to me:


Person p = new Person();





But that is terrible, it is redundant, and it is mind bending backward to make writing compiler writing easier!





The train of thought is something like this:


we need to create variable to store person object, so more natural syntax should be





var p = new Person()





Now, try to explain to novice the difference between int and Integer and all that crazy ceremony with getters and setters.....












On Mon, Jan 13, 2014 at 12:44 PM, Rick Gordon <rgordon0-***@public.gmane.org> wrote:








I've seen 4th Grade girls doing Scratch programs, so its possible.

There's the Manning "Hello World" using Python book that is more targeted for the 8th grade level.

My oldest daughter used it, and learned from it. 2nd Edition just shipped I think.





On Sun, Jan 12, 2014 at 8:31 PM, Linden Anderson <anderson.linden-***@public.gmane.org> wrote:


Scratch has been fun for my family.

http://scratch.mit.edu
--
Konstantin Ignatyev



PS: If this is a typical day on planet Earth, humans will add fifteen million tons of carbon to the atmosphere, destroy 115 square miles of tropical rainforest, create seventy-two miles of desert, eliminate between forty to one hundred species, erode seventy-one
million tons of topsoil, add 2,700 tons of CFCs to the stratosphere, and increase their population by 263,000



Bowers, C.A. The Culture of Denial: Why the Environmental Movement Needs a Strategy for Reforming Universities and Public Schools. New York: State University of New York Press, 1997: (4) (5) (p.206)
k***@u.washington.edu
2014-01-14 09:13:28 UTC
Permalink
I ordered the book below from Half Price Books to a non-profit which was asking for
science and math books on their holiday wish list. I haven't read it, but the few
ratings I could find were decent and if you need a bargain, HPB has an
incomplete but interesting selection - and they have a text books.


"Understanding Programming: an Introduction Using Java"


I learned the basics of programming as a teen with 2 books that did not have
special effects or dazzling graphics and a "Kids in College" summer class
(highly recommended!) and a programming class in high school which is
bewilderingly not available to teens today in most schools.
The languages were Basic (not visual basic) and Pascal.


Java can be used and coded in a procedural programming style even though
it's an object oriented language.


Javascript + html is what some of the schools that are teaching programming
are using and certainly the basics for that can be applied in many ways
whether web or electronic kits. Lady Ada has kits which are more kid friendly...


:) -Nichole
Jason Osgood
2014-01-14 17:45:22 UTC
Permalink
Hi Konstantin.
Post by Konstantin Ignatyev
Looks like there is an agreement: do not use Java as language to teach kids.
Though certainly true, I’m not ready to concede that. There’s been much research. I haven’t kept up. (See below.)

Just checked, the Blue/J project seems alive and well, and has spawned Greenfoot. Blue/J tackles the OOP issue head on.

http://www.bluej.org
http://en.wikipedia.org/wiki/BlueJ

http://www.greenfoot.org/door
http://en.wikipedia.org/wiki/Greenfoot

Though I would argue that Greenfoot is more about Actors than Java.
Post by Konstantin Ignatyev
When I tried to teach my son Java (he had a class in High School) I tried to step into novice shoes and realized how badly we are brainwashed (me for sure)
Person p = new Person();
I still don’t get Java’s instance declaration and initialization syntax. Sucks. But I got used to it. And I haven’t thought of a better strategy (for imperative programming). More concise, yes; better, no. Though I will say that declarative syntax (like ARON, VRML) makes lofting object graphs super intuitive.

I believe (but cannot prove), and seem to recall from my reading, that OOPs are poor first languages, in general. Novices just don’t get class-instance.

And that doesn’t change. Experts learn just enough to be dangerous. Given all the turgid, overwrought, tortured designs polluting the computing & IT landscape, I think we’d all be happier to plough under class-instance, poor a cement cap over it, and then plant a vegetable garden.

Actor based languages seem more appropriate for teaching. Cause & effort are more apparent. The spiffy new visual tools shorten the edit-compile-debug loop; feels more like problem solving than fighting an angry gorilla.


Cheers, Jason
Konstantin Ignatyev
2014-01-14 18:04:19 UTC
Permalink
Jason,
From my experience novices do not have that much of confusion about
class/instance when explained with some degree of personification: like
"class" is a blueprint-schema-spec we give to "the computer" so it knows
how to build such thing when we asking "the computer" to do it for us.
Takes a bit of time to sink in but seems to make sense for them.
And personifying those instances as sort of anthropomorphic beings which
are independent and mind their own business kinda working.

Worst friction I observed when there are inconsistencies with theory of any
kind, like a moment I had to explain about int and Integer the
anthropomorphic computer analogy melts down.

Or when I had to say that Person p = new Person() is "they way we do things
here", even we just discussed that we need a location for newly
born/assembled person(variable) that we want to name nicely (carMechanic).
Sorry Java, you fail here, pretty much all other languages do it better
var carMechanic = new Person() is way more natural.
Hi Konstantin.
Looks like there is an agreement: do not use Java as language to teach kids.
Though certainly true, I’m not ready to concede that. There’s been much
research. I haven’t kept up. (See below.)
Just checked, the Blue/J project seems alive and well, and has spawned
Greenfoot. Blue/J tackles the OOP issue head on.
http://www.bluej.org
http://en.wikipedia.org/wiki/BlueJ
http://www.greenfoot.org/door
http://en.wikipedia.org/wiki/Greenfoot
Though I would argue that Greenfoot is more about Actors than Java.
When I tried to teach my son Java (he had a class in High School) I tried
to step into novice shoes and realized how badly we are brainwashed (me for
sure)
Person p = new Person();
I still don’t get Java’s instance declaration and initialization syntax.
Sucks. But I got used to it. And I haven’t thought of a better strategy
(for imperative programming). More concise, yes; better, no. Though I will
say that declarative syntax (like ARON, VRML) makes lofting object graphs
super intuitive.
I believe (but cannot prove), and seem to recall from my reading, that
OOPs are poor first languages, in general. Novices just don’t get
class-instance.
And that doesn’t change. Experts learn just enough to be dangerous. Given
all the turgid, overwrought, tortured designs polluting the computing & IT
landscape, I think we’d all be happier to plough under class-instance, poor
a cement cap over it, and then plant a vegetable garden.
Actor based languages seem more appropriate for teaching. Cause & effort
are more apparent. The spiffy new visual tools shorten the
edit-compile-debug loop; feels more like problem solving than fighting an
angry gorilla.
Cheers, Jason
--
Konstantin Ignatyev

PS: If this is a typical day on planet Earth, humans will add fifteen
million tons of carbon to the atmosphere, destroy 115 square miles of
tropical rainforest, create seventy-two miles of desert, eliminate between
forty to one hundred species, erode seventy-one million tons of topsoil,
add 2,700 tons of CFCs to the stratosphere, and increase their population
by 263,000

Bowers, C.A. The Culture of Denial: Why the Environmental Movement Needs a
Strategy for Reforming Universities and Public Schools. New York: State
University of New York Press, 1997: (4) (5) (p.206)
Douglas Pearson
2014-01-14 19:22:17 UTC
Permalink
I agree with Konstantin that the issue I've seen isn't so much
class-instance as a challenge as dealing with abstract ideas. We're so
used to picturing abstract concepts in our heads I think it's easy to
forget that it's something you need to learn :)

That's where I think the visual feedback makes things much easier.
- If I have 3 Person instances in Java that's abstract ("I only typed
Person one time into the computer, how can there be 3 of them?").
- If I have 3 dragons flying across the screen, it's much more obvious
that each dragon should have it's own "x,y" coordinate stored somewhere and
also that all dragons have some stuff (like an image..or later a class) in
common.

Doug

On Tue, Jan 14, 2014 at 10:04 AM, Konstantin Ignatyev
Post by Konstantin Ignatyev
Jason,
From my experience novices do not have that much of confusion about
class/instance when explained with some degree of personification: like
"class" is a blueprint-schema-spec we give to "the computer" so it knows
how to build such thing when we asking "the computer" to do it for us.
Takes a bit of time to sink in but seems to make sense for them.
And personifying those instances as sort of anthropomorphic beings which
are independent and mind their own business kinda working.
Worst friction I observed when there are inconsistencies with theory of
any kind, like a moment I had to explain about int and Integer the
anthropomorphic computer analogy melts down.
Or when I had to say that Person p = new Person() is "they way we do
things here", even we just discussed that we need a location for newly
born/assembled person(variable) that we want to name nicely (carMechanic).
Sorry Java, you fail here, pretty much all other languages do it better
var carMechanic = new Person() is way more natural.
Post by Jason Osgood
Hi Konstantin.
Looks like there is an agreement: do not use Java as language to teach kids.
Though certainly true, I’m not ready to concede that. There’s been much
research. I haven’t kept up. (See below.)
Just checked, the Blue/J project seems alive and well, and has spawned
Greenfoot. Blue/J tackles the OOP issue head on.
http://www.bluej.org
http://en.wikipedia.org/wiki/BlueJ
http://www.greenfoot.org/door
http://en.wikipedia.org/wiki/Greenfoot
Though I would argue that Greenfoot is more about Actors than Java.
When I tried to teach my son Java (he had a class in High School) I tried
to step into novice shoes and realized how badly we are brainwashed (me for
sure)
Person p = new Person();
I still don’t get Java’s instance declaration and initialization syntax.
Sucks. But I got used to it. And I haven’t thought of a better strategy
(for imperative programming). More concise, yes; better, no. Though I will
say that declarative syntax (like ARON, VRML) makes lofting object graphs
super intuitive.
I believe (but cannot prove), and seem to recall from my reading, that
OOPs are poor first languages, in general. Novices just don’t get
class-instance.
And that doesn’t change. Experts learn just enough to be dangerous. Given
all the turgid, overwrought, tortured designs polluting the computing & IT
landscape, I think we’d all be happier to plough under class-instance, poor
a cement cap over it, and then plant a vegetable garden.
Actor based languages seem more appropriate for teaching. Cause & effort
are more apparent. The spiffy new visual tools shorten the
edit-compile-debug loop; feels more like problem solving than fighting an
angry gorilla.
Cheers, Jason
--
Konstantin Ignatyev
PS: If this is a typical day on planet Earth, humans will add fifteen
million tons of carbon to the atmosphere, destroy 115 square miles of
tropical rainforest, create seventy-two miles of desert, eliminate between
forty to one hundred species, erode seventy-one million tons of topsoil,
add 2,700 tons of CFCs to the stratosphere, and increase their population
by 263,000
Bowers, C.A. The Culture of Denial: Why the Environmental Movement Needs a
Strategy for Reforming Universities and Public Schools. New York: State
University of New York Press, 1997: (4) (5) (p.206)
P.Hill
2014-02-02 07:39:36 UTC
Permalink
Post by Konstantin Ignatyev
var carMechanic = new Person()
Just back from a Google Developer Group this past weekend playing (a
little) with DART.
It is structured & strongly typed ... most of the time, but you can skip
the strong typing when you want it exactly in places like declaring
local variables,
so you can use var to declare a local variable.

It includes a free smart editor, debugger. It is designed for better
client side work in the browser and better web apps; there are simple
graphics libraries.
It certainly a little less verbose than Java, so might make a bit less
wordy 1st language.

You also can have methods that are not in classes (since
functions/methods are 1st class constructs in the language) , so you
could start with just a (main) function and skip the surrounding class
Foo { public static void ... Forget about a declaration having extra
crap, the opening of a class to get to the main is wordy! But I've seen
good books jump to the main and get back to explaining that cruft
later. You don't teach about how a car works by explaining the bumper
then the grill then the radiator, just because that's the order from
front to back on a car.

OTOH a new variable assigned to a newly created object takes 6 bits of
syntax. (I don't use the term "ceremony" to describe syntax, that is a
mis-use of a well-defined term in Software Engineering - ceremony is
part of process not of a languages). We're declaring we need a (1) a
storage location we want to refer to with the variable name (2)
carMechanic - to store a reference to a (3) Person, asking for a (4) new
(5) Person object and (6) putting (assigning) a reference to that new
Person object into this new variable/location (1). To me, The truly
extraneous syntax are the parenthesis.

3 could imply 5 or visa vera and 4 might be implied by context, so terse
might be
var carMechanic = Person;
but having syntax for indicating you're creating something new has its uses.

The shorter version seems only trivially different conceptually and
syntactically to me. It certainly ain't conceptually hard, I've seen it
done with cartoonish robots and little boxes.

As to having to start with assembly, I say absolutely B.S. Draw and
talk about sequences of memory locations for instructions and data. Talk
about CPUs, registers, & memory; but using less elegant languages like C
& assembly are not a requirement to learning anything except those
specific bit twiddling languages (I say, having programmed a PDP-8 using
a paper tape reader in 1976).

-Paul



------------------------------------

Yahoo Groups Links

<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/seajug/

<*> Your email settings:
Individual Email | Traditional

<*> To change settings online go to:
http://groups.yahoo.com/group/seajug/join
(Yahoo! ID required)

<*> To change settings via email:
seajug-digest-***@public.gmane.org
seajug-fullfeatured-***@public.gmane.org

<*> To unsubscribe from this group, send an email to:
seajug-unsubscribe-***@public.gmane.org

<*> Your use of Yahoo Groups is subject to:
http://info.yahoo.com/legal/us/yahoo/utos/terms/
Don Ledford
2014-02-02 16:06:02 UTC
Permalink
Post by P.Hill
Post by Konstantin Ignatyev
var carMechanic = new Person()
Just back from a Google Developer Group this past weekend playing (a
little) with DART.
I wrote a simple sudoku solver in both dart and java. To my surprise
the dart version is faster even when running enough puzzles to soak the
VMs. This isn't a definitive benchmark, but dart may play well on the
server too.





------------------------------------

Yahoo Groups Links

<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/seajug/

<*> Your email settings:
Individual Email | Traditional

<*> To change settings online go to:
http://groups.yahoo.com/group/seajug/join
(Yahoo! ID required)

<*> To change settings via email:
seajug-digest-***@public.gmane.org
seajug-fullfeatured-***@public.gmane.org

<*> To unsubscribe from this group, send an email to:
seajug-unsubscribe-***@public.gmane.org

<*> Your use of Yahoo Groups is subject to:
http://info.yahoo.com/legal/us/yahoo/utos/terms/

Loading...