Page 1 of 2

Language to learn after Python

Posted: Tue Nov 13, 2018 8:00 pm
by Seahorse
What is a good next step idea of a computer language or topic to learn about after I have used Python and written a few things with that? Can you go on to one like C# or C/C++? What books or tutorials do you recommend? I thought about downloading one of those Game maker software programs to warm myself. But I admit Python remains the most fun right now.

Re: Language to learn after Python

Posted: Tue Nov 13, 2018 11:49 pm
by kzinti
I'd say C# is probably what you want to look at next. But really it depends on what kind of software you want to build. If you want to do OS Dev, then C or C++ would be better.

Re: Language to learn after Python

Posted: Wed Nov 14, 2018 4:18 am
by Combuster
The main question is what you want to learn?

Do you want to write desktop applications for Windows, then sure go ahead and pick C# and you'll basically learn to deal with MS crap and a strongly typed system in the process. For most other purposes I'd probably recommend something else: Kotlin, Rust, C++, and possibly Haskell or Assembly if that closer suits your actual goals.

Re: Language to learn after Python

Posted: Wed Nov 14, 2018 5:23 am
by iansjack
If you want to expand your horizons, and have a little fun, try something really different.

Smalltalk.

Re: Language to learn after Python

Posted: Wed Nov 14, 2018 11:45 am
by Seahorse
kzinti wrote:I'd say C# is probably what you want to look at next. But really it depends on what kind of software you want to build. If you want to do OS Dev, then C or C++ would be better.
I think games will be fun to make so that's one of C# (or Java) things. I do want to try OS Dev one of these days though. Would learning in a specific order really be necessary?

Re: Language to learn after Python

Posted: Wed Nov 14, 2018 1:20 pm
by kzinti
Your next step should be to learn a statically typed language. Something like C# would be the logical next step. But this can be substituted with something else depending on your goals.

The more language you learn, the better a programmer you would be. But taking an incremental approach to your learning would make sense. Going with something like assembler or a functional language would just slow you down as they are quite different from Python.

You could go with C/C++ but then you will also have to learn to manage memory explicitly.

This is why I recommended C#. I am sure other languages would qualify as well.

Re: Language to learn after Python

Posted: Thu Nov 15, 2018 10:33 am
by Combuster
If you want to go at games the professional way, then you'll be expected to show your C++ abilities at some point. Most of the other "advertised" languages in that business are a form of vendor lock-in, each to different extents. But that might be a price you're willing to pay for more convenient languages such as swift, java and C# - java being the most portable of the three.

The real recommendation is to at least use OpenGL to avoid feeding Microsoft's gaming monopoly too much :wink:.

Re: Language to learn after Python

Posted: Thu Nov 15, 2018 10:49 am
by Solar
kzinti wrote:You could go with C/C++ but then you will also have to learn to manage memory explicitly.
Not really. Guys, come on. C++11 has been seven years ago, and boost::scoped_ptr / boost::shared_ptr have been around for a long time before that. You can but you don't have to.

On the other hand, once you've worked with deterministic destructors and proper RAII mechanics, it's hard to go back to GC. ;-)

Re: Language to learn after Python

Posted: Thu Nov 15, 2018 11:06 am
by kzinti
Solar wrote: Not really. Guys, come on. C++11 has been seven years ago, and boost::scoped_ptr / boost::shared_ptr have been around for a long time before that. You can but you don't have to.
Right, and my point is that you don't have to learn any of this. You don't have to learn why any of this is necessary if you go with something like Java or C#. C++ now has good support for memory management, but it is not automatic.

C++ is also a very complex language and it gives very bad habits to programmers learning how to program with it. Some of it has to do with it's C heritage, some of it has to do with it's age, but these don't explain all its warts and problems.

I still maintain that it's a terrible language for beginners and for leaning how to program.

Re: Language to learn after Python

Posted: Thu Nov 15, 2018 11:13 am
by kzinti
Combuster wrote:If you want to go at games the professional way, then you'll be expected to show your C++ abilities at some point. Most of the other "advertised" languages in that business are a form of vendor lock-in, each to different extents. But that might be a price you're willing to pay for more convenient languages such as swift, java and C# - java being the most portable of the three.

The real recommendation is to at least use OpenGL to avoid feeding Microsoft's gaming monopoly too much :wink:.
Can we keep the MS fanboy / hate out of this thread? The OP is asking how to improve his programming skills. He is not asking about long term plans. The reality is that if you are going to be a competent programmer, it doesn't matter what languages you know: you can easily switch between them and learn new ones quickly. It's not like one has to stick with the first language learned all his life.

C# or Java, it's the same language. It doesn't matter. I feel that C# has far better tools and library ecosystem, but someone else might say that about Java.

Re: Language to learn after Python

Posted: Thu Nov 15, 2018 11:50 am
by ggodw000
Solar wrote:
kzinti wrote:You could go with C/C++ but then you will also have to learn to manage memory explicitly.
Not really. Guys, come on. C++11 has been seven years ago, and boost::scoped_ptr / boost::shared_ptr have been around for a long time before that. You can but you don't have to.

On the other hand, once you've worked with deterministic destructors and proper RAII mechanics, it's hard to go back to GC. ;-)
i recently got back to C++ refresh there is also smart pointer concept for deep copy etc., make it more easier to manage memory but I love practicing raw memory management through regular pointers.

Re: Language to learn after Python

Posted: Thu Nov 15, 2018 11:51 am
by ggodw000
kzinti wrote:
Combuster wrote:If you want to go at games the professional way, then you'll be expected to show your C++ abilities at some point. Most of the other "advertised" languages in that business are a form of vendor lock-in, each to different extents. But that might be a price you're willing to pay for more convenient languages such as swift, java and C# - java being the most portable of the three.

The real recommendation is to at least use OpenGL to avoid feeding Microsoft's gaming monopoly too much :wink:.
Can we keep the MS fanboy / hate out of this thread? The OP is asking how to improve his programming skills. He is not asking about long term plans. The reality is that if you are going to be a competent programmer, it doesn't matter what languages you know: you can easily switch between them and learn new ones quickly. It's not like one has to stick with the first language learned all his life.

C# or Java, it's the same language. It doesn't matter. I feel that C# has far better tools and library ecosystem, but someone else might say that about Java.
I think understanding of underlying hardware and memory topology etc will help greatly in learning language. If subject can not know what the memory is and what its purpose is, it is very difficult to grasp the context of pointer etc., Further down the road even advanced topics such as cache etc.,

Re: Language to learn after Python

Posted: Thu Nov 15, 2018 1:05 pm
by kzinti
ggodw000 wrote:I think understanding of underlying hardware and memory topology etc will help greatly in learning language. If subject can not know what the memory is and what its purpose is, it is very difficult to grasp the context of pointer etc., Further down the road even advanced topics such as cache etc.,
This is a very good point. It's especially relevant to OS Dev and Game Programming.

If OP could elaborate on what he would like to achieve short/medium/long term, it could help determine what is the "right" next language to learn.

Re: Language to learn after Python

Posted: Thu Nov 15, 2018 4:06 pm
by Seahorse
You mean about programming or general fundamentals like the memory and hardware things?
I had the idea of wanting to do a clone or light implementation of simple games as a start.

Re: Language to learn after Python

Posted: Fri Nov 16, 2018 4:49 am
by Combuster
I feel that C# has far better tools and library ecosystem
Full disclosure: I work for a company that does multiple platforms, and only very rarely does native windows development. C# is not a industry standard language when it comes to portability, and each time Microsoft did try to get a foot back in the door, they merely demonstrated how inferior their platform and toolchain implementations were for non-windows platforms. Projects have incurred significant losses due to bugs and other issues in visual studio - up to like 50% of the development time. The official policy is now to disadvise and ultimately reject customers that want their projects build with Microsoft tooling - because we know they will be unhappy about the cost and result.

Within the Windows ecosystem, C# is of course a fine choice. The OP however never mentioned it and neither am I therefore allowed to assume as such. Windows' desktop share might be significant, but its not absolute, particularly not when you include the gaming market for cellphones and consoles - or even the web.