Slashdot Mirror


Ask Slashdot: How To Get Started With Programming? [2017 Edition]

Reader joshtops writes: I know this is a question that must have been asked -- and answered -- on Slashdot several times, but I am hoping to listen from the community again (fresh perspective, if you will). I'm in my 20s, and have a day job that doesn't require any programming skills. But I want to learn it nonetheless. I have done some research but people have varied opinions. Essentially my question is: What is perhaps the best way to learn programming for my use case? I am looking for best possible resources -- perhaps tutorials on the internet, the right books and the order in which I should read/watch them. Some people have advised me to start with C language, but I was wondering if I could kickstart things with other languages such as perhaps Apple's Swift as well?

312 comments

  1. C64 by Anonymous Coward · · Score: 0

    and the KERNAL book.

    1. Re:C64 by Anonymous Coward · · Score: 0

      Ignore everything you see here. Some idiot even recommended you start with SIOCP!

      The low-self-esteme developers here do not want people to learn how to write computer programs. They freak-out when anyone suggests it ought to be taught in public schools. They get nervous and defensive every year when 'hour of code' rolls around. They don't want you to learn how to write computer programs.

      Seriously, that's why they all recommend you take the hardest possible route. They even pretend that a trial-by-fire will make you "better". Total bullshit. These guys learned when they were pre-teens, typing BASIC listings in from magazines in to their micros back in the early 80's.

      Programming is easy. So easy that a kids can, and often do, teach themselves. Most of the idiots here taught themselves when they were young children -- and they're idiots!

      Grab a tutorial. If you don't like it, grab a different tutorial. There are millions to choose from, so keep searching until you find one that suits your tastes.

      Don't worry about what language you should learn or some other trivial thing like that. You're just wasting your time. Programming is a skill. Once you've learned it, the language doesn't matter.

      Car analogy: It doesn't matter if you learned how to drive in a sub-compact or a 2-ton pickup. That skill instantly transfer between 4-wheeled vehicles. You don't need to re-learn how to drive a mini van because you learned to drive in an SUV. Programming is the same.

    2. Re: C64 by Anonymous Coward · · Score: 0

      Shut the fuck up! No one else can do it!

    3. Re:C64 by james_gnz · · Score: 1

      I wouldn't recommend using the C64 as such (and I assume it was a joke). That said, if you're beginning programming, it might not be a bad idea to begin with a beginner's programming language. If you're running MS Windows, perhaps have a look at MS Small Basic. It's a modern beginner's programming language, and there are tutorials and example programs for it.

    4. Re: C64 by Anonymous Coward · · Score: 0

      Is that you Tom Smykowski?

      Tom Smykowski: Well-well look. I already told you: I deal with the god damn customers so the engineers don't have to. I have people skills; I am good at dealing with people. Can't you understand that? What the hell is wrong with you people?

    5. Re:C64 by Hognoxious · · Score: 1

      Some idiot even recommended you start with SIOCP!

      Blowing the seven shades of shit out of Russia? I'm not saying it's a bad thing per se, but I don't see how that'll help learn programming.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    6. Re: C64 by Anonymous Coward · · Score: 0

      This ....

    7. Re: C64 by Anonymous Coward · · Score: 0

      Agree. Just do it! Ignore all the BS that seems to be floating around these days.

  2. Coffee by Oswald+McWeany · · Score: 5, Funny

    How to get started in programing. Well, I get started each morning by starting the kettle. Whilst the kettle boils, I wash out the French Press and my mug. I drink my coffee whilst reading Slashdot to see if there is anything I should be kept up-to-date on. By the time I finish it is time for another cup of coffee, so the process begins again, by that time, I have to reply to some troll who thinks climate change is a myth and that man never went to the moon.

    I usually have three or four cups of coffee- and then it is time for lunch.

    After lunch, I find myself able to start programming.

    --
    "That's the way to do it" - Punch
    1. Re:Coffee by Anonymous Coward · · Score: 1, Funny

      Same for me, except that I reply to trolls, that believe that Climate change is caused by humanity, instead of by cosmic causes; and that Trump didn't win the election. ;)

    2. Re:Coffee by Oswald+McWeany · · Score: 4, Funny

      Same for me, except that I reply to trolls, that believe that Climate change is caused by humanity, instead of by cosmic causes; and that Trump didn't win the election. ;)

      You've done it now... I'm brewing another cup of coffee... Just you wait.

      --
      "That's the way to do it" - Punch
    3. Re:Coffee by Anonymous Coward · · Score: 0

      Same Here in Rio de Janeiro! Are we programmers all procrastinators?

    4. Re:Coffee by Anonymous Coward · · Score: 0

      you, use too, many commas and, unnecessary Capitalization

    5. Re:Coffee by Anonymous Coward · · Score: 0

      Et tu Oswald? Et tu?

    6. Re:Coffee by Oswald+McWeany · · Score: 3, Interesting

      Same Here in Rio de Janeiro!

      Are we programmers all procrastinators?

      I can't remember where I read it, but I read that the same qualities that make many people procrastinate are the same qualities that make people better programmers. People that don't rush into things and pause and mull over "what is the best way to do this" end up being better programmers.

      Despite my morning ritual, and constantly getting side-tracked, I've always been one of the more productive people everywhere I've worked.

      --
      "That's the way to do it" - Punch
    7. Re:Coffee by Anonymous Coward · · Score: 0

      some troll who thinks climate change is a myth

      It is.

      Prove it.

    8. Re:Coffee by Anonymous Coward · · Score: 0

      and that Trump didn't win the election

      I troll BeauHD all the time too

    9. Re:Coffee by unrtst · · Score: 4, Informative

      I suspect you're referring to Larry Wall's three great virtues of a programmer: Laziness, Impatience and Hubris
      http://threevirtues.com/

    10. Re:Coffee by WarJolt · · Score: 1

      In Coq.

      Also that would be an interesting choice for a firat language.

    11. Re:Coffee by irrational_design · · Score: 1

      You're doing it wrong. After lunch is nap time.

    12. Re:Coffee by Anonymous Coward · · Score: 0

      Soooo. . . . the Whistle Blower who said that NOAA faked it's climate change data is probably lying??

    13. Re:Coffee by Anonymous Coward · · Score: 0

      How to get started in programing. Well, I get started each morning by starting the kettle. Whilst the kettle boils, I wash out the French Press and my mug. I drink my coffee whilst reading Slashdot to see if there is anything I should be kept up-to-date on. By the time I finish it is time for another cup of coffee, so the process begins again, by that time, I have to reply to some troll who thinks climate change is a myth and that man never went to the moon.

      I usually have three or four cups of coffee- and then it is time for lunch.

      After lunch, I find myself able to start programming.

      OMG I am so happy to hear there is someone else like me out there! I have an almost identical routine and my period of peak productivity (when I'm coding "in the zone") comes between 2pm-4pm and/or 6pm-9pm. I can start programming before noon if you really want me to, but after you see the results I think we'd agree that things work out better for everyone if we go by my schedule.

    14. Re:Coffee by Anonymous Coward · · Score: 0

      Yep, I can start at noon but I don't really get going until late afternoon. I really get into the groove around 1-2am and sometimes go until 4 or 5am. Then I wake up at noon the next day and try to make sense of what I coded the night before.

    15. Re: Coffee by Anonymous Coward · · Score: 0

      Ummm.... Yes?

    16. Re:Coffee by Anonymous Coward · · Score: 0

      And this is why I switched careers

    17. Re:Coffee by Anonymous Coward · · Score: 0

      Oh, that's so funny. Never occurred to you that this might be an opportunity to help someone. But that seem to be one of your priorities.
       

    18. Re:Coffee by Anonymous Coward · · Score: 0

      During naps, consider all other career possibilities. If none of them are feasible, wake up and realize you're still just a programmer.

    19. Re: Coffee by Anonymous Coward · · Score: 0

      Play lots of freecell and yukon. You'll learn about linked lists, if-then-else, and the proper sequence of moves. Then transfer those skills to your first python program, where you can learn how to parse and sort data, and then summarize it. By all means stay away from Javascript and Perl 6. They aren't for noobs.

    20. Re:Coffee by Anonymous Coward · · Score: 0

      Same here. Do all my coding before lunch and then is nap time.

  3. How to do anything in 2017 by Anonymous Coward · · Score: 3, Informative

    Get a PC computer. Install Ubuntu. Connect to Internet. Google free tutorial. Start programming.

    1. Re:How to do anything in 2017 by lgw · · Score: 5, Informative

      Get a PC computer. Install Ubuntu. Connect to Internet. Google free tutorial. Start programming.

      AC is not wrong.

      First, learn simple scripting. Use Python - it teaches better habits than a lot of alternatives. When you're comfortable with the basics of ordering your thoughts in a formal language, there are 3 real challenges, and I'd take them in this order.
      1. Pointers
      2. Recursion
      3. Threading

      C is great after you're comfortable with the basics. Pickup the K&R C book and have some fun with it. Implement all the basic data structures using C. Learn to use a nice GUI debugger, and step through your code, then step through the object. Learn what's really happening under the covers. Keep going until there's no mystery about pointers and the stack, registers, and so on.

      For recursion, learn Scheme. Yeah, you could use Python too, and maybe there are some good intro texts now (what does MIT use these days instead of SICP?), but Scheme forces you to do everything with recursion. Keep going until it's totally natural. Write a Scheme interpreter in Scheme (it's easier that you think, and a lot of fun).

      There's no easy path to learning threading, I fear, but if you made it past the above two, you'll manage this.

      Once all that is done, then learn Java. Java sucks, but it's where most the jobs are. Everything in Java should seem quite easy once you have the fundamentals.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    2. Re:How to do anything in 2017 by Anonymous Coward · · Score: 0

      Start with Fortran (maybe Fortran 77, 'cos it wasn't invented when I started). Then APL. Remember "APL is easy"...

    3. Re:How to do anything in 2017 by WillAffleckUW · · Score: 1

      correct

      --
      -- Tigger warning: This post may contain tiggers! --
    4. Re:How to do anything in 2017 by Anonymous Coward · · Score: 0

      I'll drink to that

    5. Re:How to do anything in 2017 by Anonymous Coward · · Score: 1

      > Your program might refuse to run due to an error that is literally invisible. Seriously.

      The only reason that it would be 'invisible' is because you use poor tools or use good tools poorly.

      You are referring to a mix of space characters and tab characters in the indenting of code. Most good editors can be configured to display tab characters as appropriately sized blocks of color or in some other way make them visible. Most good editors can be configured to replace the tab key by appropriate number of spaces and thus completely eliminate the tab characters in the code. If your editor can't do these then get better tools.

      If you wish to infect your code with tab characters so some idiotic reason then please do not use Python, nor comment on it, and stick to your inferior choices. Nobody will care.

    6. Re:How to do anything in 2017 by sensei+moreh · · Score: 1

      Now I know where I went wrong. I didn't start with FORTRAN, and never learned APL.

      --
      Geology - it's not rocket science; it's rock science
    7. Re:How to do anything in 2017 by Anonymous Coward · · Score: 4, Informative

      I've seen that stated the other way around.

      If you're trying to make your learning investment pay off quickly I'd go: (1) JavaScript, (2) Java, (3) C/C++
      These can break you into web development, mobile development, infrastructure development, legacy and high-performance code.

      If you're looking more at ease of learning I'd go: (1) C# on Visual Studio, (2) Java on Eclipse, (3) C/C++ on Visual Studio
      These can get a cool app running quickly without much stress and also sets you up for Unity game development if you have C#. You'll generally have more fun this way around.

      The problem with C/C++ is memory allocation, pointers, types and type aliasing - they're a bit tricky to pin down without knowing about memory and memory layouts and v-tables and such.

      C# and Swift are excellent languages to try ideas without committing to any painful pointer arithmetic and memory management. Sure, what you write won't run quite as fast as you can get in C/C++ but it's more than adequate for anything barring the highest of the high-performance scientific computing. I'd recommend C# on Microsoft Visual Studio Community Edition 2015 which also gives you exposure to a world-class development environment and tools, and that's something that can go straight on a resume if you get used to using it. Visual Studio also allows you to get around in a debugger and see what's actually happening when you start coding something bigger than a few thousand lines. You're going to get some rolling-eyes and people suggesting "real men use Vim" on Linux but that's something you should save until later or if you already have well developed Linux hacking skills. Most people code on Vim or Emacs because they secretly hate themselves.

      Java is also fairly easy to work with and doesn't have the memory management junk to deal with, but it has a longer legacy and it's more verbose in places. It's just as capable as C# and Swift but with the advantage of being deployed just about everywhere (e.g. browsers, Android, even some embedded systems). Learning Java is excellent bang-for-buck if you want to develop marketable skills quickly and it gets used just about everywhere. My main complaint with it is just that it's so damn big - it's got a massive surface area and there's a lot to learn. You can try using Eclipse to develop for Java but I personally find it a bit encumbered and bloated. It's powerful though and also a good thing to put on a resume.

      I'd learn C/C++ once you have a decent grasp of how to get code up and running in one of the above. It's the most marketable skill if you want to work in the guts of things and there isn't a program in existence that doesn't contain at least some C code. From here you can also study high-performance code for scientific work and HPC. C/C++ is also the gateway to GPU compute and a whole manner of weird and wonderful tricks that can pay back big time if applied correctly. Be prepared to sink a lot of time into this - it won't pay back $$$s as quickly as Java would but you'll get a much deeper understanding of what's going on inside your CPU.

      Python is also a superb language to have under your belt. It rarely gets used in production code but it's heavily used in tools and testing and it's a great language to build something quick-and-dirty as you need it. It's also interpreted so you can try REPL style coding and just type lines to see what they do without going through agonizing compile-test processes.

      Don't bother at all with machine code or assembly language until you're feeling confident with C++ and you have some time to kill. It's fun to look at if you really, REALLY want to know what the CPU is doing and you can get a good grasp for the compilers and execution model by studying disassembly. This is a huge time-sink though and rarely ever relevant unless you're looking at incredibly tricky compiler bugs or the highest performance hand-tuned code.

      More importantly, pick something that's fun to implement and will give you some satisfaction as you go. Writing some

    8. Re:How to do anything in 2017 by Anonymous Coward · · Score: 0

      Start with Fortran (maybe Fortran 77, 'cos it wasn't invented when I started). Then APL. Remember "APL is easy"...

      Funny: Fortran was the first language I learned, and the second was APL.

      These were both in college. It wasn't the "real" Fortran but Watfiv, a system for learners. It was on punched cards, though. Then APL, this time with interactive terminals. It was a lot more fun than Fortran, but also more expensive (CPU time was charged by the second). On of my professors was an APL freak.

    9. Re:How to do anything in 2017 by Anonymous Coward · · Score: 0

      Use Python - it teaches better habits than a lot of alternatives.

      The habit I like most in code is actually being visible, closely followed by retaining invisible things that matter when copy-pasted from an interweb.

      But I' not a nipsterhigger.

    10. Re:How to do anything in 2017 by PJ6 · · Score: 1

      Get a PC computer.

      Jesus effing Christ.

    11. Re:How to do anything in 2017 by yurikhan · · Score: 1

      Please do not talk about "C/C++" as if it were a single language.

      C is one thing. C++ is another thing altogether. In order to write good idiomatic C++, one has to unlearn many habits that are essential to a C programmer.

    12. Re:How to do anything in 2017 by Cmdln+Daco · · Score: 1

      Hey, they might end up with a PDP-11 if we don't clearly define the type to get.

    13. Re:How to do anything in 2017 by Anonymous Coward · · Score: 0

      Ok, a specific language choice such as Assembly, C++, R or even Java is all well and good. There are lots of people which have their personalchoice ofprogramming language.
      The real challenge is not the learning the syntax of the intended language, but rather how to be goodat code generation, structure and optimization.
      Yes, there are lots of add-in programs which provide syntax correction, and IDE's which provide inline syntax help/assistance.
      But the real-world programmers, which have years of real-world experience have the instinct to know of the "better approach" to take and their proven methodology which work.
      Flame me if you like, but the learnings of coding cannot be obtained from internet searches, rather being mentored by "battle hardened" coders / software engineers which have been through the dynamics of customer demands, "it works on my computer" and the agile cloud mantra which weare all experiencing daily.

    14. Re:How to do anything in 2017 by TechyImmigrant · · Score: 1

      Use Python - it teaches better habits than a lot of alternatives.

      The habit I like most in code is actually being visible, closely followed by retaining invisible things that matter when copy-pasted from an interweb.

      I can see my python code, along with all the very visible indents.
      Copy and pasting seems to work fine. I take it that you don't know how to configure you editor.

      --
      I should use this sig to advertise my book ISBN-13 : 978-1501515132.
    15. Re:How to do anything in 2017 by thinkwaitfast · · Score: 2

      Start with a goal. Everything else is filer.

    16. Re: How to do anything in 2017 by Anonymous Coward · · Score: 0

      Someone on your team checked in a .cc file didn't they?

      Relax you'll be okay.

    17. Re:How to do anything in 2017 by Anonymous Coward · · Score: 0

      If you start with basic or assembly pointers won't be considered a challenge.
      They have become a challenge because high level languages tries to hide them away and C botched the syntax for them.
      There is really no reason for them to be more complicated than understanding two complement arithmetic or other fairly trivial things.

      In fact, I recommend starting out with assembly. Once you get used to high level languages you will expect to get some functionality out of one-liners.
      It's better to learn assembly why you are still exited that you made a loop with a printout.
      I also don't think it is a bad idea to learn the fundamentals in a language where you can see what the higher languages hides away from you.

    18. Re: How to do anything in 2017 by yurikhan · · Score: 1

      No they didn’t. We write in straigh C++, no “C/” about it.

      This post is about getting started. A novice who thinks C and C++ are the same or similar may accidentally learn the wrong thing.

    19. Re: How to do anything in 2017 by Drethon · · Score: 1

      In simple terms, C is simply a subset of C++. A result of this though is C tends to be data oriented and a fairly different design philosophy from C++ as an overall program. Looking at any random line of C vs C++ usually wont result in a noticeable difference though. For the first few general concepts you could use either.

    20. Re:How to do anything in 2017 by ThirdPrize · · Score: 2

      I have been a programmer 25 years and I have never had to manage memory in my life, and nor would i want to start managing it now. I wrote my first iOS app before they implemented ARC (automatic reference counting) and i swore blind i would never write another. I think a lot of people thought the same thing and ARC appeared with the next xcode release. There are more important things in programming then wondering if you can delete an array safely.

      As parent said, JS first, C# second and thats it. You can learn JS with just a browser and a text editor. For C# you need the community edition which pretty much lets you code anything from Hello World to a website.

      C and C++ just have too much baggage associated with them.

      --
      I have excellent Karma and I am not afraid to Troll it.
    21. Re:How to do anything in 2017 by Entrope · · Score: 1

      I suggest that 1. should be data structures rather than pointers. The topics are obviously closely related, but pointers are something of an implementation detail that can wait until the student either wants to learn a pointer-based language or is more interested about the mechanics of how the computer executes code.

    22. Re:How to do anything in 2017 by Entrope · · Score: 1

      When you argue that Python is dandy because whitespace can be something other than white, you are reinforcing the other AC's point.

      Same for saying that if the user's favorite editor cannot make Python happy then the user should change what he or she likes and uses.

    23. Re:How to do anything in 2017 by Entrope · · Score: 2

      Would you tell them to withdraw the cash money for their PC computer by entering their PIN number at the ATM machine? (Just be sure to check the LCD display to ensure that the amount is correct.) Then they can hook up their new PC computer to their IP protocol router and go!

    24. Re: How to do anything in 2017 by Anonymous Coward · · Score: 0

      Apparently you're never coy posted from the internet in your life

    25. Re:How to do anything in 2017 by lgw · · Score: 1

      Data structures and OOP are dead easy to learn about. If anything they're over-emphasized in tutorials and whatnot. Anyone will pick that stuff up along the way.

      The hard stuff, the stuff that separates the developer from the scripter, is pointers, recursion, and concurrency. You don't pick those up form writing longer and more complex scripts. You have to go out of your way to learn them, and with them a solid mental model of what actually happens under the covers.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    26. Re: How to do anything in 2017 by TechyImmigrant · · Score: 1

      I don't remember being coy while posting.

      --
      I should use this sig to advertise my book ISBN-13 : 978-1501515132.
    27. Re: How to do anything in 2017 by Anonymous Coward · · Score: 0

      This. I look at C++ as C with "bells and whistles." You pretty much have to learn C anyway to learn C++, though the program design patterns will be different.

      Besides, I read "C/C++" as "C and/or C++," which in no way implies they are one language. Nevertheless it's fairly simple to write a single program composed of C and C++ modules, which I would describe as being "written in C/C++."

    28. Re:How to do anything in 2017 by lbates_35476 · · Score: 1

      Python not used in production code? Many of Google's services are (if I understand correctly) written in Python. I've written production applications in Python for 10+ years. I think you underestimate the power of this language both as a superb teaching tool and as a real world cross-platform application programming language.

    29. Re:How to do anything in 2017 by Entrope · · Score: 1

      I don't know what you think "data structures" means, but it sounds like you got a second-rate lesson on them. Once you know how data structures work, pointers are pretty obvious and easy to pick up. The converse is certainly not true. How do you find the shortest path through a graph? How do you find the k nearest neighbors of a point?

    30. Re:How to do anything in 2017 by lgw · · Score: 1

      I've had to work with plenty of graduates from "Java schools" who knew all about how a hashmap behaved, but no clue how to implement one. Who knew how Java references worked, but didn't really know what a pointer was, or a register, or the stack, except as vague abstractions. They had no mental model of how a computer actually works, had never stepped through object code with a debugger, or seen what a compiler generates.

      How do you find the shortest path through a graph? How do you find the k nearest neighbors of a point?

      It's been my experience that these sort of questions only come up in job interviews. Maybe you've worked in more academic (i.e., non-business) circles, but in my work from the kernel to the cloud, more abstract algorithm questions just never come up. Anything commonly needed is already in a standard library somewhere. OTOH, needing to debug third-party code where you don't have the source came up quite often.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    31. Re:How to do anything in 2017 by Entrope · · Score: 1

      I've had to work with plenty of graduates from "Java schools" who knew all about how a hashmap behaved, but no clue how to implement one.

      They never learned one of the most basic data structures. So what? All that tells us is that "Java schools" are (predictably) bad at teaching people about computer programming.

      It's been my experience that these sort of questions only come up in job interviews. Maybe you've worked in more academic (i.e., non-business) circles, but in my work from the kernel to the cloud, more abstract algorithm questions just never come up.

      Maybe you should try programming something more complicated than a web interface. Textbook k-nearest-neighbor search has come up quite a few times in my career, along with related topics like maximum-likelihood decoding of FEC codes. Shortest-path search has not, but similar optimization problems and other graph algorithms have. These are classic examples because they are easy to describe, fairly simple to solve, and show up in a lot of different application domains. Other data structures show up in kernels: binary trees in the buddy allocator, B-trees in several filesystems, and anything protected by RCU.

    32. Re:How to do anything in 2017 by lgw · · Score: 1

      They never learned one of the most basic data structures.

      They learned how it behaves, and how to use it fluently in code. That's certainly important - heck, it's all you need until something mysteriously goes wrong.

      Maybe you should try programming something more complicated than a web interface.

      Why throw ad-hominums into a reasonable discussion - it's because you're a goat fucker, right?

      Other data structures show up in kernels: binary trees in the buddy allocator, B-trees in several filesystems, and anything protected by RCU.

      I did a lot of work with B-trees, but never needed to solve an abstract graph-traversal problem. Instead, more practical problems, involving adjusting the implementation for the right trade-off between space and time optimization. These days the good jobs seem to be in solving quite simple problems at very large scale.

      But, heck, I'd settle for devs who would run screaming instead of considering creating or using anything of any kind containing a factoryFactoryFactory. That kind of nonsense you get from valuing academic purity over practical simplicity. That's why I advise learning the fundamentals first - the simple underpinnings to how a computer works. That builds a natural resistance to ornate overcomplexity in search of some ideal of purity.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    33. Re:How to do anything in 2017 by Entrope · · Score: 1

      They never learned one of the most basic data structures.

      They learned how it behaves, and how to use it fluently in code. That's certainly important - heck, it's all you need until something mysteriously goes wrong.

      Sure, but you can't say you've learned a topic if you only know a nearly trivial example of the topic as a black box.

      Maybe you should try programming something more complicated than a web interface.

      Why throw ad-hominums into a reasonable discussion - it's because you're a goat fucker, right?

      First, calling someone an idiot or a goat fucker is a personal attack or insult, not an ad hominem (note spelling). For it to be an ad hominem argument, the speaker must use the supposedly negative attribute as a basis to discount the target's position -- along the lines of "he is a goat fucker, so he must be wrong".

      Second, making claims about the kind of work you does not imply a judgment of you as a person or programmer.

      Finally, you suggest later in your comment that my description of your work is broadly correct: "the good jobs seem to be in solving quite simple problems at very large scale". Maybe that's your experience; my experience is that there are interesting, non-academic, good-paying jobs that are not just simple applications at web scale. The fact that my comment seems to have hit a nerve also supports my hunch.

      Being familiar with data structures -- how to design them, how to reason about them, and some idea of known structures -- is really important for a lot of programming. One guy I worked with was mostly a self-taught programmer, and he certainly knew the low-level details you say are important. One time we needed a FIFO cache for metadata picked from large files. Accesses had to be fast, because we would extract hundreds or thousands of items to draw a frame on the screen. He spent weeks writing a 5000-line class that was commented to be "PARTIALLY thread-safe" (caps in the original). Mostly because he never learned about data structures as such, and partly because he didn't want to ask -- and thereby admit that those of us who were decades younger than him knew more than he did -- he did not know that a std::deque (protected by a std::mutex for thread safety) solved the problem, was safer, and was faster than his code. That's the kind of result you get when typical programmers try to intuit data structures from learning lower-level details.

    34. Re:How to do anything in 2017 by PJ6 · · Score: 1

      "PC computer"? Seriously?

      Are you using these dumbass redundant terms ("cash money") just to be funny, or was the point of my comment lost here?

    35. Re:How to do anything in 2017 by Entrope · · Score: 1

      Poe's Law is still alive, I see.

      I suspected that Cmdln Daco missed your point, so thought I would try to make it a little clearer.

    36. Re:How to do anything in 2017 by Anonymous Coward · · Score: 0

      I have been a programmer 25 years and I have never had to manage memory in my life, and nor would i want to start managing it now. ...
      C and C++ just have too much baggage associated with them.

      Wow. Memory management isn't always necessary and it can be a pain in the ass, but as a professional programmer you NEED to know how to do it. Don't skip class that week.

    37. Re:How to do anything in 2017 by Anonymous Coward · · Score: 0

      > "PC computer"? Seriously?

      Yes, seriously. "PC" is a type/brand of computer.

      Sure it used to just mean "personal computer" but for the last, oh, 30 years or so, it has meant "IBM PC-compatible."

    38. Re:How to do anything in 2017 by lgw · · Score: 1

      Finally, you suggest later in your comment that my description of your work is broadly correct: "the good jobs seem to be in solving quite simple problems at very large scale". Maybe that's your experience; my experience is that there are interesting, non-academic, good-paying jobs that are not just simple applications at web scale. The fact that my comment seems to have hit a nerve also supports my hunch.

      You assume much. It's a bad habit for an engineer. Perhaps you don't understand the problems inherent in "at scale" for any non-trivial infrastructure. For example, creating a key-value store is reasonably easy, even a highly available one. Doing that at 1 billion TPS is its own world of challenges (but you still won't have to solve a graph-traversal algorithm). Solving those sorts of problems pays quite well these days - to do better, you have to work somewhere no one wants to work (e.g., WalMart or an investment bank).

      Mostly because he never learned about data structures as such, and partly because he didn't want to ask -- and thereby admit that those of us who were decades younger than him knew more than he did -- he did not know that a std::deque (protected by a std::mutex for thread safety) solved the problem, was safer, and was faster than his code.

      Sure, you need to eventually read an algorithms textbook. No doubt. Or at least read the documentation for your language library. But that's something anyone who belongs in the field will find natural - after all, whatever tech stack you start with will become obsolete eventually, and you'll need to learn a new one, and what its library offers. And repeat that whole process at least once a decade. But mastering the fundamentals: pointers, recursion, and concurrency, that's how you know you belong in the field.

      And I should point out that any concurrency problem that can be acceptably solved by a single global lock certainly fits withing my original advice for learning the fundamentals. You don't need to be able to design a lock-free concurrent queue despite the limitations of modern out-of-order processors and their weak atomic promises - because someone's already done that and put it in a library - but you do need to understand why it's important.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    39. Re: How to do anything in 2017 by Anonymous Coward · · Score: 0

      Check out Rosettacode.org. You'll have lots of fun while you learn from examples. Just remember that many of their examples are incomplete program snippets.

    40. Re: How to do anything in 2017 by Anonymous Coward · · Score: 0

      Stay away from object oriented programming at first. Too much abstraction. If you want to see how a computer works, try DOSBox and NASM. However, remember that DOS is not a platform that you want to end up using.

      Invest a whopping $35 in a RaspberryPi, and install the Raspian version of Linux. You'll have all the tools you need to learn how to program, and you won't have to mortgage the house to go down this path. I'd say that investing in an Arduino would be inferior to investing in a RaspberryPi, depending on whether you like to tinker with circuits.

    41. Re:How to do anything in 2017 by rtb61 · · Score: 1

      Missed the first step of learning programming, by far the most important step. Have something to do. So just trying to learn will not get you far, your must have a programming project or projects to get you going and keep you going.

      So creating a full featured web site detailing you hobbies or interests with coding elements. The more you learn the better you web site and the drive to learn more to make it better. A programming project, whether data base management or simple gaming or programme to be used within a document or programming to support a hobby, best example robotics. You can not just code, you must have something to code and something of interests will drive you to learn more, to be able to do it better.

      If you can not find projects of interests to code, then likely you are not a coder and should consider alternate employment.

      --
      Chaos - everything, everywhere, everywhen
    42. Re:How to do anything in 2017 by Cmdln+Daco · · Score: 1

      No, I was just having fun.

      I actually own a late version of an LSI-11 system, which consists of an LSI-11 processor on an ISA card that's plugged into a 486 motherboard. (apparently it was created to bridge to PDP-11 type I/O cards from cables on the ISA card, but it does include a full LSI-11 system hosted on the 486 system).

      That's a PDP-11 minicomputer embedded inside a Personal Computer. (which was the product name IBM adopted for their 'Entry Systems*' personal desktop computer way back when.)

      (*the division of IBM that designed the IBM PC)

    43. Re:How to do anything in 2017 by PJ6 · · Score: 1

      > "PC computer"? Seriously?

      Yes, seriously. "PC" is a type/brand of computer.

      Sure it used to just mean "personal computer" but for the last, oh, 30 years or so, it has meant "IBM PC-compatible."

      PC always means computer so there's no point in saying "computer" after it, unless you're talking to people so technically illiterate that they need to be told.

      Do I need to explain why that might be a faux pas here?

    44. Re:How to do anything in 2017 by Anonymous Coward · · Score: 0

      "PC" is also brand name, so there's nothing any more wrong with saying "PC computer" than with saying "Mac computer" or "Amiga computer."

    45. Re:How to do anything in 2017 by Anonymous Coward · · Score: 0

      Thank you very much!


      Flavianoep (Posting as AC not to use my karma)

    46. Re:How to do anything in 2017 by Anonymous Coward · · Score: 0

      Life's too short to worry about stupid, unimportant shit like this.

    47. Re:How to do anything in 2017 by tingentleman · · Score: 1

      This is where /. breaks down for me. The "first teach kids fundamental principles and learn from there" approach puts off many of those with a genuine interest - particularly the more creative ones (and I would argue programming is as creative as it is mathematical) in a similar fashion that force reading Shakespeare can hollow out intrinsic pleasure / motivation if introduced too early in children fascinated by language.

      I'm not saying a greater appreciation of pointers and recursion (or Shakespeare) isn't a wonderful thing - it's just not the way to get started for many potentially gifted creative innovative programmers.

    48. Re:How to do anything in 2017 by PJ6 · · Score: 1

      "PC" is also brand name, so there's nothing any more wrong with saying "PC computer" than with saying "Mac computer" or "Amiga computer."

      No matter how many times you say otherwise, PC is not a brand name. It never was, and it never will be.

      And nobody says "Mac computer" or "Amiga computer", either. It's "a Mac" or "an Amiga".

    49. Re:How to do anything in 2017 by Anonymous Coward · · Score: 0

      It's short for "IBM PC," dolt, a brand of computer.

      When people talk about "the PC" they don't mean Ataris and Macs and Amigas.

      Jeez, it's like you slept through the last 30 years or something.

  4. Treehouse by Anonymous Coward · · Score: 0

    If you don't mind spending a little bit of money, $25/month, I like Treehouse (http://www.teamtreehouse.com)

  5. Tradition by Anonymous Coward · · Score: 0

    Start with BASIC, same as the rest of us.

    1. Re:Tradition by Oswald+McWeany · · Score: 3, Insightful

      Although I started with BASIC myself, I wouldn't consider it an ideal starting place for people today.

      For one, no one uses it. Even most die-hard Visual Basic programmers use C# instead nowadays. BASIC is too dissimilar from most other languages to be a good starting one anyway.

      I'd start with Java or C#. Both easy to use, both use fairly common skills that will translate to other languages easily. Both are employable languages. If you don't mind being Microsoft's biatch C# has the nicer IDE to get developing against- but you're pretty much guaranteed to be doing purely windows based stuff. Java gives you the opportunity to work on anything.

      --
      "That's the way to do it" - Punch
    2. Re:Tradition by TWX · · Score: 4, Interesting

      At this point I would skip on BASIC simply because there are so many fewer real-world applications for it. I would start with a conventional shell scripting language. On a Windows box that would be batch files, on a Linux box, probably bash. Both have direct applications in addition to being functional for rudimentary understanding of programming.

      In my own case I grew up with a computer with MS-DOS 3.3 and GW Basic 3.22, and I spent a lot more time in MS-DOS batch files than I ever spent in Basic. Granted, my application for them in setting variables and then launching programs doesn't apply a whole lot these days, but some file processing can be handled with it.

      I am not going to express an opinion about Power Shell from Microsoft because I have no experience with it other than coworkers raving how great some new feature to them is, when we've had that feature in bash for almost 30 years, so my judgement is admittedly tainted for the negative.

      --
      Do not look into laser with remaining eye.
    3. Re:Tradition by Anonymous Coward · · Score: 2, Interesting

      > If you don't mind being Microsoft's biatch C# has the nicer IDE to get developing against- but you're pretty much guaranteed to be doing purely windows based stuff.

      Did you miss Visual Studio Code altogether? No, not the full-blown Visual Studio, but Visual Studio Code. The IDE runs on Windows, Linux and Mac, as well as the apps you write with it.

      https://code.visualstudio.com/

    4. Re:Tradition by CronoCloud · · Score: 1

      I would start with a conventional shell scripting language. On a Windows box that would be batch files, on a Linux box, probably bash. Both have direct applications in addition to being functional for rudimentary understanding of programming.

      I run Linux and I am NOT a programmer or dev of any sort, but even I have made up a few simple scripts here and there with the help of the Google to do various things.

      I've played around with turtle graphics in Python too, but that's not as useful as even simple bash scripts can be.

    5. Re:Tradition by __aaclcg7560 · · Score: 1

      Or use BASIC to learn about a different programming language. I never got any of the BASIC Computer Games (see link below) to work on my Commodore 64. Fast forward 30 years and a taxpayer-funded A.S. degree in computer programming, I started translating the BASIC games into Python to learn more Python better. A very educational experience.

      http://www.atariarchives.org/basicgames/

    6. Re:Tradition by pr0fessor · · Score: 1

      If you are working on a windows domain in a windows world then power shell gives you some very nice tools that just weren't available previously all at one prompt and it has made a lot of advances since the first version. I don't know if it would be appropriate as a starting point for learning to program.

      It really depends what you intend to program.

    7. Re:Tradition by TWX · · Score: 1

      Yeah. That was another reason I suggested bash, because syadmins that are not programmers still can use scripting languages to assist in their work.

      I have to take care of thousands of devices. Being able to use scripting to even do things as rudimentary as retrieve serial number and hostname information for inventory control purposes is quite useful as I can make scripts that parse retrieved lists of IP addresses to just get in, get what I need, write that to files, and move on to the next.

      Being able to automate backups or other similar tasks through cron also has value outside of the programming arena.

      --
      Do not look into laser with remaining eye.
    8. Re:Tradition by Anonymous Coward · · Score: 0

      > Start with BASIC, same as the rest of us.

      BASIC isn't _a_ language it is a vast number of mainly incompatible languages that sometimes have a vague similarity to the original K&K.

    9. Re:Tradition by sensei+moreh · · Score: 1

      Not everyone starts with BASIC. I actually started with PL/1 (and don't remember any of it). Why PL/1? Because that was what was taught in the intro course for non-engineers (the sections of the intro course that started with FORTRAN were for engineering majors only),

      --
      Geology - it's not rocket science; it's rock science
    10. Re:Tradition by evolutionary · · Score: 1

      we used to get some of the worst coders in some places that started their career with VB 5.0/6.0. So many bad coding habits. Although VB.net is infinitely better, the very word "VB" sends shivers down my spine. For Ms, C# all the way. :D (sorry VB guys, I had to rewrite too much of your code..). Three cheers for "option explicit"!

      --
      "Imagination is more important than knowledge" - Einstein
    11. Re:Tradition by fizzer06 · · Score: 1
      From the License:

      "The software may collect information about you and your use of the software, and send that to Microsoft."

    12. Re:Tradition by Anonymous Coward · · Score: 0

      The reason Kemeny BASIC was so good (way better than VB.NET for instance) was that it was so small. A non-programmer could learn the entire language and programming environment in a few weeks (yes, a programmer could learn it in half a day, but we're talking about non-programmers here).

      I think it's still a great learning environment today. But only for a special kind of kid who doesn't demand immediate gratification and connection to the world of web apps, video games, etc.

    13. Re:Tradition by Anonymous Coward · · Score: 0

      Power Shell is an abomination, imho. But most things M$ do is, true story.

      Also, why skip basic? because of few real world applications? Have you seen what AppGameKit can do? It is fun to quickly pile logic into an app or game and push it to almost any device, not just to mac, linux, windows or even an RPi (GPIO and all).

    14. Re:Tradition by ChrisMaple · · Score: 1

      BASIC is a reasonable starting point, but you don't want to stay there long.

      For a beginner, you want a forgiving language, something that will almost always run and not be picky about data types. Something that doesn't require "includes" and linking instructions to the compiler. Stay away from old, primitive languages with weird formatting requirements, like FORTRAN. Interpreted languages are good, but I don't recommend shell scripts because the documentation is usually inadequate..

      Once you've got the hang of making a program run and having it do what you want it to, leave BASIC behind because it teaches bad habits and has serious limitations.

      If your mindset is engineering, C is a reasonable choice. Otherwise, try to find a language that fits what you're trying to do and doesn't have peculiarities that make you angry.

      --
      Contribute to civilization: ari.aynrand.org/donate
    15. Re:Tradition by dolmen.fr · · Score: 1

      Just change the default settings.

    16. Re:Tradition by Bobfrankly1 · · Score: 1

      From the License:

      "The software may collect information about you and your use of the software, and send that to Microsoft."

      Telemetry is built into so many things now, it's a losing battle. Do you have a phone? With an app installed? It's tracking you more than VSCode ever will. But you keep wearing that tinfoil hat, and we'll keep doing what the aliens tell us with their brain rays. :)

  6. go to your local borders bookstore by Anonymous Coward · · Score: 0

    there you will find a book called LINUX
    it will have a cd on the back and it will say slackware
    resist the urge to wet yourself in fear, you're already well on your way
    put this cd in your ibm pc compatable computer and reboot
    thats control alt delete
    follow the prompts to install slackware
    i reccomend you let it guess partitions because that part is scary!
    once you have installed slackware linux you will have a fully functioning compiler
    then you just need to learn to program then write the program
    them you can compile program
    hope that helps

    1. Re:go to your local borders bookstore by __aaclcg7560 · · Score: 2

      That's so 1990's. Here's an updated Linux book. Enjoy!

      http://www.linuxfromscratch.org/lfs/

    2. Re:go to your local borders bookstore by Cmdln+Daco · · Score: 1

      Linux from Scratch? Does that mean, umm, that I can build a linux system using the Scratch language on my Raspberry PI?

      Oh, and I looked at the webpage and there was stuff about systemd on there.

      From scratch? Really? What's the bootstrap process for that?

    3. Re:go to your local borders bookstore by Anonymous Coward · · Score: 0

      I tried doing LFS and got to a point where one of the steps didn't work, and there was no information on what might be wrong or how to fix it.

      This is the big problem with the Linux world: "do ABC then XYZ." If ABC fails, you're stuck. Lot's of "how-to's" but very few "why-to's." I expected LFS to be better because it's intended to educate, but it's just another cookbook of code concoctions.

    4. Re:go to your local borders bookstore by __aaclcg7560 · · Score: 1

      What's the bootstrap process for that?

      An existing Linux environment. I typically install Xubuntu into a Virtual Machine and work from there. This is similar to how Linus Torvalds bootstrapped Minix while developing Linux.

    5. Re:go to your local borders bookstore by __aaclcg7560 · · Score: 1

      I tried doing LFS and got to a point where one of the steps didn't work, and there was no information on what might be wrong or how to fix it.

      Google is your friend. Someone else has probably ran into a similar situation and found a solution.

      I expected LFS to be better because it's intended to educate, but it's just another cookbook of code concoctions.

      If you actually read the LFS book, it will tell you that getting stuck is often the result of missing a step, ignoring error messages or a bug in the documentation. LFS is not for the faint of heart. It took me six attempts before I successfully booted my completed LFS installation.

    6. Re:go to your local borders bookstore by Anonymous Coward · · Score: 0

      > Google is your friend. Someone else has probably ran into a similar situation and found a solution

      I know how to Google, but in this case it was a bust.

      > If you actually read the LFS book, it will tell you that getting stuck is often the result of missing a step, ignoring error messages or a bug in the documentation.

      I did read it, and in this case it didn't help. I can't remember the actual problem that was the show-stopper - it was several years ago, but I re-did everything from the beginning three times and still got stuck. If I have to RTFM for every little thing, why use the book?

    7. Re:go to your local borders bookstore by __aaclcg7560 · · Score: 1

      I can't remember the actual problem that was the show-stopper - it was several years ago, but I re-did everything from the beginning three times and still got stuck.

      I did it in six attempts. Keep trying.

      If I have to RTFM for every little thing, why use the book?

      Because the book isn't an encyclopedia that explains everything. If you get stuck, back off for a while, ask for help and/or start over again. If you find this too hard to do, download a Linux distribution and be done with it.

    8. Re:go to your local borders bookstore by Anonymous Coward · · Score: 0

      Maybe I'll give it another try. Thanks.

  7. Several answers by Anonymous Coward · · Score: 3, Interesting

    First I must wonder what your existing background is with respect to computing. Depending on this I would have different answers. If you have never programmed so much as an Excel spreadsheet or "Hello, world!" in BASIC, I would then ask what is your objective? The language you want to learn will be dictated by this more than anything, as there exist "total beginner" tutorials for any language imaginable and they're all pretty easy (and don't apply to any real problem solving beyond that).

    If you are interested in programming for its own sake, I would recommend something like The Structure and Interpretation of Computer Programs by Abelson and Sussman (https://mitpress.mit.edu/sicp/full-text/book/book.html). For something that covers a lot of bases top-to-bottom very quickly, the book Thinking In Java by Eckel can be very informative (even if you never make it more than 1/3 of the way through it). If you like the logical and linguistic side of things, you may be interested in ANSI Common Lisp by Graham.

    I would only recommend starting in C if you have a significant breadth of computer knowledge but want to understand more of how things work "under the hood". Be warned, this journey is not trivial.

    1. Re:Several answers by Anonymous Coward · · Score: 0

      I don't know if I agree with you on C. C manages to be a fairly difficult language while simultaneously being one of the easiest. C is powerful and rather than letting you blow your leg off, it lets you nuke the world. But at the same time, it has very few keywords and a fairly limited standard API which makes learning it seem a lot less daunting than say, Java. That's always been my problem with Java and Python, you can't reliably use them without knowing their massive standard APIs. C, know stdio.h and you can actually do a lot of the basics. Toss in stdlib.h and string.h and you've got a fairly complete tool kit. Memory management is trivial as long as you don't use malloc or any of its derivatives.

      Now of course then you expose the rabbit hole where you start playing with function pointers, forms of inheritance with casting of structs, unions and the oh so fun preprocessor programming, and yeah, you start to learn how something fairly simple can be quite dangerous and powerful, but if you don't do any of that....

    2. Re:Several answers by K.+S.+Kyosuke · · Score: 1

      HtDP (1st or 2nd edition) might be preferable to SICP for a beginner.

      --
      Ezekiel 23:20
    3. Re:Several answers by Cmdln+Daco · · Score: 1

      But C has pointers, which introduces the student to the idea that computers have actual physical memory addresses.

      Now, if you are talking about learning to be a dilettante 'application programmer', understanding things like real memory addresses and the sizes of different entities that you store into them is probably distressing. Just go play with Java.

    4. Re:Several answers by ThirdPrize · · Score: 1

      C is just Assembler with training wheels on it.

      --
      I have excellent Karma and I am not afraid to Troll it.
    5. Re:Several answers by Anonymous Coward · · Score: 0

      Not really. Macro assemblers are assemblers with training wheels.

      Aside from being able to address memory directly, C has nothing in common with assembly.

  8. There's are reasons people say start with C by Anonymous Coward · · Score: 1

    It's high level enough that it's not overly confusing. It's low-level enough that you are forced to learn a little about the actual computers you're running the programs on. It's a predecessor to a *lot* of other programming languages, and can be used to understand the other languages. If you start with swift, you may have a hard time understanding other iterative languages, even if they share the same base because they're too far removed. C is like learning Latin or Greek for a historian or linguist. Sure you can learn just your specialty language and be good at it, but you won't understand connections.

    Don't expect a job in programming though, unless you live in a third world country. Even India will start bleeding programming jobs to cheaper markets soon.

    1. Re:There's are reasons people say start with C by Anonymous Coward · · Score: 0

      I have a job as a programmer. I guess by "cheaper markets" you mean Missouri.

    2. Re:There's are reasons people say start with C by Anonymous Coward · · Score: 1

      Small Embedded systems are usually C.
      Linux and other Drivers.
      C is not a dead language..

    3. Re:There's are reasons people say start with C by smelch · · Score: 2

      I don't understand the constant "programming jobs are going away" comments. They're really not, and there are a lot of us in the US with a good salary.

      https://www.bls.gov/ooh/comput...

      In 2014 there were 1,114,000 software developer jobs. Projections are that it will grow 17% between 2014 and 2024, meaning we plan to add 186,600 jobs. Which, incidentally, is a much higher rate of growth than other jobs.

      --
      If I can just reach out with my words and touch a butthole, just one, it will all be worth it.
    4. Re:There's are reasons people say start with C by HeckRuler · · Score: 1

      Large embedded systems too. My C code flies on satellites.

    5. Re:There's are reasons people say start with C by K.+S.+Kyosuke · · Score: 1

      If this is your reasoning, why not start with the Algol descendant Oberon? You can even learn the internals of the whole system as you go, there's not much to it.

      --
      Ezekiel 23:20
    6. Re:There's are reasons people say start with C by Cmdln+Daco · · Score: 1

      My ASM code performs EMG measurements with Vaginal electrodes. They were marketing it as electro-kegel for awhile. It's 8-bit ASM, though. And that was 15 years ago.

  9. Find a way to make it relevant by chispito · · Score: 4, Insightful

    Find something routine or complicated that you do and automate it. Maybe your job involves TPS reports. Well, automate adding the coversheet. Maybe you like gaming. Look into modding.

    Or you could go to school where you have deadlines and lab classes. Whatever the case, avoid trying to learn a bunch of theory in a vacuum.

    --
    The Daddy casts sleep on the Baby. The Baby resists!
    1. Re:Find a way to make it relevant by Anonymous Coward · · Score: 2, Interesting

      I would concur.

      Obligatory anecdotal evidence: I've had an interest in programming for many years, and so I would get thick books on C++ or Java or whatever else, read them, then be left with the problem of "now what?" Fast forward to the last couple of years, where I have a job dealing with large amounts of data, usually performing the same operations on different sets of data. Not only do I hate that kind of repetition, there's just no way I could possibly hope to keep up if I did everything by hand. So I've created a number of VBA macros, ranging from very simple to around 2,000 lines (I know, I know, but VBA is the only option available, since the IT department would probably say something I can knock out in a week would take 6-months and cost $50,000, and they can schedule it in sometime in late 2025).

      Finding something you're interested in and going from there is probably the best option.

    2. Re:Find a way to make it relevant by Anonymous Coward · · Score: 0

      Ex-Revenue Agent here. The IRS let me code in perl. Well, they installed a perl interpreter on my assigned laptop, anyways.

    3. Re:Find a way to make it relevant by Bite+The+Pillow · · Score: 1

      Also, if you can't find a programming assignment that you want to do, for yourself, to save time, ask yourself why you want to do this.

      Take a program that exists and is open source, and make changes. Learn to build it, learn what tools you need. If you hate that part, ask yourself why you want to do this.

      Build an open source project, and fix the first interesting bug on their list. You won't do it, but you will learn a lot. If not....

    4. Re:Find a way to make it relevant by Anonymous Coward · · Score: 0

      This is what I had intended to say. Learning programming just by reading about it is not the best way if it's just a hobby. You'll give up fast. You need to apply it.

      I am also not a programmer, and it is not necessary in my line of work, however, I saw some mundane tasks that I could automate, and then did it. And then from that knowledge found there were a lot of things people do around my work which can benefit from this skillset. Not a lot of people do it around here, but they would if they could.

    5. Re:Find a way to make it relevant by ausekilis · · Score: 1

      I second this sentiment.

      Make it meaningful to you. Find yourself a project, start planning, and follow it through. The most important part is to not get discouraged, learn from every failure. Keep in mind even those programmers (software engineers) that have been in the weeds for 20 years feel like throwing that keyboard against the wall every now and then.

      There's lots of little things you can do to get started in programming, though I encourage you to find that comfort zone and slowly push your way out of it. Start small and build on to something bigger. If the project seems much to big, break it down to manageable chunks. You won't build Amazon in a day, but you can certainly set up a small web server, then start customizing, add a database, add data, do other neat stuff over time.

  10. Find a problem to solve. by Anonymous Coward · · Score: 4, Insightful

    ...then solve it using a program.

    If your day-job is doing stuff with Excel, then perhaps automate something. Write a script to extract stuff out of a .csv file, etc. If your job is non-tech, then perhaps use your tech skills to build on hobbies.... e.g. if you're into video games, build a tiny game in JavaScript... if you're into sci-fi books, write a program that finds stuff in text of sci-fi books, if you're into finance, write a program to find correlations between closing prices of various companies, or extract anything useful out of earning reports---automation is the key. Find something you're interested in, then automate it (or a part-of-it), etc.

    Note that language/platform doesn't matter much. Yes, you can do complicated ``programming'' in Excel. It's just not something most people do, but that's what you're into, then go for it.

    Started languages I'd suggest: JavaScript (mostly because you can get started quickly, show off your work quickly, and go from nothing to something fun quickly). As second language, learn SQL... yes, you can do wonderful analysis in SQL. Then I'd suggest PHP... and/or Perl (yah, lots of folks would object, but if you learn Perl, you'll never have to learn another "useful" language ever again), then learn C/C++, since you don't start appreciating the ease-of-use nor overhead of other languages until you learn C/C++.

    1. Re:Find a problem to solve. by Anonymous Coward · · Score: 0

      I remember being given a book on C when I was 14-15, 15 years ago. It sat and collected dust, after reading the intro. Wasn't until having a need for programming that the books started to make sense, although they still collect dust nowadays.

    2. Re:Find a problem to solve. by ausekilis · · Score: 1

      If you're looking to build a game, try out Processing. It's based on Java, heavily documented and supported. With it's graphics libraries you can see what you're doing almost immediately. You can whip up a small game in a few hours (with experience, of course), and they have plenty of examples.

  11. Python by Anonymous Coward · · Score: 0

    https://wiki.python.org/moin/BeginnersGuide/NonProgrammers

    It really depends what you want to do -- programming isn't really one size fits all. That said, Python is a great language -- clean, fairly simple, great libraries, lots of resources, lots of directions you can go grow in.

    1. Re:Python by Ihlosi · · Score: 1
      Dead easy, powerful, interactive, fun.

      However, it hides many of the basic but elementary constructs from the user. You may not want to write your fourteenth sorting algorithm, but for someone who's just starting, making bubble sort work is a learning experience.

      I'm still looking for a better beginners ('kids') programming language, that still uses basic control structures (if/then/else, loops, etc) and has some graphics functionality (primitives like lines, boxes, circles) ready to use. Python either requires extra modules or dealing with tkinter for the latter.

  12. Coffee and stuff by TimothyHollins · · Score: 1

    How to get started? Well, I start by getting up in the morning and turning the coffee machine on.
    After that, I check /. a quickie, maybe troll some dude about global warming or moon conspiracies or whatever is up, and then I take a quick bite followed by two cups of coffee.
    Then, I can slowly start the day's programming, unless it's Perl-Friday, in which case I need two more cups of coffee and a small flask of tequila first.

    1. Re:Coffee and stuff by Seraphim_72 · · Score: 1

      If I only had mod points.

      --
      Slashdot, where armchair scientists get shouted down and armchair theologians get modded up.
  13. Bjarne Stroustrups C++ book +a book on aglorithms by Anonymous Coward · · Score: 1

    That's how we started back in the day in high school AP comp sci and its still the best way to do it. I would start with C++ and not Java because at the end of the day C++ is the "bigger" language and you can jump to Java from C++ later a lot more readily than the other way around and yes it's probably harder starting out with C++ than with Java but it's worth the pain IMHO, but this is semantics. My real point is you need a giant language treatise and you need to sit there and learn everything in the damn book no matter what language you pick.

    Bjarne has two books. One for newbies with no prior CS background and one for people with some exposure. I recommend getting the easier book first and getting the tougher book about 8-9 months later.

    You also need a separate book on data structures and algorithms. I think algorithm books are all the same. There's no good way to learn that stuff except to slog through it like a soldier.

    Give yourself 2 years.

    Do not pay for a code academy. Its a waste of $20k.

    That's all you need to get started. 2-3 books and you need to learn everything in them from cover to cover.

  14. Three big steps by Anonymous Coward · · Score: 0, Funny

    1. Pick a business problem that you understand thoroughly
    2. Pick a common technology stack, i.e. LAMP
    3. Learn how to use the tools

    For learning the stack and tools I would suggest pluralsight.com

  15. poignant.guide or machine code by jtara · · Score: 3, Insightful

    Why's Poignant Guide to Ruby

    ... even though it was written for a now-obsolete version of Ruby.

    Why? Because it is entertaining enough to get you through many important basic concepts without falling asleep.

    Otherwise, I recommend the approach that was common at one time and fallen out of favor. Start with machine language. Not even assembly code. Machine language. Best thing ever: punching IBM 1620 (decimal, thank goodness!) instructions one at a time on punch cards! That was high school. In college, we started with MIX. I prefer a real machine code to a made-up assembly code, though.

    Still, some in high school thought "the compiler" was some bit of hardware in the computer, once we moved-on to Fortran. At least the instructor tried!

    If you don't begin at the beginning, many will be forever-befuddled at what really goes on.

    1. Re:poignant.guide or machine code by lucaiaco · · Score: 1

      Why? Because it is entertaining enough to get you through many important basic concepts without falling asleep.

      I might sound repetitive here, but if you need your first programming book to be entertaining then you should probably just stick to watching movies or play video games.I have been coding for more than 15 years, and every time I read a new book about programming I am always excited about it (except for JavaScript, that really sucked).

  16. Good Grief. by Frosty+Piss · · Score: 2, Insightful

    I'm in my 20s, and have a day job that doesn't require any programming skills. But I want to learn it nonetheless. I have done some research but people have varied opinions. Essentially my question is: What is perhaps the best way to learn programming for my use case? I am looking for best possible resources

    That you need to ask this question at all might be an indicator that programming is not for you. While I really hate to roll out this tired and over-used meme, if this solution has not already answered your question, there is no hope: GOOGLE IS YOUR FRIEND.

    --
    If you want news from today, you have to come back tomorrow.
    1. Re:Good Grief. by Anonymous Coward · · Score: 0

      Because programmers are Charlie Brown-quoting assholes, and OP doesn't want to be one of you? Grief indeed.

    2. Re:Good Grief. by Anonymous Coward · · Score: 0

      That you need to ask this question at all might be an indicator that programming is not for you. While I really hate to roll out this tired and over-used meme, if this solution has not already answered your question, there is no hope: GOOGLE IS YOUR FRIEND.

      I don't understand the attitude behind this response. You are perpetuating the barriers that cause people to drop out of programming before they get started. Sometimes a back and forth with human beings is better than just looking at someone else's path to, or through, programming found on google. For one minute, sit back and reflect on all of the conversations you've had over the years about the important decisions you've made in your life. If they were just with Google, then wow, I'm both saddened and impressed by your solitude.

    3. Re:Good Grief. by Anonymous Coward · · Score: 0

      GOOGLE OWNS YOU.

      ftfy

    4. Re:Good Grief. by Waccoon · · Score: 2

      This is a terrible answer.

      First of all, some people are only interested in doing something as a hobby, and I can't stand it when people tell me that unless I'm intending to do some hardcore enterprise-ready programming, I should STFU and go home. It really sickens me how almost every programming community (and many development environments) are heavily biased towards doing real programming for work. Some people just want to learn the ropes and have some fun.

      Second, Google is terrible at giving you good information, because Google doesn't do shit but point you to forums full of "experts" who do nothing but whine about the noobs. Plus, that information is always years out of date.

      Third, even seasoned programmers tend to forget the difference between coding and programming. I knew how to code on my Amiga, writing simple algorithms and such, but I knew nothing about programming until I got into web development more than 10 years later. You know, modeling data, patterns, build environments, and so forth. Don't assume the guy is too lazy to look for information. Maybe he needs a lead as to what to look for.

      Recommend some good books or a few, simple, well-structured applications to study. Telling people to "do it yourself" is just laziness on the part of bitter experts.

    5. Re:Good Grief. by leomekenkamp · · Score: 1

      Sibling comment from Waccoon above has some excellent points. And a couple of days ago there was an item here on Slashdot on why your type of response is frowned upon.

      Please try to help others instead of putting them down.

      --
      Wenn ist das Nunstueck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput.
    6. Re:Good Grief. by strikethree · · Score: 1

      That you need to ask this question at all might be an indicator that programming is not for you.

      True in a sense.

      While I really hate to roll out this tired and over-used meme, if this solution has not already answered your question, there is no hope: GOOGLE IS YOUR FRIEND.

      Also true in a sense.

      Ultimately, you are trolling... but then, your nick already shows that.

      If you have to ask, then the drive is not so deep and inherent that you have already found the answer and do not need to ask. At the age of 20, it should be obvious to you whether or not programming is deep within you just bursting to get out. This part is true; however:

      When I was a child (7?), I could imagine machines (before I knew that computers even existed) where you could set up switches and such in patterns that could perform certain "calculations" on arbitrary input. I put calculations in quotes because I did not think of it as calculating at that age. I also foresaw digital music but not with transistors, but physical switches.

      Regardless, the first part is a troll by you because you know the truism behind what you are saying but you are intentionally neglecting the fact that everyone has to start somewhere at some point in time. His (her?) time might be now.

      The second part is a more obvious troll. Sure, you can fine LOTS of information out there by using Google Search; however, what is the quality of any particular resource? Only someone "on the inside" will be able to ascertain quality from junk. Just using Google is not sufficient as then you have to do lots of original research... which has already been done exhaustively... but you do not know about any of the previous research.

      --
      "Someone needs to talk to the tree of liberty about its ghoulish drinking problem." by ohnocitizen
    7. Re:Good Grief. by Anonymous Coward · · Score: 0

      hi there. I read through your response, and while I can, on a certain level, sympathize, I nonetheless feel absolutely compelled to respond thusly:

      Fuck you.

  17. Too late by Anonymous Coward · · Score: 0, Flamebait

    If you're in your 20's, the train has already left the station on this. The time to learn programming is when you are young, say 8-18 years old, and you have the curiosity and time to really dig into it. At this point in your life, your learning patterns and brain has already started to become set and you'll never be able to catch up or compete with the people who understand the language natively. Instead, focus on something easier like graphic design or web development or IT support if you feel you must be in the tech industry, but be warned all of these jobs have relatively short shelf lives and you'll likely be back to doing something differnent by the time you are in your mid-40's. If your lifestyle can support this then by all means go for it.

    1. Re:Too late by HornWumpus · · Score: 0

      Not so much that he can't. It's that he won't.

      He didn't have the time or motivation when young (and bored), he won't find it now (working, chasing skirts etc...busy). The only thing that has changed is money, 99% of people that learn to code for 'money' are 99% worthless.

      --
      John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
    2. Re:Too late by Anonymous Coward · · Score: 0

      99% of people that learn to code for 'money' are 99% worthless.

      100% of people who code for money are winners, and 100% of people who code for free are losers, because money is how the score is counted.

    3. Re:Too late by __aaclcg7560 · · Score: 2

      I had exposure to computer programming as a teenager in the 1980's but wasn't interested in being a computer programmer in college in 1990's. I graduated with A.A. degree in General Education. After I was video game tester for three years, I went back to school after the dot com bust in 2001, got an A.S. degree in computer programming and went into IT support contract work. Today I'm doing InfoSec in government IT. I'm 47-years-old, making $50K+ per year and living in Silicon Valley. I'll do something different when I retire in 30 years.

    4. Re:Too late by HornWumpus · · Score: 1

      The difference being what drove you to learn to code. If you haven't learned to code by the end of high school, give it up. You have the same chance of being a good coder as someone picking up a violin at the same age has of playing in a major symphony.

      --
      John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
    5. Re:Too late by Anonymous Coward · · Score: 0

      Jesus, dude.

      What if the goal isn't to become a world renown violinist but to play it for enjoyment, maybe do a gig every now and then during the holidays or something?

      Fucks' sake....

    6. Re:Too late by Anonymous Coward · · Score: 0

      There are thousands of talented musicians. Very few rock stars.

      Not everyone has to be a rock star.

    7. Re:Too late by HornWumpus · · Score: 1

      Pick up an instrument/compiler/(anything requiring dedication and time to 'master') anytime you want. But understand the 'self selection' happened decade(s) ago. You don't learn now, like you did at 10, nobody does (obvious exception).

      The kind of person that waits till age 2$ to start, is very unlikely to get good enough for public exposure. It happens, raised Amish and never saw a computer, or raised Baptist and not allowed to dance etc. Rare exceptions, people take to 'it' like ducks to water, first chance.

      I can't put on toe shoes and ever perform non-cringe worthy ballet...HornWumpus performs 'Wrenched Back and Spasm, Crawling to Liquor', improvised modern dance. Some might laugh, but the dancers would just shake their heads and walk away, perhaps render first aid.

      --
      John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
  18. Just get started... by zynthaxx · · Score: 2

    There's no need for analysis paralysis. Try out some Python (I enjoyed reading Python Crashcourse by Eric Matthes). I would recommend Learn Python the Hard Way, but it hasn't been updated to cover Python 3. If you enjoyed Python programming, take a look at Apples's (imo) excellent Swift resources and guides. That language actually isn't a lot harder than Python to get started in. If you have an iPad, check out Swift Playgrounds. It is a game, but gives you a good feeling for basic programming concepts.

  19. Python by kaur · · Score: 4, Interesting

    My language of choice would be Python.
    Dead easy, powerful, interactive, fun.

    1) Get some kids' coding books (on paper) and read through them to get the basics.
    2) Get python - the plain IDLE from python.org will do, no need for pycharm or other fancy environments.
    3) Code some simple stuff to get the basics. Try out graphics (tkinter if in python) - you will get immediate rewards by nice visuals. Bounce balls around the screen, draw gradients or simple animations.
    4) Connect coding with your hobby or work and figure out a more serious project to go deeper into the language with a real goal.

  20. Set a specific goal by overlook77 · · Score: 2

    Get a book and read it to get the basics of the lanugage. I would pick a language such as Java or C# unless you want to focus on web development. I recommend C# because I think Visual Studio is pretty easy to work with and debug. There's lots of near-religious debate about languages and some people try to steer noobs into languages like C which is a terrible idea IMHO. Once you get the basics, set a goal for yourself...make a calculator or a poker game, etc. Build it one step at a time using sites like StackOverflow to ask questions when you get stuck. Then just keep doing it...automate stuff at work, look for opportunities to keep building your skill set...expand into other languages or database stuff.

    1. Re:Set a specific goal by spikenerd · · Score: 1

      Java: Getting old. OSS friendly. Most popular language. Will probably still be kicking in 20 years.
      C#: Better designed. Better IDE. Chained to M$. Claims to be OSS friendly, but we all know it's a trap. Will be dead in 10 years.

    2. Re:Set a specific goal by techfilz · · Score: 1

      Java is the new Corporate COBOL methinks. C# is becoming more x-platform with DotNet Core, and since MS bought Xamarin.

    3. Re:Set a specific goal by Bobfrankly1 · · Score: 1

      Java: Getting old. OSS friendly. Most popular language. Will probably still be kicking in 20 years. C#: Better designed. Better IDE. Chained to M$. Claims to be OSS friendly, but we all know it's a trap. Will be dead in 10 years.

      Java: Oracle has it now, and their lawyers failed to wring a huge settlement out of Google with it. If Oracle can't lawyer their customers to death with it, that leaves it's fate to be determined. Possibly circling the drain in 20 years. C#: 17 years old, still in development. Built on DotNet, which also powers Microsoft's system automation language: Powershell, which is also still in development, both of which are on GitHub no less. I suspect these have more legs then many might think.

  21. It's personal by hmblcodr · · Score: 3, Insightful

    I wrote a couple of blog posts just over a year ago that I think are still relevant:

    * Getting started with programming
    * Getting better at programming

    But it's a really personal thing. Some people hate reading through books, others couldn't do without them. Try as much as you can until you find something that really peaks your interest, that you can't put down, and follow it to see where it goes. Good luck!

    1. Re:It's personal by Anonymous Coward · · Score: 0

      piques. Piques your interest.

    2. Re:It's personal by hmblcodr · · Score: 1

      Thanks. Not as bad as when I write "bare in mind" but certainly close :)

  22. Programming as something you do by Anonymous Coward · · Score: 0

    I'd suggest thinking about programming as something you might do as a hobby vs. something you would learn from textbooks/tutorials. Then you'll be in a really solid position to make it a habit rather than a passing thing.

    Question 1 would be: Do you have an interest in a specific area that you might be able to spin into a programming scenario? Ex. Interactive Fiction / Visual Novels / RPG Maker type stuff will get you thinking about all the right kinds of problems as you work with whatever system you choose and provide you with constant feedback and rewards as you get to look at what you've made.

    It turns out I'm the kind of person that likes close to metal/retrocomputing, and my onramp was mostly through reading books/doing exercises/copying other people's work:

    I started out with BASIC. Creative Computing from David Ahl ("Best of Creative Computing") has a bunch of period BASIC programming / typing exercises that will help you focus on detail and also get you into reading your system's of choice's manuals as you adapt them to work under your scenario. I'd suggest if starting today to set up an 8-bit ATARI working system, those have an interesting architecture and a good community at Atari Archives.

    After you're already set up with a little background, I found The C Programming Lanugage from K&R invaluable, as well as Starting Forth by Leo Brodie https://www.forth.com/starting-forth/ are great period texts that provided me with a comfortable space. Later, I had fun with FORTRAN77 too (the indent rules are great). These were easy to work with on any Linux system (for an extra challenge, work on an ARM architecture and start worrying about memory alignment).

    Online there's a bunch of great learning systems too, so presumably others will mention those. (I remember having a good time with Try Ruby (http://tryruby.org/) and with the Untrusted Javascript game (http://alexnisnevich.github.io/untrusted/) but I think both of them might want you to have some previous experience with computers and/or like hands-on "here's a factory, good luck". Similar vein if you want to do parallel programming later, TIS-100 was pretty amusing as a learning game, but it costs money :P)

    Good luck! (Also, quite looking forward to hearing about everyone's suggestions!)

  23. Kinda Programming by Anonymous Coward · · Score: 0

    I know anyone that does programming for a living will laugh at this comment but if you don't require it for your job try AutoHotKey. I know its not "real" programming but you will be able to learn some basics and be able to automate so many tasks. You should be able to learn enough to get started in a few hours and you will be surprised at how much time you can save. You can learn it from youtube and even their help file can get you started. Only move on to real languages when you have a need for it.

  24. C and C++ by WillAffleckUW · · Score: 2

    I recommend you learn C and C++, especially if you want to become a highly paid Data Scientist or some useful career.

    You'll be forced to take other classes anyway, good to start out with the one that will be most useful year in and year out.

    --
    -- Tigger warning: This post may contain tiggers! --
  25. A few paths by Bodhammer · · Score: 2

    I think there are three paths to follow.
    Question - where do you want to end up?

    1) Find a project you are interested in such as an open source project, game, tool, etc. Figure out how you can contribute be in HTML, web pages, Javascript, database work such as MySQL, PHP etc. Learn whatever tool(s) they are using and figure out how to contribute. The key is to be interested in the project, not neccesarely the tool or language.

    2) Pick a language and go through some tutorials. There are tons of stuff on almost every language. Pick one that interests you but stick to something mainstream. This is a good reference to Python for example: http://www.openbookproject.net.... I recommend something that is cross platform and machine independent.

    3) Get an Arduino or Raspberry PI and build something. Flash the lights, read the temp, make the propeller spin, etc.


    In any of the above - Have fun and don't make it a chore!

    --
    "I say we take off, nuke the site from orbit. It's the only way to be sure."
  26. Getting Started by Anonymous Coward · · Score: 0

    The language you learn is not necessarily as important as the skills and understanding of programming in general that you develop. By this I am referring to understanding best practices and development models. The same development models and schemes are in use today as from many decades ago, and that is because they are still applicable. You can be proficient in many different programming languages, but if you are not familiar with different development models and their uses, that will not be as useful and make you as valuable as you could be.

    I would suggest starting with a language like Java, which for me was easy to pick up, and start working with it writing code to do simple tasks. Also pick up some books (library or online) and start researching and learning about development models. A fun website to play around with Java that I stumbled across is: http://codingbat.com/java

    I wish you luck!

  27. If you have an iPad, go through Playgrounds App by SuperKendall · · Score: 4, Insightful

    All iPads with iOS10 either come with, or can have installed for free the Playgrounds app into which you can install playgrounds that teach programming.

    It sounds silly and at first it may seem like it as you play through a programming a kind of game figure. But the lessons get more and more advanced, and along the way you are learning Swift.

    As you can far enough along you can decide if you like programming enough to really get serious, then perhaps investigate stuff like the Stanford programming course videos (free), including a course just on iOS development... but you don't have to go that way, the concepts you learn learning Swift apply to most languages pretty well.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re:If you have an iPad, go through Playgrounds App by ole_timer · · Score: 1

      and you can build an app to put on the app store. you can't lose.

      --
      nothing to see here - move along
  28. It depends on what you want to do. by wezelboy · · Score: 1

    Different languages have different strengths and weaknesses.

    If you want to get into the nitty-gritty, then C is awesome.

    If you want to write code that leaks memory like a sieve then Java is the way to go.

    If curly braces somehow offend you, and you do not understand or care about what a global interpreter lock is, go for Python.

    If you want to wear your braces keys down to nubs, tcl is the language for you.

    FWIW, the language that excites me the most is Swift. YMMV.

  29. Refine your goal by Anonymous Coward · · Score: 0

    I think you'll have much more success and find it's easier to stick with "Learning to Program" if you refine you goal a bit, otherwise the category is just too broad to make sense of. What are you specifically interested in, which can be a personal interest or possibly what you would like to do for career advancement.

    Do you want to make a game, a web application, learn how to use the command shell to solve problems, create a database, build a mobile application, design a website, automate computer workflows, embedded systems, robotics, audio synthesizers, IoT, etc. etc. etc.

    Not only will this give you some motivation as you work through the more mundane aspects of programming, but it will also help guide your progress and help select which languages and tools are most suited for your goals. This is especially important for self guided education, since without a goal you will tend to get stuck constantly thinking "well that tutorial was interesting, what do I learn next?"

    1. If you like the low level stuff (embedded systems, robotics, routers, etc.), you'll likely want to focus more on C/C++ .
    2. If you're looking at automating administrative and/or computer processes, you'll more likely want to focus on Python and the Bash Shell
    3. If you're looking at designing a web sight front end, you'll most likely want to focus on Javascript and HTML/CSS
    4. If you're looking at doing database work, you'll want to focus on MySQL, (is PHP still the thing?)
    5. If you're looking at doing games, you can use most languages (although C++ is mostly used in the industry) but you may prefer one of the packaged game engines (Unreal, Game Maker, Unity, etc.)
    6. If you're just wanting a lightweight language to play around with simple algorithms, I'd recommend Lua, Python, or Javascript
    7. If you're wanting to make a mobile application, you should probably consider Java (android) or Swift (iOS)
    7. If you really have no idea what you want, I'd probably suggest Python or Java as those are the easiest to branch out from with the huge suite of libraries available for both.

    At the end of the day, you can't really make a "bad" choice for a starting language as high level programming concepts will mostly translate from one language to the next. However, you can pick a "better" one for what you think you'll ultimately want to be doing so you're not immediately forcing yourself to learn new syntax. As you grow, you'll definitely want to branch out and experience other languages because they all offer unique insights that will help you mature as a software developer.

    So, to recap. Narrow down "Learning to Program" into a specific area of programming that interests you. Once you have a Goal, you're choice of languages should be narrowed down to one or two viable choices. Pick one, and then find what resources and communities are available for getting started. All of the language options I listed above have vibrant and active communities that will help you along on your first steps.

    Good luck!

  30. Programming What? by Anonymous Coward · · Score: 0

    Mechanicing? Doctoring, Arting?

    Web? Mobiles? PC? Servers?

    Different Languages. And different skills.
    C is a reasonable starting Place, but not useful except for small CPUs and Low Level drivers.

  31. start with python by aod7br · · Score: 1

    Very easy to understand and yet very powerful, you will use it a lot later. Later if you want to get more machine intimate, try C and assembler.

    1. Re:start with python by Anonymous Coward · · Score: 0

      Agreed. If you've never done any programming before, I recommend starting with Learn Python the Hard Way

  32. My experience by Anonymous Coward · · Score: 0

    Find something you want to do and then find the best tool to do it with.

    Just learning a language because you want to know how to programming will murder your motivation. Your goal shouldn't be to learn a language, but how to do something. From there you can start expanding your knowledge base and looking into alternative options and start making decisions based on your experiences.

    Perhaps you pick the "wrong" place to start, but when you're in a position to recognize that you already have the needed expertise to find the right path.

  33. Long term goal by Sigma+7 · · Score: 1

    First, you need an long-term goal for programming. The current job market appears to demand hyper-specialized individuals, and if you don't have a few years of something major under your belt, you won't be able to get a job. (Of course, you can disregard this if you're programming as a hobby rather than intending for a career.)

    For getting started - practically anything that contains examples and also explains how things work. If one doesn't seem to be working out, you can easily switch to a different one.

    The actual gap seems to be resource for Intermediate programmers - those who are skilled, but "not skilled enough". I haven't really seen any suitable resource for that group.

    1. Re:Long term goal by Hognoxious · · Score: 1

      The current job market appears to demand hyper-specialized individuals, and if you don't have a few years of something major under your belt, you won't be able to get a job.

      Even if you have more years than the thing's existed.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  34. maybe try Exercism? by tnordloh · · Score: 3, Informative

    exercism.io is a good starting point. The site has a lot of languages to choose from, and it presents you with a bunch of exercises you can complete for each language. Once you complete an exercise and submit it, you can visit the site, and see your code there. You can also see how others solved the same problem, and comment on their solutions, as well as read comments from other people.

    --
    Always remember the chickens that have gone before
  35. Start with Python. Then... by Anonymous Coward · · Score: 0

    Python is a powerful language, but it also hides a lot of mundane details from you that you don't need to know yet. I would suggest learning Python, then C, then Java, in that order. Python teaches you about high level concepts (classes, iteration...), and C teaches you low level machinations (memory management, function pointers, bitwise...). Java would be your port of call if you moved into several areas of programming later, and it involves the concepts you would have already learned from Python and C, so you will probably want to learn Java as well.

    As far as HOW to learn, I have been asked this before, and I highly recommend tutorial resources online over print books; Some are more up-to-date, and they are usually more concise. The Getting Started guide over at Python.org and the GNU C Tutorial are your friends. Try finding examples of code for different programs and learn from the way other programmers have approached the same problem, as well.

    Lastly, there is sometimes a right and wrong way to develop a particular piece of software. If you come across example code with a lot of while True loops or gotos, try not to adopt someone else's bad habits the way my brother has adopted all of mine. ;-)

  36. OK, here's what you need to know by squiggleslash · · Score: 3, Funny

    Last year, I'd have told you avoid languages like Ruby, Python, etc, and work on the latest greatest: node.js, Swift, and, of course, Java. However, it's a year later, so don't learn any of that rubbish, you need to learn iLng, Visiwo, G, and, of course, Java.

    As long as you have a good grounding in those languages, many of which are so new they literally don't exist yet, you should be fine for the next three to four months.

    --
    You are not alone. This is not normal. None of this is normal.
    1. Re:OK, here's what you need to know by Anonymous Coward · · Score: 1

      Those will old news soon. He needs to get prepared for what's going to be hot this summer: Coboljure.js, Lispkell, and TubularJS.

    2. Re:OK, here's what you need to know by Waccoon · · Score: 1

      That's why you learn how to model information and don't worry about the language. No matter what, you'll have to learn other languages later in your career, anyway.

  37. C is the right place to start. by lq_x_pl · · Score: 3, Interesting

    Start with C. Learn how to compile / link without the help of an IDE. Two birds with one stone here, you'll learn important concepts about how resources are used, and you'll avoid being vendorlocked into a single IDE.

    --
    An internal system operation returned the error "The operation completed successfully.".
    1. Re:C is the right place to start. by Anonymous Coward · · Score: 0

      C is the worst possible advice for a beginner.

  38. Collect computer science information by bluefoxlucid · · Score: 1

    Have a look through the CompSci program at a college. You'll end up with starter books like Python Programming: An Introduction to Computer Science and Programming Languages: Principles and Paradigms. Obtuse, boring stuff, but a way to start.

    As for starting with C? I suggest you take a look at C# Design Pattern Essentials by Tony Beavis. Just give it a read through. I like C# because it lets you define interfaces and classes in ways which are conducive to modern programming; the point here, however, is to give you an exposure to the ideals of modern OOP. These are tools. You won't understand them or their usage; you'll get the general ideal, though, in enough detail to resolve. Modern programming--and modern OOP particularly--is about building tools that can plug universally into other tools, not about building giant programs. An understanding of the destination will give you a way to frame what you learn as you go, as well as something to question fundamentally, and something to measure yourself against.

    OOP isn't the only kind of programming; it's the fundamental type of programming. You want OOP for building large, complex applications; for specific problem sets, you'll want some other paradigm. AI, financial analysis, some mathematical problems, and other such things will be vastly easier to solve and less-ugly when implemented in some other type of programming language--meaning not in C#, and not in something like Java or Python that does roughly the same thing as C#. You could build an airplane out of sails and make it flap its wings or something, but you'd probably want jet engines; yet reciprocating internal combustion engines are the type of engine used in almost everything consuming gaseous or liquid fuel, save for jets and rockets which should not be replaced with reciprocating engines.

    Acquiring a fragment of a large basis of knowledge is hard. Programming isn't a thing; certain subsets of programming are things. You aren't going to learn all programming, and you can't just learn programming without understanding how problems in computer science are solved--believe me, I've tried, and I always end up working on computer science problems because they're fun and interesting and... well, because I never learned computer science; these aren't familiar things to me. I should rectify that; a quick acquisition of new tools conveys an enormous amount of power, and problems which seemed daunting become trivial.

    When you look at all the books I haven't yet read in my library, you quickly realize the frightening truth: this isn't even my final form.

    1. Re:Collect computer science information by Anonymous Coward · · Score: 0

      Great advice, but I disagree with you here:

      "OOP isn't the only kind of programming; it's the fundamental type of programming."

      No it's not.

      Start with an 8 bit microprocessor and write everything in procedural code. It's much more fundamental than OO.

      And read this.

  39. Language selection by grasshoppa · · Score: 1

    I don't know that I'd start with C. If you are a Windows user, I'd suggest C#. A) It starts you off right with object orientation, and B) It's probably one of the fastest paths to useful code, with a gui ( if that's important to you ).

    There are thousands of tutorials out there to get you going too, so there's that. If you are completely green to programming, this won't be easy, but it'll be better that C.

    --
    Mod me down with all of your hatred and your journey towards the dark side will be complete!
    1. Re:Language selection by Anonymous Coward · · Score: 0

      Java is still in higher demand than C# and C# is essentially an improved version of Java. I think it's easier to learn C# after learning Java than vice versa. Also, the purpose of learning C is to learn more important fundamentals hand on that won't be as obvious when learning Java or C#.

    2. Re:Language selection by grasshoppa · · Score: 1

      One of the other reasons I recommended C# ( over java ) was that the development environment is more streamlined; it's easier to produce functional, non-trivial, code ( for beginners anyway ).

      I get where the C recommendation came from, but there's more to the fundamentals than loops and decisions. Object orientation is fundamental too.

      --
      Mod me down with all of your hatred and your journey towards the dark side will be complete!
  40. modify something by Anonymous Coward · · Score: 0

    Find some open source software, study the language used to write it, and make some changes. Add a configuration option or two. Add some features you would like the software to have. Give yourself goals that require programming, and you will learn programming as you learn how to meet your goals.

  41. Leave Slashdot never to return. by Anonymous Coward · · Score: 0

    The best way to become a successful programmer is to do the exact opposite of what the thousands of $50k/year sysadmin losers who waste time on this website while waiting for their jobs to be outsourced did.

    Start by closing your account and deleting any bookmark you may have to Slashdot and you'll be ahead of most people.

  42. 1st learn propper soldering technique by Crashmarik · · Score: 4, Funny

    Then get a good copy of the 7400 line data sheets.

    1. Re:1st learn propper soldering technique by fisternipply · · Score: 1

      Sigh. Perhaps it would be more helpful to learn why one would choose a logic family... and it's not just price.

    2. Re:1st learn propper soldering technique by __aaclcg7560 · · Score: 1

      Sigh. Perhaps it would be more helpful to learn why one would choose a logic family... and it's not just price.

      The original family is obsolete and more expensive. All the logic chips I have in my parts box belongs to the HC/HCT family. Then again, I'm a cheap bastard. ;)

    3. Re:1st learn propper soldering technique by bplipschitz · · Score: 1

      Go buy a metric shit-ton of 2N2222 transistors.

      No, wait -- go mine some silicon. . .

  43. Python and C by gatkinso · · Score: 2

    Python gets you producing stuff fast, lets you concentrate on learning to program rather than learning to compile.

    Then, C. Build a Python extension which gets you up to speed with C (and serves as a base for many other languages as well). C Is a good starting point for C++ or Java or Objective C.

    This stuff is all free on Linux. If you don't have a dedicated Linux machine, download Virtual Box and install Linux on a VM and use that. After than then go ahead and pay Microsoft if that is your desire.

    --
    I am very small, utmostly microscopic.
  44. Which language to start with by boulat · · Score: 1

    This would not be a popular opinion, but it is mine and I will share it with you.

    I would personally start with a language like Scala.

    If you are going to learn one language, this language is well worth the effort of learning.

    There will be other languages like Go, Swift, Perl, Elixir, Nims, Rust, Ruby that people will suggest, and they are all good choices, but ultimately not as a complete of a choice as Scala - stick with JVM, and stick with strong typing, it will save you a lot of headaches down the road.

    If you cant stomach Scala, then settle for Python. It will get you far and wide, and you will be able to get shit done quick and almost as good as with Scala, but you'll need some additional tools once you reach that summit, and realize that Scala is a whole different mountain that you should've been climbing all along.

    Good luck, have fun, and dont listen to the haters.

  45. Depends on Industry. by Anonymous Coward · · Score: 0

    It REALLY boils down to this, really: what industry do you work in, or want to work in?
    There's a metric fuckload of programming-based industries, or programming-helped industries. (automation of your own tasks so you can slack off and post on the internets or play Quake)
    From mechatronics to IT to web development to AI to gaming and banking, you have a wide variety to choose from and a wide variety of languages used across them.

    Look up an industry you are interested in.
    Then look up job positions for those industries, specifically paying attention to the languages used. (and/or google popular languages in industry)
    Pick a handful of them. Focus on one of them for a month. Focus on another for the next month. Cycle through them.
    An easy starter language to get over the hurdle of not knowing shit about programming and to get used to the most common structures are things like JavaScript, C#, or even Java. Just stay away from HTML crap when learning JS, The HTML side is the worst facet of JS sadly. (The DOM especially)
    Focus entirely on the theory of writing functional code, how commands work, exception handling, the various types of data storage, their methods on working with said data, functions, objects, classes, prototypes, single and multi-threading (seriously easy, fuck knows why people find it complicated, suck less)
    Steer clear of weird shit like Python or any other weird language structures and syntaxes. Learn that later if you want to get in to it. But NOT first. Python is not like most languages even in function sans the weird code layout rules.

    Equally, another area you can look in to is not just programming languages, but entire suites you can deploy in your business.
    There's a lot of jobs for supporting crap like Wordpress, GIT, various other web servers and so on.
    Can't hurt to expose yourself to those and learn how different sets of programs interact with code to create a functional service.
    There's quite a bit of demand for people in maintaining huge systems like these.

    Most of all, WRITE.
    Keep a log book of things you have learned. Go over it. Figure out ways to do things on your own. Think of a problem, figure out how to solve it even if the code is terrible. Getting yourself thinking is more important than optimal code just now.
    Programming is not so much the code itself, but hugely about problem solving. If you are good at that, you'll have a fun time programming. If you are bad at that, even if you knew every language inside out, you'll fucking hate programming with a passion.
    The desire to figure things out, curiosity, this drives a love for programming. Without it, the money isn't even worth the depression and mundaneness of trying to figure out tasks you don't care for.

    If all else fails, go buy a pack off Slashdot deals and follow it :^).
    My friend did. (Python. ugh) /shill

  46. Learn hardware, assembly and C by Master5000 · · Score: 1

    Understand hardware, understand the inner workings of the PC. After that you'll realize that high level languages are basically syntactic sugar that are sometimes useful but most times obfuscate what is happening down there. I know that this goes against the common theme: learn javascript, learn webscale woot woot now you too can be a hipster brogrammer! Those guys don't know anything. If you know the low level the only problem is that you'll find most high level guys to be pretty limited in their capabilities. Also, you'll be able to learn the latest useless fad much faster when you have a deeper understanding. Unfortunately, you will also see the truth and realize that most languages and frameworks are utter shits written by morons. And that might depress you.

    1. Re:Learn hardware, assembly and C by eliphalet · · Score: 1

      In ancient times when I learned programming, memory was limited, the allocation of memory was static and linear, and there was no bounds checking, so understanding how memory is used was the key concept for a new programmer.

      Learning assembler and reading "core" dumps to see what was going on in memory at the low level really helped in debugging Fortran programs. That awareness is still useful for applications where using a lot of memory is not feasible or efficient and for languages such as C that require deliberate memory management. Judging by the number of malware exploits and memory overflow fixes that are announced each month for popular systems, it's still a major issue.

      So I agree that some exposure to assembler or C is useful for any serious programmer, and then go ahead and take advantage of languages that clean up after you and trap memory errors, in suitable applications (for some definition of suitable!).

  47. Community College. by Anonymous Coward · · Score: 0, Interesting

    Night classes,knowledgeable instructors, focused curriculum.

    Don't fall for this learn yourself bullshit. People who "learned it by themselves" always turn out to be arrogant pricks who think they are the only ones with the answer. The spend their days arguing over what the best language is, what the fastest algorithm is, and going into forums and posting, "Why do you want to do that?" or " have you tried doing this?" instead of just giving you a straight answer to your question or admitting they don't know.

    Programming is a tool. It's used in managing a business. As you change jobs you will learn more than one language and you will probably never master it.

    "They" come up with new languages constantly and the morons in HR suddenly find they need people with 5 years experience in a technology that's been around for three. And the "new" language is never really new, it's just rearranged. Kind of like Microsoft Office when they just rearrange the menus.

    In fact, fuck learning to program. Go into management. Management is what makes the company run. Then you will be the one telling the arrogant pricks what they need to be doing (and that pisses them off no no end). You don't even need to know programming for that. Management is about resources and schedules. If they don't meet the schedule,fire them. if they don't have the resources, that's on you.

    1. Re:Community College. by Anonymous Coward · · Score: 1

      > Don't fall for this learn yourself bullshit.

      That's anecdotal. Most developers learn on their own. A formal course is fine, especially if it's a full CS degree, but for many like the OP (already in their 20s and likely already invested a lot into another degree), the time and money required for that makes it difficult to justify. You're also making a bigger gamble. If you discover you do not like programming after investing a lot of time and money into a formal degree program, you're stuck with more debt. Learning on your own allows you to quit at any point you realize you hate it and be out much less time and money. That said, you still need to cover all of the ground that is covered in those college courses (except unrelated courses and advanced math courses). You can't go through a couple basic Udemy courses or Codecademy and think you're job ready.

    2. Re:Community College. by Anonymous Coward · · Score: 0

      Community college is a good start but pick a goal. Doing something just because is a waste of time.

      Very true, management makes the decisions. It's funny but they are usually the least knowledgeable in tech. But, they know how to get people to work together towards a goal. Learn how to help them do their job better and you'll always have one.

      You could be the most knowledgeable person but unless you know how to apply it you'll always be someone's tool. You'll only be usefully until they find someone better or cheaper to employ.

      I've seen this over and over it's not the most knowledgeable that gets you ahead but the most effective. Knowledge is useless unless it helps you get things done.

  48. Blockly by BaronAaron · · Score: 1

    If you are truly starting at the beginning and need to understand basic concepts like conditionals, loops, variables, etc I recommend Blockly.

    By the time you can solve level 10 of this tutorial you'll have a fair grasp of some fundamentals.

    The best part is it automatically converts to JavaScript and Python, two good languages to move on to after you've master the basics.

  49. Programming Apps by Anonymous Coward · · Score: 0

    The answer is of course: Apps. Build more apps. Apps that app, so you can app at work, and app at home, and app while taking a shower.

    1. Re:Programming Apps by Anonymous Coward · · Score: 0

      app while taking a shower.

      Programming a shower radio app is easy. Waterproofing your phone is the hard(ware) part.

  50. I know I know *waving hand* by nanospook · · Score: 1

    Hire an AI!

    --
    Have you fscked your local propeller head today?
  51. I would start with HTML, CSS, and javascript by r2rknot · · Score: 1

    Mostly because it is very easy to start, there are many places to get 'How do you do....X' instruction, and it will translate almost immediately to a skill set you can take with you. JavaScript is not necessarily the best language to learn, but it has many widespread web development uses and has a super low barrier of entry.

    --
    "...whenever any Form of Government becomes destructive...it is the Right of the People to alter or to abolish it..."
  52. More solid advice.. by nanospook · · Score: 1

    How about focusing first on what you want to work with? For example.. phone tech? Apple? Android? Do you want to work in a company doing database design and maintenance? What are your skills? Are you good at .. what? Maybe you are a math whiz? It's a hard question to answer so perhaps coming from the angle of what you want to accomplish with that would be the best approach? At your age, you might not have a clue.. but you can start thinking that way..

    --
    Have you fscked your local propeller head today?
  53. Good Plases to Start by Dareth · · Score: 1

    Watch along with courses at actual University. CS and other subjects.
    Berkely Webcast

    OpenCourseWare MIT
    MIT OCW

    Skimmed the CS parts of both programs back in the day. I have a BS in CS from a state college. Found both programs interesting and appreciate the very different approaches to the same subject.

    --

    I only look human.
    My mother is a halfling and my dad is an ogre, so that makes me an Ogreling
  54. Norman, coordinate. by Anonymous Coward · · Score: 0

    1. Do the opposite of whatever you read on Slashdot
    2. ???
    3. Profit

  55. Design Patterns by Anonymous Coward · · Score: 0

    Read the GOF book: Design Patterns, elements of reusable code
    It will probably be difficult to get into at first, but it should be doable. It will teach you everything you need to know about whether you want to spend any real time writing code.

  56. Possible answers by Shane_Optima · · Score: 1
    1. Your first language doesn't hugely matter, just so long as it isn't your last language.

    2. Eric S. Raymond has a point:

    Lisp is worth learning for the profound enlightenment experience you will have when you finally get it; that experience will make you a better programmer for the rest of your days, even if you never actually use Lisp itself a lot.

    Lisp is different from most programming languages in that it basically has only one syntactical structure. There's a not-unreasonable argument that this makes things more cumbersome or opaque than necessary for professionals, but as a beginner it's very easy to at least very grasp what pieces are doing and in what order. Get a good IDE to help with the parentheses and show what the function arguments are, and I think it may be a good way to learn how to write structured code without getting bogged down in syntax. Don't spend too much time on Common Lisp's or Clojures' object oriented stuff, though... they are considerably more powerful and general-purpose than almost every other object oriented programming languages and will not properly prepare you for the nonsensical function-method divide, limited dynamic dispatch, and tedious "design pattern" based approaches that most C++ / Java inspired languages use.

    3. What job are you at now? If it involves a computer, you might be able to find a use for programming after all. Anything that you think could in principle be automated, probably can be. Work on it in your own time. Don't worry if the tools available suck. Even VBA would probably be fine as a first language, just as long as it isn't your last language.

  57. Your Job Market by Topwiz · · Score: 1

    I would check the job websites to see what languages are in demand in your area.

    1. Re:Your Job Market by Anonymous Coward · · Score: 0

      Check the job websites to see what languages to claim experience with when you lie on your resume.

  58. Don't by Anonymous Coward · · Score: 0

    Why in the hell would you want to?!? You're better off starting a pig farm, or taking welding classes. Programming won't help you one fucking iota with anything. ever.

  59. Re:Typing in programs from magazines by hackwrench · · Score: 1

    https://archive.org/search.php...
    Download the PDFs here, and type the IBM PC listings into QB64. Most of them will work.
    http://www.qb64.net/forum/inde...

  60. Just don't by maestroX · · Score: 1

    Most likely if you haven't got the urge by your 20s to try and control your computer you just aren't going to like it.
    .
    Because basically, *any* computer language learnt will be a complement to your skills, albeit only fun or frustration.
    .
    You see, the language is only the tool, assignments, loops, statements and conditionals is pretty much all you need to start.
    GOTO is considered evil, but then again it's not.
    .
    Why haven't you tried anything?

    I don't want to proclaim holiness on developers, the mythical art of programming or anything, it's just that I've seen too many people blindly jumping a career opportunity ending up in disappointment.

  61. Start with something creative by _xanthus_47 · · Score: 2

    Start with a goal, the end of which will be something you either need or will be proud of and can show others. Like a personal website or a game. There are many programming paradigms. You can't learn them all. Start with something that will make you feel like you achieved something which will give you the positive feedback loop to keep you interested. That way programming becomes an interest rather than something that you want to do to better your career, earn more money etc. If you do it for the love, other things will follow. I was an electronics engineer who got into programming through modding and game development. If I had gone the route of my peers who learnt to program as a need for the job, I would have hated it and would have been thinking about how to move into management. With my skills and more importantly - interest, I like my job and hence do better at it. TLDR : Start with something fun

  62. Re:Tools and toys by hackwrench · · Score: 1

    All toys are tools. Not all tools are toys, but this may just be dependent more on the user than the tool. If you learn better with Community College go for it, but if money is an issue, you may want to go it alone.

  63. Community College by nbritton · · Score: 1

    Go sign up for the programming fundamentals class at your local community college.

    1. Re:Community College by nbritton · · Score: 1

      As far as what languages. Focus on Bash, Awk, Python, C++, and Swift.

  64. Lots of people use BASIC by hackwrench · · Score: 1

    Lots of people use BASIC, just not VisualBASIC. Want the BASIC most compatible with most of the BASIC code out there? Go for QB64. There's also FreeBASIC, DarkBASIC, and many others.

    1. Re:Lots of people use BASIC by fizzer06 · · Score: 1

      Which is best for Linux?

  65. Depends on your personality by Tablizer · · Score: 1

    It depends on your personality. If you want something that's easy to set up or install, I'd recommend learning with JavaScript: it's already built into browsers, and is something often used in the field. Two pluses.

    The downside is that it's a screwy language with a screwy type system that doesn't give you very friendly feedback if you do something wrong.

    If you like "visual" learning, then LOGO or a variation of may be the way to go. Installation effort and/or cost may be a factor. LOGO is designed for teaching, and so will be overall easier to digest.

    If you want to dive into technical details quickly, then take up C.

  66. Learn Python the hard way by postereyes · · Score: 1

    Python's a great first language as it's easy to look at, perfect for simple scripts while still being a full blown language, and has a great community. If you decide Python is right for you, I recommend the book "Learn Python the hard way." If you want to get into apps or more complicated stuff, I'd recommend C++ as it's a faster language. And I recommend tutorialspoint online to learn C++.

  67. You first programming language by minstrelmike · · Score: 1

    If you've never programmed before, the first thing I'd recommend is learning html and write a basic web page. Play around with the formatting and css. None of that is programming but if you can't do that sort of stuff, you can't program. If you can do that sort of stuff, you'll enjoy doing it, especially the immediate response.

    Then build some javascript functions to run in your web page. That's actual honest-to-god programming and you can easily find tutorials on html, css and javascript. Once you've got yourself started on that, then you might want to look at learning a "real" language like C or C++ or Java but there are reasons you'd use one and not the other and those are why folks study computer science, not programming languages.

    By the way, everybody hates javascript, but everyone uses it because it works. In fact, the latest open source web stack is built entirely in javascript.

    1. Re:You first programming language by XxtraLarGe · · Score: 2

      If you've never programmed before, the first thing I'd recommend is learning html and write a basic web page. Play around with the formatting and css...

      This is solid advice for a starter because you don't need anything more than a good text editor and a web browser. No need for a complicated IDE, where learning the intricacies of how the IDE works is half the battle. Plus you're not platform bound, like you would be with C# or Swift. Sure, they're "open source," but the best tools for either of those is on a specific platform.

      If you really want to get a good idea of how you're doing, you could always sign up for CodeCademy's HTML & CSS course first, then their JavaScript course. It's free, and you earn badges to show your progress. As an added bonus, there's forums where you can ask for help if you're stuck on something, and the community is fairly helpful. There are a ton of other free sites out there, but this one is probably the best approach for newbies IMHO.

      --
      Taking guns away from the 99% gives the 1% 100% of the power.
    2. Re:You first programming language by Anonymous Coward · · Score: 0

      I'm sending this to my offshore team immediately!

      btw, at least one person doesn't hate javascript

    3. Re:You first programming language by indi0144 · · Score: 1

      I agree completely: notepad++ a browser with decent developer tools (FF Cr) and a plugin for the browser to auto reload on changes for said HTML file, literally 5 minutes set up.

      Html and CSS is not programming as mistrelmike pointed out, but if you can't put up with it then programming is not for you, because those don't even qualify as hard or easy "languages" it is about if you find it fun to work with them, walls of text, sintaxis, tools, your focus.

      I want to learn to code myself, haters will point that programming is something to get into very young and they are right, if you happen to end up working on it for the rest of your life, otherwise, who cares?. Some people just want to check that box in the list of things todo before the brain starts to become mushy.

      I think I'm going to try C# this year as per all comments above. Wonder why nobody has mentioned COBOL.

    4. Re:You first programming language by Bobfrankly1 · · Score: 1

      On top of 'build a web page' I'd add, 'learn how to use the Chrome/Firefox dev tools'.

      Learning how to use the available tools to dig through your code is how you fix bugs. It helps you to 'peel back' the layers and understand whats going on. Once you've had a mild exposure to the tools, you'll find yourself doing some dabbling in them (because it operates as a live editor in some instances) and some in your text/WYSIWYG editor.

  68. Re:a job as a programmer by hackwrench · · Score: 1

    All that means is that there is one programming job in Missouri.

  69. Like everything else start with the basics by evolutionary · · Score: 3, Insightful

    I feel your confusion. This may be "old school" but I feel it's solid (or has been for me). Start with learning the basic rules.

    A lot of people like Python but because most languages use certain characters to enclose blocks of code (and python only uses indents) I would suggest starting with Java or C/C++. Many here will say Python is easier (ruby is probably easiest for many), but your goal will be to have room to grow. You'll find more languages conform to the C/C++ or Java syntax style rules than Python or Ruby. I find it easier to ready than Python myself.

    Do yourself a favor and skip VB.net. If you want pure Microsoft (and I would advise against that, would have saved me much grief early in my career) you can do C# and you'll be better prepared for languages with more platforms.

    Java, for example you can use in many enterprise system and embedded systems, including Android. C/C++ you can use for robotic controllers, IPhones (objective-c), real-time critical applications (and gaming!!).

    Some may suggest starting with scripting languages like PHP, Python or Ruby. there is faster "joy", but I'd sooner suggest starting with MIT's Scratch https://scratch.mit.edu/ (GUI language for teaching children basic of programming). It's a great teaching tool for anyone I think. Hey, it's still valid basics which converts the GUI instructs into 'C'. the reason

    I'm so "hung up" on starting with C/C++ or Java is most newer languages take a lot of their cues from the concepts widely used in C/C++/Java. once you learn one of these (especially C++/Java) you can step into any other language out there with relative ease. Some good sites to start would include:

    http://lifehacker.com/five-bes...
    Note: These are all free or have free options

    http://www.learn-c.org/
    http://landofcode.com/programm...
    https://ocw.mit.edu/courses/el...
    https://ocw.mit.edu/courses/el...
    https://www.codecademy.com/lea...
    http://www.coursera.org/ (real university level courses, a little intimidating at first, but worth it)
    http://www.cplusplus.com/doc/t...

    For python:
    https://www.python.org/

    For Ruby:
    https://www.ruby-lang.org/en/

    the courses as udemy are a little light so I'd only go there for review.

    I've given many options here although I've stated my preference. The other advantage to using C/C++ or Java is they make using these invaluable books easier to read:

    Writing Solid Code: Microsoft Techniques for Developing Bug-free C. Programs (Microsoft Programming Series) by Maguire, Steve
    Code Complete by Steve McConnell


    Yes, these books are from MS and old, but I found them invaluable (and I wish MS had actually practice what came from their own publishing companies when writing the code for W2K and XP). Was required reading at one workplace. You'll want to learn about Object-Oriented approaches as well as syntax. It's a lot to take in and this is just the beginning, but it's fun journey. Oh, I would agree, don't bother with Basic. You are better off with Python or Ruby. :D Again, to reduce your learning curve later on, I'd start with C/C++/Java. You'll be glad you did.

    --
    "Imagination is more important than knowledge" - Einstein
    1. Re:Like everything else start with the basics by ShakaUVM · · Score: 2, Informative

      I like Java, C++, C#, and Python, and think they all work great as introductory languages. C++ gets shit on a bit because there's a lot of bad memories from the 80s and 90s when you had to do a lot of things by hand, but modern C++ is a joy to code in. In fact, if it was up to me I'd say that colleges should teach C++ as their intro language for three reasons:

      1) It's as powerful and expressive as Java and Python (with some notable exceptions like split() which you need to invoke Boost for). Smart pointers (instead of raw pointers), vectors (instead of C style arrays) and range-based for loops (to never have out of bounds errors) allows for very fast and safe programming.

      2) It is a lot easier to go from C++ to Java/Python than vice versa. Java programmers tend to have a vague grasp on how memory actually works.

      3) C is only one step away from assembly. C++ is two steps away (due to name mangling). Java and Python are three or more steps away. Assembly programming, while rare enough these days, is still the gateway to really understanding computer architecture and writing code that works with your architecture instead of against it. Success in assembly should be the goal for a lower-division computer science program.

      I also agree with you that most languages take their cues from C++/Java in that they either follow the conventions or deliberately break them. So learning C++ or Java is a really good choice for new programmers for that reason as well.

  70. Quickest path versus long term by Anonymous Coward · · Score: 0

    The quickest path to become a developer is to learn frontend web skills. Basically HTML, CSS, JavaScript, Angular, React, Node.js and everything related that's most used. Your knowledge of programming doesn't need to be that deep at that level as long as you're able to create websites, basic web apps, and read, debug, and improve other people's code. Then, make as many connections as you can and try to get your foot in as a junior web developer.

    However, that won't get you very far and overall, if you have the time, I recommend aiming to become a software engineer. This means really learning core programming skills (take an online CS course like CS50 and learn C), OOP (Java or C#), functional programming (enough to understand it), algorithms, data structures, gang of four design patterns, solid, widely used frameworks, etc. To really learn all of this will require going far beyond the basic syntax which are taught on websites like Codecademy, though you will need to start somewhere if you have no experience with programming at all. I think JavaScript or Python are easiest to get used to and learn the syntax basic, but they are terrible for really learning what I mentioned above. You're not going to learn proper OOP through JavaScript.

    There's a pretty good, though perhaps overwhelming, GitHub guide for all of this I recommend checking out:
    https://github.com/jwasham/google-interview-university

    1. Re:Quickest path versus long term by Anonymous Coward · · Score: 0

      > You're not going to learn proper OOP through JavaScript.

      Huh? What is "proper" OOP?

  71. Depends on your learning style by rmandevi · · Score: 1

    There are many ways to become a programmer, and you'll hear most of them here.

    First off, what kind of programmer do you want to be? Nobody knows everything. Do you want to be the guy at the office who can make spreadsheets sing? Some have said that Excel is the world's most popular language. Do you want to write web games? Database stuff? Hardcore number crunching?

    Do you think that you will learn better studying theory, listening to lectures (YouTube is your friend), or just going in live without a net and hacking things until something blows up?

    If you want to learn theory, there are two obvious directions (and likely more). C and C++ make you think like the machine; they were built for writing operating systems in, so they are "close to the metal". The languages are the racing cars of programming: incredibly efficient, able to do amazing things, but no automatic transmission, power steering, or ABS breaks. One false move and you go head-on into a wall. Lisp makes you forget about all the silicon and concentrate on abstraction: the more you understand abstraction, the more that any given problem looks like something you've done before and therefore can do easily again.

    If you want to learn by playing, Python is considered a good language for that. Java may also be a good language; it's very strict, which means that your compiler or even your editor can catch a lot of bugs before you even try to run the program. Grab some code from online, make yourself a little sandbox where you can't hurt anything (like trashing your employer's database), and tweak it. Run the program, decide to make a change, and look through the code to see how you might do that. If you want to write code, you're going to have to read it, after all. Use some sort of source control, even just tar or zip file backups if you don't know source control, so that if you go off into the weeds somewhere, you can come back to someplace safe.

    Choose your first language based on the way you want to learn, not on the language you want to learn to program in. Learning new languages is easy; the basic problem in programming is taking what you want to accomplish and explaining it so well that even a chip made of sand can't get it wrong. Once you get the hang of your first language, the second one will be much easier, as you'll understand the higher level elements of what you're trying to do and just need to translate that into new words.

    --
    People who live in glass houses shouldn't walk and text.
  72. Processing by monkeyxpress · · Score: 2

    If you find a full on professional IDE is a bit intimidating, then start with something like Processing.org until you feel comfortable with the basic language constructs (variables, functions etc). I know when I started out many many years ago, the wall of information you had to wade through just to get some text to print out somewhere was a bigger battle than learning the actual language semantics. I think those of us who know the tools inside out don't realise how intimidating it can be for someone who is starting from scratch and just wants to paint pixels.

  73. A Coder's Purpose by Anonymous Coward · · Score: 0

    I find this question silly, but I get asked it all the time so I will summarize with a story about my nephews.

    It is hard to get into coding / programming without an end goal in mind and to drive you progress forward. Let’s face it most of us go into programming because we saw an issue / problem / or hole in our lives so we learned some code, banged out some characters into notepad and complied away our dreams.

    Without this drive factor most new programmers lose interest quickly or get stuck in the ‘what is next?’ loop. That is why when my older nephews ask me how to make a website I pointed him at tutorials and books about website design and development. His work is proudly on display on the World Wide Web. When his a little brother ask me how to program I knew he was jelly of this magic powers his big brother had but lack a direction or focus when I sat down to talk to him about what he wanted to build. In stepped Screeps, I had been playing this interesting RTS for a while now. To play the game you need to program the game.

    So why Screeps? There are a number of those learn to program games, but most are focused on little interaction and more on the visuals and most only talk basic ideas of how to program but give you no real skills in a given language.

    Screeps is game, programming IDE, and driving focus all rolled into one. I would highly recommend it to anyone starting programming as it is fun and simple to get into yet impossible to master. It keeps the student focus and heading towards a goal and provides opportunities to constantly improve your skills and results. It puts it into an environment that you don’t need to understand performance and hardware limitations to start with but as you progress so must your understand of real time performance and memory management.

  74. Javascript by KalvinB · · Score: 1

    All you need is a text editor and a browser. It's a C style syntax so it will make transitioning to other languages easier.

    Even crappy locked down computers in public schools generally have enough access rights for students to create Javascript programs.

    With Google's advancements in JavaScript compiling it's plenty fast and the Canvas concept gives you the ability to make pretty much whatever interests you whether it's simple card games or more advanced graphical games.

    Or if you have an actual problem you want to solve, you may need to research more particular solutions.

    If you want to do IoT stuff, then the Arduino is very simple to get started with and just requires basic C knowledge to do plenty of things.

    Learning is best when there's an immediate need. Picking a random language to start with is generally not the right approach. Pick a problem, then figure out what tools can solve that problem. Pick the ones that are most accessible to you.

    People learned BASIC because it was free.

    Now everything is free. So that's not an issue.

  75. Pluralsight by mikaere · · Score: 1

    I'd recommend selecting a language - I think an object oriented language would be a good place to start. Java or C#, both of which are supported in Windows and Linux, would be useful choices. After that, get a subscription on PluralSight (or similar e-learning site) and do some of the beginner courses. If you can afford it, pay for the subscription that lets you download the source code so you can use it as a reference.

    --
    It's good luck to be superstitious
  76. Programming is not about the language... by scalaenthusiast · · Score: 1

    To learn programming, pick a problem to solve, then pick a language you'd like to solve it with. Learning programming has nothing to do with the language itself - its just a tool that implements a set of contructs you use to tell a computer what to do. Programming is the art of telling the computer what to do. To clarify, building a house has nothing to do with a hammer, but you use a hammer to build a house, or maybe you use a nail gun. If its a steel stud house, you don't use a hammer, you get a screw gun. So choosing a language is about choosing the right tool for the problem you are trying to solve. Learning C on your own can be daunting - wouldn't recommend it, but have at it if thats what you want to learn. I'd learn on a Mac or on Linux, but not Windows, unless you are writing a Windows program. Swift is a cool language, but is only useful on iOS or Mac (and more recently, server-side development with certain frameworks.) So, I would choose the problem you want to solve, do some research on the best tool to solve that problem, and go from there.

  77. don't do it by Anonymous Coward · · Score: 0

    Just don't. Get a real hobby. Something you enjoy. I'll tell you what is going to happen. You will end up learning a little bit about programming, enough to sort of know how it's done but not enough to actually get a job doing it. After years and years of this you will maybe get good enough to get a job doing it but you will watch as those jobs go to fresh faced youngsters with less programming ability than you. Eventually you will kill yourself.

  78. python by Buckeroo.Banzai · · Score: 1

    python

  79. Identify a project, learn the tools to do it. by Maximalist · · Score: 1

    I'm in a similarly situated position. I'm a lawyer. I have a bunch of stuff in my email inbox that serves as records of travel miles I can deduct. For a few years I'd spend the hours manually entering this stuff into a spreadsheet monthly. Then I realized that there must be an easier way to deal with it... so I found the Coursera class on Python for Data Analytics, learned enough Python to scan an inbox for the messages that indicated dates of travel, and spent a day hacking together something that would rifle through my inbox, extract all of the travel emails, and dump them into a .xls file.

    You need a goal... then research the tools that people think would get you to it.

    1. Re:Identify a project, learn the tools to do it. by holophrastic · · Score: 1

      You beat me to it, and not by much. You need a goal.

      Essentially, you really can't pick a language without a goal. Most languages are designed to make certain goals much easier, by making huge sacrifices elsewhere. If you get caught in one of those sacrifices, you (as a novice) will never learn anything except that programming is stupid.

      Regarding your travel inbox, python packes and learning to program aside, you could have achieved a similar result with a non-programming solution of cutting-n-pasting huge amounts of e-mail text, and searching with simple regular expressions. Less of a tool, more of a technique, but if your mind goes that way, there's virtually nothing that can go wrong with a technique. Of course, you wouldn't have learned any programming at all, so if that was your goal, it wouldn't have worked.

    2. Re:Identify a project, learn the tools to do it. by Maximalist · · Score: 1

      20 years ago I used to do some PERL stuff, so regex idea came to mind... but then I recalled how much better people said Python was then PERL for most purposes... and the Coursera class from UMich was really engaging... Dr. Chuck's way of Python clicked, and I could finish one of his month-long classes in a weekend... and then turn around and apply it to my project. I also used a Udacity? (maybe Udemy... don't remember which one) class on JS to pick up enough to redesign my webpage... it still looks 15 years old, but it is now all interconnected with JS, making updates much much easier...

      There are great classes out there for free... find a teacher you like, and learn. Not all of them are the heavy-Indian-accented impenetrable ones that you do run into quite often.

    3. Re:Identify a project, learn the tools to do it. by holophrastic · · Score: 1

      See, I went the other way. I chose Perl over everything else because I want it to work my way, not someone else's way. I code everything from scratch, and avoid any class/module/api for any logic/application/business efforts. But, I've been programming for 30 years now, 20 with perl, and 10 with my own platform built over perl, so I'm not exactly the norm.

  80. Community college by michael_cain · · Score: 1

    Got a community college in your area? Almost all of them will have some sort of intro to programming class that deals with the hardest problem for newbies: finding bite-sized problems to start on. Also there's someone who can help you figure out your question as well as answer it.

    With any luck they'll let you audit for almost nothing.

  81. Start with a itch. by Anonymous Coward · · Score: 0

    Learning programming for programming sake is difficult and easy to get bogged in the infinite set of useless parts of any language. Imagine a carpenter that says they want to master how to use a saw. To be a good carpenter, like a good programmer, requires a collection of tools to solve a larger set of problems. The main issue you will run into is the choice of language but which is a better tool, a saw or a hammer? Depends on the problem you're trying to solve. Nearly all programming languages can be used to solve general problems, but most languages are focused to address certain sets of problems easier than others.
    A much better way is to start with a problem, a goal, something that you know that if it existed would make your life better.
    If you want to be a game programmer, you might set out to recreate some of the classic games and work your way up.
    If you like robotics, put an arduino project together that will require you to program the arduino to respond to sensors, move a servo, blink some lights, etc.
    hackaday dot com is a good source of inspiration for hardware projects.

    In any case, know that you will never master programming, it's always a work in progress, and you can't learn to use a tool to fix things and solve problems without practicing solving problems. There are always going to be new problems that require new tools to solve, and the best problems to solve are usually your own, as you know when you are done. You also find different ways to think about problems based on which tools you use. Programming for graphical user interfaces is a radically different way of thinking than what's needed to process a video stream, or calculate an orbit. Object oriented design is another layer of thinking different, as is the field of machine learning. Digital Signal Processing, and hard real-time programming (required for embedded devices) requires a different mindset as well.

    All that being said, I vote for C as a good choice as it's pretty easy to learn and forms the core of many other languages. I recommend the K&R C Programming book, and make sure you work through ALL of the problems. Then you want to read "Deep C Secrets", to understand how and why C is the way it is. You'll also need someone to show you how to edit a text file, run your code through a compiler, and how to debug problems, as these more practical things are not included in the K&R book.

    Good luck!

  82. Linux C Programming book by Anonymous Coward · · Score: 0

    You can start out with the book: Linux C Programming.

  83. Start where you are comfortable by sgrover · · Score: 1

    If you really understand how websites work, starting with Javascript might make sense. The higher level, or interpreted languages usually have a little lower learning curve. If you are an analytical type of mind, then starting with C or any of the lower level languages makes you think more about how things really work. At the end of the day all the languages share some commonalities - variables, loops, recursion, synchronous vs asynchronous execution, etc. If you learn the theory behind these, switching languages is relatively easy (not EASY, just more so...). I've been coding professionally for 20ish years now. If I had it to do over again, I would have stuck with C and the low level languages rather than building web based applications in interpreted languages (PHP, JS, etc.). The projects with the lower level languages are more interesting (IMO) than common business needs, and the pay is better. Not to mention you get to use all the information theory you pick up over the years - much more so than with the higher level languages. (again, IMO, and being overly general here for simplicity)

  84. Start with Python by crespino4 · · Score: 1
    Just a few weeks ago I started teaching a programming class to middle schoolers. In my research regarding what language to use for the class I landed on Python because:
    • - Development can be done on just about any device and operating system.
    • - The language is easy to learn, yet powerful once you learn it.
    • - You can write interesting programs straight away without having to spend a lot of time learning the tools.

    Even with an easy language like Python, it helps to have a guide to get started. I'd recommend visiting http://inventwithpython.com/ch.... The author does a great job of walking you through everything you need to know to get started without any experience. Once you finish with the book, there are a number of great references on the web to take you further.

  85. Java by planckscale · · Score: 1

    Not saying it is the best language to get started with but it definately gave me a good understanding of the fundamental concepts of programming, loops, arrays, statements, functions. I got started by taking Stanford's free online Java classes, and then took an actual class at a City College at night. I blogged about my experience getting started with Java here: https://jasoncoltrin.com/2013/... , but I suggest you do the same and write about the things you learn as it will help you retain the info.

    --
    Namaste
  86. Take a class by Anonymous Coward · · Score: 0

    Go to your local community college and take a fucking class.

  87. Re: Bjarne Stroustrups C++ book +a book on aglorit by Anonymous Coward · · Score: 1

    Bollocks. Recent versions of C++ are impenetrable nonsense, even for the "experts". Ever seen a compiler error message that's 3000 characters long (on one line)? You will if you use templates heavily on a cross-platform codebase.

    Learn something you'll enjoy. Start simple. Move on when you feel hemmed in. Jump around - try different languages (basic, Lua, JavaScript, C, a really old version of C++). Ignore Python (that white space scoping is pants). Don't look at the Linux source code (it'll put you off). Don't listen to old guys.

    Regards,
    An Old Guy

  88. Read Bennett Haselton posts on /. by Anonymous Coward · · Score: 0

    All of them. And that goes for the editor who posts this shit all too often.

  89. My advice by Anonymous Coward · · Score: 0

    Simply don't.

  90. As a hobby or for a hobby by AHuxley · · Score: 2

    If learning go for something like Basic, Ada, Pascal. Learn with books that are all about teaching good habits and have lots of educational support.
    Then work hard at understanding the steps needed to get data in, have a computer do something and display the result.
    If a person has a hobby and wants to create an app to help with some hobby then find some good books on creating apps in 2017.
    Learn programming and then look at what is trending in 2017.
    Or build an app around todays hardware and enjoy the results of having a solution to some problem.

    --
    Domestic spying is now "Benign Information Gathering"
  91. Pascal or Modula-2 by portal2 · · Score: 1

    To my opinion, start with Pascal or Modula-2. Two languages well structured, that will force you in learning certain important basics like initialisation. Once you're proficient in one of these languages, a more loose language like C will not trouble you if you keep using the structured way you learned with Pascal. At least that's what I did. Once you get some experience you might try C++ or Java.

    1. Re:Pascal or Modula-2 by K.+S.+Kyosuke · · Score: 1

      To my opinion, start with Pascal or Modula-2.

      BlackBox Component Builder? Getting a good, up-to-date Pascal or Modula-2 environment is somewhat more difficult these days.

      --
      Ezekiel 23:20
  92. Opinions is like Assholes, and so- by Slugster · · Score: 1

    -here is another one.

    I am assuming something here:
    OP is interested in maybe being more helpful at their current job, by learning "programming" in some regard.

    Okay then,
    First ask your employer what kinds of computer systems they use for management--what operating system, what word processor, what mail client, what mail server and what data bases (local management may not know this). THAT is what your guidance is on what to study using. You want to be able to do things that they can use with the setup they already have. But having them accept any help like that is kind of a long shot, as they won't be excited about running programs from an unknown source (you) on their business computers. You can ask anyway tho. Heck, email the corporate HQ and ask. They might be interested that you're interested.

    If you are curious about learning something to get another/better job, then look in your local newspaper for what is being asked for. You likely won't have the degree required, but it will still be some guidance.
    Programming skills are rather localized IME... Where I am most jobs ask for Windows, MS Office and databases, databases, databases. Most Windows coding is done in Visual Studio, which means mostly C# or maybe Visual Basic. A bit of server admin stuff/Python/Linux, but not much.... But that's here. Wherever you are may be a lot different.

    If you just want to learn to program as a hobby, then start anywhere. All the common concepts of the major languages are available in all the others, and there's tutorials online for everything.
    Console programs get boring pretty fast and making Windows programs is fantastically easy with Visual Studio (that is free for non-professional, non-commercial use) assuming you're using Windows anyway...
    If you want to learn the deep-down details of game programming, then look at MS's C#, because the DirectX Library examples are all in that language.

    If you want to learn Java, buy a cheap Java tablet and download Android Studio (the software for creating Android apps, free from Google). Android apps on a small portable tablet can either be silly games or useful work programs, so this can fit into either [work] or [play] categories very easily.


    And finally,
    Everyone else who replied to this topic is WRONG!

  93. Don't bite off more than you can chew! by Anonymous Coward · · Score: 1

    +1 for Python. It's so portable, widespread and easy to read.

    Also, +1 for installing a Linux flavour (Ubuntu, Debian and Mint are all good; they're very popular so there are mountains of resources for beginners)

    I would advise against learning a low-level language first, stick with something closer to human language so you can focus more on concepts and principles without having to worry about complex formatting and non-intuitive commands. I originally tried to learn programming with C# and I struggled. I then switched to learning vb.net and MapBasic. Once the basic principles clicked, I found moving on to more complicated languages like C# much easier.

    As for content, just find some little task you'd like your computer to do for you and code it up. E.g. I made my own front end for using Robocopy because it was too hard for my less computer literate family and friends to use via CLI. It's easier to find motivation to try, fail, try again and learn if you're invested in the outcome.

    1. Re:Don't bite off more than you can chew! by Anonymous Coward · · Score: 0

      +1 for Python. It's so portable, widespread and easy to read.

      Expect it isn't portable between python 2 and python 3.

  94. I would start with Visual Basic by kimgkimg · · Score: 1

    I would start with Visual Basic. You could go with C#, but I think the language syntax conventions might make a bit more sense to a beginner using Basic's "BEGIN" and "END" rather than the symbolic characters of C# (and it's easy enough making the transition at a later time.) Microsoft provides a free edition to learn on, the integrated IDE with F1 help and Intellisense make learning the language syntax a lot easier. Also the ability to step forward/backward through code, revise it on the fly, and inspect the contents of variables makes it much easier to recognize what's going on in the program.

  95. Um...Javascript. by doom · · Score: 1

    If you want to get started with programming, you should probably learn javascript. You have something that can run it already where you can make changes and see visible results. And your biggest problem isn't going to be finding tutorials, but picking ones you want to start with out of the ten thousand available ones.

    I don't actually like Javascript, but the people telling you to do something else really have to do more than just wave their hands.

  96. Avoid unnecessary headaches by thunderbug · · Score: 2

    Several here have suggested starting with C, C++, C# or Java. That is one option, but you should know that these languages have rather steep learning curves. Each requires you to learn a lot before you can do much. In the case of C you need to thoroughly understand pointers before you can write meaningful programs and will spend a lot of time debugging which, at a minimum, is discouraging to newcomers. Java requires you spend a lot of time learning its libraries and perhaps 100s of APIs and how they relate before you can write more than just simple programs. All four languages are powerful, but there is, IMO, a smarter way to learn the basics.

    Begin by learning data structures and how and when you can use them to good advantage. Learn to program the basic constructs (loops, conditionals, classes, etc) and how to develop algorithms. Integrate those concepts and write a few programs. Use a language that is easy to learn. You don't need to get tripped up early with nuances not related to what you are trying to learn. Numerous books and free tutorials are available.

    After mastering the basics it is time to decide in what area(s) you'd like to specialize. What do you envision yourself doing eventually, web development, robotics, financial applications, user interfaces, networking, image processing, cryptography, artificial intelligence, databases, GIS, games, or ??? The list is endless. Learn the languages best suited for that domain.

    Personally, I've used 30+ languages over the last 55 years and IHMO, the clear winner is Python. It is easy to learn and your programs will come to life sooner with less effort. At the same time, Python is powerful with rich libraries supporting pretty much anything programming students would want to do. I could go on but the important take-a-way is that while Python is an excellent choice for learning programing concepts and data structures, you need not learn another language to experiment with advanced computer science concepts. Once the basics are under your belt, I would suggest you take the time to become acquainted with C. It will teach most of the other concepts that Python cannot. Between them the world can be your playground.

    Learning your toolset is just as important as the languages. Your #1 tool will be your text editor. Find one you are really comfortable with. Learn how to write good comments and documentation. A debugger, an IDE, and a version control system also have their proper place.

    After you master the basics you can move into your area of specialty. You should now be well prepared to transition into C, C++, C#, Java, SQL, HTML, JavaScript, PHP, or ??? In fact, some of these languages integrate nicely with Python allowing programs to enjoy the strengths of each.

    And remember to come up for air periodically. Some folks forget that.

  97. It's like asking how to learn a toolbox by Kjella · · Score: 3, Insightful

    I'm in my 20s, and have a day job that doesn't require any programming skills. But I want to learn it nonetheless. I have done some research but people have varied opinions.

    "Learning programming" is a bit like looking at box full of tools, is a hammer or a saw or a screwdriver best for the job? Well the question doesn't really make any sense until you've defined what you want to accomplish. Unless you just want to learn general concepts, in which case it doesn't really matter. Assign values, calculate values, create functions, acquire resources (like open a file), release resources (like closing a file), control flows like if/case statements, for/while loops, events, state etc. exists in pretty much all languages for a reason, the syntactic sugar may be a little different but the concepts are pretty generic.

    --
    Live today, because you never know what tomorrow brings
    1. Re:It's like asking how to learn a toolbox by ole_timer · · Score: 1

      see the swift comment. that's the future.

      --
      nothing to see here - move along
  98. Programming is a very wide topic indeed by Whatchamacallit · · Score: 2

    Being a programer is not like it used to be. In the early days there were only a handful of languages and it was fairly easy to learn them and the computers were not that powerful by todays standards. Nowadays there are so very many different languages all geared to help solve different problems. That is what programming al all about, solving problems. Add to that all the frameworks and API's out there. The choices boggle the mind. The profession is very wide and stretches from embedded devices to mainframes and everything in between. No one can learn it all, most veteran developers have mastered 5-6 languages but there are deep concepts that are found across languages.

    The question one should ask oneself is what sort of programming interests you? Web, Application, Mobile, Systems, etc., etc. There's a new field called DevOps where you are a Developer but you are also an Operations engineer. The DevOps lies between the programmers and the production systems. They help bring the two worlds together. Just because it runs on your laptop doesn't mean it will run on the production system scaled out across a thousand nodes in a giant data center. DevOps also helps setup code repositories, automated testing, how things push to production, how production is orchestrated, etc.

    Starting with a scripting language such as Ruby or Python might be up your alley as neither requires compiling and both are pretty easy to read and understand. See if you like the idea of coding for long periods of time and banging your head against the desk in frustration. Jumping feet first into K&C ANSI C is a big leap into a shark tank, same with C++, Java, etc. All languages have a place in the scheme of things. It all depends on where you want to go. Pursuing some traditional college classes in software design can tune you into the big picture. It is a lot to wrap your head around everything.

    The world needs more developers, go for it. Just realize it's a whole lot of work and the learning never ever stops. You will write code and look back at it years later and scratch your head wondering how you could have been so stupid. It truly is a non-stop learning experience that most talented people get better at over time.

    1. Re:Programming is a very wide topic indeed by Bobfrankly1 · · Score: 1

      Starting with a scripting language such as Ruby or Python might be up your alley as neither requires compiling and both are pretty easy to read and understand. See if you like the idea of coding for long periods of time and banging your head against the desk in frustration.

      If you work in a primarily Microsoft IT department, I'd place powershell on the top of the scripting language options. It's built on top of DotNet, which means you can be simple and get around, but you can also call up DotNet, or import other libraries built upon it. You can even do some C# code right in powershell, and use it in your scripts, so it's a language that can grow with you, and one that sets you up for jumping to C#.

      There's also the details about DotNet and Powershell having their open source versions so you can take that knowledge set to Mac and Linux. :)

  99. Pick a project you want to build and go by Anonymous Coward · · Score: 1

    It's very hard to just pick up a book and start learning. 1st, your interest is low so it's very hard to do, and learn from, a programming problem without a purpose. 2nd, you might get past a few examples but I suspect you won't get much retention from it.

    So, pick a project. Anything, even if you have to copy what you see online. I learned by writing a text editor. Very, very simple but it helped me to learn. Break it down into the simplest parts you can think of. Ultimately when you program what you are doing is writing directions to a dumb computer to follow. Think of it in those terms. You'll want to describe what screens will look like, what your inputs/output will be. Keep it very simple. As you learn you'll expand on it. To start with, your break down is all that matters. There's no right or wrong. Just do it.

    Next pick a language, you can't go wrong with Java or C++. Others will suggest other programming languages but you're a learner and both of those languages have constructs you'll find in many other languages so you're not wasting your time. You are learning now but later you'll be able to pick a language that fits you're needs.

    Pick a book. Buy a physical book. Not an electronic book. You get better retention from a physical book plus you'll be able to look up sections easily. As you go thru it, think of your project. How is this useful? Review you're project break down. As you learn you'll be able to better define the parts. Do not be lazy, the brain tends to forget what it thinks is unimportant so pay attention and apply what you learn to your project. Try not to use the book as a crutch for syntax. It's better to remember what you learned rather than copy it to the screen from the book. Especially, don't use cut and paste.

    Set a goal, x number of chapters per week. Schedule your learning time too, pick a regular schedule daily. Every day your brain picks what to forget. If you don't use it you lose it.

    If you have questions, google it. A great deal of you're questions will be answered. Else find a place to ask it.

    The MOST important thing you can do is to work thru the book. At times, you'll be confused and frustrated. It's just part of the process. It's important to know that you'll need to fight to get thru it. It's very easy to give up. Some people might find it easy to learn programming but not all. Think of it like this, thousands have learned to program, why not you. Fight, Fight and don't give up.

  100. Learning by Anonymous Coward · · Score: 0

    You don't state WHY you want to "learn programming". Hobby? New Career? Part-time work? Status? You also don't state ANYTHING about your background, education, or skill set, which seems an egregious omission. I couldn't disagree more with the idea that you should start off learning something as difficult to master as C. Trying to think back to when I was your age, given the amount of time I would be able to allocate to study...Well, the first important point is: you need the equipment to play the game. -or-equivalently: the equipment you have determines the game(s) you can play. To learn programming there are two basic ways to go: 1. Use your own equipment (computer and software) or 2. connect to software "on-line" or "in the cloud". Since Windows is the dominant PC operating system, I'll assume you have a Windows box. OK. Well, given that I'd suggest you buy at least 3 beginners books (they typically go for around $40 - $80, but consider used.) and download and install Microsoft's Visual Studio (it's free) and learn C-sharp = C#. Alternatively, the easiest approach would be to use a scripting language such as Java (the top language for the last 5 years) or Python or Javascript or one of the other top languages. One way to decide is to see whether you can find 3 tutorial books which are recent and applicable to a version of the appropriate language version that is no more than 2 years old...maybe 3. Read the reviews (Amazon) and see which seem most attractive to you. But this really depends on your goals - learning to program games is much different than learning about accounting databases. What you should expect is that there is no one language which will teach you all of what you need to know to be a competent programmer - you'll eventually have to learn several (with different strengths and weaknesses (and they all have frustrating weaknesses) plus -not to rain on your picnic - professional programmers now days are small cogs (for the most part) in large machines - your professional scope will be much much more focused (and less fun and higher pressure) and limited, should you want to get paid to program (eventually). Most programming now days involves using (and modifying) other people's code which means you'll need to learn good manners (which vary from language to language) and to rapidly grasp the structure of other people's code. That's one reason I suggest you work thru 2 or 3 books simultaneously.

  101. Re:Tools and toys by Anonymous Coward · · Score: 0

    > Not all tools are toys

    My wife would disagree!

    (this comment intentionally left vague)

  102. rabbit hole by Anonymous Coward · · Score: 0

    Find a tutorial that seems to blue print what you want to do. Carry through hours of effort to realize that the instructor has left out a key fundamental that is not apparent. Repeat the process with ten more tutorials before finding your solution. Realize a constructed education from a institution is key. Realize everything you have learned is now dated in your industry. Find a tutorial that seems to blue print what you want to do. Become the rabbit and own the hole.

  103. Scratch by Anonymous Coward · · Score: 1

    I teach Scratch to children. I love it. Nothing else I have seen will have the beginner creating actual programs easier and more quickly. By the time you have finished the first tutorial you have created a program with animation and sound, and that success is a lot of encouragement compared to "Hello, World!"
    It doesn't need anything to be installed. It works in a web browser. So easy to get going. But needs flash. There are so many "I hate flash" comments in slashdot but I think Scratch makes it worth having a flash plugin.
    scratch.mit.edu is where you find it.

  104. Re:Bjarne Stroustrups C++ book +a book on aglorith by Anonymous Coward · · Score: 0

    Saylor Academy.

    Introduction to Computer Science I
    Introduction to Computer Science II

    Totally free. Learn at your own pace. Vetted by faculty at actual institutions of higher learning. You may even be able to get credit.

  105. Check the Google Python Class on YouTube by MarcoPon · · Score: 1

    This is a very well made introduction serie by Nick Parlante. YouTube: https://www.youtube.com/watch?...

    --

    SeqBox
  106. One way to start... by Anonymous Coward · · Score: 0

    C is an interesting choice for your first language, it will certainly color your experiences later by learning some concepts that are abstracted away by other languages (pointers, memory management). I would recommend "The Joy of C" - you can still find it used on Amazon, etc. - it offers a bit more of a gentle entry then K&R and by then end of it you WILL be a coder.

  107. Java 9 by Anonymous Coward · · Score: 0

    Java 9
    https://jdk9.java.net/download/

  108. no goal = no point by PJ6 · · Score: 1

    Even for the intelligent, gaining any kind of skill at all requires effort sustained over a lot of time. Being an introvert and obsessive helps to do it for its own sake.

    If you don't have those qualities, you need to have a really good reason to learn, a strong motivator with a clear goal. Without that, you're wasting your time.

    That being said... here is the tool I universally recommend to beginners and experts alike, to learn a new programming language.

    Pick your poison, start at problem 1, and work your way up.

    Oh and for god's sake, don't use C.

  109. The Way by louzer · · Score: 1

    Read "The Little Schemer", and then "The Seasoned Schemer". Then read "Learn You a Haskell For Great Good", Typeclassopedia and Bartosz Milewski's videos. Write lots of code on the side. Rise above syntax and environment. Don't get into petty debates, opinions, and trends of the day. Avoid people and love automata. Perhaps one day we will discover we are automata too.

    --
    Heroes die once, cowards live longer.
  110. Joshtops, listen good... apk by Anonymous Coward · · Score: 0

    Select a language based on longevity & safety 1st (read what I wrote to Linus Torvalds regarding C, it's truth https://developers.slashdot.org/comments.pl?sid=10204455&cid=53806455/ )

    Then, select an area you are interested in programmatically (if not some area in your life it can improve OR augment) - because INTEREST in your subject is what keeps you going so you don't just quit/give up...

    APK

    P.S.=> I was YOU once, I know the feeling - the above kept me going (even AFTER I retired circa a pretty successful FUN career as a programmer/analyst-software engineer MOSTLY circa 1994-2008) & I even do THIS project, protecting users + "the 8th wonder of the world" imo (the internet itself) via APK Hosts File Engine 9.0++ SR-7 32/64-bit created in Object Pascal/Delphi (no string problems like C has per the link above) https://it.slashdot.org/comments.pl?sid=10205115&cid=53815699/ ... apk

  111. Magnet needle and a steady hand by slazzy · · Score: 1

    Magnet, needle and a steady hand. What more do you need?

    --
    Website Just Down For Me? Find out
  112. How to get started in programming by Anonymous Coward · · Score: 0

    EWD 316.

  113. The most in demand languages by Anonymous Coward · · Score: 0

    ... based on job postings, Ive read are SQL (50k), Java (44k), JavaScript (40k), C# (25k), Python (15k), C++(13k), and PHP (10k).

    Each is used for different things, so depending on whether your goal is to have best job security, or most enjoy what you do, go that way.

    SQL is for working with databases (never learned it, sounds boring). Java lets it program for most anything, most notably Android. Javascript is on many web pages. C# is a solid way to program Windows GUIs. Python is good for a quick script to download data and try out an algorithm. C++ is used when your goal is speed and raw bit access. PHP, I honestly have no idea, but Im guessing its best at something.

    Personally, I find Java and C++ best, because I like strongly typed variables, and not being tied to Microsoft. C++ is easiest to typecast a raw buffer to some complex structure, but it probably has the most pitfalls of the strongly typed languages (for the exact same reason.)

    Hard to go wrong with Java, its used nearly everywhere, and the skills you learn there will make C++ and C# pretty easy.

  114. Educational programming langauges (18+, CS major) by Anonymous Coward · · Score: 0

    https://en.wikipedia.org/wiki/List_of_educational_programming_languages#Languages_by_age_and_experience

    Haskell, Oz, Scheme, Squeak, NetBeans BlueJ, Python

    You can easily find tutorial/lecture/ebook materials for them online.

  115. Focus less on language and more on learning by LostMyBeaver · · Score: 1

    Learning to program and learning to program a specific language are two entirely different things. Generally avoid looking for "Learn to program C" books and instead look for "Learn to program using C" books.

    There are clear differences between programmer and educated programmers as well. Anyone can learn to program fairly quickly. Possibly using some of these "hour of code" projects you'll find online would be quite effective. What you really need is something that will kick start you and get you coding in something that will allow you to make things.

    I highly recommend against using system languages like C to get start programming. While it's definitely possible to make a program that adds numbers together and displays the output, writing an type of application with a user interface on Windows, Mac or Linux using C will require understanding complex memory management topics. In addition, on Windows, you'd use the Windows API, Linux you'd probably use GTK+ and on Mac you're basically screwed as you would need very complex systems like Swig to expose the application development API to C. All these systems require a fairly strong understanding of programming in C before you even consider using them.

    At this point in time I tend to recommend for simplicity using Python as a starting point. The drawback to this is that Python is an incredible language but it has evolved into one of the ugliest systems as there seems to be no control over the trash that can be contributed to the libraries surrounding it. In some ways that's precisely what makes Python ideal as an option. When you code in Python as long as your indentation follows the rules, absolutely everything else, no matter how bad it might be is considered perfectly good Python programming.

    There are programming generations as well. Languages come and go. There is always on dominant language used by the most people due to the "anything goes" mantra which draws a lot of learners and hackers. It was BASIC, Pascal, Visual Basic, Perl, PHP and now Python. Python is special because you can actually do the right thing in it if you know how. It can actually be used as a real programming language. The main problem is that most people contributing to it don't know how.

    I personally recommend that people learn to program now using C#. The reason is that it's a balanced language that offers a bit of the best of all worlds. Using C#, you can write an operating system (except the initial boot code), you can write a state of the art video game, you can write a business system etc... while many languages can do this, C# is fully supported (with GUI) on Windows, Mac and Linux as well as for iPhone, iPad, Apple Watch, Android and Windows Phone. The learning curve to developing for most of these systems (with GUI and user interaction) is substantially lower than when using something like Swift. Swift itself is a fairly ok language, but while it's open source, it isn't terribly useful for anything other than Apple programming and it's main selling point is "It's not Objective-C" and yet borrows a bit too much from Objective-C.

    C# is a great tool as unlike other languages, it's part of a proper infrastructure focused on compatibility, evolution and portability. C# is based on .NET which is very similar to the Java infrastructure but properly supports dozens of programming languages with a great base set of libraries. C# as a language is very feature rich and while it's possible to write truly horrible code in it, it's also very easy to make very clean and good code in it. From within Visual Studio or Visual Studio for Mac, you can code natively for all major platforms and Microsoft also has good quality moderated forums that means when you have questions, you get help from constructive people more often than from trolls.

    Some people mention Java. The problem with Java is generally lack of platform support. Java works great on Android, but on Windows, Linux, Mac, you have to use the JVM which causes constant pain to the user

  116. Re:Tools and toys by Anonymous Coward · · Score: 0

    Warning: Wooden screwdriver handles can result in splinters.

  117. Knuth by Cmdln+Daco · · Score: 1

    Buy Knuth's books. The Art Of Computer Programming. The first three volumes should suffice for now. And buy a box of pencils and some paper.

    The virtual MIX machine Knuth teaches with doesn't require anything electrical to operate and learn with, unless you're indoors or it is the evening, in which case an electric light will be required.

    1. Re:Knuth by Anonymous Coward · · Score: 1

      Knuth is great, but AoCP is not for beginners. I hope you had your tongue firmly in cheek!

    2. Re:Knuth by Cmdln+Daco · · Score: 1

      Actually, the beginning of Knuth's book provides a nice soft introduction to programming that would be very suitable for beginners. I just went and read through the first chapter to confirm my memories.

      Yes, I am being an optimist and was only slightly being tongue-in-cheek. Knuth is rigorous and strives for completeness, but you don't need to bring any previous experience to start with his AoCP series. Particularly if you come from a Math background, since he works like a mathematician would.

  118. OReilly Learning Python and Python Cookbook ... by Qbertino · · Score: 2

    ... are probably the best way to start. Python is the only PL that is used professionally in all industries. It' s also modern and easyto learn.

    Good luck.

    --
    We suffer more in our imagination than in reality. - Seneca
  119. Learn the why by Anonymous Coward · · Score: 0

    Start with the philosophical musings of logic, then trigger your knowledge with transitional steps to a unified thought process.

    Then the how

  120. The end of days by Anonymous Coward · · Score: 0

    Not one mention of Perl from anyone! WTF? The most obvious steps to becoming a master:
    (1) Learn Perl - hack together something quick and dirty; gather bad habits like flies to shit
    (2) Re-learn Perl - obfuscate everything and do everything you did before using 80% fewer characters and no white space; add more bad habits to your toolkit
    (3) Use Win32::OLE - Create fully obfuscated (and completely undecipherable) Perl that can completely automate all tasks in MS Office; Replace all VBA code in your organisation with code that only you can maintain ever.
    (4) Profit

  121. Re:There's are reasons people say start wi tsarkon by Anonymous Coward · · Score: 0

    You and your faggot shit programmers are spying on us with your bloated buggy back-doored by the chink mother fuckers code and compilers you abuse

    You people fucking suck. And you lick the anus and balls of fuck scum like Bezos, MSFT, and Google and other EVIL, VIOLENT liar companies.

    You took your PAY FUCKING JUDAS. YOU FUCKING SOLD CHRIST DOWN THE RIVER FOR 30 sheckels you FUCKING CUNT! tsarkon!

  122. Just do it by wertigon · · Score: 1

    Many people advocate you should use $LANGUAGE and that $LANGUAGE is the best language to learn first. But really, the first thing you should do is find out some program you wish to create, and then choose the language accordingly.

    Do you want to create a web application? Learn JavaScript and maybe PHP / Java / Python.
    Do you want to create an Android App? Learn Java.
    Do you want to create a desktop utility application? Learn C#.
    Do you want to create a command line program? Learn Python.
    Do you want to program a microcontroller? Learn C, and then Assembler.

    Each language has their own pros, and cons. If you just want to learn programming for the sake of programming, then there are four languages I recommend:

    Python for it's non-intrusive syntax and enforcement of indentation order.
    Java (or C#) for it's enforcement of Object-Oriented Programming.
    C for the way it forces you to deal with pointers and pointer arithmetics.
    And finally, JavaScript for the way it forces you to think asynchronously (e.g. threads).

    You can start with any of these, but don't get stuck with a single language in the end. That said I suggest starting with Python, but it's up to you.

    --
    systemd is not an init system. It's a GNU replacement.
  123. Set up a Development Environment by m.shenhav · · Score: 1

    One thing I wish someone told me when I started out is that every programming language requires a specific development environment. Depending on the language this can include the compiler/interpreter, runtime environment, libraries, a language specific package manager, an IDE, various command line tools as well as plugins for other software. Hell, even the OS plays a role in this! Each of these components often have several flavors to choose from, so for any one language there can often staggeringly many possible development environments.

    Personally I found that for the programming itself, there is usually ample guidance online in the form of manuals, documentation and Q&A sites like stackoverflow; my impression is that usually the development environment - being less canonical and more personal - is less documented, although usually there is some guidance about setting up a basic environment. So I would add to all the other good advice here that it is helpful to investigate the nature of the development environment in order to have it correctly set up to suit your personal preferences, much like arranging your workbench to your liking before crafting your widget.

    Personally, in this context, I was recently very happy to discover the Nix package manager and NixOS, which allow you to create configuration files which define environments (for development or otherwise). This means you don't have to repeat a bunch of installation commands for every machine you want to develop or execute code in.

  124. start here by Anonymous Coward · · Score: 0

    Hire illegals.

  125. Finding your own way by jandersen · · Score: 1

    It is a perennially good subject to fight overr - engineers always enjoy fighting over programming languages and -style, I know.

    At the end of the day, only you can decide what is the right way for you. My advice is always to start from why you want to program - what do you need it for? That will help you choose the language, among other things. Don't worry too much about it from a (learning-) resource perspective - the most important thing is to be motivated enough to go and solve the problems you inevitably run into.

    If you are strongly motivated and like solving problems, go for C. The syntax is very easy, but there are many pitfalls and no safety net; you will learn a lot about programming that way. C is also the inspiration for a large part of more modern languages - like Java - so you will feel somewhat familiar with the syntax in many languages.

    If you want to write code that does a lot, and you are not too interested in GUI stuff, then perhaps python - it is a very well constructed language with loads of useful libraries, and it is easy to learn. You can achieve very satisfying results with simple code, and there are loads of advanced features, if you want to learn them along the way.

    Swift I don't know at all - my understanding is that it only exists on Apple's systems, and specifically on iPhone, and to me that signifies the end of my interest. It may be a very good language - most modern languages are well thought through - but the world of iPhone is just too small for me.

  126. For beginners by Anonymous Coward · · Score: 0

    Lazarus pascal is a good place to start. Even though I had been a mainframe software engineer for over 40 years, I learned to program PCs using pascal. But as someone said, C or jave might be a good place to start if you are looking to move into programming for a living. The newer languages are not going to be in that much demand, so go with the most popular. I have never purchased a book on any language. I self taught myself IBM assembler and Cobol to get into the profession by looking at code examples and asking other programmers questions. Coding forums are abundant on the web. Some programming news groups are still good. Learning to program by example is a huge shortcut to mastering code. Even after learning to code, you still may have trouble getting a programming job without experience. I had to start in computer operations. After expressing a desire to move into programming in one company, only to have them say 'Nyet!', I moved to another company and was promoted to programmer from operations after 9 months.

  127. Advice from a non professional coder by hodet · · Score: 2

    Hi, you may never read this as you will probably have to wade through 3 feet of shit infested talk about american politics, but if you do this would be my advice. As someone who has learned coding while not being a programmer this has been incredibly useful to me in my career. Just because we are not "professional" programmers it does not mean that we don't have problems to solve for which small programs and scripts can work wonders.

    If your goal is to become a full time programmer then you will probably have to learn multiple languages. The best programmers have a whole set of tools they can use and should not be boxed into one language. You still need to start somewhere though and I don't think it really matters as long as you start. More importantly learn how to think like a programmer, breaking down problems, understanding the problems you are trying to solve. Syntax will be a bitch when you start but don't get too down if you struggle with that.

    If you just want to pick up a language to increase your career skills I don't think you can go wrong with Python. It has a vast community, is probably easier to learn than anything out there and has an incredible about of libraries that you can import and use in your own scripts and programs. If you are looking to make programming a career you will want to broaden your horizons beyond just the one language. The important thing is to pick one and stick with it.

    There are tonnes of good resources for getting started with Python. Beware that the arguments around which are best is a bit of religious war in the community with strong opinions for and against each. (examples: Learn Python the Hard Way, Automate the Boring Stuff, Code Academy etc etc). I have a clear preference but will not recommend one. Research it, read the flame wars, try them all, use what works best for your learning style. That is really the heart of it, we all learn differently so you should be suspicious of anyone who says this or that resource is shit and only idiots use it. They are most likely the idiot.

    Good Luck

  128. Advent of Code by Brian+Kendig · · Score: 1

    A lot of the other responses here focus on what language to choose, but not what to do with it. So pick a language - Python is good, Ruby is good, PHP if you want to work with web sites, C# if you want to work with Microsoft stuff, Swift if you want to work with Apple stuff. And then:

    - Sign up for a free Github account (https://github.com).

    - Start working through the Advent of Code challenges. (http://adventofcode.com) They're a set of 25 two-part challenges posted in December 2015 and then another set in December 2016. I recommend starting with the 2015 set (because I think it was more straightforward). The reason I suggest these are that they are problems with specific solutions (you'll know when you get them right), they will make you learn how to solve problems in your language of choice, and there are a lot of posts on Reddit (https://www.reddit.com/r/adventofcode/) with tips for each individual challenge. There are other programming puzzles out there, but Advent of Code is a good collection of challenges in one place.

    - Post your solutions on your Github account. This will get you familiar with using Git. It's a good skill to have.

    - Tweak your solutions if you'd like. Find a way to write more concise code? Want to practice documenting better? Interested in optimizing your solutions to run faster in less memory? There you go.

    - If you ever want to use your new programming skills for a job, link to your Github repo from your resume. It will let people clearly see how you code.

    Good luck!

  129. Don't ask programmers by Anonymous Coward · · Score: 0

    Seriously, don't ask programmers what is the easiest way to learn, they will tell you their favourite language or what they think is a simple language but that's not the question. In general the easiest way to learn anything is to take an introductory course on it. For programming there should be plenty to choose from wherever you are, even online ones are fine for starting out. But make sure it isn't a language specific course, just a general introductory one where you can learn some basics and maybe decide if you actually care to learn more.

  130. Re: Bjarne Stroustrups C++ book +a book on aglorit by Anonymous Coward · · Score: 0

    You can ignore all the new C++ stuff because old code will still compile just fine. I would wager real money that half or more of the active C++ coders don't know a damn thing about the C++11 changes and probably never will. You can go your whole career coding in C++ like its 1997 if you like.

  131. Do you want to know programming in general or....? by Anonymous Coward · · Score: 0

    Language doesn't matter if you really want to learn programming. If you want to learn to how to do a specific programming task, like write a file, download a file or whatnot, then some languages make this easier, or make more sense than others.

    If you want to learn the theory, organization, and thinking skills required to program in really any language, for just about any task, start with the very basics. Learn how to organize data into records or structures, and then learn how to perform operations on these structures. Once you learn the basic kinds of structures, and the basic kinds of operations each structure lends itself to, the rest is pretty much a language-specific iteration of these same patters, with the goal of eventually accomplishing the task.

    If I may recommend a book (link below) called Data Structures + Algorithms = Programs. In this book, a psuedo language is used to demonstrate the different "standard" methods of organizing data, as well as the different operations each method of organization is good at. At it's core, doing any task in any language is just really a combination of these techniques. Sure in some languages you may need to allocate the memory for a list element, while in others you just instantiate a class that implements a pre-written list element, but they are all the same thing in the end.

    It's like learning to program from the inside out (starting from basic theory), rather than the outside in (starting from the features of a given language).

    https://www.amazon.com/Algorithms-Structures-Prentice-Hall-Automatic-Computation/dp/0130224189

  132. Thumbs up! by Anonymous Coward · · Score: 0

    Thank you very much! Flavianoep. (Posting as AC not to use my carma.)