Language to learn after Python
Language to learn after Python
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
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.
- Combuster
- 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
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.
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
If you want to expand your horizons, and have a little fun, try something really different.
Smalltalk.
Smalltalk.
Re: Language to learn after Python
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 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.
Re: Language to learn after Python
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.
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.
- Combuster
- 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
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 .
The real recommendation is to at least use OpenGL to avoid feeding Microsoft's gaming monopoly too much .
Re: Language to learn after Python
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.kzinti wrote:You could go with C/C++ but then you will also have to learn to manage memory explicitly.
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.
Re: Language to learn after Python
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.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.
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.
Re: Language to learn after Python
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.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 .
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.
-
- 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
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.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.kzinti wrote:You could go with C/C++ but then you will also have to learn to manage memory explicitly.
On the other hand, once you've worked with deterministic destructors and proper RAII mechanics, it's hard to go back to GC.
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
-
- 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
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.,kzinti wrote: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.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 .
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.
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
Re: Language to learn after Python
This is a very good point. It's especially relevant to OS Dev and Game Programming.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.,
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
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.
I had the idea of wanting to do a clone or light implementation of simple games as a start.
- Combuster
- 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
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.I feel that C# has far better tools and library ecosystem
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.