PDA

View Full Version : Thinking about learning something else



tiachopvutru
06-14-2008, 04:53 PM
Well, I have just taken a break from C++ for several days, and now that I'm going back to learn it again, I don't remember much of what I have learned anymore. Actually, I was pretty confused even back a few day ago due to the information overload. Now, I'm starting to realize that lately, I'm getting tired of C++ (too complex for me right now), and that it's not exactly a right choice since I want to program as soon as possible (I thought I could wait, but...). So, I'm thinking of learning an easier language to be able to program with it, then get back to C++ eventually. Anyway, I'm not sure if this is exactly a right forum to ask, but I would appreciate some suggestions right now.

Also, my choice right now is Python, as it's heavily recommended for beginners, but I'm having trouble looking for a tutorial (or rather, I don't know where to find a *good* tutorial...)

anon
06-14-2008, 05:15 PM
It is off topic here but I think there is an official beginners tutorial (http://docs.python.org/tut/tut.html) at Python's home page?

gltiich
06-15-2008, 12:12 PM
If it's of any help to you, this is the exact order I learned in;

. BATCH Files for windows and QBasic
. QBasic and Visual Basic 4-5 (briefly) while starting C (some ASM)
. VBScript and still learning C
. JavaScript and then C++ and still C; (ASM comes back every now and then)
. PHP along with adv OOP concepts in C++ and more C - (self-teaching discrete math)
. C++ adv concepts and algorithms and Java (couple years) (more math; algorithms, etc)
. C++ and C# and some random languages (was hired as a .net programmer, picked up C# practically overnight thanks to Java)
. C++, C#, Lisp (ogl, glsl, ai, dsp, all that fun stuff, etc)



wow, fun mind trip through the past there. somewhere in the half way point i was familiarizing myself with mysql, then sql and etc. db's are important to understand.

abachler
06-15-2008, 12:28 PM
It is off topic here but I think there is an official beginners tutorial (http://docs.python.org/tut/tut.html) at Python's home page?

A bit off topic, but I recently removed a university from the list of schools im considering for my masters because the artificial intelligence program requires the AI to be written in python. It's not that big a deal, but it meant the difference between two otherwise good programs.

laserlight
06-15-2008, 12:34 PM
Moved to General Discussions.


A bit off topic, but I recently removed a university from the list of schools im considering for my masters because the artificial intelligence program requires the AI to be written in python. It's not that big a deal, but it meant the difference between two otherwise good programs.
That is off topic indeed, unless you are having trouble learning Python and thus dismissed it as a choice for writing an AI program on that basis (as opposed to there being arguably better programming languages for AI).

michaelp
06-15-2008, 02:08 PM
Python would be a good choice to start with. I have went through it a bit, and it's pretty easy to pick up the syntax. There is also an interactive interpreter, which makes it easy to test out anything new.

Luciferek
06-15-2008, 02:19 PM
Yeah visual basic is the language for those who who don't like challenging tasks like learning C++. It's so easy a caveman could do it!

Neo1
06-15-2008, 02:21 PM
Yeah visual basic is the language for those who who don't like challenging tasks like learning C++. It's so easy a caveman could do it!

"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration" - Edsger Dijkstra

Just thought it was worth mentioning :D

mike_g
06-15-2008, 02:26 PM
I started out with Basic :(

But from what I have seen of VB; I don't like it. Everythings a Dim?!?

Elysia
06-16-2008, 02:40 AM
But from what I have seen of VB; I don't like it. Everythings a Dim?!?

Well, yes.
All variables are declared with Dim.
Dim Name As Type

QuantumPete
06-16-2008, 04:23 AM
I started out with Basic :(


Me too, even did VB for a while before switching to C++ at uni. I don't *think* I'm mentally mutilated, but then how would I know? :D

QuantumPete

Luciferek
06-16-2008, 10:58 AM
I started out with vb in highschool too, and i dont think i've been mutated. But I got to say that once i started C++ i never wanted to go back to VB or any other language. I don't need that fancy shmancy ultra quick form and button development, i need a language that can do some stuff.
All I am saying that if tiachopvutru finds C++ too complex maybe he can try something ultra easy, but when he finds vb too complex i'm sorry, but maybe programming isn't for him.

abachler
06-16-2008, 01:47 PM
Moved to General Discussions.


That is off topic indeed, unless you are having trouble learning Python and thus dismissed it as a choice for writing an AI program on that basis (as opposed to there being arguably better programming languages for AI).

Its not python's fitness for the purpose, just that one university uses C/C++ and the other uses python, both programs are equivelant, they even use the same textbook, so the choice was really do i want to spend my money focusing on AI or learning a new language that I will most likely never use outside class.

tiachopvutru
06-17-2008, 05:49 PM
I started out with vb in highschool too, and i dont think i've been mutated. But I got to say that once i started C++ i never wanted to go back to VB or any other language. I don't need that fancy shmancy ultra quick form and button development, i need a language that can do some stuff.
All I am saying that if tiachopvutru finds C++ too complex maybe he can try something ultra easy, but when he finds vb too complex i'm sorry, but maybe programming isn't for him.

Nope, I'm going for Python, right now, not Visual Basic. Probably because I'm hearing it a lot from others, but Visual Basic doesn't give me a good impression for some reason... In addition, I also want to use a language that's more "open."

Rather than complex, the amount of stuffs in C++ are overwhelming me. Since I have only finished about 1/3rd of the book I read, C++ may as well be complex for me right now. I don't believe I cannot do programming, however. Right now, I'm following Python since it's easier, so I can have a sense of being able to create something sooner and also to understand the process of programming before I get back to C++ with all the details.

mike_g
06-17-2008, 06:13 PM
Yeah, python should be fun. I'd like to learn it too if I can get around to it. It seems to be quite a flexible language.

medievalelks
06-17-2008, 08:23 PM
Also, my choice right now is Python, as it's heavily recommended for beginners, but I'm having trouble looking for a tutorial (or rather, I don't know where to find a *good* tutorial...)

http://diveintopython.org/toc/index.html
http://docs.python.org/tut/tut.html

Python is a great language. Need to get out of consulting and into a position of power so I can mandate its use.

abachler
06-19-2008, 03:42 PM
Ah yes, inflict somehting you like on others by mandating a cookie cutter solution, regardless of hte particulars of the problem. You are definately management material.

brewbuck
06-19-2008, 03:45 PM
Ah yes, inflict somehting you like on others by mandating a cookie cutter solution, regardless of hte particulars of the problem. You are definately management material.

I understand your point, but I've never really encountered a problem that was inelegant to solve in Python.

gin
06-21-2008, 05:49 AM
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration" - Edsger Dijkstra

Just thought it was worth mentioning :D
My secondary school computing course teaches TurboBASIC (or is it TrueBASIC?), either way I'm doomed! :( Thing is, I'll have to learn it to pass. :(

Mario F.
06-21-2008, 10:16 AM
There is nothing wrong in learning any kind of programming language. BASIC has been the starting point of many programmers. Many who today easily stroll through these boards with one leg behind their backs.

In fact because they share an history of several programming languages, that makes them stronger programmers, capable of easily adopting new syntaxes and new programming paradigms. Something you can hardly see on someone who choses to adopt a more centered approach to their learning process and dismiss other programming languages on such subjective notions as "It's too simple", "It's crap", "It's a toy".

BASIC introduces fundamental programming aspects while retaining an easy syntax and freeing the student from complex constructs. In BASIC I learned all about program flow, variables, loops, conditionals and general programming logic while quickly building fun and useful programs and without having to wrap my head around complex debugging or hard to detect errors.

Certainly little nothings if one already knows about these things. But a national education system cannot be built on an individual basis. Regardless, If one already knows about these things, it should be a breeze to pass the exams while studying their own favorite subjects at home. If one doesn't know, they are about to learn. Just a few years ago you didn't even have computer related disciplines in high-school. You're the lucky ones.

BASIC is still a very interesting programming language to study. And the new generations like Visual Basic or PureBasic are powerful programming languages on their own right.

For an idea of the importance of this programming language, take a look at the list of derived or otherwise closely related to BASIC:
http://en.wikipedia.org/wiki/Category:BASIC_programming_language_family

It's not any language that you are learning there.

laserlight
06-21-2008, 10:41 AM
There is nothing wrong in learning any kind of programming language. BASIC has been the starting point of many programmers.
I tend to agree, but Dijkstra appears to disagree, at least where one's first programming language is concerned.


Many who today easily stroll through these boards with one leg behind their backs.
hmm... they stroll while hopping? :D


BASIC introduces fundamental programming aspects while retaining an easy syntax and freeing the student from complex constructs. In BASIC I learned all about program flow, variables, loops, conditionals and general programming logic while quickly building fun and useful programs and without having to wrap my head around complex debugging or hard to detect errors.
I have a feeling that the Dijkstra quote has something to do with GOTO rather than BASIC by itself, but we need more context to understand it. A slam on a language by one of the great pioneers of computer science is damning, but the language that he condemned and what is currently in use can be drastically different.

EDIT:
Oh, the context is in How do we tell truths that might hurt? (http://www.cs.virginia.edu/~evans/cs655/readings/ewd498.html) Consequently, it is clear that Dijkstra was not being entirely serious, though he did intend to make a point about what he regarded as poor programming languages, among other things.

gin
06-21-2008, 11:52 AM
I don't mind anyway. Will be easy to pick up (I played about with Visual Basic when I was about 11, so should be easy). No worries then I suppose. :p

EDIT: But the thing is, I don't see why my school doesn't use Visual Basic... they have it installed.

Mario F.
06-21-2008, 01:04 PM
Oh, the context is in How do we tell truths that might hurt? (http://www.cs.virginia.edu/%7Eevans/cs655/readings/ewd498.html) Consequently, it is clear that Dijkstra was not being entirely serious

Definitely. The GOTO statement probably being on his mind, since historically he is perhaps its biggest and most famous detractor. The language itself is definitely one of the most innocuous alive. The GOTO statement was a necessity(?) in the imperative style of classic BASIC versions. But definitely, fell in disuse in the procedure-oriented versions. What's more, I'm yet to know of someone who was hopelessly lost to GOTO and label and couldn't learn anything that didn't use it or made its use reproachful under most circumstances (C/C++, for instance) .

Besides he himself was exposed to BASIC without any side-effects we can attribute... except perhaps a renowned bad temper :D

I think it's one of Dijkstra's famous tirades that stood the test of time and that perhaps makes a lot of sense at the time he wrote it (1975, precisely around the time BASIC was being put on about every home computer and everyone wanted to learn it) and the fact his favorite programming language, ALGOL, and BASIC sharing some similarities, particularly syntax.


hmm... they stroll while hopping?

Well, I could go on how you folks could easily develop an advanced roller_skates class and inherit yourselves from a finely-tuned balance class with heuristics. But... instead I will say, precisely, you can stroll with one leg ;)

abachler
06-21-2008, 06:12 PM
I understand your point, but I've never really encountered a problem that was inelegant to solve in Python.

OK, use python to perform a sigmoid calculation on a vector of floats using the GPU, and do it elegantly :)

Mad_guy
06-22-2008, 07:50 PM
Here's my two cents:

I'm particularly fond of python for beginners simply because it is fast to get stuff running. You can go from nothing to something very quickly, the syntax is simple and straightforward, and there are batteries included. After a few days you can probably get something interesting up that you could show to a friend or just use yourself. This is absolutely critical as a beginner, I feel: you must be able to motivate yourself, and nothing gets that pumping more than seeing something you've built up, running and working. You get a sense of accomplishment, and it feels good. You have fruits of labor.

I've technically released/accomplished little in my programming endeavors since I have started (then again, I've been a student in the US school system ever since I started; haven't had much of a chance for a job.) Even then, the feeling of accomplishment I get when I create something - whether it works on the first try, or I spend many hours debugging, tweaking and even rewriting it - is great. But you will also not create some things, you won't finish them, etc. etc.. However, this tolerance for failure and dealing with what is many times complete BS is acquired and learned, never given.
You'll go through a lot of failures no matter what, and the first ones are some of the most disheartening, I know. Even with Python, you will surely have problems, not accomplish something and so forth - the reason I recommend Python though is, I feel by using a higher level language than say C++, and, thus lowering the threshold of entry, it may make these failures more tolerable and instructive; not simply frustrating and demoralizing. At the very least I would think it would make it easier to accomplish many things, and that's important, regardless of skill.

I've seen a lot of people give up on programming because they couldn't get anything interesting working in something like C or C++ after spending a while learning it, and thus wrote off programming altogether as something that has little reward, is too arcane, or perhaps both. That's not to say they're stupid (I would think it's more a part of human nature: first impressions are critical) but more that they wanted fast results and they wanted to build fun stuff. There's absolutely nothing wrong with that, and if you want that, I highly suggest python. Don't get me wrong - you'll spend a few days getting up and running, familiar with the syntax/ideas, etc.. But after that, you'll have plenty of areas to explore and you'll be able to get stuff going quick. You will surely complete some things and never complete others: losing is a part of the game. In the end though, I think you'll have a language that can show you - as a beginner - that programming can be fun, instructive and easy. That you can create stuff, and that while it's not all fun and games, it can sure as hell be a lot of fun when it is.

abachler
06-23-2008, 08:07 AM
Nothing you said about python cannot be said about C/C++

The problem is with unreasonable expectations. Because C/C++ are billed as the most powerful language, people expect bigger results their first time out. If you follow the standard (hello world) tutorials, C/C++ are easy to get something up and running.

Mario F.
06-23-2008, 08:12 AM
Nothing you said about python cannot be said about C/C++

Wouldn't this mean if a person is uncomfortable learning C/C++ and finds Python easier to learn and it just so happens Python can handle whatever that person problem domain is at that time, Python becomes the perfect tool for the job? A better tool than C++?

abachler
06-23-2008, 09:18 AM
Wouldn't this mean if a person is uncomfortable learning C/C++ and finds Python easier to learn and it just so happens Python can handle whatever that person problem domain is at that time, Python becomes the perfect tool for the job? A better tool than C++?

Wouldn't this mean if a person is uncomfortable learning python and finds C/C++ easier to learn and it just so happens C/C++ can handle whatever that person problem domain is at that time, C/C++ becomes the perfect tool for the job? A better tool than python?

So really that statement is pointless.

Mario F.
06-23-2008, 09:23 AM
Hehe, but as I remember you started the whole Python i not good debate ;)

abachler
06-23-2008, 10:25 AM
Hehe, but as I remember you started the whole Python i not good debate ;)

To be fair, my position is not that python lacks inherent goodness or fitness for any purpose, only that -

1. It (python) is not C/C++.
2. It lacks comprehensive close-to-the-metalness.

#2 is pretty important for a lot of scientific and engineering work, where every ounce of computing power needs to be sqweeeeeezed out of a system. Most of the applications I develop are pushing or exceeding the limits of todays COTS hardware. While this may not be an issue for 99% of programmers today, what about in 10 or 20 years? Will you still be writing web apps or do you hope to move on to something more complex? When the time comes, will you have 10 or 20 years of experience in a languiage that can meet the engineering requirements of your complex tasks, or will you have 10 to 20 years experience with python?

Mad_guy
06-23-2008, 05:41 PM
The problem is with unreasonable expectations. Because C/C++ are billed as the most powerful language, people expect bigger results their first time out.
You are absolutely 100% correct. People expect to be able to build things instantly, and when they can't, they get frustrated, disheartened and just decide that it's not worth it. That's just the way it is.

My point was, however - which you didn't address - is that it is easier to get up and running with python. You can start to build cool stuff, fast. You can go from no-knowledge to building a GUI app in probably a week or so. Can the same be said about C++? I am doubtful, and it is because of this that I do not recommend it. Again: motivation is critical for a beginner, and seeing yourself build something real is the best way to keep it going.

Having said that, what do you think will impress a beginner more (generally speaking): seeing themselves after, say, a week creating things like basic GUI calculators or a notepad-clone, or after a week still being in the console and just getting to structures and just beginning to grok those weird things called 'pointers'? For gods sake, why do you think so many people flocked to visual basic for a beginning language, and still do? Because it tells their subconscious they're actually accomplishing something.

Of course, you can argue as much as you want that this is dependent on the person, in which you would be right. But really ask the question to yourself - or an actual beginner - and the answer should be immediately clear as to what will impress someone starting off more. This thread you have posted in should already be evidence of that.


1. It (python) is not C/C++.
"This thing of which you look at does not exactly replicate in all ways what I already have, and therefore, you should not learn it because by definition it is already inferior in all possible ways."


2. It lacks comprehensive close-to-the-metalness.
Fair enough. Keep in mind you probably *need* close to the metal. He doesn't.


#2 is pretty important for a lot of scientific and engineering work, where every ounce of computing power needs to be sqweeeeeezed out of a system. Most of the applications I develop are pushing or exceeding the limits of todays COTS hardware.
You sound like you have an exciting job, honestly. :] However, I doubt this new person using python will be worried about performing "a sigmoid calculation on a vector of floats using the GPU" using anything for a while.


While this may not be an issue for 99% of programmers today, what about in 10 or 20 years? Will you still be writing web apps or do you hope to move on to something more complex?
Who knows. I might be developing web apps in 20 years, I might be dead, I might be homeless, I might work at Intel, or the apocalypse might happen.

Regardless, this is an entirely useless statement and, if anything, all you're trying to do with it is plant a seed of doubt by saying "in 20 years you're going to look back on what you learned and feel like an idiot for not listening to me because I was right, and you will realize everything you've done is insignificant and worthless, compared to what I have done." It also seems to imply that you think that if he doesn't learn C++ he'll be developing web applications or something 'boring' all his life, which is completely nonsensical if not just downright ludicrous.


When the time comes, will you have 10 or 20 years of experience in a languiage that can meet the engineering requirements of your complex tasks, or will you have 10 to 20 years experience with python?
So you're saying your success depends entirely on the tool you choose to learn now? As a greenhorn? I'm pretty skeptical of that in its entirety. If in 20 years you have exceedingly complicated tasks to accomplish, I would figure that 20 years experience will guide you more than just knowing C/C++ or whatever language you will be using. I would much rather hire someone that has 20 years experience in a good set of languages, than someone who's spent the last 20 years just doing the same thing over and over. If nothing else, it indicates that the 'jack of trades' is more open to change and adaption, and that's excellent, because programming is about adaption. Would you rather have the ability to move or only be dead in the water?

It's just a tool, nothing more. Not a religion, not a mandate, not a constant. A tool. Tools get replaced. Better tools come around, and old tools can still have their place in a new world (no, not everybody uses top of the line power tools.) Pick the right tool, don't waste time on superficial bullcrap and you'll go farther than you would otherwise. I can promise it.

Perhaps the real problem is that you only have a hammer, so everything looks like a nail?

medievalelks
06-24-2008, 02:45 PM
To be fair, my position is not that python lacks inherent goodness or fitness for any purpose, only that -

1. It (python) is not C/C++.
2. It lacks comprehensive close-to-the-metalness.

#2 is pretty important for a lot of scientific and engineering work, where every ounce of computing power needs to be sqweeeeeezed out of a system. Most of the applications I develop are pushing or exceeding the limits of todays COTS hardware.

Sounds like C and C++ are right for your application domain.



While this may not be an issue for 99% of programmers today, what about in 10 or 20 years? Will you still be writing web apps or do you hope to move on to something more complex? When the time comes, will you have 10 or 20 years of experience in a languiage that can meet the engineering requirements of your complex tasks, or will you have 10 to 20 years experience with python?

Python is useful for much more than web apps. In fact, it plays nicely with C and C++ and as such can be used until you need to drop down to "close to the metal" code.

And in 10 to 20 years, if all you have is C and C++ experience, you'll almost certainly be backed into a nearly unmarketable corner.