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: 2) by moondoctor on Friday November 04 2016, @07:18PM

    by moondoctor (2963) on Friday November 04 2016, @07:18PM (#422565)

    Processing.org is really great.

    It's a nice 'BASIC' style implementation of a Java IDE. You can write 3 line programs that work, type it in and push play. Can take it to pretty impressive levels of complexity.

    Java is close enough to C that it means you are very close to proper pro programming, and processing smooths out the learning curve.

    Agree about hidden pitfalls of Javascript, hell, all scripting languages really...

    • (Score: 0, Redundant) by Ethanol-fueled on Friday November 04 2016, @11:33PM

      by Ethanol-fueled (2792) on Friday November 04 2016, @11:33PM (#422678) Homepage

      Processing.org is a great suggestion for those "How should I teach my 3 year-old kid how to code?" discussions. You'd be better off using Duplo blocks.

      • (Score: 3, Touché) by moondoctor on Friday November 04 2016, @11:56PM

        by moondoctor (2963) on Friday November 04 2016, @11:56PM (#422684)

        I thought that was the question! I learned to program when I was 8, basic and pascal.

    • (Score: 3, Funny) by driverless on Saturday November 05 2016, @05:26AM

      by driverless (4770) on Saturday November 05 2016, @05:26AM (#422748)

      Intercal! After that, everything else will seem easy.

  • (Score: 0, Troll) by Anonymous Coward on Friday November 04 2016, @07:25PM

    by Anonymous Coward on Friday November 04 2016, @07:25PM (#422568)

    Real men still program in COBOL. If you can learn that, you can learn any programming language.

    • (Score: 3, Insightful) by aristarchus on Friday November 04 2016, @07:38PM

      by aristarchus (2645) on Friday November 04 2016, @07:38PM (#422575) Journal

      COBOL? Fortran? But these are dead languages, like Latin! In a curriculum development committee meeting it was once pointed out that this is the great advantage of computer technology: we can now create dead languages in mere decades, instead of having to wait multiple millennia! And what ever happened to Pascal?

      • (Score: 5, Informative) by mendax on Friday November 04 2016, @08:08PM

        by mendax (2840) on Friday November 04 2016, @08:08PM (#422592)

        Uh.... COBOL and FORTRAN are very much alive. The world's banks and governments couldn't function without COBOL. And scientific applications are generally written in FORTRAN. Both languages are today object-oriented and continue to evolve, and new applications are written in these languages.

        --
        It's really quite a simple choice: Life, Death, or Los Angeles.
        • (Score: 3, Funny) by JNCF on Friday November 04 2016, @08:14PM

          by JNCF (4317) on Friday November 04 2016, @08:14PM (#422599) Journal

          I'm guessing aristarchus is still upset about Latin being proclaimed dead.

          • (Score: 2, Insightful) by aristarchus on Friday November 04 2016, @10:20PM

            by aristarchus (2645) on Friday November 04 2016, @10:20PM (#422651) Journal

            No, it is not so much the Latin, it is what passes for Greek these days! Oh, and Javascript.

            • (Score: 3, Interesting) by mendax on Friday November 04 2016, @10:24PM

              by mendax (2840) on Friday November 04 2016, @10:24PM (#422653)

              Ah, but Greek is spoken today by the Greeks. The modern language is surprisingly similar to the ancient one, whereas Latin is truly and thankfully dead, having morphed into many other languages that are much easier to learn and speak than Latin! Visual Basic is the Greek of the programming language world, having morphed out of an ancient programming tongue. JavaScript is more like French, a bizarre bastardization of C.

              --
              It's really quite a simple choice: Life, Death, or Los Angeles.
              • (Score: 0) by Anonymous Coward on Friday November 04 2016, @10:43PM

                by Anonymous Coward on Friday November 04 2016, @10:43PM (#422658)

                Javascipt == French? My God, what does that make English???

                • (Score: 2, Informative) by Anonymous Coward on Friday November 04 2016, @11:30PM

                  by Anonymous Coward on Friday November 04 2016, @11:30PM (#422674)

                  According to a fortune I saw today, English is the language in which "fat chance" and "slim chance" mean the same thing. And in which we drive on a parkway and park on a driveway.

                  • (Score: 4, Informative) by kazzie on Saturday November 05 2016, @08:05AM

                    by kazzie (5309) Subscriber Badge on Saturday November 05 2016, @08:05AM (#422769)

                    English is the language in which ... we drive on a parkway and park on a driveway.

                    Not in England you don't: You go to a parkway to catch a train [wikipedia.org]!

                • (Score: 2) by bzipitidoo on Saturday November 05 2016, @12:28AM

                  by bzipitidoo (4388) on Saturday November 05 2016, @12:28AM (#422692) Journal

                  Brainfuck.

            • (Score: 3, Funny) by JNCF on Friday November 04 2016, @11:01PM

              by JNCF (4317) on Friday November 04 2016, @11:01PM (#422665) Journal

              No, it is not so much the Latin, it is what passes for Greek these days!

              But Latin is Greek to me; [wikipedia.org] thus a JNCF's ignornance is an aristachus's burden, and it is so much the Latin! Your move, Detective [nocookie.net].

        • (Score: 1, Interesting) by Anonymous Coward on Friday November 04 2016, @08:34PM

          by Anonymous Coward on Friday November 04 2016, @08:34PM (#422612)

          I was at a local financial company with a relative and I walked past an area where the average age had to be in the 50s, markedly older than the rest of the office. I asked one of the gentlemen what they did and he replied, "It depends on how much you know about COBOL." One interesting thing to note is that they had one of the only "traditional" office spaces rather than the open floor plan or cubicle setup.

      • (Score: 5, Funny) by JNCF on Friday November 04 2016, @08:13PM

        by JNCF (4317) on Friday November 04 2016, @08:13PM (#422595) Journal

        Real real men program in COBOL inside of JavaScript comments: [npmjs.com]

        // Dependencies
        var Cobol = require("cobol");

        // Execute some COBOL snippets
        Cobol(function () { /*
                      IDENTIFICATION DIVISION.
                      PROGRAM-ID. HELLO.
                      ENVIRONMENT DIVISION.
                      DATA DIVISION.
                      PROCEDURE DIVISION.

                      PROGRAM-BEGIN.
                              DISPLAY "Hello world".

                      PROGRAM-DONE.
                              STOP RUN.
        */ }, function (err, data) {
                console.log(err || data);
        });
        // => "Hello World"

        Much like wrapping a decrepit old dying man in the flesh of a young mentally disabled child, the end product may seem fresh and new from a distance to the blind. But to be the one stretching the hide around -- to understand what you're doing, and continue? That takes grit.

        • (Score: 5, Touché) by dyingtolive on Friday November 04 2016, @08:26PM

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

          Sadly there is no "-1 Literal glimpse into unknowable horror" mod.

          --
          Don't blame me, I voted for moose wang!
        • (Score: 3, Informative) by Subsentient on Friday November 04 2016, @10:58PM

          by Subsentient (1111) on Friday November 04 2016, @10:58PM (#422662) Homepage Journal

          I like you.

          --
          "It is no measure of health to be well adjusted to a profoundly sick society." -Jiddu Krishnamurti
          • (Score: 3, Informative) by JNCF on Friday November 04 2016, @11:19PM

            by JNCF (4317) on Friday November 04 2016, @11:19PM (#422672) Journal

            Thanks! I like you too. I enjoy most of your comments that I read, and I was using a version of your init system on a virtual machine for a while. I don't know if you remember that time we flamed each other over my half-trollsy anti-vaccination position (the CIA does have a history of using vaccination programs to steal DNA), but I'm glad it hasn't fostered any long term negative associations with my username.

        • (Score: 0) by Anonymous Coward on Saturday November 05 2016, @05:34AM

          by Anonymous Coward on Saturday November 05 2016, @05:34AM (#422749)

          That's right but don't forget that

          If you gaze long into COBOL, COBOL also gazes into you...

        • (Score: 2) by davester666 on Saturday November 05 2016, @06:15AM

          by davester666 (155) on Saturday November 05 2016, @06:15AM (#422756)

          Once you've seen the slaughterhouse that is the original code base, doing this isn't so bad. Mix in periodic shots of Jack, and every day is easy.

  • (Score: 4, Insightful) by The Mighty Buzzard on Friday November 04 2016, @07:26PM

    by The Mighty Buzzard (18) Subscriber Badge <themightybuzzard@proton.me> on Friday November 04 2016, @07:26PM (#422569) Homepage Journal

    Have them bail off into the deep end right from the start; teach them perl. Yes, it's confusing having thirty ways to do any given task and they can very easily shoot themselves in the foot. Which will make other languages seem fresh and relaxing when they go on to learn them. Except java, it will still suck balls.

    --
    My rights don't end where your fear begins.
    • (Score: 3, Funny) by BsAtHome on Friday November 04 2016, @07:44PM

      by BsAtHome (889) on Friday November 04 2016, @07:44PM (#422579)

      "...very easily shoot themselves in the foot."

      That is an underestimation of programmatic proportion which a supercomputer mainframe has trouble calculating. I seriously doubt that such mainframe can come close to calculating the amount of horrible deaths you may encounter on the journey into Perl. Shooting your foot should be considered the pleasant form of mutilation you suffer. Most generally come out in small pieces from a shredder and are too fine-grained to become coherent again in the remainder of conscious thoughts that may resurface.

      Then again, it surely filters the good from the bad. So, yes, Perl is a good starting point.

      • (Score: 0) by Anonymous Coward on Friday November 04 2016, @08:05PM

        by Anonymous Coward on Friday November 04 2016, @08:05PM (#422589)

        > Then again, it surely filters the good from the bad. So, yes, Perl is a good starting point.

        Dont you mean

        for test
              %? || Die

        • (Score: 1) by sce7mjm on Friday November 04 2016, @08:36PM

          by sce7mjm (809) on Friday November 04 2016, @08:36PM (#422614)

          No, I don't believe he did

    • (Score: 2) by JoeMerchant on Friday November 04 2016, @08:39PM

      by JoeMerchant (3937) on Friday November 04 2016, @08:39PM (#422615)

      If you code in Perl as it was originally intended, your programs should never be more than a dozen statements, tops.

      "Powerful" scripting languages are by their very nature difficult to use. People who abuse them and write million line of code applications with essentially no groundwork rules of expected structure get what they deserve.

      --
      🌻🌻 [google.com]
      • (Score: 3, Touché) by The Mighty Buzzard on Friday November 04 2016, @10:10PM

        by The Mighty Buzzard (18) Subscriber Badge <themightybuzzard@proton.me> on Friday November 04 2016, @10:10PM (#422647) Homepage Journal

        You mean like the site you just posted to?

        --
        My rights don't end where your fear begins.
        • (Score: 2) by JoeMerchant on Saturday November 05 2016, @12:53AM

          by JoeMerchant (3937) on Saturday November 05 2016, @12:53AM (#422696)

          If Soylent requires 1M lines of Perl to do what it does, the programmers should be given an obfuscation award.

          --
          🌻🌻 [google.com]
          • (Score: 2) by The Mighty Buzzard on Saturday November 05 2016, @02:22AM

            by The Mighty Buzzard (18) Subscriber Badge <themightybuzzard@proton.me> on Saturday November 05 2016, @02:22AM (#422718) Homepage Journal

            Nah, only a little over 175K. Not counting external perl modules.

            --
            My rights don't end where your fear begins.
            • (Score: 2) by JoeMerchant on Saturday November 05 2016, @02:30AM

              by JoeMerchant (3937) on Saturday November 05 2016, @02:30AM (#422721)

              That's teamwork, and libraries for you. I've developed a couple of "big things" solo, and I can usually get more or less any "big thing" done in 100KLOC (C or C++). Put more people on the team and things tend to inflate. Bring in big libraries that need tweaking and things inflate fast (as you start adding the forked library code to your maintenance base.)

              --
              🌻🌻 [google.com]
              • (Score: 2) by The Mighty Buzzard on Saturday November 05 2016, @09:30AM

                by The Mighty Buzzard (18) Subscriber Badge <themightybuzzard@proton.me> on Saturday November 05 2016, @09:30AM (#422783) Homepage Journal

                Mind you, there's thousands of lines of dead code in there that we simply do not use. There might still be some D2 code in there as well as all of the AJAX code, for instance.

                --
                My rights don't end where your fear begins.
                • (Score: 2) by choose another one on Saturday November 05 2016, @11:02AM

                  by choose another one (515) Subscriber Badge on Saturday November 05 2016, @11:02AM (#422797)

                  Yeah, but as ever the trouble is you don't know exactly _which_ thousands of lines are unused so it all just has to stay there with (possibly) no function except to scare and confuse the uninitiated...

                  • (Score: 2) by The Mighty Buzzard on Saturday November 05 2016, @12:33PM

                    by The Mighty Buzzard (18) Subscriber Badge <themightybuzzard@proton.me> on Saturday November 05 2016, @12:33PM (#422811) Homepage Journal

                    Oh the bits we do use do that just fine. Which I don't quite understand. Sure, it takes a while to really get a handle on the overall functionality but most of the fixing we do only requires minor changes to one or two files, so you don't need to understand the whole thing to get some useful work done.

                    --
                    My rights don't end where your fear begins.
                • (Score: 2) by JoeMerchant on Saturday November 05 2016, @01:17PM

                  by JoeMerchant (3937) on Saturday November 05 2016, @01:17PM (#422819)

                  That's why my solo projects topped out around 100KLOC, around 5 or 6 years in we'd do a major refactoring (language change once, reboot on new hardware and systems the other), and rebuild without the cruft. Even along the way I endeavor to get the dead code out - it causes more trouble than benefit when you're sifting through it years after the last time it was active.

                  --
                  🌻🌻 [google.com]
    • (Score: 0) by Anonymous Coward on Friday November 04 2016, @10:53PM

      by Anonymous Coward on Friday November 04 2016, @10:53PM (#422661)

      the deep end = machine language

    • (Score: 2) by Marand on Friday November 04 2016, @11:31PM

      by Marand (1081) on Friday November 04 2016, @11:31PM (#422676) Journal

      There's some merit to this suggestion, but not because of your trial-by-fire logic. If you want someone to get interested in programming, they need a language that lets them do something useful and interesting. That means you want a "batteries included" type of language that comes with a lot of useful stuff out of the box. A language like that lets you dive in and start doing something useful with less time and code, so you get to that "FUCK YEAH! I MADE A THING!" rush sooner.

      If you have to fuck around with a bunch of libraries, language-specific package managers, and frameworks before you can even consider doing something useful, you're more likely to go "fuck this dumb shit" and find something else to do. That's the problem with teaching JavaScript, in my opinion, because you have to jump through a bunch of hoops to get anything useful done. The huge blob of overengineered shit that is JS + DOM + HTML + CSS just puts up hurdles between the programmer and the end result. Workarounds involve frameworks, but then you replace the original set of hurdles with new ones. When you're a beginner, you tend to know what you want to do but have no idea how to make it happen; you know you need the batteries but not what they're called. With a language like JavaScript, you end up with a massive pile of batteries and no idea which ones do what you want.

      You have a similar sort of problem with build-it-yourself languages such as Lua and most Schemes dialects. Instead of having to find the batteries, you're given the ingredients you need to make your own batteries if you want to do anything useful. Except, as a beginner, you have no idea how to do this and it gets frustrating.

      Languages like Python, Perl, Ruby, and others are all questionable for various reasons, but they're quick to get started with, easy to get results from, and have a large pile of useful built-in parts to choose from. You don't have to go hunting libraries early on, you can just keep the documentation that accompanies the language handy and look through it for the built-in things you need any time you run into something you want to do and can't figure out how. The negative to most of the batteries-included languages is they're usually complicated. Lots of syntax variation, weird tricks, and other things that get in the way. Python is no exception here, with its whitespace rules, but in general I think the benefits of a batteries-included language is worth the weirdness that tends to come with them.

      Another thing to consider is compiled vs. interpreted. The batteries-included languages tend to be high-level, dynamic ones, which means it's easier to do interactive, iterative development. You can start up a REPL and try things out, learn what works and what doesn't, and not have to worry about compile times, data types, or save-and-run cycles. Although I like Perl, I think this is what makes it less suitable as a beginner language vs. Ruby or Python. Perl lacks a REPL out-of-the-box, and the ones I've encountered on CPAN are piss-poor quality compared to the built-in ones provided with Python or Ruby (and the improved ones like Ruby's "pry" are leagues apart.)

      I probably should have mentioned Tcl+Tk along with the Ruby/Perl/Python discussion. It's batteries-included, has a passable REPL, and Tk makes it easy to make GUIs to do things. Unfortunately, any positives it has are outweighed by one massive negative: it's Tcl. I wouldn't want to wish that on anyone, even an enemy.

      Thinking about it, I believe Racket would be a good first language, at least in an educational context. It's a Scheme, so there's very little syntax to learn, but unlike most Schemes it has an extensive standard library built in, including a GUI toolkit, so you can do a lot with just the default installation. Its GUI REPL, DrRacket, is excellent and made in a way that lets it do double-duty as an IDE as well. You can make programs without ever needing to touch an external editor, and Racket has extensive documentation accessible from a menu. It's also simple to create runnable executables that can be distributed, so it would translate from educational to useful easily. The biggest hurdle to learning it would likely be that the documentation isn't as newbie-friendly as it could be, but in an educational context with a teacher, that's not as much of a problem.

      Also, because someone always brings it up: no, the parentheses are not a deal-breaker here. Don't even start. The syntax is one of the most consistent and regular you'll find; learning to group everything in parentheses is brain-dead simple compared to learning most languages' syntax from the perspective of an absolute newbie. Lisp syntax just seems weird to people because they already learned C-style syntax and forgot about the learning curve.

      • (Score: 1) by Ethanol-fueled on Friday November 04 2016, @11:44PM

        by Ethanol-fueled (2792) on Friday November 04 2016, @11:44PM (#422680) Homepage

        This is why C# on Visual Studio is still by far the most awesome thing to get ignorant noobs' attention. You create a Windows forms project and just drag and drop shit everywhere. Even making a simple pocket calculator is being like God to students who know only introductory console programming, and showing them the subtleties of making it authentic, how to reset variables, how to set the "LCD" text field right-to-left to simulate a real pocket calculator and when to clear it, how to handle dividing by zero, firing button events, etc.

        Of course, you can do the same with Java on Eclipse, but you lose a lot of charm and attention span fucking around with broken dependency hells just to be able to use visual classes or have a pre-written file you just load. You sit there looking like a dumbass for an hour trying to get everything to work, and by then your students think you're just another clueless moron.

        • (Score: 2) by Marand on Saturday November 05 2016, @03:01AM

          by Marand (1081) on Saturday November 05 2016, @03:01AM (#422725) Journal

          Eclipse is a clunky mess in my experience, never did like it much. I'd hate to see that be the first impression people get of programming. IntelliJ, however, is a very nice Java IDE. I bet if you combined IntelliJ with Scala, you could get a pretty good beginner experience set up, except for still having to do the compile/run thing. Though Scala does try to fake some of the dynamic language convenience with a REPL that compiles behind the scenes.

          That sort of easy experience is why I ended up suggesting Racket at the end of my comment. No drag-drop UI building, but with the combined editor+REPL setup of DrRacket, plus the built-in GUI libs, you can set up a basic window in a few lines of code, run it, and then use the REPL to modify the window on-the-fly. I'm far from being a beginner and I still think it's cool to be able to type a few lines in and see the UI change in front of me. (That's the awesome thing about using Tk as well; shame about it being dragged down by Tcl sucking.)

          Whatever the language and environment, the idea is the same: keep setup time at a minimum, avoid needing external dependencies as much as possible, and try to maximise interactivity by reducing the delay between the learner doing something and seeing the results of the action. Otherwise you're just introducing opportunities for the learner to get bored or distracted.

      • (Score: 2) by bart9h on Saturday November 05 2016, @09:14AM

        by bart9h (767) on Saturday November 05 2016, @09:14AM (#422781)

        I agree with most of your arguments, and they all point to BASIC.

        I'm obviously biased, cause that what I learnt first.

  • (Score: 2) by dyingtolive on Friday November 04 2016, @07:30PM

    by dyingtolive (952) on Friday November 04 2016, @07:30PM (#422573)

    You either go for something simple and straightforward with lots of easy buttons like python. It's powerful enough to actually do things, while "friendly," or you go with something like C/C++ because it rips the bandaid off and lets you glimpse into the reality of what you're actually working with.

    Also, fuck javascript.

    --
    Don't blame me, I voted for moose wang!
    • (Score: 1, Insightful) by Anonymous Coward on Friday November 04 2016, @07:40PM

      by Anonymous Coward on Friday November 04 2016, @07:40PM (#422576)

      I agree.

      Python should be the first language you learn, because it has great tutorials, it's everywhere, and you can use it for serious things if need be.
      Then you learn C/C++ when you need to extend Python.

      I'm not going into the C vs C++ fight right now.

    • (Score: 3, Funny) by mhajicek on Friday November 04 2016, @07:41PM

      by mhajicek (51) on Friday November 04 2016, @07:41PM (#422577)

      Whenst thou gazeth into the C, the C also gazeth into thee.

      --
      The spacelike surfaces of time foliations can have a cusp at the surface of discontinuity. - P. Hajicek
    • (Score: 3, Touché) by ikanreed on Friday November 04 2016, @07:57PM

      by ikanreed (3164) Subscriber Badge on Friday November 04 2016, @07:57PM (#422585) Journal

      Also, fuck javascript

      I feel like that's a perfect modern parallel to "Ceterum censeo Carthaginem esse delendam."

    • (Score: 0) by Anonymous Coward on Friday November 04 2016, @07:58PM

      by Anonymous Coward on Friday November 04 2016, @07:58PM (#422586)

      Personally, I love python. I think its one of the greatest langs out there because of its simplicity and power. However as a first language its not perfect. Its not using the ubiquitous C-style syntax and has a lot of specifics that don't translate well (or at all) to other languages. Its super easy to learn and from that perspective alone it makes for a great first language. But as a starter language that is supposed to serve as a jumping-off point for other languages, I don't think Python is the best choice (although I'm loathe to suggest any other).

      • (Score: 1) by Ethanol-fueled on Friday November 04 2016, @11:25PM

        by Ethanol-fueled (2792) on Friday November 04 2016, @11:25PM (#422673) Homepage

        C++ for intermediate/hard-mode, Java for easy mode. Both if you have enough free time.

        And for the reasons you specified, fuck no, not Python.

      • (Score: 0) by Anonymous Coward on Saturday November 05 2016, @08:25AM

        by Anonymous Coward on Saturday November 05 2016, @08:25AM (#422774)

        For beginners, Python also has the issue that you can do things in a horrible, overcomplicated way, or you can do it in a nice and clean way.
        The nice and clean way is not obvious and to even find it documented often requires searching for it after going "there must be a better way".
        Without guidance and knowing about this, no beginner will end up with nice clean code in Python (I have also objections to significant whitespace, it makes change review and even merges a real challlenge - I kind of don't think a programming language that by design is incompatible with good change management and version control will teach people the right thing).
        I am certainly biased, but I still think a modern Pascal variant is a good place to start, to be amended with an IDE like lazarus.
        Usability similar to C# without having to go proprietary and Windows-only (and yes, especially when it comes to UI but also many other things C# is in practice still Windows-only).

      • (Score: 3, Interesting) by sjames on Sunday November 06 2016, @06:44AM

        by sjames (2882) on Sunday November 06 2016, @06:44AM (#423046) Journal

        There are some pitfalls to Python as a starter language, but many advantages as well. It supports a wide variety of approaches to a problem, so it is possible to write a program in many styles including old-fashioned procedural programming, object oriented, or even functional. It presents a wide enough variety that when learning a second language there will probably be a relatable feature in Python. Especially when used in a teaching environment, that means wide coverage of concepts without having to change languages.

  • (Score: 0, Troll) by Anonymous Coward on Friday November 04 2016, @07:37PM

    by Anonymous Coward on Friday November 04 2016, @07:37PM (#422574)

    JavaScript is the accessible language for beginners, because it is ubiquitous. Every browser runs JavaScript, and every desktop browser includes a JavaScript debugger.

    (Idiot rebuttal: but, JS is bad! Bad stuff is bad stuff! NoScript! NoScript! NoooooScriiiiipt! No! Script! No! Script!)

    My first programming language (in 1981!) was Fortran on a Control Data mainframe.

    Holy fuck, check your privilege. In 1981, novice programmers were lucky enough to use Applesoft Basic on an Apple II, not Fortran on a goddamn mainframe.

    • (Score: 0, Disagree) by Anonymous Coward on Friday November 04 2016, @08:09PM

      by Anonymous Coward on Friday November 04 2016, @08:09PM (#422593)

      JavaScript is the accessible language for beginners, because it is ubiquitous. Every browser runs JavaScript, and every desktop browser includes a JavaScript debugger.

    • (Score: 4, Interesting) by mendax on Friday November 04 2016, @08:23PM

      by mendax (2840) on Friday November 04 2016, @08:23PM (#422604)

      It helps when one's father is a university professor and had an account on the school's mainframe.

      And actually you are incorrect about novice programmers being lucky enough to use Applesoft Basic on an Apple II. Most people then learned to code on mainframes or minicomputers, often requiring the program to be punched on cards. The desktop computer, while definitely making a big splash in the world, was a pretty pitiful programming platform. That mainframe I learned to program on was built in the late 1970's and one of the fastest computers in existence at the time.

      It is we today, and the kids of the present day, who are very lucky. Fast, cheap computers are ubiquitous, high-quality open source operating systems and programming environments are widely available, and anyone who has the guts and gonads to master the intricacies of programming can learn how to do it with relative ease.

      --
      It's really quite a simple choice: Life, Death, or Los Angeles.
      • (Score: -1, Flamebait) by Anonymous Coward on Saturday November 05 2016, @01:11AM

        by Anonymous Coward on Saturday November 05 2016, @01:11AM (#422698)

        It helps when one's father is a university professor and had an account on the school's mainframe.

        [...] That mainframe I learned to program on was built in the late 1970's and one of the fastest computers in existence at the time.

        And so you continue bragging about your privilege. You're an asshole.

        • (Score: 4, Informative) by t-3 on Saturday November 05 2016, @03:55AM

          by t-3 (4907) on Saturday November 05 2016, @03:55AM (#422739)

          No, you're most definitely the asshole. Mendax was fortunate enough to have access to equipment many people didn't, and you tell him to feel bad about that. WTF kind of sense does that make? That's like some bum screaming at everyone with nice cars and jobs to "check their privelege" because he's unemployed and broke and it makes him feel bad to see other people doing well. Since when is jealousy something society has to appease?

      • (Score: 2) by moondoctor on Saturday November 05 2016, @12:03PM

        by moondoctor (2963) on Saturday November 05 2016, @12:03PM (#422805)

        Yep, my Mom's boyfriend was head of the math dept at local good university as a kid, got to play on a PDP-11 getting my feet wet.

        The idea of starting out as a 9 year old with a terminal window open in my smartphone that is attached to a global network kinda blows my mind...

    • (Score: 0) by Anonymous Coward on Friday November 04 2016, @09:34PM

      by Anonymous Coward on Friday November 04 2016, @09:34PM (#422637)

      I have a coworker who learned fortran in 1975 at his public high school, using an IBM mainframe.

      At the time, a school with an on-site oil rig could keep the money from the oil.

    • (Score: 1) by Ethanol-fueled on Friday November 04 2016, @11:30PM

      by Ethanol-fueled (2792) on Friday November 04 2016, @11:30PM (#422675) Homepage

      JavaScript is a language I used when teaching a "learn how to code a simple card game in a week" class and the younger students cried when they kept running into problems with case sensitivity and curly-braces.

      The lesson learned is that having to code Javascript makes people cry, and I was only giving those youngsters a head-start on the real-world.

    • (Score: 0) by Anonymous Coward on Saturday November 05 2016, @08:13AM

      by Anonymous Coward on Saturday November 05 2016, @08:13AM (#422772)

      I’d rather not imprint loose typing onto a newbie.

    • (Score: 2) by Sarasani on Saturday November 05 2016, @09:29AM

      by Sarasani (3283) on Saturday November 05 2016, @09:29AM (#422782)

      Want to get into JavaScript in 2016? Better read this first:
      https://hackernoon.com/how-it-feels-to-learn-javascript-in-2016-d3a717dd577f [hackernoon.com]

    • (Score: 2) by choose another one on Saturday November 05 2016, @02:11PM

      by choose another one (515) Subscriber Badge on Saturday November 05 2016, @02:11PM (#422835)

      Holy fuck, check your privilege. In 1981, novice programmers were lucky enough to use Applesoft Basic on an Apple II, not Fortran on a goddamn mainframe.

      Check your timeframes - this is entirely plausible. In 1970s and earlier there were no training wheels for programming, and everyone was a novice until getting into workplace or university with a computer, and then you'd go straight on to the big iron because that was all there was.

      By mid 80's it's different: the home computer boom had almost been and gone, and most kids had access to computers in schools or at home, and most of those computers would have a BASIC interpreter, and kids were far more likely to actually use to them to learn some programming.

      So I didn't consider myself a novice programmer when I started my first trainee programming job in mid 80s - I knew BASIC and a bit of assembly after all. I was dropped straight into large scale Vax FORTRAN and DCL. Shortly after I was finding and fixing a suspected compiler problem on large scale CORAL66 and project because one else there knew assembly, or was daft enough to say they did, of course I knew nothing about the target processor architecture or assembler either...

      I also wasn't a novice when later I went to university and the first programming course was FORTRAN on a mainframe (ours was IBM though).

      However, even by the late 80s, there were _some_ people I started work or university with who _were_ complete computer novices, and they still got put straight on Vaxen or mainframes just the same.

  • (Score: 1, Insightful) by Anonymous Coward on Friday November 04 2016, @07:42PM

    by Anonymous Coward on Friday November 04 2016, @07:42PM (#422578)

    These days I do not hesitate. Its python. Learn python first.

    It is easy and cheap to get going and fairly heavy handed when you get something wrong. The online tutorials on the python.org website are decent and you can be up and running with 3-4 of the chapters under your belt. The erorrs are easy enough to google for.

    The only think I dislike about python is its scoping rules of indentation. While they teach you good style pretty much every other language out there has clearly defined scope rules.

    Javascript is 'easy' enough to get going but takes a bit of orthogonal thinking that your web browser is also a language interpreter. The language is kinda funky and easy to create errors with. I would consider it a 2nd or even 3rd language to pick up. The idea of callbacks and object models is not always easy for people to pick up.

    • (Score: 3, Informative) by The Mighty Buzzard on Friday November 04 2016, @08:14PM

      by The Mighty Buzzard (18) Subscriber Badge <themightybuzzard@proton.me> on Friday November 04 2016, @08:14PM (#422600) Homepage Journal

      Python can eat a dick. You can have my irrelevant whitespace when you pry it from my cold, dead hands.

      --
      My rights don't end where your fear begins.
      • (Score: 2) by dyingtolive on Friday November 04 2016, @08:22PM

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

        I think whitespace Nazi languages are less terrible than perl syntax, or as I like to call it, "Cat on keyboard mode." :-)

        --
        Don't blame me, I voted for moose wang!
        • (Score: 3, Insightful) by canopic jug on Saturday November 05 2016, @04:09AM

          by canopic jug (3949) Subscriber Badge on Saturday November 05 2016, @04:09AM (#422740) Journal

          Too many people freak out about perl accommodating many diverse styles of programming and thought. Some styles are of value, others not so much. Perl on some levels is just a Rorschach test for programmers. If your code is a mess, then the problem is staring you in the mirror and not coming from the language.

          --
          Money is not free speech. Elections should not be auctions.
          • (Score: 2) by dyingtolive on Saturday November 05 2016, @04:42AM

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

            Maybe so, but from the point of a beginning programmer? You need structure to learn.

            --
            Don't blame me, I voted for moose wang!
    • (Score: 2) by Snotnose on Friday November 04 2016, @08:26PM

      by Snotnose (1623) on Friday November 04 2016, @08:26PM (#422607)

      Yep, either Python or Java. Python preferred as you don't need to compile it.

      Javascript? God no. Nobody should ever have to use that shitty language for anything.

      --
      When the dust settled America realized it was saved by a porn star.
    • (Score: 2) by theluggage on Friday November 04 2016, @09:53PM

      by theluggage (1797) on Friday November 04 2016, @09:53PM (#422641)

      Javascript is 'easy' enough to get going but takes a bit of orthogonal thinking that your web browser is also a language interpreter.

      The advantage, though, is that you can share your programs on the web without people having to install any kind of runtime, including to locked-down Android or iOS devices. OK, that begs the question "what could possibly go wrong?" - but the answer is probably that its less dangerous than encouraging your mates to install binaries. Ought to be possible to produce a nice "visual Javascript" environment - with wizards for UI creation, module stuff done for you and an easy to use graphics library, maybe wrapping it in TypeScript to smooth over the arcane prototype-based OOP (with its "Nooo!!! that's exactly the thing OOP was meant to STOP!" features).

      Of course the disadvantage of Javascript is that it is an "expressive" language: i.e. every JavaScript guru re-defines the language to support their own foibles about How Stuff Is Done to the point that it looks like a different language.

      As for Python - a wise person once said "try everything at least once - except incest and Morris dancing". They forgot to add "significant whitespace". Seriously, though, if you shove that elephant into the corner of the room, it seems like a decent language (until you open your code in a different text editor with the wrong tab settings and reduce it to gibberish) - I just think it sets out to be gratuitously different to other multi-paradigm languages for no particularly good reason.

      Swift is interesting ("Python with curly brackets" - sounds perfect) esp. with a free linux version now out but maybe needs to develop a bit more - scratch the surface and you hit a framework based on the NextStep/OSX/iOS API which is great for Apple developers, not so much for beginners.

      I think, on balance, I'd probably have to go with the flow and back Python - because of all the support - and just try to ignore that the big grey thing trumpeting in the corner of the room.

  • (Score: 1, Interesting) by Anonymous Coward on Friday November 04 2016, @07:46PM

    by Anonymous Coward on Friday November 04 2016, @07:46PM (#422581)

    Then, instead of having to spend a couple weeks messing around with an IDE, you can just memorize a few FAQs on the Rust web site so you'll sound impressive at the brew pub. Make sure to wear a black t-shirt with a loud logo.

  • (Score: 4, Insightful) by Anonymous Coward on Friday November 04 2016, @07:51PM

    by Anonymous Coward on Friday November 04 2016, @07:51PM (#422583)

    Start with any language you'd like!

    Or preferably start with a language that can do something you want. Nothing helps learning more than having a purpose for your new skills.

    • (Score: 2) by Dr Spin on Friday November 04 2016, @10:01PM

      by Dr Spin (5239) on Friday November 04 2016, @10:01PM (#422644)

      preferably start with a language that can do something you want

      No, start with a language that shows you what the machine actually does:

      PDP8 machine code - keyed in from the front panel!

      Then C.

      Or, if you are looking for a job in a start-up, you might want/need to be proficient in Gobbledygook.

      --
      Warning: Opening your mouth may invalidate your brain!
    • (Score: 5, Insightful) by jmorris on Friday November 04 2016, @10:53PM

      by jmorris (4844) on Friday November 04 2016, @10:53PM (#422660)

      Nothing helps learning more than having a purpose for your new skills.

      THIS! Encourage them to learn something that will give them quick results with something they care about. In my day, the age of the micro, we all learned BASIC because we had to. The next generation all learned to write batch files for DOS. Now there usually isn't a burning NEED to learn any programming language so most people don't. So figure out what they would benefit quickly from and show them how to do that. You have to light the fire quick. If you expect them to spend weeks learning enough about a language to master a development toolchain, programmers editor, app frameworks, etc. you will fail; they will only do that if they are in a formal school environment. Anything, Scratch, a fancy macro in a spreadsheet, BASH scripting (for Linux users who only use the GUI), Powershell, whatever it takes to introduce the fundamentals of programming. Then encourage them to scratch some itches. When they want to do something that first language really isn't suited to, show them the trick of reapplying most of what they know to a new language. There is NO single language that will allow one to be successful as a programmer so the trick is learning how to quickly get up to speed on a language and apply the universal concepts of software development.

      What not do do is easier to answer. Javascript is out because there is almost nothing practical you can do with it in the real world unless you are building a website. A website built by a freshly minted programmer could be nothing but an absolute menace. Perl is out because it is 'distilled UNIX' and assumes you already know those other things like shell programming. There really aren't any widely deployed BASIC, Pascal, FORTH, FORTRAN, etc. options anymore and who wants to start a budding programmer on an obscure poorly maintained and documented legacy thing for oldtimers? Python has potential to quickly create useful things, but beware of the ton of bad habits it will teach; it is the BASIC of the 21st Century in that regard. Personally I would discourage C until after learning at least one Assembly language but I know I'm in the minority on that one, and C++ is just a horror show unless one is already an expert on a lot of advanced concepts. Tcl/Tk is plenty powerful and cross platform, but like Python will teach some bad habits unless you are careful. Java is probably too long winded for a newb to wrap their head around easily but it is widely used and can do just about anything; not sure it is the choice for a first language but hard to argue against it being the second one after something more intro.

      • (Score: 2) by melikamp on Saturday November 05 2016, @03:51AM

        by melikamp (1886) on Saturday November 05 2016, @03:51AM (#422738) Journal

        I agree wholeheartedly. BASH in particular is a great suggestion IMO, my 5-yo already uses it to type in ktuberling. Unless we are talking pure computer science, teach them whatever they can start using to accomplish their goals and have fun. I actually agree on Assembly before C... I would even say, give them the Turing Machine even before that. I can see professionals using C, I can see mathematicians and various scientists, as well as free software contributors, but that's about it.

        When I teach a stats class, most students choose R over calculators or tables, and for a vast majority of them, it's their first programming language, and they seem to like it a lot. And it's not a bad one, either, has a clean C-like syntax with very powerful math and online help built-in. I use it as a calculator all the time, unless I need all the power of LISP :)

      • (Score: 0) by Anonymous Coward on Saturday November 05 2016, @08:56AM

        by Anonymous Coward on Saturday November 05 2016, @08:56AM (#422777)

        Sorry mate, but despite the fact that your comment could be very good, I stopped reading after "THIS!". Heck, I didn't even know that people are still using it on forums. So, please do yourself (and people like me) a favour, and stop using THIS! in your commentary. I assume that you are not a 5yr old and have full command of extended vocabulary.

        Yes yes, I know. I'm just an old fart rocking in my chair hollering at the neighbourhood kids to get off my lawn...

    • (Score: 2) by srobert on Saturday November 05 2016, @05:38PM

      by srobert (4803) on Saturday November 05 2016, @05:38PM (#422886)

      I've never learned any programming language very well. I had a semester of Fortran in 1992. I've studied C, Python, Tcl/Tk, on my own but never got beyond the fundamentals with any of them mostly because I lacked any purpose. In the past year, I started learning Haskell. Now that my xmonad configuration is working pretty well, I no longer have a motivating purpose to drive me any further.

  • (Score: 0, Interesting) by Anonymous Coward on Friday November 04 2016, @08:05PM

    by Anonymous Coward on Friday November 04 2016, @08:05PM (#422590)

    Every selfish answer here is answering the wrong question.

    OK then I can be selfish too. I learned Basic first, then I was taught Pascal in school, then I was taught Java in college, and then I learned C++ and JavaScript and Perl and PHP and Python on my own.

    Interviewers tell me, "Wow, you know too many programming languages," and then I don't get the job.

    I guess I'm just not a coder.

    • (Score: 3, Interesting) by dyingtolive on Friday November 04 2016, @08:10PM

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

      I learned BASIC first too. Sometimes I set back, amazed, that I can actually manage to build software in spite of it.

      --
      Don't blame me, I voted for moose wang!
    • (Score: 0) by Anonymous Coward on Friday November 04 2016, @08:27PM

      by Anonymous Coward on Friday November 04 2016, @08:27PM (#422608)

      What Programming Language Did you Learn First?

      • RPG II
      • FORTRAN 77
      • COBOL
      • PASCAL
      • BASIC
      • Asm

      But in my defense, our programming school was in a strip mall ... and we had to learn Accounting too. Those were a good 8 months.

      • (Score: 3, Touché) by jimbrooking on Friday November 04 2016, @09:02PM

        by jimbrooking (3465) Subscriber Badge on Friday November 04 2016, @09:02PM (#422626)

        SOAP II and Fortran II on an IBM 650 (1962)! :'D

        • (Score: 3, Touché) by Dr Spin on Friday November 04 2016, @09:17PM

          by Dr Spin (5239) on Friday November 04 2016, @09:17PM (#422630)

          Wot no JCL?

          --
          Warning: Opening your mouth may invalidate your brain!
          • (Score: 2) by jimbrooking on Sunday November 13 2016, @04:52PM

            by jimbrooking (3465) Subscriber Badge on Sunday November 13 2016, @04:52PM (#426272)

            Yes, but later on the System/360 which was announced IIRC in 1963.

    • (Score: 1) by Tangaroa on Friday November 04 2016, @11:32PM

      by Tangaroa (682) on Friday November 04 2016, @11:32PM (#422677) Homepage

      My first language was TRS Basic but I never did any heavy lifting in it. I was young and never taught myself many programming concepts beyond goto. We had a brief introduction to Logo in grade school and then I did some .bat scripting in DOS.

      My first language that counts was C. Our introductory language in college was C++ and I was not getting it at all. The book was so opaque that I had trouble understanding the concept of an "if" statement and it was a great accomplishment to write code that could initialize a struct ,and of course the compiler errors were indecipherable.

      IOStreams was impenetrable magic. What if I want to change the default behavior? (Shrug). Something as common as formatting numbers to two decimal places was difficult. One of my IRC friends pointed me to this printf() function that just made sense. I picked up the K&R book and was lucky enough to retake the course under a teacher who would let me turn in assignments in C because the C++ compiler would accept it. Later I picked up O'Reilly's Practical C++ Programming and was able to learn the language.

      In my opinion a new developer's first language should hide the complexities of data structure design and memory management, allow rapid development, provide rapid feedback, have readable error reporting, and teach enough concepts that you can jump to another language. The obvious candidates are Python, Javascript, and PHP.

  • (Score: 3, Insightful) by JoeMerchant on Friday November 04 2016, @08:13PM

    by JoeMerchant (3937) on Friday November 04 2016, @08:13PM (#422596)

    Yes, I have an anglo-centric view... but, with a good command of the English language, you can access the widest pool of help resources on the internet.

    Being able to explain your procedural train of thought correctly, in English, should enable you to write it in C, Fortran, Ada, Lisp, Perl, Node.js, or whatever your current job requires.

    Following on this train of thought, a second best choice would be your native speaking language, but, again, learn to spell out step by step what you intend to do, how you intend to structure your data and interfaces, etc.

    There's been a lot of talk about "Test Driven Development," but, what drives the tests? Natural language requirements definitions - this is the place where most programming projects go awry: not solving the correct problem in the first place.

    --
    🌻🌻 [google.com]
    • (Score: 0) by Anonymous Coward on Friday November 04 2016, @08:28PM

      by Anonymous Coward on Friday November 04 2016, @08:28PM (#422609)

      "Yes boss, you're the boss, boss."

      • (Score: 2) by JoeMerchant on Sunday November 06 2016, @04:01AM

        by JoeMerchant (3937) on Sunday November 06 2016, @04:01AM (#423009)

        As a software engineer there are many opportunities to be your own boss; however, you will only be successful that way if you act like your own boss.

        --
        🌻🌻 [google.com]
  • (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 :)

    • (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.

  • (Score: -1, Offtopic) by kurenai.tsubasa on Friday November 04 2016, @08:23PM

    by kurenai.tsubasa (5227) on Friday November 04 2016, @08:23PM (#422605) Journal

    If you're not a womyn-born-womyn, the answer is “none!” No, you can't! Don't even try!

    Until womyn-born-womyn get their fucking shit together and start fucking learning this shit on their own, you DO NOT want to be a programmer.

    • (Score: 2) by Azuma Hazuki on Friday November 04 2016, @08:57PM

      by Azuma Hazuki (5086) on Friday November 04 2016, @08:57PM (#422624) Journal

      Joke's on you, Kurenai! Alls I can do is program a little C program that swears at yer mother! And I have to hard-code the swears since I don't know file i/o yet.

      --
      I am "that girl" your mother warned you about...
      • (Score: 2) by RamiK on Friday November 04 2016, @10:58PM

        by RamiK (1813) on Friday November 04 2016, @10:58PM (#422663)

        This might only make ½ a sense, but when I started programming I didn't use any file io either. I had a decent C book but only a non-standard C compiler (Microsoft's I think since it was the dos\win3.11 era). So, failing to include the headers, I ended up sticking to the previous chapter's main (int argc, char *argv[]) stdin + batch scripting approach throughout the book's assignments.

        Another victim of early 90s internet deprivation syndrome.

        On topic, I suggest LISP as a first language. Once you pick up a C family language you can never get used to all the parenthesis so it's better to learn LISP as soon as possible.

        --
        compiling...
  • (Score: 1, Informative) by Anonymous Coward on Friday November 04 2016, @08:34PM

    by Anonymous Coward on Friday November 04 2016, @08:34PM (#422611)

    on a 6510 cpu

    • (Score: 2) by jmorris on Saturday November 05 2016, @02:41AM

      by jmorris (4844) on Saturday November 05 2016, @02:41AM (#422723)

      Good luck finding one. Go with something you can actually find, like an AVR (otherwise known as Arduino). Having programmed both, the 6502 is VERY spartan. Go read a datasheet and tell me programming an AVR wouldn't be a lot more fun. And while finding a full reference book for the C64 was once possible, the AVR has plenty of free PDFs documenting everything with the exception of the QTouch controller in the very latest parts. Bad omen for the recent transfer of ownership.

  • (Score: 1) by anotherblackhat on Friday November 04 2016, @09:26PM

    by anotherblackhat (4722) on Friday November 04 2016, @09:26PM (#422633)

    People tend to fall in love with their first, and then refuse to accept anything different.
    The first language you learn should be horrible, like BASIC or APL.
    Thus, when exposed to something more reasonable, you will appreciate rather than denigrate it.

  • (Score: 0) by Anonymous Coward on Friday November 04 2016, @10:03PM

    by Anonymous Coward on Friday November 04 2016, @10:03PM (#422645)

    Learn how the computer actually works, first.

  • (Score: 2) by t-3 on Friday November 04 2016, @10:17PM

    by t-3 (4907) on Friday November 04 2016, @10:17PM (#422650)

    I've been playing with it recently - very interesting and easy to learn. Lots of excellent free learning material as well.

    • (Score: 0) by Anonymous Coward on Friday November 04 2016, @10:59PM

      by Anonymous Coward on Friday November 04 2016, @10:59PM (#422664)

      Care to expand? I've heard LISP is "nice" as well. It's always nicer to hear what makes particular languages appealing.

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

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

        It has a stack, so it's "reverse polish notation".

        Any bunch of characters between white space is a word.

        In "interpret mode", It looks up and executes each word as soon as it hits it when the line is sent with "enter".

        The semicolon is a word that means " define a new word, where the name is the very next word you parse. Go into compile mode, and look up and add each word you see to the open definition. ". The semi-colon means "end the current open definition, and make it findable by changing the pointer that points to the latest definition (being the start of the linked list which is the dictionary) and then go back into interpret-mode".

        The word "words" (without the quotes) just lists all words in the dictionary in the order they would be searched.

        The hello word program looks like:

        : helloworld ." Hello world! " cr ;

        ." Starts compiling some text which will be spat out when the compiled word runs.
          " ends the compilation of text-to-display.
        cr spits out a new-line (carriage return) when run.

        Done. Now you know some forth.

        There's a somewhat comprehensive standard called "ANS-Forth" which goes into much detail so compliant programs are compatible.

        There's an open-source SoC implementation called swapforth which runs on its own minimal processor called the J1, in programmable hardware (FPGA's). It can be compiled for ice40 FPGA's using entirely opensourced tools (icestorm), and it's open sourced itself.

        Look up "j1a swapforth" on YouTube for a demonstration on how easily one can start programming a tiny real-world computer to do controller things like blinking LED's, or anything any Arduino can do, without learning much more of forth besides the above.

    • (Score: 0) by Anonymous Coward on Saturday November 05 2016, @11:42AM

      by Anonymous Coward on Saturday November 05 2016, @11:42AM (#422802)

      Also, after mastering Forth, one would never even understand how a totally easy thing such as C pointers can be "scary". :)

  • (Score: 0) by Anonymous Coward on Friday November 04 2016, @11:08PM

    by Anonymous Coward on Friday November 04 2016, @11:08PM (#422667)

    After that everything else is easy.

    Or maybe FORTH - master that, and you don't really need anything else.

  • (Score: 4, Insightful) by HiThere on Friday November 04 2016, @11:12PM

    by HiThere (866) Subscriber Badge on Friday November 04 2016, @11:12PM (#422670) Journal

    If you don't learn to understand the computer, you'll never really be a good programmer. After you've got the basics down then switch to some language that uses more magic under the hood...which one depends on what you intend to do. But first you need to understand memory layout, stack, heap, etc. If you don't you'll never know, or even be able to guess, the tradeoffs involved in various programming choices.

    N.B.: I really like dictionaries/hash tables/maps/whatever you want to call them. But that isn't where you should start learning. FIRST you learn something easy enough to understand when you have no background.

    --
    Javascript is what you use to allow unknown third parties to run software you have no idea about on your computer.
    • (Score: 2) by migz on Saturday November 05 2016, @09:03AM

      by migz (1807) on Saturday November 05 2016, @09:03AM (#422778)

      Agree on the language. But not on the book. K&R is terrible if you have no grounding in programming, and it is getting very long in the tooth, and 2nd edition spends too much time being apologetic. If you are in a CompSci program with a year under your belt it's probably still a winner, but not as a first language. Have not found anything better for C though.

      The idea that the book is more important than the language is very sound.

      The old VIC-20 and C64 manuals took you from zero to hero, and they came in the box.

      I have fond memories of The Java Tutorial, circa 2nd edition, but the latest version seems to have lost the touch and is far too technical and hung up on minutia.

      As an aside, I miss the days when things that were written were edited.

      • (Score: 2) by HiThere on Saturday November 05 2016, @06:30PM

        by HiThere (866) Subscriber Badge on Saturday November 05 2016, @06:30PM (#422893) Journal

        I didn't mention any particular C book. I don't have any one in mind. The introductory text should be a lot different from the reference book, which is all I've needed over the last few decades, so I'm not longer a good judge of the introductory text, but one might consider "Programming in C by Kochan".

        --
        Javascript is what you use to allow unknown third parties to run software you have no idea about on your computer.
        • (Score: 2) by migz on Saturday November 05 2016, @08:09PM

          by migz (1807) on Saturday November 05 2016, @08:09PM (#422914)
          • (Score: 2) by HiThere on Saturday November 05 2016, @11:12PM

            by HiThere (866) Subscriber Badge on Saturday November 05 2016, @11:12PM (#422942) Journal

            Ah, I forgot. But when I tried to use just C as the subject, the comment got bounced for too short a subject. I wasn't referring to the book, which isn't good for the current version of C anyway. (Well, I think that the current standard still covers everything they talked about, but there are some significant changes.)

            --
            Javascript is what you use to allow unknown third parties to run software you have no idea about on your computer.
  • (Score: 2) by Username on Saturday November 05 2016, @01:41AM

    by Username (4557) on Saturday November 05 2016, @01:41AM (#422705)

    Batch scripts are the easiest to learn, and can be run on all windows machines.

    I would have recommend QBasic because the IDE was once available on all Windows PCs, until they stopped coming with a dos emulator.

    • (Score: 0) by Anonymous Coward on Saturday November 05 2016, @08:18AM

      by Anonymous Coward on Saturday November 05 2016, @08:18AM (#422773)

      Shell language is a glue. Do not ever try to make a really programming language out of it.

  • (Score: 0) by Anonymous Coward on Saturday November 05 2016, @03:28AM

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

    Yup, no frills, no GUI, no Internet or network connectivity, no huge repository of modules contributed by thousands of programmers, just variables and loops and expressions.

    Bill Gates, obviously, loved BASIC (Microsoft's first product was a BASIC interpreter for the Altair). I heard him speak once, he mentioned being blown away by the sheer power of loops; this was in the '80s.

    Another feature, which could be considered either an advantage or a disadvantage, is that learning BASIC separates those who have the capacity to love programming (as opposed to whether they are "naturally gifted" programmers) from those who regard programming only as a means to an end: a job, career and possibly fame and fortune. If you can take to BASIC without the other stuff, then you've found yourself a potential career.

    BTW Dartmouth's Kemeny wrote a textbook on discrete math, which was called finite mathematics at the time. It has a chapter on BASIC programming. It's a good book; you can pick it up used at Amazon or B&N's web site.

  • (Score: 0) by Anonymous Coward on Saturday November 05 2016, @09:08AM

    by Anonymous Coward on Saturday November 05 2016, @09:08AM (#422780)

    AMOS Basic on the Amiga 500, with a full meg of memory. (512K chip, 512K fast).

  • (Score: 2) by mcgrew on Saturday November 05 2016, @03:18PM

    by mcgrew (701) <publish@mcgrewbooks.com> on Saturday November 05 2016, @03:18PM (#422854) Homepage Journal

    Before you try to make any machine do something it isn't designed to, which all programming is, you should understand the machine you're modifying. That means learning about logic gates, etc, how to read a schematic, etc.

    Then you need to learn binary arithmetic.

    Then assembly. After that you may possibly be advanced enough to learn a high level language and have a clue what the hell you're doing.

    Unfortunately, that's not how it works, which is why software sucks so badly.

    --
    mcgrewbooks.com mcgrew.info nooze.org
  • (Score: 3, Funny) by gawdonblue on Saturday November 05 2016, @08:07PM

    by gawdonblue (412) on Saturday November 05 2016, @08:07PM (#422912)

    "R"

    • (Score: 0) by Anonymous Coward on Tuesday November 08 2016, @08:14PM

      by Anonymous Coward on Tuesday November 08 2016, @08:14PM (#424220)

      Now that be a common misunderstanding. Ye'd think it'd be the "R", but pirates preference is to be always on the "C".

  • (Score: 0) by Anonymous Coward on Sunday November 06 2016, @06:20PM

    by Anonymous Coward on Sunday November 06 2016, @06:20PM (#423200)

    I use NoScript, because I don't trust every website to be nice. Others use it to make pages load quicker. This is reason enough not to use javascript except when you truly need it.