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"><jker...@gmail.com></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"><sc...@fradkin.com></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"><usasyste...@gmail.com></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"><iamda...@gmail.com></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--