Language to learn after Python

Programming, for all ages and all languages.
kzinti
Member
Member
Posts: 898
Joined: Mon Feb 02, 2015 7:11 pm

Re: Language to learn after Python

Post by kzinti »

I do not believe that cross-platform is a requirement or a concern when learning how to program.
User avatar
Seahorse
Member
Member
Posts: 64
Joined: Sat Dec 03, 2016 3:13 am

Re: Language to learn after Python

Post by Seahorse »

It's not^
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 »

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.
Every good solution is obvious once you've found it.
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:
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.
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.

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

Re: Language to learn after Python

Post by Seahorse »

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.)
nullplan
Member
Member
Posts: 1769
Joined: Wed Aug 30, 2017 8:24 am

Re: Language to learn after Python

Post by nullplan »

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++.
Carpe diem!
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 »

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.
todalta
Posts: 1
Joined: Sun Dec 23, 2018 9:00 pm
Libera.chat IRC: dert

Re: Language to learn after Python

Post by todalta »

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.
:wink: good luck
ruchikadmore
Posts: 2
Joined: Wed Feb 27, 2019 5:25 am
Libera.chat IRC: #osdev

Re: Language to learn after Python

Post by ruchikadmore »

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++
bigboyav
Posts: 10
Joined: Sat Dec 29, 2018 3:09 am

Re: Language to learn after Python

Post by bigboyav »

For OSdev, learning the gcc toolchain will help. For everything else, just stick to python.
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 »

...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...
Every good solution is obvious once you've found it.
seL4cious
Posts: 5
Joined: Tue Jan 21, 2020 6:28 am
Libera.chat IRC: seL4cious

Re: Language to learn after Python

Post by seL4cious »

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.
Seahorse wrote:
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?
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?".

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.
mmdmine
Member
Member
Posts: 47
Joined: Sat Dec 28, 2019 5:19 am
Location: Iran
Contact:

Re: Language to learn after Python

Post by mmdmine »

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).
rkennedy9064
Member
Member
Posts: 36
Joined: Wed Sep 01, 2010 3:54 pm

Re: Language to learn after Python

Post by rkennedy9064 »

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).
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.
Post Reply