Account Options

  1. Sign in
The old Google Groups will be going away soon, but your browser is incompatible with the new version.
Google Groups Home
« Groups Home
Message from discussion Best First Programming Language?

Received: by 10.50.36.199 with SMTP id s7mr6806592igj.3.1349733441256;
        Mon, 08 Oct 2012 14:57:21 -0700 (PDT)
X-BeenThere: sector67@googlegroups.com
Received: by 10.42.244.193 with SMTP id lr1ls7223428icb.1.gmail; Mon, 08 Oct
 2012 14:57:20 -0700 (PDT)
Received: by 10.43.120.65 with SMTP id fx1mr10408142icc.28.1349733440101;
        Mon, 08 Oct 2012 14:57:20 -0700 (PDT)
Received: by 10.43.120.65 with SMTP id fx1mr10408140icc.28.1349733440066;
        Mon, 08 Oct 2012 14:57:20 -0700 (PDT)
Return-Path: <lawins...@gmail.com>
Received: from mail-ie0-f175.google.com (mail-ie0-f175.google.com [209.85.223.175])
        by gmr-mx.google.com with ESMTPS id us14si1417592igb.3.2012.10.08.14.57.20
        (version=TLSv1/SSLv3 cipher=OTHER);
        Mon, 08 Oct 2012 14:57:20 -0700 (PDT)
Received-SPF: pass (google.com: domain of lawins...@gmail.com designates 209.85.223.175 as permitted sender) client-ip=209.85.223.175;
Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of lawins...@gmail.com designates 209.85.223.175 as permitted sender) smtp.mail=lawins...@gmail.com; dkim=pass header...@gmail.com
Received: by mail-ie0-f175.google.com with SMTP id c13so10829305ieb.6
        for <sector67@googlegroups.com>; Mon, 08 Oct 2012 14:57:20 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20120113;
        h=message-id:date:from:user-agent:mime-version:to:subject:references
         :in-reply-to:content-type;
        bh=nYWHFZiwMONusJtk7Mdky/XMp5pF9E7ALUl7Xgb78B4=;
        b=sSfYJDR3UXE3W+cKnhDtJ9mSQNomJgWmnVbxmhH7+0Sjapp7HdAvUQRgdOmKl1SHOC
         f3TCMX/ZaS4RBPndwmgtjitFo67qakVKnXrq3ur4++CXuCPyIF9XJ9qjpVro37C1lgPp
         mHticU/vTaAuWxMRqL+/loeh2qQjr3kxynpQiS0mNu7yZyMuimmrvEGLLA8fYK/a+217
         Qq/7Yr3UCbfK9DxuuoPkLZ89Twj9A/h4i7YgQDVRr7ljG+C2DIy6q65SFz5BzXAC4WBA
         lHDIr3LyHUVudx/8y5meHJ/L2QT7MdiYOg8R7zGDKhgI0ErwOKRToRVifztmMBu3HgEu
         tr5Q==
Received: by 10.50.95.231 with SMTP id dn7mr9724949igb.37.1349733439747;
        Mon, 08 Oct 2012 14:57:19 -0700 (PDT)
Return-Path: <lawins...@gmail.com>
Received: from [144.92.62.225] (limno225.limnology.wisc.edu. [144.92.62.225])
        by mx.google.com with ESMTPS id vq4sm2683870igb.10.2012.10.08.14.57.18
        (version=SSLv3 cipher=OTHER);
        Mon, 08 Oct 2012 14:57:19 -0700 (PDT)
Message-ID: <50734C47.2030...@gmail.com>
Date: Mon, 08 Oct 2012 16:57:27 -0500
From: Luke Winslow <lawins...@gmail.com>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20120907 Thunderbird/15.0.1
MIME-Version: 1.0
To: sector67@googlegroups.com
Subject: Re: [S67 Public] Re: Best First Programming Language?
References: <9c90e3a1-5a1b-4ae6-b019-88783cebc1f8@googlegroups.com> <82a8baf8-6c1b-419d-a137-d68d78d3dcc2@googlegroups.com> <CAHox36uFX7my5vk+yEB=iJKgGsOLPFrBWMeMOhDVnxdmCQS...@mail.gmail.com> <B19B8BB1-EF35-4EFD-B9E6-0CC328836...@fradkin.com> <CAE4mH4YB3bDKrrcWUW6EPGGZZv0TTLVSDGM539xoS4iA7r0...@mail.gmail.com> <CAMFf91zxxApqQYE_tB9Hu2eQOw9Ti9KrkYbh3tmSudq70rB...@mail.gmail.com>
In-Reply-To: <CAMFf91zxxApqQYE_tB9Hu2eQOw9Ti9KrkYbh3tmSudq70rB...@mail.gmail.com>
Content-Type: multipart/alternative;
 boundary="------------000405010404080907000508"

This is a multi-part message in MIME format.
--------------000405010404080907000508
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

I'd like to second the project-based approach to learning programming. A 
lot of individuals have come to me and asked what flavor of programming 
language they should learn. As long as they've selected a reasonable 
language (not x86 assembly or something), I've almost *never* seen the 
language predict success or failure.

But I've seen a lot of people fail to learn programming. Why you might 
ask? Because they got discouraged and stopped. They got bored. Or they 
finished the online tutorial/bootcamp and didn't *do* anything with the 
language they learned. They were rarely challenged with the subject and 
didn't internalize much of what they were doing.

Why do I think having a project in mind is so important? A project gives 
you clarity of purpose. It helps you get over the inevitable challenge 
and hurtles you will encounter when programming. If I get an bizarre 
error message when working through a tutorial, do I spend two hours 
figuring it out so I can print "Hello world"? Meh, probably not. But if 
my project is to write an android app and I can't get the Notepad 
Tutorial <http://developer.android.com/training/notepad/index.html> 
loaded on my android device because of a version conflict/path issue/SDK 
install problem, do I spend a full Saturday digging through old blog 
posts and reinstalling the SDK five times to get it to work? Yes. It 
also helps you evaluate your own progress. Am I learning what I need to 
learn? Project approach: Am I making progress towards my project goal? 
Tutorial/learning materials approach: How far through the learning 
materials am I?

In fact, I'd argue that a project based approach can apply to learning a 
lot of different skills (insert "woodworking" for the word 
"programming"). It doesn't work in necessarily all situations, but you 
can definitely see it out there. Want to learn carpentry? Build 
something. Want to learn to fix cars? Start working on your own car.

When people ask now what language they should start learning, I ask them 
"What's your project?" Once they have a project in mind, regardless of 
how simple or complex, I point them towards the language/OS/framework 
which will help them quickly finish their project in mind. Of course, if 
it seems like their project is overly ambitious for their skill level, I 
try to help them pare it down to a more manageable level.

-Luke

P.S. If the person I'm talking to can't come up with a project they want 
to accomplish, I often ask if learning to program is really worth it to 
them at that moment.

On 10/8/2012 4:06 PM, Brendan O'Connor wrote:
> I agree with a project-based approach to learn a *new* language, but
> you need to do a bit of basic work before you can do that (maybe
> outside Arduino).
>
> I'm going to say either Ruby or Python as a first language: both free
> you from the stupid cargo culting of languages like C or Java (public
> static void main(String[] args) anyone?), and both are commercially
> viable if you want to go that route. If you have no interest in
> programming professionally in the near term, Processing is a *great*
> first language-- I've used it to teach reporters how to code enough to
> extract information from Data.gov, and it's a great language for any
> art work.
>
> ---BFO
>
> On Mon, Oct 8, 2012 at 4:04 PM, Joe Kerman <jker...@gmail.com> wrote:
>> I would throw in my $0.02 for a project-based approach. It certainly
>> depends on the type of person you are, but for me, there is no greater
>> motivation to learn a skill than to REALLY want a project that cant be
>> done without said skill.  Learning any type of programming language is
>> the main goal. its relatively easy to switch between one or the other
>> once you get past the basic hurdles of learning to talk in a way that
>> computers like to be talked to.
>>
>> Arduino is a great place to start, because there are so many projects
>> you can verbatim copy, that are immediately useful in the real world.
>> Interacting with the real world is a great motivator! Learning to code
>> is pretty fun when there are blinky lights for feedback instead of
>> debug output.
>>
>> Id second a vote for processing as well, for similar reasons.  Lots of
>> examples to copy, and lots of instant visual useful feedback.
>>
>>
>> On Mon, Oct 8, 2012 at 3:45 PM, Scott Fradkin <sc...@fradkin.com> wrote:
>>> Along those lines... At BarCampMilwaukee this past weekend I learned about the existence of a program called Alice [alice.org].  It seems to be a bit like Scratch except for learning programming by manipulating 3D environments.
>>>
>>> Scott
>>>
>>> On Oct 8, 2012, at 3:31 PM, Peter Novotnak <usasyste...@gmail.com> wrote:
>>>
>>>> +1 Dave, that's a really cool suggestion.
>>>>
>>>> -Peter
>>>>
>>>> On Mon, Oct 8, 2012 at 3:24 PM, Dave Cornell <iamda...@gmail.com> wrote:
>>>>> I vote for Unity3D.  Code in Javascript, print stuff to the console, get
>>>>> your feet wet, etc. then next step - make cool stuff happen in 3D!  Very
>>>>> intuitive in how scripts are attached to objects I might add.  For me it's
>>>>> all about the code making something happen you can see/hear, that's what's
>>>>> most gratifying.
>>>>>
>>>>> --
>>>>> You received this message because you are subscribed to the Google Groups
>>>>> "Sector67 Public" group.
>>>>> To view this discussion on the web visit
>>>>> https://groups.google.com/d/msg/sector67/-/attp5bDC6VAJ.
>>>>>
>>>>> To post to this group, send email to sector67@googlegroups.com.
>>>>> To unsubscribe from this group, send email to
>>>>> sector67+unsubscribe@googlegroups.com.
>>>>> For more options, visit this group at
>>>>> http://groups.google.com/group/sector67?hl=en.
>>>> --
>>>> You received this message because you are subscribed to the Google Groups "Sector67 Public" group.
>>>> To post to this group, send email to sector67@googlegroups.com.
>>>> To unsubscribe from this group, send email to sector67+unsubscribe@googlegroups.com.
>>>> For more options, visit this group at http://groups.google.com/group/sector67?hl=en.
>>>>
>>> --
>>> You received this message because you are subscribed to the Google Groups "Sector67 Public" group.
>>> To post to this group, send email to sector67@googlegroups.com.
>>> To unsubscribe from this group, send email to sector67+unsubscribe@googlegroups.com.
>>> For more options, visit this group at http://groups.google.com/group/sector67?hl=en.
>>>
>> --
>> You received this message because you are subscribed to the Google Groups "Sector67 Public" group.
>> To post to this group, send email to sector67@googlegroups.com.
>> To unsubscribe from this group, send email to sector67+unsubscribe@googlegroups.com.
>> For more options, visit this group at http://groups.google.com/group/sector67?hl=en.
>>


--------------000405010404080907000508
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    I'd like to second the project-based approach to learning
    programming. A lot of individuals have come to me and asked what
    flavor of programming language they should learn. As long as they've
    selected a reasonable language (not x86 assembly or something), I've
    almost *never* seen the language predict success or failure. <br>
    <br>
    But I've seen a lot of people fail to learn programming. Why you
    might ask? Because they got discouraged and stopped. They got bored.
    Or they finished the online tutorial/bootcamp and didn't *do*
    anything with the language they learned. They were rarely challenged
    with the subject and didn't internalize much of what they were
    doing.<br>
    <br>
    Why do I think having a project in mind is so important? A project
    gives you clarity of purpose. It helps you get over the inevitable
    challenge and hurtles you will encounter when programming. If I get
    an bizarre error message when working through a tutorial, do I spend
    two hours figuring it out so I can print "Hello world"? Meh,
    probably not. But if my project is to write an android app and I
    can't get the <a
      href="http://developer.android.com/training/notepad/index.html">Notepad
      Tutorial</a> loaded on my android device because of a version
    conflict/path issue/SDK install problem, do I spend a full Saturday
    digging through old blog posts and reinstalling the SDK five times
    to get it to work? Yes. It also helps you evaluate your own
    progress. Am I learning what I need to learn? Project approach: Am I
    making progress towards my project goal? Tutorial/learning materials
    approach: How far through the learning materials am I? <br>
    <br>
    In fact, I'd argue that a project based approach can apply to
    learning a lot of different skills (insert "woodworking" for the
    word "programming"). It doesn't work in necessarily all situations,
    but you can definitely see it out there. Want to learn carpentry?
    Build something. Want to learn to fix cars? Start working on your
    own car.<br>
    <br>
    When people ask now what language they should start learning, I ask
    them "What's your project?" Once they have a project in mind,
    regardless of how simple or complex, I point them towards the
    language/OS/framework which will help them quickly finish their
    project in mind. Of course, if it seems like their project is overly
    ambitious for their skill level, I try to help them pare it down to
    a more manageable level.<br>
    <br>
    -Luke<br>
    <br>
    P.S. If the person I'm talking to can't come up with a project they
    want to accomplish, I often ask if learning to program is really
    worth it to them at that moment.<br>
    <br>
    <div class="moz-cite-prefix">On 10/8/2012 4:06 PM, Brendan O'Connor
      wrote:<br>
    </div>
    <blockquote
cite="mid:CAMFf91zxxApqQYE_tB9Hu2eQOw9Ti9KrkYbh3tmSudq70rB...@mail.gmail.com"
      type="cite">
      <pre wrap="">I agree with a project-based approach to learn a *new* language, but
you need to do a bit of basic work before you can do that (maybe
outside Arduino).

I'm going to say either Ruby or Python as a first language: both free
you from the stupid cargo culting of languages like C or Java (public
static void main(String[] args) anyone?), and both are commercially
viable if you want to go that route. If you have no interest in
programming professionally in the near term, Processing is a *great*
first language-- I've used it to teach reporters how to code enough to
extract information from Data.gov, and it's a great language for any
art work.

---BFO

On Mon, Oct 8, 2012 at 4:04 PM, Joe Kerman <a class="moz-txt-link-rfc2396E" href="mailto:jker...@gmail.com">&lt;jker...@gmail.com&gt;</a> wrote:
</pre>
      <blockquote type="cite">
        <pre wrap="">I would throw in my $0.02 for a project-based approach. It certainly
depends on the type of person you are, but for me, there is no greater
motivation to learn a skill than to REALLY want a project that cant be
done without said skill.  Learning any type of programming language is
the main goal. its relatively easy to switch between one or the other
once you get past the basic hurdles of learning to talk in a way that
computers like to be talked to.

Arduino is a great place to start, because there are so many projects
you can verbatim copy, that are immediately useful in the real world.
Interacting with the real world is a great motivator! Learning to code
is pretty fun when there are blinky lights for feedback instead of
debug output.

Id second a vote for processing as well, for similar reasons.  Lots of
examples to copy, and lots of instant visual useful feedback.


On Mon, Oct 8, 2012 at 3:45 PM, Scott Fradkin <a class="moz-txt-link-rfc2396E" href="mailto:sc...@fradkin.com">&lt;sc...@fradkin.com&gt;</a> wrote:
</pre>
        <blockquote type="cite">
          <pre wrap="">Along those lines... At BarCampMilwaukee this past weekend I learned about the existence of a program called Alice [alice.org].  It seems to be a bit like Scratch except for learning programming by manipulating 3D environments.

Scott

On Oct 8, 2012, at 3:31 PM, Peter Novotnak <a class="moz-txt-link-rfc2396E" href="mailto:usasyste...@gmail.com">&lt;usasyste...@gmail.com&gt;</a> wrote:

</pre>
          <blockquote type="cite">
            <pre wrap="">+1 Dave, that's a really cool suggestion.

-Peter

On Mon, Oct 8, 2012 at 3:24 PM, Dave Cornell <a class="moz-txt-link-rfc2396E" href="mailto:iamda...@gmail.com">&lt;iamda...@gmail.com&gt;</a> wrote:
</pre>
            <blockquote type="cite">
              <pre wrap="">I vote for Unity3D.  Code in Javascript, print stuff to the console, get
your feet wet, etc. then next step - make cool stuff happen in 3D!  Very
intuitive in how scripts are attached to objects I might add.  For me it's
all about the code making something happen you can see/hear, that's what's
most gratifying.

--
You received this message because you are subscribed to the Google Groups
"Sector67 Public" group.
To view this discussion on the web visit
<a class="moz-txt-link-freetext" href="https://groups.google.com/d/msg/sector67/-/attp5bDC6VAJ">https://groups.google.com/d/msg/sector67/-/attp5bDC6VAJ</a>.

To post to this group, send email to <a class="moz-txt-link-abbreviated" href="mailto:sector67@googlegroups.com">sector67@googlegroups.com</a>.
To unsubscribe from this group, send email to
<a class="moz-txt-link-abbreviated" href="mailto:sector67+unsubscribe@googlegroups.com">sector67+unsubscribe@googlegroups.com</a>.
For more options, visit this group at
<a class="moz-txt-link-freetext" href="http://groups.google.com/group/sector67?hl=en">http://groups.google.com/group/sector67?hl=en</a>.
</pre>
            </blockquote>
            <pre wrap="">
--
You received this message because you are subscribed to the Google Groups "Sector67 Public" group.
To post to this group, send email to <a class="moz-txt-link-abbreviated" href="mailto:sector67@googlegroups.com">sector67@googlegroups.com</a>.
To unsubscribe from this group, send email to <a class="moz-txt-link-abbreviated" href="mailto:sector67+unsubscribe@googlegroups.com">sector67+unsubscribe@googlegroups.com</a>.
For more options, visit this group at <a class="moz-txt-link-freetext" href="http://groups.google.com/group/sector67?hl=en">http://groups.google.com/group/sector67?hl=en</a>.

</pre>
          </blockquote>
          <pre wrap="">
--
You received this message because you are subscribed to the Google Groups "Sector67 Public" group.
To post to this group, send email to <a class="moz-txt-link-abbreviated" href="mailto:sector67@googlegroups.com">sector67@googlegroups.com</a>.
To unsubscribe from this group, send email to <a class="moz-txt-link-abbreviated" href="mailto:sector67+unsubscribe@googlegroups.com">sector67+unsubscribe@googlegroups.com</a>.
For more options, visit this group at <a class="moz-txt-link-freetext" href="http://groups.google.com/group/sector67?hl=en">http://groups.google.com/group/sector67?hl=en</a>.

</pre>
        </blockquote>
        <pre wrap="">
--
You received this message because you are subscribed to the Google Groups "Sector67 Public" group.
To post to this group, send email to <a class="moz-txt-link-abbreviated" href="mailto:sector67@googlegroups.com">sector67@googlegroups.com</a>.
To unsubscribe from this group, send email to <a class="moz-txt-link-abbreviated" href="mailto:sector67+unsubscribe@googlegroups.com">sector67+unsubscribe@googlegroups.com</a>.
For more options, visit this group at <a class="moz-txt-link-freetext" href="http://groups.google.com/group/sector67?hl=en">http://groups.google.com/group/sector67?hl=en</a>.

</pre>
      </blockquote>
      <pre wrap="">
</pre>
    </blockquote>
    <br>
  </body>
</html>

--------------000405010404080907000508--