Jump to content

Learning Coding


deanb
 Share

Recommended Posts

So I'd like to learn a language. But I've one major handicap. I don't like programming. I just kinda stare at code and my brain just nips out for a pint. The tweaks and stuff I've being doing with PXOD would probably have gone down much smoother if most of it wasn't guess work. About only time I've been fine with "coding" is that Inform7 and the syntax is basically like a book(it's for making interactive fiction). Oh and basic ActionScript. But I ain't touched Flash since it was owned by Macromedia, and that was so long ago I don't think most folks remember it wasn't always Adobe Flash.

 

Basically this page just makes my brain take a week long cruise:

http://en.wikipedia.org/wiki/Hello_world_program_examples

 

But now I have a job at what's essentially a software development company. I'm not doing the coding stuff, it's kind of the point of my existence, I do officey stuff so they can all get on with coding and no distractions. But I have been told if I learn to code then it gets me more work and more bonuses my way (so before where it was "for fun" it's now got a financial incentive, which goes a long way). They use C#. Which I've been told (Cos I've mentioned my interest in learning to code) that if I do C# it'll make things much easier for them. If I learn something else then it means I potentially broaden the scope of what they can do. e.g Java means Android apps, Javascript (or whatever) means better website stuff. However the main aim is to learn programming for myself. I have a few ideas now n then and I'd like to make them a reality. I guess if I could make an Android App n sell it for like 20p that'd be swell. Being able to do coding at work is just a financial bonus, but not the aim of this.

 

Thing is I vaguely understand that there's languages for web, languages for desktop, and then some for scripting (which I guess I'll leave alone). But then you have "high level" n "low level" n "Object Orientated" n "whatever is not object orientated" n all that shit. So trying to track down a good starting language that's worth learning and not horribly harsh to learn is a pain cos ...well it's computer geeks and they don't realise that many folks aren't born with innate abilities to understand this shit, so they rarely explain it.(It's part of what keeps Linux so small).

 

So folks with experience/opinion on this where should I start? I don't want to do web stuff, but if there's languages that can do both desktop and web, that'll be neato.

 

I basically want something that's;

- somewhat simple, or at least heavily documented.

- doesn't require tons of repetitive code (I hear some are a bit drag n drop for repeated tasks)

- I don't care for games programming at all.

- Web is a bonus but not required

- Somewhat flexible, as in I can learn this and learning another language requires less exp points than from scratch.

- Free (I like Adobe Air programs/apps but Flex ain't a free program)

 

I'm probably asking for a lot here :P

 

I'm thinking Java, cos that seems to be in a lot of things. But I also hear it has some horrible issues with how you code it out. I'm unsure if it's good for making working applications in though. i.e if I wanted to make a twitter client, a to-do list app, image editor, or a NDA-ized thingy. Java doesn't seem to be the trick. In fact apart from Minecraft and Android I can't think of any uses of Java I've come across.

 

Anything on this list would be awesome:

http://thenewboston.org/tutorials.php (via Rabbit, who I don't think uses the forum.)

 

Oh any other learning resources would be cool too

  • Like 2
Link to comment
Share on other sites

Aside from the money incentive, I'm in exactly the same boat. I'd really, really like to learn some, and I've dabbled in Java and Flash (years ago), but generally my brain just doesn't handle programming or coding well at all. I can't stand it. If anyone has tips, that would sure be useful.

Link to comment
Share on other sites

HTML is always a good place to start.

 

Otherwise, some visual programming languages are a pretty good place to start. I learned a bit of Max/MSP for audio production stuff, and although it's not nearly as useful as Java or C++ for everything else, it was actually a bit of fun. Drag and drop, patchers, and boxes is really the basics of it, but the math carries over well to other languages.

 

I guess I don't have much useful to share beyond the suggestion of some visual programming languages to keep it interesting, but I'd be interested as well if anyone has some good C++ or Java tutorials as well.

Link to comment
Share on other sites

I think the best way to learn programming is to work with something where you have instant gratification for your efforts. In the modern world, this is usually best served with apps or websites.

 

For programming, the important hurdle is rarely grasping the syntax or idioms of a particular language, but rather understanding how the various components can slot together, and the process one must go through in order to solve a problem. In this respect, the actual language might not matter so much.

 

Java's a good shot (it's quite suited to building Twitter clients, to-do lists etc as well, so don't worry in that regard). It doesn't really have any horrid issues, and certainly not at the level you'll be looking at it.

 

I have another two solutions though:

Python. It's a brilliant language to learn programming with for the first time, being both rather rigorous in its approach and relatively easy to grok and write. Picking up a framework such as Django early on to write web applications with is a good way to use it to approach some personal projects (and this would later involve having to learn bits of HTML/CSS).

 

C#. It's a great language and MSFT have some good guides. In particular, why not write some Windows Phone apps? The emulator is pretty awesome so you don't need an actual phone, and writing the app itself is free (distribution on all the app stores costs a small fee). It's a... fun environment to play in.

  • Like 4
Link to comment
Share on other sites

generic rant:

The issue I have with it all is when looking for resources on where to start, there's plenty of tools and resources for learning once you have a start point, is like asking which political party you should go for. And there does seem to be a lot of politics in programming. Think gamers are bad? Imagine there was 30 consoles instead and "it has a powerPC CPU" is the simplest of "what it does" info you'll get. A lot of the discussion on what they all do seems to imply you're gonna need some base degree in computer science just to understand the differences.

 

@Spork: App Inventor was graphical and that looked sweet but then it all got taken down and is in partial limbo at MIT. I guess it'd be fun to have a play with when it get's off it's toes.

 

I have another two solutions though:

Python. It's a brilliant language to learn programming with for the first time, being both rather rigorous in its approach and relatively easy to grok and write. Picking up a framework such as Django early on to write web applications with is a good way to use it to approach some personal projects (and this would later involve having to learn bits of HTML/CSS).

 

C#. It's a great language and MSFT have some good guides. In particular, why not write some Windows Phone apps? The emulator is pretty awesome so you don't need an actual phone, and writing the app itself is free (distribution on all the app stores costs a small fee). It's a... fun environment to play in.

 

Python seems to have nice simple coding, i.e

print("Hello World")

versus Java's

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

 

But I'm struggling to find uses for it. It seems that it's kind of an add-on language(I guess in gaming terms, it seems to be a mod, not the main game), something you work with alongside other languages, but not that useful on it's own. There are however simple game tutorials, as real world examples, but I'm not keen on learning games. I think, from my limited knowledge, it's a bit like Lua. Which I do know is what's used to make mods n shit for WoW (and others, but WoW is the only game I definitely know uses Lua). If this is not the case then awesome. I think what I'm aiming for is a ...compiled language?

 

I do like the whole Metro thing. Unsure if I'd want to make an app I can't put to use myself.

Link to comment
Share on other sites

I concur with Estel. Do something where you can see results immediately. But, if that is not an option, take some beginner classes. I'm not sure what kind of education for the public they have over there. Here in the US, we have a bunch of educational opportunities available to the public, some rather pricey and some more beginner-ish and less costly. Trying to learn such a difficult thing needs support, so I don't think doing that on your own will work out well in the end (speaking from experience).

Link to comment
Share on other sites

Okay so here's one:

What's the difference between C#, C n C++?

 

As far as proper tuition on this, not something I'm exactly in the position to do. As far as support goes I do have the other guys, though I've a feeling the support there will only be if I do C#. (Mainly cos Ben is pretty butt headed)

Link to comment
Share on other sites

C# is Microsoft's answer to Java. It's designed to be a flexible and easy to use language. C and C++ form its base but those languages allow for much more complexity and in turn, are more complex themselves - and being relatively old, aren't as efficient as they could be. At the same time, there are things that C# is better at. Compiling is faster and you often write less code for the same results, for example.

 

As for what to start with, I'd say BASIC might be a good one to examine when you start, being as simple as it is, but most courses will start you on Java or possibly C# before moving you onto C+, etc. My advise would be to look through some simple BASIC programs and see how they're structured, what the different calls and functions, etc do and get somewhat familiar with the logic behind code but to focus the best part of your efforts on C#. Once you've got one language down, it gets a lot easier to learn another as the majority of them have their similarities.

 

The difference between a low-level and high-level language is abstraction .i.e. A low level language speaks to the processor itself whereas a high level language is designed to be understood by a human with some level of expertise. An example of a low and high level language would be Machine code (at it's simplest, just binary) and C#, respectively. Since a low level language is coded for the processor itself, it's a good solution for high performance, memory-stingy programs as you can achieve great precision with little errors, as well as allowing the deep control that speaking to the processor itself allows. The downside to this of course is that it's not easily understood by a human, calls for detailed knowledge of how a particular architecture or system works and is vastly more time-consuming when compared to a high level language like C#.

 

Don't be scared by the syntax. Once you start learning what everything means and how you can use it, you'll start to see the logic of it all. Microsoft has readily-available and comprehensive tutorials on how to use C#, as does Oracle for Java but it might be useful to pick up a book such as one from the Head First series.

  • Like 4
Link to comment
Share on other sites

  • 1 month later...
  • 2 weeks later...

Bah. Fire n brimstone. I thought I'd make a post over at /r/learnprogramming. Turns out that's not a good idea and I remember why I pretty much only lurked around there. Cos most programmers are cunts. (most of the linux crowd too). Obviously if you are having to ask questions it means you don't know how to use google. If you don't know how to use google you must be one of the biggest simpletons on the net. And thus you will be treat as such. Also there is only one set way to do coding, you cannot and may not deviate off the path. You don't learn programming by getting an understanding of the concepts before hand, you must learn programming by picking one of the many languages, even if it's potentially the wrong one, and then follow a tutorial on it to the letter and you'll pick it up in no time. Except you won't because parroting bits of code into an IDE doesn't teach you anything other than the code that works for the tutorial maker works for you too. I've been able to blindly copy code with PHP for PXOD n here and I've not learnt anything of PHP or what the code means, all I know is the expected result works. Just copying what someone else has done doesn't really make you a programmer.

 

Anyone with some good resources (That aren't wikipedia) that given a grounding on the basics and concepts of programming? like what high level n low level is, OOP, not-OOP, functions, variables, garbage collection, IDE, etc?

Link to comment
Share on other sites

Except you won't because parroting bits of code into an IDE doesn't teach you anything other than the code that works for the tutorial maker works for you too. I've been able to blindly copy code with PHP for PXOD n here and I've not learnt anything of PHP or what the code means, all I know is the expected result works. Just copying what someone else has done doesn't really make you a programmer.

 

Pretty much this. Even when copying code, you'll understand what you're doing infinitely more just by typing it out yourself instead of copy pasting. But as someone just starting to learn, I find that I learned the most when I was left to my own devices and had to make something work without any specific instructions.

 

Anyone with some good resources (That aren't wikipedia) that given a grounding on the basics and concepts of programming? like what high level n low level is, OOP, not-OOP, functions, variables, garbage collection, IDE, etc?

 

I've collected a bunch of ressources, some better than others. Since you mentioned learning Python, this might be of interest.

http://ocw.mit.edu/c...ming-fall-2008/

 

It's not a course on Python but rather an introduction to programming/computer science that uses Python. I've only watched the first two lectures because I've other stuff I'm working on at the moment, but I'm planning on getting back to it over the course of the summer. It's basically a whole semester's worth of material: video lectures, problem sets,quizzes and tests.

 

Also, this is kinda basic but still amazing, imho. www.codecademy.com

Basically a game-ified programming tutorial. It's JavaScript (though they recently added some HTML and CSS lessons) but really it's great for just learning basic concepts and understanding how they work and practicing them. Stuff like syntax, operators, functions and loops and such. It was actually good practice for a class I taking doing this winter, which was in C and Java.

 

If you like these I could probably find a few more links for you. I bookmarked a whole bunch of stuff when I was in resources gathering mode a couple months back.

Edited by FLD
  • Like 1
Link to comment
Share on other sites

  • 2 months later...

I've been running through a beginners guide to Android thing (ever so slightly outdated though, but it has you coding for Cupcake so not a huge bother I guess). However while I've been fine working my way through it and grasping a few bits here n there quite well. I had to work past the initial issue of small screen on my netbook, but easily resolved by just minimizing most panels that aren't in use. It's a pretty nice program, simpler to work though than I thought it'd be. The major hurdle I've hit is that they don't run on my netbook when I go to compile them. So now to speed through the guide to get to the part on running the app on your phone direct.

 

What my main aim is to make an app for myself that's pretty much this app but better (mainly making it to better android guidelines standards, as well as making it work properly with the books rule sets n such). I dunno if to make it for my Note, which would mean a high DPI scheme for ICS, or for general phones with GB support so I could maybe chuck it up on Play Store for others to use. Either way if it goes well I might chuck out a few more apps, maybe see about making a bit of cash on the side from it.

 

Or just get bored midway through and end up dropping it like all my other schemes :P

Link to comment
Share on other sites

  • 2 weeks later...

Cool. Offering recognised online classes from respected colleges and universities should really be far more popular these days.

 

In related news, I'll be restarting the course I dropped out of come the 12th of September. At the end of 4 years, I'll have a Bachelor of Science (honours) in Software Development and I may go for a Masters degree after that. I'm really looking forward to it. The first year is going to be a breeze, partly because I had already passed it before leaving the last time and partly because it's a common year that's marked on a continual assessment basis.

Link to comment
Share on other sites

  • 4 months later...
  • 1 month later...
  • 7 months later...

After forgetting my USB stick and my homework assignment, I recalled that it should be possible to write up scripts that can activate with say an USB stick insert. I can imagine it could copy any new files into my Dropbox folder so it can be backed up.

 

I'm not making the possibility up am I?

 

As a side note, I find it hilarious how many people think I'm a computer science major. I guess its how I look?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...