Stories
Slash Boxes
Comments

SoylentNews is people

posted by martyb on Friday November 04 2016, @07:09PM   Printer-friendly
from the choose-logically dept.

We've had this question asked before I believe but it does no harm in asking it again and again. After all, opinions change as does the software ecosystem. Quincy Larson of FreeCodeCamp.com asked this question via Medium: What programming language should you learn first? He thinks JavaScript is the way to go and his arguments are cogent and well thought out. However, I am somewhat hesitant to suggest someone learn to code in JavaScript first. My first programming language (in 1981!) was Fortran on a Control Data mainframe. The interactive environment the OS provided was pretty simple and the language provided few opportunities to hang yourself. JavaScript, by comparison, while it may not have those evil pointers of C/C++, it offers functional features and plenty of rope to hang oneself.

So, opinions please.


Original Submission

 
This discussion has been archived. No new comments can be posted.
Display Options Threshold/Breakthrough Mark All as Read Mark All as Unread
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
  • (Score: 3, Interesting) by goodie on Friday November 04 2016, @08:14PM

    by goodie (1877) on Friday November 04 2016, @08:14PM (#422597) Journal

    I teach at the undergrad/grad level in a North American business school. We teach IT so we do want our students to actually learn to code a bit so that they can understand how things work. In the past, they learned Java, and this year PHP (only one programming class which on my opinion is already a shame but I digress...). These two languages are too complicated for a first look at programming IMHO. What I mean by that is that the time required to get up and running writing your first Hello World is too high, especially in Java. Sure, you'll get to OO etc. and writing for web pages is fun. But when you need to learn _programming_, you need to understand a few fundamentals before anything else I think: data structures, functions and such very simply things that are the foundation for everything else you will learn.

    Our problem is that students do not understand these fundamental things so every time they see a function in a different language, they have a hard time understanding that it's the same stuff they've been playing with in their previous class, just using a different language/context.

    Anyway for me that's what's key. You need something that is quick to get up and running with and does not force you to jump through hoops to get your code to compile and run. And that's the reason why back then we learned Pascal. We did some interesting stuff with it too. Now, I'd advise for Python. Very fast to start coding with. And I don't mean fancy stuff, CLI programs to read files/user input, do stuff and write output to file. These are very simple (/boring) things but they are simple ideas that do not get in the way of learning programming. The moment you throw in the idea of a UI on top of that, you've lost them. From a pedagogical perspective, Python is also interesting because of things like IPython Notebook that can really help people learn at their own pace and see code being executed. I haven't used it for teaching but I've told people around me that I'd be game to prep an intro to programming in Python class at my school. Plus it would help them since Python is hot, although that should not be the main motivator.

    Granted, these are observations in my context only. Engineering/CS/younger/older people will likely have a different opinion :)

    Starting Score:    1  point
    Moderation   +1  
       Interesting=1, Total=1
    Extra 'Interesting' Modifier   0  
    Karma-Bonus Modifier   +1  

    Total Score:   3  
  • (Score: 2) by dyingtolive on Friday November 04 2016, @08:52PM

    by dyingtolive (952) on Friday November 04 2016, @08:52PM (#422623)

    Which part of java was too complicated? I'd think you'd be able to get "Hello World" out in maybe a half hour, and that's if you're going slow and explaining things. Maybe I'm wrong?

    --
    Don't blame me, I voted for moose wang!
    • (Score: 0) by Anonymous Coward on Saturday November 05 2016, @12:30AM

      by Anonymous Coward on Saturday November 05 2016, @12:30AM (#422694)

      You still need to place that into a method. There's nothing wrong with it but then you get into "why?" Questions before you had a chance to actually show that they can easily do something. Oftentimes you'll need a package name, a class etc even if your objective is not to actually create objects. Again, nothing wrong with it but I see it as a sort of "baggage" that can hinder some people's ability to understand and enjoy th fundamentals of programming. Again this is also from the perspective of a business school as a first programming language to learn.

    • (Score: 4, Informative) by Anonymous Coward on Saturday November 05 2016, @03:24AM

      by Anonymous Coward on Saturday November 05 2016, @03:24AM (#422728)

      You are looking at from the POV of someone with experience

      public class HelloWorld {
              public static void main(String[] args) {
                      System.out.println("Hello, World");
              }
      }

      Take this for example. From a beginners POV there no less than 6 different things that are 'magic'. Just to get it to print something. With python. It is 1 line.

      print "Hello, World"
      or if you are using python 3
      print("Hello, World")

      That is it. With Java you have to just take the magic on the word of whoever is teaching it. You have to know what a class, public, static, void, System.out.println, things do. On top of that you are going to just type stuff in to get it to 'compile'. Now yes eventually you learn what they do but at first it seems like magic and introduces questions before you even know why you are asking them. It basically forces the student to either be *very* inquisitive or just punch in what the docs say. With the first one the teacher will get off track and you will get ahead of him and learn it but may miss other things he was trying to teach. With the second way you do not really care and maybe 'it works i guess' not exactly very inspiring.

      Usually the order is printing things, variables, math, if statements, for/while, functions, physical structure (spaces layout), structures, objects, and so on. Each of those things builds on the previous thing. Having to stop in the middle of the hello world and explain to someone what 'public' means when they do not even know what a structure or object is is meaningless to a beginner.

      You and I know what that junk is because we either taught it to ourselves or someone showed us. However, order and pacing is a key method in teaching most people. Some people are cool with running all over the place. But take for example my SO. She would tear you head off for NOT showing her right now what that means. She will not accept 'oh dont worry about that right now'. She would lose her place and the pacing of the teaching.

      Programming can be extremely satisfying to many people. However, it is easy to get distracted in the volume of stuff going on. Hand wavy 'dont worry about that yet' really discourages people. The feel like the thing is too big to do and they drop out. When the reality is they just do not have the knowledge yet to even ask the right questions. Properly introducing those questions is key to making people learn. They will feel they are along with the ride for you instead of you just walking them through some boring assignments.

      • (Score: 2) by dyingtolive on Saturday November 05 2016, @04:57AM

        by dyingtolive (952) on Saturday November 05 2016, @04:57AM (#422745)

        Fair enough. Thank you for the informative response.

        I have had some experience teaching people, but it's been to the tune of less than five people at a time in the form of internal technical product training, so pacing was more easy to manage I think than a proper classroom would be. It was proprietary linux server software to people who usually went into it maybe having installed ubuntu once, so it wasn't exactly easy mode, but it was a surprisingly fun job.

        --
        Don't blame me, I voted for moose wang!
      • (Score: 2) by goodie on Sunday November 06 2016, @01:44AM

        by goodie (1877) on Sunday November 06 2016, @01:44AM (#422975) Journal

        Thanks for taking the time to write what I was thinking about :)
        (I was the AC - by mistake - on the previous post talking about the class/method part).

        But this is exactly the issue if you have never programmed in your life before.