What programming langage should I learn ?
Oodain
Veteran
Joined: 30 Jan 2011
Age: 34
Gender: Male
Posts: 5,022
Location: in my own little tamarillo jungle,
nothing,
there are dozens of development platforms that will all give you a good look at a higher level language as well as assembler,
the point of that exercise being that it can be easier to make sense of assembler if you have a reference you know to compare it to.
the arduino is a nice platform though and its simplicity allows it to be used throughout the learning process for a lot of different things.
the one i have here at home is being tied into a home automation system i have been writing, mostly for fun as i live in an apartment.
_________________
//through chaos comes complexity//
the scent of the tamarillo is pungent and powerfull,
woe be to the nose who nears it.
That's sort of like learning to ride a bike so you can fly a jumbo 747.
It's more like learning to read, before getting a job stacking shelves in a supermarket.
_________________
"Striking up conversations with strangers is an autistic person's version of extreme sports." Kamran Nazeer
bbad
Tufted Titmouse
Joined: 29 Aug 2011
Age: 42
Gender: Male
Posts: 31
Location: Amsterdam, Netherlands
Having mainly done stuff for the web, I started with PHP, then Javascript and Actionscript (actionscript was much more like JS back then).
Currently I'm learning C++ for console projects. I can use it quite well now, so I decided to start learning OpenGL implementation on top of it, but that's pretty complex. Currently I'm learning about shaders... Will take a while to learn it, and let's not even imagine how long before I fully master both C++ and GL.
I would actually advice to just start with C++, because it covers a lot of important concepts of programming in general. Once you know C++ other languages should be relatively easy to master.
Not that I have the slightest experience with it, but the Arduino kit seems like a good place to be.
That's sort of like learning to ride a bike so you can fly a jumbo 747.
It's more like learning to read, before getting a job stacking shelves in a supermarket.
Back on the topic !
I *do like* these lines. Thanks HalibutSandwich for having ask about the "field", and thanks Lau for explaining in such few words the looooong way to go.
I wish you all WP fellows some happy holidays.
Please carry on giving your input/output on this topic as you come/go. I'm planning to get a Arduino beginner kit and blog about it on Hexafiles
Titangeek
Veteran
Joined: 22 Aug 2010
Age: 30
Gender: Male
Posts: 7,696
Location: somewhere in the vicinity of betelgeuse
Khan Academy has some video lessons.
_________________
Always be yourself, express yourself, have faith in yourself, do not go out and look for a successful personality and duplicate it.
- Bruce Lee
Well... depends in what are you interested. Is very important to find in the beginning what will be the purpose of your software (games, windows applications, mobile phone or devices, robots or microcontrollers, web applications, etc). All the programming languages have a quite similar structure but is good to know what are you interest in and what kind of software you wish to create. If you are clear in this aspect, then finding the right one will be easy.
I'd like to know what the "similar" structures are between Forth, LISP, Snobol, SQL, M4, G, Assembler, Microcode and a bunch of other ones I've used - mostly when they were appropriate (although a stock control system in RPG4 was a tad beyond the pale - and a database in Fortran IV was just plain silly).
I'll agree that Coral, Algol, Pascal, Ada, C, Java, C++, C#, PHP, BASIC and a bunch of others are indeed similar - they all fall roughly into the category: "Procedural languages".
http://en.wikipedia.org/wiki/Categorica ... _languages
http://en.wikipedia.org/wiki/Esoteric_p ... g_language
_________________
"Striking up conversations with strangers is an autistic person's version of extreme sports." Kamran Nazeer
Ichinin
Veteran
Joined: 3 Apr 2009
Gender: Male
Posts: 3,653
Location: A cold place with lots of blondes.
+1
As someone who have coded in Basic, 6502 ASM, C++, VB, VB.NET, ASP, PHP, Javascript, Java and some other minor languages, and has worked as a programming teacher, i find that most people in here are falling back on what they know, not what is best for the guy asking the question:
*WHAT* i want to achieve by learning to code?
And, find the right tool for the job: a hammer may be good for beating down nails into wood, but not for squashing flies or doing your expensive 18th century gold-lined dishes. Telling someone to learn arduino as a first language is just silly as it is a hardware orientated language with a very specific purpose.
My suggestion to the OP is to figure out what you want to do:
- Are you going to use it professionally or for personal projects?
- Are you going to create binary files (your own programs) or webpages?
- Do you want to create a GUI with buttons and windows?
- Do you require performance or flexibility?
- Do you want portability or is it ok if the program only runs on one operating system?
If you just want to try out programming, you can run Javascript in a very familiar environment (You're looking at it - your browser), it can do simple string handling and mathmatics. Javascript is far from being the centre of the universe - while it is possible to write games in Javascript, it is not made for that kind of application, you better do that in Flash/HTML5 for your browser, or C++/C# if you want to do cool DirectX-11 3D stuff in Windows.
But the more complex stuff you want to create, the more you need to learn. While it is possible to send a person through 500 university courses, it is not going to make that person an awesome programmer: Either you got it - or you don't.
Still, give JS a whirl and do some more thinking. If you find it easy, you may have "it".
http://www.w3schools.com/js/default.asp
Programming itself is not the end, you have lots and lots of stuff to learn (its a lifelong commitment), there are databases, sockets, web stuff, filesystems, automation, processes - and every language has its own way of interacting with all those things and the manufactorers often change how by deprecating, adding and removing functionality (fun, isn't it? )
With that, i wish you good luck.
_________________
"It is far better to grasp the Universe as it really is than to persist in delusion, however satisfying and reassuring" (Carl Sagan)
Depends...
As a hobby? Whichever one interests you. (I was always partial to C++, but everyone has their preference. It depends on how your mind works.)
As a way of demonstrating concepts like reverse engineering? x86 ASM.
As a job possibility? C#.
I started with Basic, learned C/C++ on my own, then everything else in college. I don't regret learning anything, nor would I do anything differently. But I did have a harder time learning some languages than others. ASM was intuitive to me. Prolog was quite the opposite. So I struggled with it. But some people love it. Again, it depends on how your mind works. Everyone's different.
Mostly depends on your interests and goals.
I'm experienced with numerous of programming languages (so far including C/C++, x86 Assembler, JavaScript, Java, PHP, Ruby, Basic). I personally vote for a mix of C/C++ and assembler, because I'm addicted to low-level programming, reverse engineering, code which directly runs on your processor...if you plan on going professional, I advice starting with C. Then, depending on what you want to do, you will have to choose the right tools & languages which meet the requirements to achieve your goal in a good way. You can find articles and stuff via Google / Wikipedia which explain design and differences of programming languages very well.
_________________
Your Aspie score: 155 of 200
Your neurotypical (non-autistic) score: 47 of 200
You are very likely an Aspie
klausnrooster
Snowy Owl
Joined: 7 Jan 2012
Age: 60
Gender: Male
Posts: 144
Location: Not my favorite place, I can tell you that.
I've been doing excel VBA for years and have been looking at other languages for 10 years. It's fun shopping around. Try a bunch of 'em. I keep coming back to Factor. I played with Forth and if I wanted to do low-level or embedded coding I'd go Forth. But Factor is more for me - high level and nice help system, etc... The compelling reasons for Factor or another concatenative language are in a concatenative dot org page. I can't post link since this is my first ever post.
klausnrooster
Snowy Owl
Joined: 7 Jan 2012
Age: 60
Gender: Male
Posts: 144
Location: Not my favorite place, I can tell you that.
Most people have never heard of Forth.
Although I've never done anything that significant in the language (other that writing compiler/interpreters for it!), I've always been a bit of a fan. It has a closeness to machine code that means it can be almost as fast as pure assembler, plus a high-level aspect that means it can be very much more compact than a program written in machine code.
Sadly, the modern paradigm seems to be to have ridiculously fast processors (to cope with rubbish languages) and vast amounts of memory (to cope with rubbish languages).
_________________
"Striking up conversations with strangers is an autistic person's version of extreme sports." Kamran Nazeer
klausnrooster
Snowy Owl
Joined: 7 Jan 2012
Age: 60
Gender: Male
Posts: 144
Location: Not my favorite place, I can tell you that.
@lau,
It's sad isn't it? I have colorforth on a floppy and I can use it on 1980's early Panasonic Toughbook with no hard drive. NO OS needed. That is very cool. Anybody who wants to play with Forth can get Ficl. Ficl comes with a nice little console. You have a big Forth shop on your side of the pond, no? MPForth? Nope, sorry. Edit: MPEForth!