Language to learn after Python
Re: Language to learn after Python
I do not believe that cross-platform is a requirement or a concern when learning how to program.
Re: Language to learn after Python
It's not^
Re: Language to learn after Python
It's not when all you are looking for is "learning how to program" for its own sake.
But you'll end up with one programming language that you know how to use. Which will also coin much of how you will think about programming when (if) you start out to learn the next language.
So there is a valid question of "what do I want to achieve with my programming, and where do I want to go from there".
So cross-platform capabilities, programming paradigm(s), applicability in a specific sector of programming, foreseeable demand in the employment market, all these can very well be requirements or concerns.
But you'll end up with one programming language that you know how to use. Which will also coin much of how you will think about programming when (if) you start out to learn the next language.
So there is a valid question of "what do I want to achieve with my programming, and where do I want to go from there".
So cross-platform capabilities, programming paradigm(s), applicability in a specific sector of programming, foreseeable demand in the employment market, all these can very well be requirements or concerns.
Every good solution is obvious once you've found it.
-
- 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
Yes and I am highly critical of myself. I have been programming in python/ c for years but always used simples and basic code: list, dictionary sometimes, simple pointer and referencing sometimes. Hell memory alloc/dealloc/free, i had to look up. It fits my purpose now since stuff is only myself mostly and sometimes couple more people, it do does not require performance.kzinti wrote: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.
I feel like doing more advanced programming, mthreading, gpu programming and performance optimization. That will get you deep into data struct: trees, balancing tree, all kinds of sorting algorithms, and cache related instructions.
There is one time only I had to resort to multithreading in python at a very basic level. The script requiring to log on multiple ssh console and does some job which sucked doing serially. However it was just launching bunch of functions in X number of batches of threads. No IPC, no mutex, no locks just each of them working in its own silo and fills return array slot with result with its PID.
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
I thought coding my own spin clone of any classic video games would be a fun project. That or a GUI application such as a calendar or text editor.
(Like Pong, Tetris, or even Super Mario Bros.)
(Like Pong, Tetris, or even Super Mario Bros.)
Re: Language to learn after Python
In that case I'd suggest starting small and working your way up. Start with a graphical text editor, that will get you up to speed on GUI programming basics. You're done when it's more usable than notepad.exe (Reaching for the low hanging fruit, there...).
Then maybe a calendar, since that is more involved. Games are even more involved since they require event-based programming, but also require things to happen on a timed basis. Most games only react to new inputs at the start of each frame. Now you only need to figure out what a "frame" is.
You are going to need support libraries for this. For 2D games, I've heard good things about SDL (so much so that several Steam games use it to great success). For the GUI, I'd stay as close to the metal as possible, i.e. xlib on Linux and WinAPI on Windows, but do bear in mind that I am a weirdo, and genuinely prefer C over C++.
Then maybe a calendar, since that is more involved. Games are even more involved since they require event-based programming, but also require things to happen on a timed basis. Most games only react to new inputs at the start of each frame. Now you only need to figure out what a "frame" is.
You are going to need support libraries for this. For 2D games, I've heard good things about SDL (so much so that several Steam games use it to great success). For the GUI, I'd stay as close to the metal as possible, i.e. xlib on Linux and WinAPI on Windows, but do bear in mind that I am a weirdo, and genuinely prefer C over C++.
Carpe diem!
Re: Language to learn after Python
I'd like to mention wxWidgets at this point... a cross-platform GUI library that doesn't toss licensing into your path (hello Qt), and gives a "native" look and feel on the target OS.
Every good solution is obvious once you've found it.
Re: Language to learn after Python
It depends on what you want to do.
For example, you may want to learn JavaScript for web development or C# for game development.
I personally would recommend learning about the layers of abstraction in computer architecture so you could gain more knowledge of how a computer works in general.
good luck
For example, you may want to learn JavaScript for web development or C# for game development.
I personally would recommend learning about the layers of abstraction in computer architecture so you could gain more knowledge of how a computer works in general.
good luck
-
- Posts: 2
- Joined: Wed Feb 27, 2019 5:25 am
- Libera.chat IRC: #osdev
Re: Language to learn after Python
it totally depends upon your interests
if you like to build PC or windows phone apps or you are looking your future in Microsoft go to C#
if you want to build android apps and also cross platform apps then learn Java
if you are an Apple-holic and want to build iOS and MAC apps and then choose objective C or Swift
if your more interested in game development then try C++
if you like to build PC or windows phone apps or you are looking your future in Microsoft go to C#
if you want to build android apps and also cross platform apps then learn Java
if you are an Apple-holic and want to build iOS and MAC apps and then choose objective C or Swift
if your more interested in game development then try C++
Re: Language to learn after Python
For OSdev, learning the gcc toolchain will help. For everything else, just stick to python.
Re: Language to learn after Python
...if "Python programmer" is what you're aiming for.
Guys, really. I thought we here were educated enough not to fall for the "one programming language should be enough for everybody" shtick anymore...
Guys, really. I thought we here were educated enough not to fall for the "one programming language should be enough for everybody" shtick anymore...
Every good solution is obvious once you've found it.
Re: Language to learn after Python
I think one of the important things to consider is that choosing a language is much less important than just writing (good) code. By this, I mean that so long as you're writing code, and you're actively making an effort to make it good code, then the language doesn't matter. One caveate is if that language allows you to be lazy about your code, then maybe shop around if it doesn't keep you from writing your best code. I personally feel like this applies to Perl, PHP and Javascript, but there are plenty of people out there who would do a good job of countering that opinion.
If you went for C#, C++, Java, Haskell, Rust, Typescript, Elixer, Kotlin, you won't be making any mistakes.
I do think that C is very important, regardless. It's is a great language for also learning the fundamentals underlying how a language interacts with the machine. Even if you end up writing your OS in C++ or Rust, have a solid C foundation goes a long way to informing you of important understandings that these langs can abstract away. I would say that C only becomes irrelevant if you only ever write browser front-end code. Even if you never do away with a garbage collector, a bit of experience with C gives you a phenomenal amount of contextual awareness of the underlying system.
C: Asks you to do just about everything, with special mention to memory management. Feels like you're working directly with the physical machine sometimes. Feels slow to make something
C++: much faster to build something, but a massively sprawling eco-system, and different conventions (eg. what defines 'modern' C++?).
Java, and I'm assuming C# as well: frees you up to not worry about memory management. Features get written faster. Feel tied to the IDE
You get the idea.
If you went for C#, C++, Java, Haskell, Rust, Typescript, Elixer, Kotlin, you won't be making any mistakes.
I do think that C is very important, regardless. It's is a great language for also learning the fundamentals underlying how a language interacts with the machine. Even if you end up writing your OS in C++ or Rust, have a solid C foundation goes a long way to informing you of important understandings that these langs can abstract away. I would say that C only becomes irrelevant if you only ever write browser front-end code. Even if you never do away with a garbage collector, a bit of experience with C gives you a phenomenal amount of contextual awareness of the underlying system.
No order needed. The better question to go by, I think, would be "what are the different languages like in terms of experience writing them?".Seahorse wrote: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.
C: Asks you to do just about everything, with special mention to memory management. Feels like you're working directly with the physical machine sometimes. Feels slow to make something
C++: much faster to build something, but a massively sprawling eco-system, and different conventions (eg. what defines 'modern' C++?).
Java, and I'm assuming C# as well: frees you up to not worry about memory management. Features get written faster. Feel tied to the IDE
You get the idea.
Re: Language to learn after Python
to light up everyone: C# is cross platform (Windows, Linux, macOS, Android and iOS) and also it has been got open source (officially by Microsoft, by the name Roslyn Project).
learning a new language highly depends on your usage. I like Rust. It can be used for writing native apps for Linux or Windows, or writing an OS, or WebAssembly (i dont know what is it). it has a great and friendly build system, and the books included with compiler are awesome.
also I suggest you to take a look at F# (a functional programming language for .NET platform), or Kotlin (another functional programming language for JVM, Web and Android).
learning a new language highly depends on your usage. I like Rust. It can be used for writing native apps for Linux or Windows, or writing an OS, or WebAssembly (i dont know what is it). it has a great and friendly build system, and the books included with compiler are awesome.
also I suggest you to take a look at F# (a functional programming language for .NET platform), or Kotlin (another functional programming language for JVM, Web and Android).
-
- Member
- Posts: 36
- Joined: Wed Sep 01, 2010 3:54 pm
Re: Language to learn after Python
I'd +1 this also. Professionally I do C# with dotnet core on Linux. They've done a really good job with their tooling. For OS development I do Rust. Both are pretty good languages, although Rust has a steep learning curve IMHO.mmdmine wrote:to light up everyone: C# is cross platform (Windows, Linux, macOS, Android and iOS) and also it has been got open source (officially by Microsoft, by the name Roslyn Project).
learning a new language highly depends on your usage. I like Rust. It can be used for writing native apps for Linux or Windows, or writing an OS, or WebAssembly (i dont know what is it). it has a great and friendly build system, and the books included with compiler are awesome.
also I suggest you to take a look at F# (a functional programming language for .NET platform), or Kotlin (another functional programming language for JVM, Web and Android).