Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!

 



Forgot your password?
typodupeerror
DEAL: For $25 - Add A Second Phone Number To Your Smartphone for life! Use promo code SLASHDOT25. Also, Slashdot's Facebook page has a chat bot now. Message it for stories and more. Check out the new SourceForge HTML5 internet speed test! ×
Java Perl Programming Python

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

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?
This discussion has been archived. No new comments can be posted.

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

Comments Filter:
  • Coffee (Score:5, Funny)

    by Oswald McWeany ( 2428506 ) on Monday February 06, 2017 @04:06PM (#53813909)

    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.

  • by Anonymous Coward on Monday February 06, 2017 @04:06PM (#53813911)

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

    • by lgw ( 121541 ) on Monday February 06, 2017 @04:25PM (#53814073) Journal

      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.

      • by Anonymous Coward on Monday February 06, 2017 @06:36PM (#53815021)

        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

    • by PJ6 ( 1151747 )

      Get a PC computer.

      Jesus effing Christ.

  • Several answers (Score:3, Interesting)

    by Anonymous Coward on Monday February 06, 2017 @04:09PM (#53813925)

    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.

  • by chispito ( 1870390 ) on Monday February 06, 2017 @04:10PM (#53813935)
    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.
    • Re: (Score:2, Interesting)

      by Anonymous Coward

      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'

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

  • by Anonymous Coward on Monday February 06, 2017 @04:11PM (#53813947)

    ...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++.

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

  • by jtara ( 133429 ) on Monday February 06, 2017 @04:14PM (#53813975)

    Why's Poignant Guide to Ruby [poignant.guide]

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

  • Good Grief. (Score:3, Insightful)

    by Frosty Piss ( 770223 ) * on Monday February 06, 2017 @04:14PM (#53813977)

    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.

    • 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 in

  • 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.
  • Python (Score:4, Interesting)

    by kaur ( 1948056 ) on Monday February 06, 2017 @04:16PM (#53813999)

    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.

  • 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
    • 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 is the new Corporate COBOL methinks. C# is becoming more x-platform with DotNet Core, and since MS bought Xamarin.
  • It's personal (Score:3, Insightful)

    by hmblcodr ( 4861365 ) on Monday February 06, 2017 @04:18PM (#53814011)

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

    * Getting started with programming [humblecoder.com]
    * Getting better at programming [humblecoder.com]

    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!

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

  • by Bodhammer ( 559311 ) on Monday February 06, 2017 @04:21PM (#53814037)
    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... [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!
  • by SuperKendall ( 25149 ) on Monday February 06, 2017 @04:22PM (#53814047)

    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.

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

  • maybe try Exercism? (Score:3, Informative)

    by tnordloh ( 462939 ) on Monday February 06, 2017 @04:29PM (#53814101)

    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.

  • by squiggleslash ( 241428 ) on Monday February 06, 2017 @04:31PM (#53814121) Homepage Journal

    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.

  • by lq_x_pl ( 822011 ) on Monday February 06, 2017 @04:32PM (#53814127)
    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.
  • 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 [amazon.com] and Programming Languages: Principles and Paradigms [amazon.com]. Obtuse, boring stuff, but a way to start.

    As for starting with C? I suggest you take a look at C# Design Pattern Essentials [amazon.com] 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, howeve

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

  • by Crashmarik ( 635988 ) on Monday February 06, 2017 @04:41PM (#53814185)

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

  • by gatkinso ( 15975 ) on Monday February 06, 2017 @04:41PM (#53814187)

    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.

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

    By the time you can solve level 10 of this tutorial [appspot.com] 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.

  • 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..
  • Watch along with courses at actual University. CS and other subjects.
    Berkely Webcast [berkeley.edu]

    OpenCourseWare MIT
    MIT OCW [mit.edu]

    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.

  • 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 fu

  • 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 mythic
  • 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, othe
  • Go sign up for the programming fundamentals class at your local community college.

  • 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
    • 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 [codecademy.com] course first, th

  • by evolutionary ( 933064 ) on Monday February 06, 2017 @05:26PM (#53814541)
    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/ [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... [lifehacker.com]
    Note: These are all free or have free options

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

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

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

    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.
    • Re: (Score:3, Informative)

      by ShakaUVM ( 157947 )

      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 (

  • 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 w

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

    • 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 hug

      • 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 yea

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

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

  • 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/... [jasoncoltrin.com] , but I suggest you do the same and write about the things you learn as it will help you retain the info.
  • by AHuxley ( 892839 ) on Monday February 06, 2017 @06:55PM (#53815167) Homepage Journal
    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.
  • -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 t
  • 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 inspec
  • 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.

  • 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 rel

  • by Kjella ( 173770 ) on Monday February 06, 2017 @08:10PM (#53815713) Homepage

    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.

  • by Whatchamacallit ( 21721 ) on Monday February 06, 2017 @08:19PM (#53815761) Homepage

    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.

  • This is a very well made introduction serie by Nick Parlante. YouTube: https://www.youtube.com/watch?... [youtube.com]
  • 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 [projecteuler.net], to learn a new programming language.

    Pick your poison, start at problem 1, and work y
  • Magnet, needle and a steady hand. What more do you need?
  • ... 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.

  • by hodet ( 620484 ) on Tuesday February 07, 2017 @10:10AM (#53818397)

    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

Every little picofarad has a nanohenry all its own. -- Don Vonada

Working...