Aspies For Freedom

Full Version: Been wanting to get into programming
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
I made a thread "16 and wonder where to start"

I also got a tip elsewhere which I know enjoy, search Phrogram (with the H). It's a free learning program.
Back when I started programming (over 25 years ago) there weren't a lot of computer books around. I had to go to college to learn programming.  I tried to get it in high school but they didn't have computers back then.  I looked through want ads in the paper to find out which programming skills employers were paying the most for then I went to get a college degree in it.  So, I'd say check the want ads to see what is in demand and check the course listings of your local schools.  There are also many professional magazines on the topic but that adds to confusion.
I'd enroll into a Java or Web Development class, these are sought after skills, still, or if you are feeling really adventurous C# (C Sharp).  Then your problem becomes finding an employer that is willing to take on a Junior Developer - not an easy task but there are some out there.

I got my start in Programming working as a Computer Operator (that was 21 years ago though).
DO NOT START ON JAVA
DO NOT START ON JAVA

C# is alright, but still suffers OOP poisoning

Good old fashioned C is the best - it is the de-facto standard language.

Perl and python are good too, but not as nice as C. Learn C.
It helps if you knew beforehand what you want to program, what interests you about programming. Is it graphics or data base programming, is it mathematical / numerical programming? Do you want to program on a high level, or rather close to the machine's CPU or GPU?

These are questions that you can ask yourself. Generally, each program should be programmable in every programming language; they offer merely objects of thoughts that you can juggle. In the end, all you programming code runs on the same processor, using the same memory chips.

The different programming languages support different things, of course. If you start learning one, choose one you 'feel comfortable with'.

However, you will always need to learn some 'vocabulary' and some 'grammar'. The good thing is, the grammar (syntax) is not alive like in a spoken language, but can precisely be described. All the programming languages come with a basic set of a vocabulary with the possibility to create new, own words (as variables and methods/funtions).


The wide world of real programming languages (thus not layout languages like HTML or structural languages like XML) can be divided into four paradigms:

1. Functional Languages (i.e. Scheme, its parent LISP, Miranada or Haskell),
2. Imperative Languages (i.e. Assembler, BASIC, Pascal, C, GLSL (Shader language), Fortan),
3. Object-Oriented Languages (i.e. C++, C#, Smalltalk, Java), and
4. Logic Languages (Prolog).

All those have a different approach in describing the world, and this can be based on the concept of the variable. Thus, a variable is for

1: A name and a value,
2: A name, an address and a value,
3: A name, an address, a value and some methods, and
4: A rule.

More precisely, in object-oriented languages, one deals with variables called 'objects' which are encapsulated variables (values and methods, note the contrast to abstract data types).


Ooops, sorry for the digression. Well,... not really Smile


Scheme is a wonderful language to start with, and maybe the best book for this is "Structure and Interpretation of Computer Programs" by Abelson and Sussman.

But: note that this would be an abstract and theoretical kind of learning. What you probably need is a subject, an idea of what you want to program. And then, we are at the beginning again. So, choose your field of interest, get some code running and go ahead.

Or (I do not know your age and exact status), go ahead and study computer science. It's a great fun!
Yes, HTML, SGML, and XML are really organized bits of related information (or content).  In fact, the HTML has special tags to "help" some browsers like JAWS navigate a page for a blind person.

I've seen the most obscenely Curious George/Mickey Mouse kind of Web page, style sheet on our work on a Dept. of Labor agency that shall remain nameless.  
1.  It should have been a .cfm or .asp page so we could re-use headers and footers.  When you have 50 or more pages with all HTML, and someone wants a header or footer change, you offend programmers.
2.  SPAN this.  SPAN that.  What, no logical headers, no paragraphs?  All content is created equal.  How is JAWS going to navigate that?

yone Wrote:
Forgot to mention that I'm restricted to OSX at the moment. Any other suggestions?


That's not a restriction at all.  It means you can get native Darwin builds of all the usual *nix development tools for free.  In fact, perl is included with the operating system (or at least used to be), so you could probably get started with it right away.  Granted you won't be doing any C# programming, but then C# is evil anyway.

I think C would be a good start.  It's simple to learn and the syntax is quite easy too.  If you're thinking about working on the web then PHP would be good also because it's really powerful and much better than ASP.  As for C#, I used to use it too and I could do a lot with it, but the freest way to program with it is use Microsoft's Visual C# Express Edition--which sadly requires others to need the .NET 2.0 Framework.

Gareth Wrote:
C# is alright, but still suffers OOP poisoning

Could you explain why exactly you don't seem to like OOP languages?

Besides, without C#, I'd still be programming VB.NET. Gah.

As for the topic matter, I'm not too sure. The way I got started was through  VB6.. which is not what you want unless you have an uncanny knack for forgetting bad habits.

leemcd56 Wrote:
Microsoft's Visual C# Express Edition--which sadly requires others to need the .NET 2.0 Framework

It shouldn't matter unless you're planning on distributing your programs, which I guess you don't when you're getting in to (Or back into..) the whole gist of things.

I'm not sure if there's a C# API available for OSX. There's something called 'Mono', which is for Linux, so I guess there's likely something for OSX somewhere.

Bottom line: All hail Gareth. Learn C.

Simen Wrote:
Don't start with C unless you want to make an OS, program an embedded environment or very low-level system tasks.


You're kidding right?  C can do a lot, especially when you want to write a game or an art program.  I mean, look at Photoshop =P.

Marieke Wrote:
FWIW... I tried learning Python back in 1999 or something.

Then, a few years after that, I tried learning Java....I found it more confusing.

I've been programming for 25 years and I find Java confusing.

Python I haven't bothered with.  I don't even like fooling with Python programs others have written (they always seem to come with lots of weighty dependencies and their attendant bindings).

Quote:
Also, I got stuck with that one as well... I think that had something to do with the library books being about earlier versions of Java than the one I had installed...

C++ is similarly afflicted.  Dealing with compiler mutation is a neverending struggle.

Quote:
Then the semester after that I took Digital Systems, and half that class was devoted to programming in assembly. To be honest, I liked assembly best out of the three languages I've tried to learn... I could follow exactly what was going on.

I programmed in assembly almost exclusively until I was forced to move to i86 platforms, where it just wasn't worthwhile (Intel really cocked up the 8086).   The easiest "A" I ever got was a semester of System/370 assembly.

Quote:
perhaps I would've been happier starting out with C than with Java.

Almost certainly.  Apart from some weirdness with variables (K&R could have pinned things down a bit more thoroughly there, IMO), C is largely free of obnoxious abstraction.

Anyone starting to learn programming, if you really want to understand it, should start with assembly as their first language.  I'm likely the only person who will say this, but I say it for good reasons.  Most current languages, even functional ones, are based on von Neumann machines (as in PC's).  If you understand the hardware it runs on, you will understand why languages are built the way they are and have an implicit idea of what effects on performance and memory each kind of construct will produce without having to look anything up.  People say performance isn't something to really think about, but it's not just about that.  Your software will just work better if you understand the low level consequences of what your are writing.

I would then move to C (or C++) and then it's up to you.  After that, you can pick up any language you want in under two weeks.  The reasons for C are equally as pragmatic.  All OS system calls and most libraries have a C interface.  So if you start using other languages, even things like VB, you must understand how to interface to C code.

Vorlath Wrote:
Anyone starting to learn programming, if you really want to understand it, should start with assembly as their first language.  I'm likely the only person who will say this

There are at least two of us.  I'd go a step further and say that every programmer should have a firm grasp of efficient RISC programming.

The downside is that thereafter you'll find C sign-extension incredibly irritating.

If you can see beneath the abstractions of the programming language, OS and environment, you can and will write more efficient code. This is one of the problems I have with OOP - it tries to turn software into a set of objects rather than a set of instructions.
Perl's a funny old language.  I was fairly fluent at one time, but now it seems I have to get out both camel books (and sometimes the panther book) to do anything.

One nice thing about it is that it forces you to learn scads about regular expressions (the perl variety, that is, which are almost, but not quite, POSIX-compatible).  The whole operational context thing can drive you to distraction, though.
Pages: 1 2
Reference URL's