OSDev.org

The Place to Start for Operating System Developers
It is currently Sun Nov 17, 2019 2:10 pm

All times are UTC - 6 hours




Post new topic Reply to topic  [ 26 posts ]  Go to page 1, 2  Next
Author Message
 Post subject: Language to learn after Python
PostPosted: Tue Nov 13, 2018 8:00 pm 
Offline
Member
Member
User avatar

Joined: Sat Dec 03, 2016 3:13 am
Posts: 48
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.


Top
 Profile  
 
 Post subject: Re: Language to learn after Python
PostPosted: Tue Nov 13, 2018 11:49 pm 
Offline
Member
Member

Joined: Mon Feb 02, 2015 7:11 pm
Posts: 305
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.

_________________
https://github.com/kiznit/rainbow-os


Top
 Profile  
 
 Post subject: Re: Language to learn after Python
PostPosted: Wed Nov 14, 2018 4:18 am 
Offline
Member
Member
User avatar

Joined: Wed Oct 18, 2006 3:45 am
Posts: 9287
Location: On the balcony, watching the Swedish Chef
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 ]


Top
 Profile  
 
 Post subject: Re: Language to learn after Python
PostPosted: Wed Nov 14, 2018 5:23 am 
Offline
Member
Member
User avatar

Joined: Sat Mar 31, 2012 3:07 am
Posts: 3563
Location: Chichester, UK
If you want to expand your horizons, and have a little fun, try something really different.

Smalltalk.


Top
 Profile  
 
 Post subject: Re: Language to learn after Python
PostPosted: Wed Nov 14, 2018 11:45 am 
Offline
Member
Member
User avatar

Joined: Sat Dec 03, 2016 3:13 am
Posts: 48
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?


Top
 Profile  
 
 Post subject: Re: Language to learn after Python
PostPosted: Wed Nov 14, 2018 1:20 pm 
Offline
Member
Member

Joined: Mon Feb 02, 2015 7:11 pm
Posts: 305
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.

_________________
https://github.com/kiznit/rainbow-os


Top
 Profile  
 
 Post subject: Re: Language to learn after Python
PostPosted: Thu Nov 15, 2018 10:33 am 
Offline
Member
Member
User avatar

Joined: Wed Oct 18, 2006 3:45 am
Posts: 9287
Location: On the balcony, watching the Swedish Chef
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 ]


Top
 Profile  
 
 Post subject: Re: Language to learn after Python
PostPosted: Thu Nov 15, 2018 10:49 am 
Offline
Member
Member
User avatar

Joined: Thu Nov 16, 2006 12:01 pm
Posts: 7422
Location: Germany
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.


Top
 Profile  
 
 Post subject: Re: Language to learn after Python
PostPosted: Thu Nov 15, 2018 11:06 am 
Offline
Member
Member

Joined: Mon Feb 02, 2015 7:11 pm
Posts: 305
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.

_________________
https://github.com/kiznit/rainbow-os


Last edited by kzinti on Thu Nov 15, 2018 11:23 am, edited 2 times in total.

Top
 Profile  
 
 Post subject: Re: Language to learn after Python
PostPosted: Thu Nov 15, 2018 11:13 am 
Offline
Member
Member

Joined: Mon Feb 02, 2015 7:11 pm
Posts: 305
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.

_________________
https://github.com/kiznit/rainbow-os


Top
 Profile  
 
 Post subject: Re: Language to learn after Python
PostPosted: Thu Nov 15, 2018 11:50 am 
Offline
Member
Member

Joined: Wed Nov 18, 2015 3:04 pm
Posts: 354
Location: San Jose San Francisco Bay Area
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


Top
 Profile  
 
 Post subject: Re: Language to learn after Python
PostPosted: Thu Nov 15, 2018 11:51 am 
Offline
Member
Member

Joined: Wed Nov 18, 2015 3:04 pm
Posts: 354
Location: San Jose San Francisco Bay Area
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


Top
 Profile  
 
 Post subject: Re: Language to learn after Python
PostPosted: Thu Nov 15, 2018 1:05 pm 
Offline
Member
Member

Joined: Mon Feb 02, 2015 7:11 pm
Posts: 305
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.

_________________
https://github.com/kiznit/rainbow-os


Top
 Profile  
 
 Post subject: Re: Language to learn after Python
PostPosted: Thu Nov 15, 2018 4:06 pm 
Offline
Member
Member
User avatar

Joined: Sat Dec 03, 2016 3:13 am
Posts: 48
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.


Top
 Profile  
 
 Post subject: Re: Language to learn after Python
PostPosted: Fri Nov 16, 2018 4:49 am 
Offline
Member
Member
User avatar

Joined: Wed Oct 18, 2006 3:45 am
Posts: 9287
Location: On the balcony, watching the Swedish Chef
Quote:
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 ]


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 26 posts ]  Go to page 1, 2  Next

All times are UTC - 6 hours


Who is online

Users browsing this forum: No registered users and 3 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group