PDA

View Full Version : How do you advance in programming?



Belliinator
April 28th, 2008, 06:37 AM
Hey, Im not sure if this has been discussed before but it wasn't in the stickies as far as I know.

So, how do you know when your good enough at a 'begginer language' such as python to move on to more difficult languages like C, C++?

What should I aim for in learning python?

My apologies if this has already been dicussed. NO FLAME WARS Please

Thankyou.

Wybiral
April 28th, 2008, 06:45 AM
You should learn C if you ever need to develop some low-level libraries or something, but why do you feel like C/C++ have to be some kind of goal?

Why do you consider Python a "beginner language". You know YouTube was written in Python, right? Are those guys "beginner" programmers? NASA uses Python? Are those guys "beginners"?

amingv
April 28th, 2008, 06:47 AM
I believe there is no standard measure for "good enough"; good enough for what? a regular user? a web developer? a computer scientist? a hacker?
For that matter why isn't Python alone good enough?
Knowing how to write backup.py is enough for some; others push it to open_quake3.py, it depends.
I dare not say any of them is wrong if they decided to, say, move to C.

Belliinator
April 28th, 2008, 07:14 AM
You should learn C if you ever need to develop some low-level libraries or something, but why do you feel like C/C++ have to be some kind of goal?

Why do you consider Python a "beginner language". You know YouTube was written in Python, right? Are those guys "beginner" programmers? NASA uses Python? Are those guys "beginners"?

Nope. Its just that a lot of people around here says python a language for begginers to start with, before you move on to others, I didn't mean to say it was bad. Apparently C/C++ is harder to use, and I thought that C/C++ is more common used for open source projects, maybe that is a misconception.

Be even so, how do you know when your good enough at python to contribute to a project, in the area of application and/or game development?

Wybiral
April 28th, 2008, 07:23 AM
Python is good for beginners, because it's an easy language to program in, but that doesn't mean it's not useful for experienced programmers. C++ is more complicated, but that doesn't make it more valuable for open source programming.

My advice would be to continue with the Python. When you get more comfortable, download some source code of existing projects and see what you can learn from it, how much sense can you make out of it? Find whatever you're most comfortable with, join their developers mailing list, and see if any of them can help whenever you get stuff (look for bug-lists and find the easiest ones, see if you can do any of them).

If you get to the point where you need faster code (at a lower level), then you can write modules for your Python programs in C and use your low-level code in Python (develop faster, but still squash those speed bumps when you need to).

It's harder to move a houseful of bricks carrying them brick-by-brick, but it's smarter to just use a vehicle. There's nothing impressive about doing more work than you have to :)

tamoneya
April 28th, 2008, 07:23 AM
python is very easy to get started with and makes sense that is why it is often recommended. Also you can just type
python in terminal and you will be taken to an interactive python environment. It still has just as much power as other languages like C/C++. All languages have their purposes.

milia
April 28th, 2008, 07:24 AM
Find or formulate problems and try to solve them via programming.

If you like mathematics or science you could study some arithmetical analysis and get into numerical simulations...

Far from scientific programming, try to learn as much as you can for the OS
you're using,read & understand lots of code and I'm sure that when problems arise (samba crashed, omg and now
what??) you'll try to make something that'll fix them.

So, the main method I normally use is to find a problem, formulate or find
the appropriate algorithm and implement the algorithm into a programming
language.

samjh
April 28th, 2008, 11:01 AM
Hey, Im not sure if this has been discussed before but it wasn't in the stickies as far as I know.

So, how do you know when your good enough at a 'begginer language' such as python to move on to more difficult languages like C, C++?

What should I aim for in learning python?

Programming is about using computers to solve problems. Do not focus on languages, focus on problems and their solutions.

Regardless of what language you learn, you should first and foremost aim to develop your skills in translating solutions into a form understandable by machines. Practice devising solutions to simple but practical problems (eg. a telephone directory, message cypher, file-renaming utility) and translating your solution into a programming language code, whether it is Python, C, C++, Java, etc.

Be warned: a good Python programmer may not be good at learning about C or C++. Different programming languages requires different mentalities and thinking skills. Some programmers will lean towards a style of problem-solving that may not suit some programming languages.

To be completely frank and factual, Python and C are different animals. You do not need to be good at Python to be ready to learn C, and vice versa. However, you DO need to be good at SOLVING PROBLEMS. :)

So learn Python as much as you want. But you can switch to learning C or C++ whenever you feel like. You can even go the other way: learn C or C++ first and move to Python. At the end of the day, you're only learning to use different types of tools for solving computational problems.



PS: I learnt BASIC and Pascal first, then Java and C. Along the way, I also learned Assembly, SQL, PROLOG, Haskell, and C++. After the end of my formal education, I taught myself Ada, C#, and Python. I don't think experience in any of those programming languages were particularly helpful toward learning another.

tseliot
April 28th, 2008, 11:16 AM
Have a look at what Eric S. Raymond said (http://catb.org/~esr/faqs/hacker-howto.html#skills1).

pmasiar
April 28th, 2008, 02:10 PM
You can learn most of programming tricks in Python (except PITA like static type checking and abomination like static exception checking), so there is no reason to learn any other language if Python fits your needs.

You may consider C if you need speed (it you can **measure** that you need speed, not if you **feel** like it). If you want to learn other languages to expand your understanding of programming, try more different languages: Lisp, Prolog, Forth, Haskell, Erlang, even if you won't use them. C and ASM is good if you are interested how bits are pushed around, but it will not expand your horizons.

Decide in which area you want to program. For (web-based) applications, SQL, CGI, AJAX, Javascript, HTML/CSS are useful and different enough. Find a project you want to use/learn/expand, and it will soak up plenty of your time till you become expert in it :-)

Also, to become guru you need to learn things beyond syntax: many people swear to design patterns and Test-driven development (which is universal, applies to any language). And you need to learn problem area, you cannot be equally expert in mortgage/financial/accounting, manufacturing/retail, scientific computing (every science if universe by itself), healthcare, etc. Knowing problem area is big part of being expert.

Syntax of most languages is trivial, trick is to learn libraries and idiomatic use of design patterns and data structures used in problem area.

If you need training tasks to solve, check wiki in my sig.

Kiefer Rodriguez
April 28th, 2008, 02:51 PM
Hey, Im not sure if this has been discussed before but it wasn't in the stickies as far as I know.

So, how do you know when your good enough at a 'begginer language' such as python to move on to more difficult languages like C, C++?

What should I aim for in learning python?

My apologies if this has already been dicussed. NO FLAME WARS Please

Thankyou.

Believe it or not you have already shown what you need to 'advance' in programming, and thats the yearning to learn. Though if you would prefer a clearer way to decide if you are ready to move onto C/++ here is a little checklist for your Python skill status;

Do you understand and are able to implement the following?
-OOP, of course.
-Dictionary's, Tuples and other means of data storage
-File I/O manipulation
-Usage of modules, importing, 'from.. import', etc
-Understanding of the development process, 'concept, design.. etc'.
-A general understanding of Python and why certain things do what they do

I realize that is a bit vague and not essential, but you must keep in mind that Python is considered a 'beginner' language (As someone above me pointed out, this cant be further from the truth) but C/++ is a lower level language (pointers, variable scope etc) and is therefor more complicated.

Though heres a slightly uninteresting fact, I learned C/++ before I learned any other languages, Python was one of the last languages I mastered :p

LaRoza
April 28th, 2008, 02:55 PM
I realize that is a bit vague and not essential, but you must keep in mind that Python is considered a 'beginner' language (As someone above me pointed out, this cant be further from the truth) but C/++ is a lower level language (pointers, variable scope etc) and is therefor more complicated.

Though heres a slightly uninteresting fact, I learned C/++ before I learned any other languages, Python was one of the last languages I mastered :p

Remember: C and C++ are as different as they can be.

C is a lower level language, but it is much simpler than Python. In Python, you have lambda's, dynamic typing, objects and higher level features. C is very, very simple.

Programming in C and C++ is very different, so except for syntax and using the gcc, C and C++ have nothing in common in general use.

Kiefer Rodriguez
April 28th, 2008, 03:21 PM
Remember: C and C++ are as different as they can be.

C is a lower level language, but it is much simpler than Python. In Python, you have lambda's, dynamic typing, objects and higher level features. C is very, very simple.

Programming in C and C++ is very different, so except for syntax and using the gcc, C and C++ have nothing in common in general use.

Ah yes, I do agree, for a quick summary of how Python and C compare, lets consider the usage of data-types under the mentioned,

Python:
-A language in which types are discovered at execution time. ('Dynamically typed)
-A language in which types are always enforced. (Strongly typed - Conversion of types requires explicit converting.)

C:
-Requiring you to declare all variables with their datatypes before using them. (statically typed)

I always found Python to be simpler than C, but this all comes down to personal preference. I would suggest that the journey from Python to C wont be a tough one, the best way to find out is to try your hand at C, if you feel you have mastered it after some time, try moving onto C++. :)

~Kiefer

LaRoza
April 28th, 2008, 03:30 PM
Ah yes, I do agree, for a quick summary of how Python and C compare, lets consider the usage of data-types under the mentioned,

Python:
-A language in which types are discovered at execution time. ('Dynamically typed)
-A language in which types are always enforced. (Strongly typed - Conversion of types requires explicit converting.)

C:
-Requiring you to declare all variables with their datatypes before using them. (statically typed)

I always found Python to be simpler than C, but this all comes down to personal preference. I would suggest that the journey from Python to C wont be a tough one, the best way to find out is to try your hand at C, if you feel you have mastered it after some time, try moving onto C++. :)

~Kiefer

C is also weakly typed...which is fun.

It depends on what you mean by simpler I suppose. Python requires you to know less about the boring bits (how computers work). C is basically assembly with a portable syntax (true, because it is translated to assembly by gcc).

pmasiar
April 28th, 2008, 03:46 PM
Even is Python is easy on beginners (easy to learn and start programming in) it does not mean it is trivial. It has many advanced features (hidden from beginners) like introspection, decorators, dynamic code generation (you can define function during runtime), generic functions, method overloading, multiple inheritance and many more, lacking in some other languages. So you can learn all this power tricks in Python, then try it in other languages to appreciate how much more work it might be, and how hard Python works for you. :-)

Languages which really expanded my mind were Forth (for it's incredible, even dangerous raw power and concise code) and Prolog, where you describe facts and rules, ask a question, and Prolog will find the answer without you programming how to find it.

Difference between static and dynamic typing is trivial and boring.

howlingmadhowie
April 28th, 2008, 03:58 PM
i would say that python is actually enough language for anybody :)

however, it is fun to know more about how a computer works, so i'd also suggest that you play around with a very low level language. i learnt a lot about the sparc architecture for example by writing assembler for it. not that i'm saying that assembler is useful for day to day programming tasks, but you can learn a lot, and it is supremely simple.

being able to read c fluently (which isn't easy, because the various symbols just looks plain weird to somebody used to more high-level languages) is also the gateway to the linux kernel, of course.

python is a truly great language. so carry on enjoying it :) and if you haven't yet done so, have a look at lambda in python :)

stevescripts
April 28th, 2008, 04:12 PM
Lots of good advice for the OP in this thread.

Just another $.02, desire + effort = advancment.

Learn by doing, regardless of the language of choice.

Steve

Belliinator
April 29th, 2008, 10:25 AM
Thankyou very much to all those who have responded. I feel I have a clearer idea of where to head and what to achieve now. Marking thread as solved, but if anyone wants to add anything, feel free.:)

EDIT: Is it just me or did they move the solved button, with the forum upgrade?