Language to learn after Python

Programming, for all ages and all languages.
User avatar
Seahorse
Member
Member
Posts: 64
Joined: Sat Dec 03, 2016 3:13 am

Language to learn after Python

Post 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.
kzinti
Member
Member
Posts: 898
Joined: Mon Feb 02, 2015 7:11 pm

Re: Language to learn after Python

Post 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.
User avatar
Combuster
Member
Member
Posts: 9301
Joined: Wed Oct 18, 2006 3:45 am
Libera.chat IRC: [com]buster
Location: On the balcony, where I can actually keep 1½m distance
Contact:

Re: Language to learn after Python

Post 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.
"Certainly avoid yourself. He is a newbie and might not realize it. You'll hate his code deeply a few years down the road." - Sortie
[ My OS ] [ VDisk/SFS ]
User avatar
iansjack
Member
Member
Posts: 4685
Joined: Sat Mar 31, 2012 3:07 am
Location: Chichester, UK

Re: Language to learn after Python

Post by iansjack »

If you want to expand your horizons, and have a little fun, try something really different.

Smalltalk.
User avatar
Seahorse
Member
Member
Posts: 64
Joined: Sat Dec 03, 2016 3:13 am

Re: Language to learn after Python

Post 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?
kzinti
Member
Member
Posts: 898
Joined: Mon Feb 02, 2015 7:11 pm

Re: Language to learn after Python

Post 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.
User avatar
Combuster
Member
Member
Posts: 9301
Joined: Wed Oct 18, 2006 3:45 am
Libera.chat IRC: [com]buster
Location: On the balcony, where I can actually keep 1½m distance
Contact:

Re: Language to learn after Python

Post 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:.
"Certainly avoid yourself. He is a newbie and might not realize it. You'll hate his code deeply a few years down the road." - Sortie
[ My OS ] [ VDisk/SFS ]
User avatar
Solar
Member
Member
Posts: 7615
Joined: Thu Nov 16, 2006 12:01 pm
Location: Germany
Contact:

Re: Language to learn after Python

Post 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. ;-)
Every good solution is obvious once you've found it.
kzinti
Member
Member
Posts: 898
Joined: Mon Feb 02, 2015 7:11 pm

Re: Language to learn after Python

Post 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.
Last edited by kzinti on Thu Nov 15, 2018 11:23 am, edited 2 times in total.
kzinti
Member
Member
Posts: 898
Joined: Mon Feb 02, 2015 7:11 pm

Re: Language to learn after Python

Post 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.
ggodw000
Member
Member
Posts: 396
Joined: Wed Nov 18, 2015 3:04 pm
Location: San Jose San Francisco Bay Area
Contact:

Re: Language to learn after Python

Post 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.
key takeaway after spending yrs on sw industry: big issue small because everyone jumps on it and fixes it. small issue is big since everyone ignores and it causes catastrophy later. #devilisinthedetails
ggodw000
Member
Member
Posts: 396
Joined: Wed Nov 18, 2015 3:04 pm
Location: San Jose San Francisco Bay Area
Contact:

Re: Language to learn after Python

Post 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.,
key takeaway after spending yrs on sw industry: big issue small because everyone jumps on it and fixes it. small issue is big since everyone ignores and it causes catastrophy later. #devilisinthedetails
kzinti
Member
Member
Posts: 898
Joined: Mon Feb 02, 2015 7:11 pm

Re: Language to learn after Python

Post 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.
User avatar
Seahorse
Member
Member
Posts: 64
Joined: Sat Dec 03, 2016 3:13 am

Re: Language to learn after Python

Post 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.
User avatar
Combuster
Member
Member
Posts: 9301
Joined: Wed Oct 18, 2006 3:45 am
Libera.chat IRC: [com]buster
Location: On the balcony, where I can actually keep 1½m distance
Contact:

Re: Language to learn after Python

Post 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.
"Certainly avoid yourself. He is a newbie and might not realize it. You'll hate his code deeply a few years down the road." - Sortie
[ My OS ] [ VDisk/SFS ]
Post Reply