Getting up to speed on Computer Programming?

Yeah. You read right. This is for everything that doesn't have anything to do with Eva.

Moderators: Rebuild/OT Moderators, Board Staff

bp32
Clockiel
Clockiel
User avatar
Posts: 431
Joined: Jun 21, 2004
Location: NJ, USA

Getting up to speed on Computer Programming?

  •      
  •      
  • Quote

Postby bp32 » Sat Jul 19, 2008 10:46 am

I know most of the members of the forums are pretty skilled when it comes to computers, programming, etc. I, alas, am not and am looking to get more familiar. I am not looking to go back to school per se, but have been thinking about taking a course or two, either in person or on-line, to get better acquainted with the programming side of things.

Any suggestions on how a working professional, who is pretty autodidactic, can get more up to speed?

Many thanks!
"Men judge generally more by the eye than by the hand, for everyone can see and few can feel. Every one sees what you appear to be, few really know what you are."-Niccolo Machiavelli

"In religion and politics, people's beliefs and convictions are in almost every case gotten at second hand, and without examination."-Mark Twain

Mr. Tines
Administrator
Administrator
User avatar
Age: 66
Posts: 21376
Joined: Nov 23, 2004
Location: This sceptered isle.
Gender: Male
Contact:

  •      
  •      
  • Quote

Postby Mr. Tines » Sat Jul 19, 2008 11:48 am

You could do worse than starting here: http://hacketyhack.net/

or here: http://www.diveintopython.org/
Last edited by Mr. Tines on Sat Jul 19, 2008 4:30 pm, edited 1 time in total.
Reminder: Play nicely <<>> My vanity publishing:- NGE|blog|Photos|retro-blog|Fanfics &c.|MAL|𝕏|🐸|🦣
Avatar: art deco Asuka

NAveryW
Insect Politician
Insect Politician
User avatar
Age: 33
Posts: 5064
Joined: Dec 21, 2006

  •      
  •      
  • Quote

Postby NAveryW » Sat Jul 19, 2008 12:03 pm

I just teach myself using online tutorials. I've been doing that since I learned HTML at age 10. If you want to learn a C language, I recommend BASIC first then moving to C once you've got that down nicely.
"Today?... hmm... today... right... Um... I'm just gonna wing it." -Guess who

Mr. Tines
Administrator
Administrator
User avatar
Age: 66
Posts: 21376
Joined: Nov 23, 2004
Location: This sceptered isle.
Gender: Male
Contact:

  •      
  •      
  • Quote

Postby Mr. Tines » Sat Jul 19, 2008 4:29 pm

There's no reason in this day and age to touch Basic or 'C' if you are just wanting to program for interest or even something that may become work related. In fact they are likely to engender habits of mind that are encumbering and hard to break free from.

Ruby (for the very beginner at http://hacketyhack.net/ and with the manual at http://poignantguide.net/ruby/) with Rails for web server programing, JavaScript (which is Lisp in 'C's clothing and should not be approached as if it were C--) with frameworks like jQuery or Prototype for client side work if you want to go where the interesting money is.

Ruby with Shoes http://code.whytheluckystiff.net/shoes/ (or, if you must, as either JRuby or with the FXRuby gem) is entirely useable for client-side programming too. And Matz' design goal of the language is to make programming fun.

Other languages that would be better early choices would be Python as at http://www.diveintopython.org/ -- or if you really want to stretch your brain, Erlang - http://www.erlang.org/download/erlang-book-part1.pdf.

If I knew a good introduction to F# or Haskell, then I'd suggest either of those as next-steps.
Reminder: Play nicely <<>> My vanity publishing:- NGE|blog|Photos|retro-blog|Fanfics &c.|MAL|𝕏|🐸|🦣
Avatar: art deco Asuka

majlund
Sandalphon
Sandalphon
User avatar
Posts: 523
Joined: Nov 06, 2007
Location: EU/DK/CPH

  •      
  •      
  • Quote

Postby majlund » Sun Jul 20, 2008 3:47 am

I must protest - there's absolutely nothing wrong with learning C. The language is small enough to fit inside a brain and despite rumors to the contrary it's not going out of style. It's still in full use for development of embedded systems and for safety-critical systems. I also seem to remember an open source project which is gaining popularity (Leenuks or something similar ;) ).

Anyway - my approach to programming languages is a bit philosophically inspired. I believe my ability to express thoughts is limited by my language, hence learning multiple languages - here meaning thought paradigms rather than individual programming languages - will expand and enhance my ability to formulate and work with problems and solutions. Ideas from language A will spill into language B and my knowledge of language B will allow me to apply those new ideas in a proper context.
Looking at my shelf for books about programming languages I see (in no particular order):
C,C++,C#,Java,Ada,SML,VHDL,Lisp,Prolog, assembler,Ruby,Python,Pascal,Fortran,Perl.

Starting point? You could do a lot worse than C.

Important idea is: Never stop learning. If you're pressed for time when considering if you should take up a new language, then ask yourself: "Will this teach me anything signifcantly new" (i.e. is this a new paradigm).
Finally, don't limit yourself to programming languages. Take up natural languages too.
Si vis Pacem para Bellum

Mr. Tines
Administrator
Administrator
User avatar
Age: 66
Posts: 21376
Joined: Nov 23, 2004
Location: This sceptered isle.
Gender: Male
Contact:

  •      
  •      
  • Quote

Postby Mr. Tines » Sun Jul 20, 2008 4:25 am

majlund wrote:I must protest - there's absolutely nothing wrong with learning C.


'C' (like C++) is a language which I have to be paid to use these days (and I've done both in the past year at work). They are especially painful to use if you want to do anything with a GUI (fortunately the for-pay stuff was entirely GUI free) -- the whole reason I learned Java a decade ago was for a non-painful UI choice (and if you must start with a 'C'-like language nowadays I'd say C#, using the Mono runtime if you're not on Windows).

For the beginner/hobbyist, there are much better choices than the 'C' family (rather than merely not 'doing worse than'), languages which don't bog you down in writing what is essentially obfuscated assembler ('C' and C++), or fail to encourage good habits like putting down unit tests for your code (by not carrying a framework for tests along with the standard language distro).

Later, when you're on to the Pragmatic Programmer "(at least) one new language a year" kick, then you can learn C++ and then C -- in that order.

Dick size comparison:

C,C++,C#,Java,Ada,HTML,XHTML,CSS,JavaScript,Ruby,Python,Pascal,Perl,F#,Erlang,PowerShell, plus Scala if printouts of online pdfs count.

I only ever borrowed McCracken on FortranIV from the library, 30+ years ago; the Z-80 assembler book went to charity years ago; and I have only used on-line documentation when writing in Lua (which is another interesting starting-point language) or Nice.
Reminder: Play nicely <<>> My vanity publishing:- NGE|blog|Photos|retro-blog|Fanfics &c.|MAL|𝕏|🐸|🦣
Avatar: art deco Asuka

majlund
Sandalphon
Sandalphon
User avatar
Posts: 523
Joined: Nov 06, 2007
Location: EU/DK/CPH

  •      
  •      
  • Quote

Postby majlund » Sun Jul 20, 2008 5:12 am

This is in my opinion caused by the programmers restrained worldview. C and C++ can cause you endless amounts of grief, but it's my experience that this occurs when you think you know too much and you try to be too smart.

You need to pick the right tool for the right job. Your experience tells you not to use C and C++ if you want to do GUI (not that I would want that either) and you act upon that experience. The reason I find C a good choice is the small size of it, it's a good representative for procedural languages and in the end you can actually get a job working with it. All merits that make it a worthwhile investment. Nowadays programming languages come with everything but the kitchen sink - what happened to the KISS principle?
I don't follow the "one new language a year" style - I only wan't to learn a language if it has a possibility of adding something *new* and interesting. I only took up C# because I had to use it at work - it didn't really add anything new compared to Java.

My point in my previous post was actually to learn how to think in different programming languages:
logical, functional, procedural, object oriented...
As the old adage goes: You can program FORTRAN in any language. <= That's what we're fighting here!
Si vis Pacem para Bellum

Mr. Tines
Administrator
Administrator
User avatar
Age: 66
Posts: 21376
Joined: Nov 23, 2004
Location: This sceptered isle.
Gender: Male
Contact:

  •      
  •      
  • Quote

Postby Mr. Tines » Sun Jul 20, 2008 5:42 am

What we are arguing over here is what is a good language to start out with for an absolute beginner who probably isn't going to be deep enough into the art (at least yet) to want to do the close-to-the-metal stuff that 'C' forces you to. We have advanced the state of that art a little over the past generation -- the problem nowadays is people writing 'C' in any language. That is why I'm keen on beginners having something else -- almost anything else -- as their "native" language.

With projects like Cosmos or Xen you have demonstrations that you don't even need 'C' to do operating systems.

And if you want straight procedural stuff, the appropriate subsets of Ruby, Python or PoSh are better starting places for the beginning autodidact, as they avoid the tedious bubblegum that 'C' inflicts and offer more facilities beside while remaining in a familiar environment.
Reminder: Play nicely <<>> My vanity publishing:- NGE|blog|Photos|retro-blog|Fanfics &c.|MAL|𝕏|🐸|🦣
Avatar: art deco Asuka

Ornette
Administrator
Administrator
User avatar
Age: 49
Posts: 11887
Joined: Dec 26, 2005
Location: Pittsburgh/New York City
Gender: Male
Contact:

  •      
  •      
  • Quote

Postby Ornette » Sun Jul 20, 2008 6:35 am

There's no reason to learn BASIC anymore now that other simple languages are more accessible. Also, it tends to form bad practices, much in the way that perl does for beginners.

Java is a great language to learn for a beginner. It's C++ without all the learning overhead and is much harder to shoot yourself in the foot. C has always seemed to be a cumbersome language to do certain things in but it's something you'll need to know at some point or another if you plan to pursue software development, as the majority of commercial code is probably in C or some variant. There are plenty of Java tutorials on the internet and getting the tools setup and learning to use them isn't that hard.

Iron Rooster
Tokyo-3 Resident
Tokyo-3 Resident
User avatar
Posts: 1210
Joined: Apr 13, 2008
Location: Tuna

  •      
  •      
  • Quote

Postby Iron Rooster » Sun Jul 20, 2008 3:40 pm

Learn brainfuck. It should REALLY be handy.

But seriously, I've learned C and C++. I'm an OKAY programmer, but I only do it if I need it for school or work. If you want to learn programming, go online and read reviews for books and pick one to teach yourself. Or if you're cheap, try to find a good with a bunch of people bother with questions. Taking a class just pressures you to turn in stuff at the mercy of your professor. If you can't tell already, I hate programming classes.
STROOPWAFELS!!!!!!!
Don't trust a prince on a white horse. He probably likes to rape dolls.
Dumbest thread I've ever started

Mr. Tines
Administrator
Administrator
User avatar
Age: 66
Posts: 21376
Joined: Nov 23, 2004
Location: This sceptered isle.
Gender: Male
Contact:

  •      
  •      
  • Quote

Postby Mr. Tines » Sun Jul 20, 2008 4:01 pm

Iron Rooster wrote:but I only do it if I need it for school or work.


Sounds like you need to find something that is less of a chore to program in (see also my first post above :D )

Iron Rooster wrote:Taking a class just pressures you to turn in stuff at the mercy of your professor.


There are deadlines in the real world, too. But if you are programming for fun, you need to have a little project that you want to accomplish, rather than noodling about aimlessly, even if what you really want to do is learn the tools , even if the timescales can be pretty elastic.
Reminder: Play nicely <<>> My vanity publishing:- NGE|blog|Photos|retro-blog|Fanfics &c.|MAL|𝕏|🐸|🦣
Avatar: art deco Asuka

NAveryW
Insect Politician
Insect Politician
User avatar
Age: 33
Posts: 5064
Joined: Dec 21, 2006

  •      
  •      
  • Quote

Postby NAveryW » Sun Jul 20, 2008 4:01 pm

I mainly learned C++ for the sake of making homebrew games for the Nintendo DS. For that, it's been essential.
"Today?... hmm... today... right... Um... I'm just gonna wing it." -Guess who

majlund
Sandalphon
Sandalphon
User avatar
Posts: 523
Joined: Nov 06, 2007
Location: EU/DK/CPH

  •      
  •      
  • Quote

Postby majlund » Mon Jul 21, 2008 7:02 am

Mr. Tines wrote:What we are arguing over here is what is a good language to start out with for an absolute beginner

And where should a beginner start then? I think it's important to focus on structured thinking. Extras for GUI development and network programming etc. is needless clutter in that case.
A beginner should encounter as few surprises as possible when taking his first steps. It's best if the language is small to start with instead of leaving our budding programmer trying to stay within a subset of a much larger one. If it had any future (job opportunities etc.) I would have recommended Pascal instead of C. Pascal used to be Teaching Language #1 at my old university, but it has since been replaced by Java.

You seem to think of C as a "dangerous" language and you have stated reasons for that (lack of testing framework delivered with the language and so on). There are plenty of tools available to help a developer make good programs in C. They may not be distributed together with the compiler, but that gives you the freedom of choice.
I like C, you don't - let's leave it at that.

Anyway - to get back on topic: What matters most in programming is the right frame of mind rather than any particular language.
The original poster should perhaps choose between the different programming paradigms first and afterwards we could give (repeat ;) ) our recommendations.
Si vis Pacem para Bellum

Enki v.2
Eva Technician
Eva Technician
User avatar
Age: 36
Posts: 1464
Joined: Mar 08, 2008
Location: Twenty minutes into the f
Gender: Male
Contact:

  •      
  •      
  • Quote

Postby Enki v.2 » Mon Jul 21, 2008 9:02 am

Mr. Tines wrote:Dick size comparison:

C,C++,C#,Java,Ada,HTML,XHTML,CSS,JavaScript,Ruby,Python,Pascal,Perl,F#,Erlang,PowerShell, plus Scala if printouts of online pdfs count.



C, C++, ObjC, Java, D, Python, Lua, Prolog, BeFunge, Brainfuck, VHDL, SmallTalk, x86 asm, bash, SQL, plus HTML, SMIL, and TeX if markup languages count. I think I'm leaving out some.

That said, the easiest way to learn a programming language when you're busy is to flash lots of good solid example code through sublims on your computer whenever you're using it. The xscreensaver package for *nix has a nice program called xsublim that does this quite suitably, though ubuntu, gentoo, and several other distros have taken it out of the package. The idea of this is that you will subconciously feel comfortable with the structure, look and feel, and some of the syntax and common api functions when you start actually USING it, so you will learn it faster and less painfully.

bp32
Clockiel
Clockiel
User avatar
Posts: 431
Joined: Jun 21, 2004
Location: NJ, USA

  •      
  •      
  • Quote

Postby bp32 » Mon Jul 21, 2008 9:43 am

Thanks everyone for your responses...didn't mean to cause so much debate, but it has been very helpful.

I'm going to take a look at the various books/links you all suggested and determine what my next steps should be. Feel free to continue with the recommendations though as this is definitely an area where I can use as much help as I can get.
"Men judge generally more by the eye than by the hand, for everyone can see and few can feel. Every one sees what you appear to be, few really know what you are."-Niccolo Machiavelli

"In religion and politics, people's beliefs and convictions are in almost every case gotten at second hand, and without examination."-Mark Twain

Zuggy
Banned
User avatar
Posts: 1716
Joined: Jun 18, 2005
Location: UK
Contact:

  •      
  •      
  • Quote

Postby Zuggy » Mon Jul 21, 2008 10:06 am

I learnt some basic things with C++ and it wasn't that painful. I wanted to make games when I left school at the time so I brought Michael Dawson's C++ Game Programming - they're all CLI games but writing them teaches you fundamental stuff - you only need a basic C++ compiler like the one Borland provides on their site for download (for free) to use the book - I supplemented this with an excellently written book on C++ by someone who would send what he wrote to his wife and she would ask questions which shaped how the book was explained - they are both listed as authors but I can't for the life of me remember what the title of the book was, can anyone help with that?

If you want to open a window using C++ that has pictures and sounds you can choose between Microsoft's DirectX SDK which you can download for free from Microsoft's site (iirc it's around 3 gigs in size, so may take some time to download) or you can use SDL, which is also free - they both act as libraries so you can point at a 'book' within them and that allows you to do things like accept keyboard input or to display a picture without having to type the contents of that 'book' yourself every time. Using DirectX is really hard and I couldn't work out how to even open a blank window using it (using the tutorials provided with the SDK) - SDL was far easier to use but you can't do anything 3D within it - it's too bad the majority of what I learned about this stuff when I should have been doing schoolwork has fallen out of head by now.

Mr. Tines
Administrator
Administrator
User avatar
Age: 66
Posts: 21376
Joined: Nov 23, 2004
Location: This sceptered isle.
Gender: Male
Contact:

  •      
  •      
  • Quote

Postby Mr. Tines » Mon Jul 21, 2008 1:45 pm

bp32 wrote:Thanks everyone for your responses...didn't mean to cause so much debate.


It's programming related. Of course there will be at least one religious argument spawned from it. In this case whether newcomers should be forced to recapitulate the history of programming languages (or should they just skip straight to Lisp :lol: )

Enki v.2 wrote:Brainfuck


You have a book on Brainfuck!?!??

majlund wrote:What matters most in programming is the right frame of mind


That is indeed so.

@Zuggy
Nowadays for 3D graphics you're probably better off downloading Visual Studio 2008 Express (the free version) and using the Windows Presentation Foundation, which wraps the DirectX APIs in a manner that approaches sanity. And if you're doing that, then C# is syntactically cleaner than the C++/CLI equivalent.

I'm not sure which book you were using, but for C++ I'd recommend Accelerated C++ by Koenig and Moo, which skips the stages of teaching as if it were 'C'.
Reminder: Play nicely <<>> My vanity publishing:- NGE|blog|Photos|retro-blog|Fanfics &c.|MAL|𝕏|🐸|🦣
Avatar: art deco Asuka

Zaque
Ramiel
Ramiel
Posts: 341
Joined: Jul 21, 2008

  •      
  •      
  • Quote

Postby Zaque » Mon Jul 21, 2008 3:17 pm

Mr. Tines wrote:Of course there will be at least one religious argument spawned from it.

Or like which text editor to use. :P

If you decide to work with C/C++ you may also be interested in CUDA. I think it's pretty cool anyway.
Everything is subject to change.

Enki v.2
Eva Technician
Eva Technician
User avatar
Age: 36
Posts: 1464
Joined: Mar 08, 2008
Location: Twenty minutes into the f
Gender: Male
Contact:

  •      
  •      
  • Quote

Postby Enki v.2 » Mon Jul 21, 2008 10:18 pm

Mr. Tines wrote:
Enki v.2 wrote:t;]Brainfuck


You have a book on Brainfuck!?!??


No. I was listing languages I was competent enough in to code a project with minimal reference material. If we're going by books, I have ones on fortran 77, APL, 6502 asm, 8008 asm, ia-32 asm, c, c++, java, prolog, vhdl, qbasic, picbasic, avr asm, python, lisp, javascript, and (if you count ebooks) brainfuck, brainfork, befunge, malboge, dis, objc, df (or datefuck, a language I invented for text-based dating sims similar to JSON/YAML syntax), eriscode (a language I wrote designed such that programs resemble discordian holy texts), longenis (a language similar to a mash-up of tcl, python, and lua that I began work on, whose backend and standard lib in C++ are still around but whose front end was never written, and whose documentation references Eva as Python's does Monty Python -- the logo was the Lance of Longinus and the language was a portmanteu of Longinus and Genesis that accidentally was a common misspelling for Long Penis), Erc (a messy language I wrote but never finished debugging, designed for AI applications and looking like extremely messy TCL with an overloaded --> operator), and several others.

EDIT: I just looked it up, and the original site and logo for Longenis is still around:

Image

That logo was drawn in the GIMP (version 1.x) in several minutes.


Return to “Completely and Utterly Off-Topic”

Who is online

Users browsing this forum: No registered users and 18 guests