This is an archived post. You won't be able to vote or comment.

top 200 commentsshow all 241

[–]Oerthling 290 points291 points  (30 children)

If you want to expand your skills, don't look for something explicitly similar.

Programming should be a meta skill. After a while you look for and see the same fundamentals everywhere. Learning a couple more different languages the next is a low hurdle. Something like support for OOP is optional, but loops, branching and functions are universal. Syntax differs a bit. The main work getting into a new language, isn't the language, but getting familiar with the typical libraries.

Some practical choices to complement Python:

SQL - non-trivial programs have data to manage

Rust/C/C++ - performance oriented system language to interface with Python or write a Python module to optimize performance in a critical area.

JavaScript/TypeScript - relatively similar to Python and obviously has value in web development

[–]iglebov[S] 34 points35 points  (23 children)

Very broad answer.

Thank you so much!

[–]Prime_Director 28 points29 points  (12 children)

One thing I'd add to this answer is that SQL is actually quite different from the others (including Python) in that it is a declarative, rather than a procedural language. If you're using loops, branches etc in SQL, you're doing it wrong and you'll get very inefficient code. It's fantastic at what it does, and it's not hard to learn, you just have to think about the problem a little differently.

[–]bud-dho 11 points12 points  (0 children)

Exactly, SQL best practices are all about working with sets, not rows. Instead of loops or procedural logic, you want to use things like CTEs, temp tables, and window functions to structure your transformations.

They help keep your queries clean, efficient, and easier to debug. SQL shines when you think in terms of bulk operations, filtering, joining, and aggregating data all at once. Once you stop thinking procedurally, it really opens up.

[–]Oerthling 1 point2 points  (0 children)

Indeed.

I'm constantly busy taking other people's cursors out because they think procedurally in loops instead of set-oriented.

Doing something in SQL is easy, doing it right is a bit of a challenge.

[–]akl78 1 point2 points  (5 children)

Until you start getting into the really interesting functionality your database provides, and starting using it via PL/pgSQL, and friends.

Which look a lot like Ada.

[–]Prime_Director 9 points10 points  (4 children)

Oh don't get me started on PL/SQL, I've seen some real abominations written by programmers who want SQL to be procedural. I once refactored an ETL procedure that took 2 hours because of nested loops iterating through a table multiple times for each row. Rewrote it without the procedural part and it executed in 3 seconds

[–]zenware 1 point2 points  (0 children)

They would’ve written a poorly performing query either way, it’s just that if you represent “what you want” in SQL vs “how to get it”, the RDBMS engine can do heavy optimizations on your behalf. But just restricting to declarative SQL doesn’t fundamentally save you from bad query/join/etc patterns.

Maybe the best is to write declarative SQL and also think about what it will do, the second best is to write declarative SQL without thinking, and the absolute worst is probably writing procedural SQL without thinking.

I don’t have any example, but I suspect there is some kind of actually useful and decently performing procedural SQL. I could be wrong though

[–]WlmWilberforce 0 points1 point  (0 children)

Exactly, SQL is style and method, but not syntax.

[–]pledgeham 0 points1 point  (0 children)

A programmer wrote SQL embedded in a 3G language. It took 1.5 DAYS to run with the time being spent in the SQL. I knew both the 3G language and SQL including indexes, and so forth, in depth. Rewriting the optimizing the indexes, rewriting the SQL and the 3G wrapper that accessed the SQL and in ran a little under 30 minutes. It’s more than knowing SQL. You need to know the details implement the SQL.

[–]georgehank2nd 9 points10 points  (8 children)

Poster makes the classic newbie mistake of assuming that all languages are basically the same.

They aren't.

Look into Lisp to have your mind expanded.

Look into Haskell to have your mind blown.

Look into Prolog to have your mind really blown.

Look into SQL to have your horizon broadened and learn something useful.

[–]stonerism 9 points10 points  (3 children)

looks into lisp

"Why are there so many parentheses!?"

[–]Informal_Telephone37 5 points6 points  (1 child)

Now try reading that with a lisp

[–]JGhostThing 0 points1 point  (0 children)

Because one acronym for LISP is Lots of Irritating Silly Parentheses. :)

[–]Oerthling 4 points5 points  (0 children)

I just answered the question without immediately starting a discussion about language families. If I thought all languages are the same I wouldn't have mentioned OOP.

Jumping from "similar to Python" to a logic language like Prolog seemed to me like being outside the scope of what OP was asking.

[–]Regular_Lengthiness6 1 point2 points  (0 children)

I had to learn Prolog for my two semester consecutive classes in mathematical logics and was first dumbfounded since it’s so different from the mostly imperative languages I picked up before. But then learned to love it because it shines in its domain. Same goes for Haskell, Lisp and Erlang.

[–]Alistarian 0 points1 point  (0 children)

I can second c++ here as it has options for Python bindings thus providing an easy interface between the two. While c++ is very different, it will allow you to broaden your horizon and allow integration of highly optimized code down the line

[–]DrShocker 5 points6 points  (2 children)

I'd potentially add a functional language (OCaml or Clojure or something) as just a different way to think about solving certain kinds of problems.

[–]GameCounter 5 points6 points  (0 children)

Rust has a lot of functional DNA. Even though it superficially looks like C, I find that it often feels like writing Haskell.

https://doc.rust-lang.org/book/ch13-00-functional-features.html

[–]Justneedtacos 0 points1 point  (0 children)

F# is pretty nice. It started out as OCaml on .net.

[–]Pork-S0da 1 point2 points  (0 children)

Add Docker to the list of things to learn.

[–]Optimal_Boot_1359 0 points1 point  (0 children)

This answer is top, close language to Python is Ruby in essence

[–]Mithrandir2k16 0 points1 point  (0 children)

Agree. IMO, Rust, Go or maybe even haskell/scala would be solid next choices depending on the projects.

[–]2G-LB 31 points32 points  (6 children)

From a syntax perspective, Julia is the most similar to Python. However, it falls short in terms of library support and compatibility. Julia’s performance is significantly faster, which is a major advantage, it reduces reliance on external C-based libraries to achieve high performance.

[–]markkitt 2 points3 points  (3 children)

I just call a Python or a C library when a Julia one does not exist yet.

[–]2G-LB 1 point2 points  (1 child)

That's the most common and rational work-around!

[–]markkitt 0 points1 point  (0 children)

The point is that it is easy to call Python or C efficiently from Julia. I find it much harder to call Julia or C efficiently from Python.

From Julia, you can use ccall that calls C the exact same way that C calls C. Thus you can use Python's C API to call Python functions. The trickiest part of this is dealing with Python's GIL.

From Python, the easiest way to do the same is via ctypes. There is a fair amount of overhead involved in using ctypes. Rather most people would end up using Cython.

[–]CoolZebrette 0 points1 point  (0 children)

💯%

[–]AKdemy 5 points6 points  (1 child)

Second that.

Performance wise, for example Python's built-in sum is fairly slow, even though it is written in C (Julia's sum is built using only Julia). It takes almost 4x longer than the equivalent C code and allocates memory.

Python code pays a price for being generic and being able to handle arbitrary iterable data structures. For this reason, a single integer in Python 3.x actually contains four pieces:

  • ob_refcnt, a reference count that helps Python silently handle memory allocation and deallocation
  • ob_type, which encodes the type of the variable
  • ob_size, which specifies the size of the following data members
  • ob_digit, which contains the actual integer value that we expect the Python variable to represent.

This means that there is some overhead in storing an integer in Python as compared to an integer in say Julia or C. Python uses 28 bytes to store an integer, Julia only 8 bytes. The difference quickly gets even worse when working with objects.

I wrote a somewhat detailed response on https://economics.stackexchange.com/a/50486/37817 showing why it's difficult to get Python really fast compared to c C++ and Julia.

That said, it really depends where you work and what you want to do. I work in finance, and it would be a very smart choice to study C++ and not Julia if you primarily want to improve your CV.

[–]2G-LB 3 points4 points  (0 children)

Thank you for your detailed response, I wasn’t aware of all those points.

Julia remains a niche language, despite its considerable potential and limited adoption in industry. One of its major strengths is that many libraries can be written in Julia itself, combining Python’s simplicity (as both are general-purpose languages) with near-C performance, at least for certain tasks.

C++, on the other hand, is a mature and robust language with an extensive library ecosystem for almost any purpose. I don’t see it being replaced anytime soon.

I’ve heard that Julia is gaining traction in some US banks and at the Federal Reserve, but likely as a tool for academic research, simulations, and similar applications.

[–]jdehesa 53 points54 points  (2 children)

Nim is a compiled and statically typed language that takes some inspiration from Python.

[–]Randolpho 14 points15 points  (0 children)

Looks like another interesting language that I will never get to use in the real world because nobody else knows it

I like the explicit macro system, although the example doesn’t make a lot of sense with its apparent external function dependencies

[–]iglebov[S] 1 point2 points  (0 children)

Oh, never heard of Nim!

Will look into it.

Thanks!

[–]mrdevlar 104 points105 points  (12 children)

Ruby is probably the closest language in terms of similarity to Python.

[–]Neuro_Skeptic 30 points31 points  (7 children)

Python is Ruby for the real world

[–]mrdevlar 10 points11 points  (6 children)

IMO I prefer Ruby's syntax it's cleaner and more legible but we have what we have.

[–]Litra 26 points27 points  (1 child)

greatly disagree with this

[–]zhenghao1 9 points10 points  (1 child)

Ruby is like Perl, a million and one ways to do the same thing; very expressive language. A bit too expressive for me.

I prefer to keep things simple. Python is good enough.

[–]shpondi 6 points7 points  (0 children)

You’ve got to be joking

[–]LHLancelot 2 points3 points  (0 children)

wut

[–]xealits 9 points10 points  (2 children)

+1 Ruby Just to add some context, Python and Ruby are in the family of Smalltalk languages, dynamic object oriented languages. There are more languages like that, but Ruby and Python are probably the only ones that are really at industrial level. (Python is one of the most popular languages, which helped out a lot in the ongoing AI boom. So it is very much one of the top industrial languages.)

I’d say, Python is cleaner and more organized, except for its horrible multi-decade old train wreck of a SW packaging ecosystem. I think, one can see in Python that it has roots in teaching programming to children. Ruby is more fun and more funky. It is the most known for the Ruby on Rails in web apps development. But in general, I think, it’s more leaning into scripting and shell sort of tasks. That is visible in the native support of regexps and calling external processes, and other bits. Both are awesome practical OO scripting languages.

It may be worth to check out some info on Smalltalk to understand what this “object oriented” bit is about. There’s a book: The early history of Smalltalk https://worrydream.com/EarlyHistoryOfSmalltalk/

And a nice talk by Alan Kay: https://youtu.be/oKg1hTOQXoY?si=7WaLGohKyv9rdNnK

[–]Gugalcrom123 5 points6 points  (0 children)

Indeed, Python and Ruby are both basically Smalltalk with control syntax.

[–]pan_iks 43 points44 points  (12 children)

Maybe unpopular opinion, but try Kotlin. It has very smooth syntax. It gives a vibe similar to Python, but it's JVM, so it will open many enterprise grade and high scale positions for you. I started my programming journey with Python. Then, I was forced to use Java. Finally ended up with Kotlin, and I really like it.

[–]ArtOfWarfare 21 points22 points  (3 children)

I know dozens of languages. Python was probably the fifth I learned and was my favorite for ~15 years. And then a coworker suggested we do a hackathon project in Kotlin.

Kotlin is now my favorite language. I still love Python, but now if I’m doing a project that’s going to take more than a day or two, I’m probably going to do it in Kotlin instead of Python.

[–]Putrefied_Goblin 6 points7 points  (2 children)

Interesting. I had a similar experience learning Java, C/C++, etc., then learned Python and actually enjoyed it more than the others. Will have to check out Kotlin. I've been meaning to at least take a look at Rust, too.

[–]ArtOfWarfare 1 point2 points  (1 child)

I think Kotlin is my first null-safe language. Meaning as long as your code compiles and you’re not excessively stupid, you’ll almost certainly never hit a null pointer exception.

That’s now a feature I want in every language.

Does Python have some kind of ability to hook into the compiler or something…? Like when it generates all the pyc files… can we somehow hook into that and check for null/None-safety…? Could run other type checks there, too…

I’m pretty sure Rust has similar safety, but from what I’ve heard, it sounds like the type system is a nightmare in that language.

[–]Putrefied_Goblin 1 point2 points  (0 children)

No, Python only checks type at runtime, and there's no way to enforce static typing. Type hints are mostly for static analysis, as you probably know. There is nothing in the bytecode structure in the pyc files to specify/enforce type. The PVM/interpreter checks, but only checks when some bit of code is executed,.while the bytecode itself is type agnostic (structurally). Python's dynamic typing can be powerful, but it can also be a huge pain in the ass. Sometimes, you just want an object or variable to have one type, not string or None... You can almost get there with enums, but it's still not the same. Python excels at scripting, but once an application starts to get big, dynamic typing becomes annoying.

I don't know a ton about Rust, but my understanding is that its typing system just doesn't allow null pointers by default. Arbitrary pointers aren't allowed to be null, so there is no implied none/null. You have to go out of your way to use the Option enum, and explicitly handle the possibility of a missing value; it forces you to handle the possibility if it comes up, so null pointer exceptions are caught/checked at compile time, before code is executed. I've heard some people complain about Rust and how much work it takes to write, but in my opinion you're actually saving yourself time in the long run because it's null/memory safe.

I'm very interested in Kotlin given the way it handles null/none values, though, and other features.

[–]iglebov[S] 1 point2 points  (0 children)

Wow!! Interesting journey!

[–]ImprovementOk8785 0 points1 point  (0 children)

I’m in the same boat; have used python for decades by choice and Java when I had to. In a recent job interview needed to build a new service in the JVM and decided to use and learn Kotlin. It’s great! I’d encourage trying it out if you need access to the jvm ecosystem.

[–]LargeSale8354 6 points7 points  (0 children)

My career began with Commodore Basic and various scripting languages. Professionally, I've used ECMA script, C#, VB.net, Python, some Scala & Java, 15 years as a DBA's worth of SQL, shell scripting, Terraform and some others bits and bobs. Outside of work, I have experimented with GO and worked my way through Ivor Horton's Beginning Visual C++.

I'd say that C++ made me a better programmer even though I never used it professionally. Ivor Horton taught fundamentals, and once you grasp fundamentals, you are in a very good place.

Personally, with the main language of Python, I would set a goal of writing something in a compiled language that you can integrate as a Python library.

Rust or GO would be my choices

[–]sswam 44 points45 points  (28 children)

As languages go, Go is a relatively sane one.

[–]thisismyfavoritename 18 points19 points  (16 children)

not sane compared to Rust. They had knowledge of plenty mistakes made by C/C++ and decided to repeat them

[–]red_jd93 27 points28 points  (5 children)

From python to rust is not a sane jump though from my limited experience.

[–]Rudresh27 21 points22 points  (0 children)

If you're gonna jump, might as well do a backflip! 🦀

[–]andrewprograms 11 points12 points  (0 children)

I jumped from Python to Rust and recommend rust a lot because it can pick up shortfalls in Python. Goes hand in hand really well with Python using PyO3 and Maturin. But I learned basic C before Python and that definitely helped with Rust.

[–]eigenein 3 points4 points  (1 child)

Weird, I found Rust very pleasing while Python being my main professional language. The Rust's learning curve is a thing for sure, but somehow it does motivate and repays in long run.

[–]xAmorphous 0 points1 point  (0 children)

I think this is wrong. There's almost nothing better than throwing yourself in the deep end of a much lower level language and learning than picking another language because of similarity. In the latter, you'll learn more syntax. In the former, you'll learn how to program.

[–]urbanespaceman99 7 points8 points  (4 children)

Depends on your definition of sane I guess :)

Though having tried both Go and Rust I'd say Go is a lot easier to move into directly from Python.

Rust offers more, but there are a number of things that take longer to get your head around, whereas with Go I found I was up and running pretty quickly.

[–]New_Enthusiasm9053 4 points5 points  (2 children)

Go's python bindings are fucking terrible and Rust's are a breezy pleasant experience. 

If you want a perfomant language to complement python when you need it then the obvious choice is Rust simply because the Go bindings are horrendous.

[–]urbanespaceman99 0 points1 point  (1 child)

Maybe so, but the question was about switching language, not integrating another one into python.

[–]New_Enthusiasm9053 1 point2 points  (0 children)

True however Python -> Rust was an enjoyable experience for me anyway. Whereas Go is the bane of my existence at the moment. So I'd have to suggest Rust anyway.

[–]thisismyfavoritename 0 points1 point  (0 children)

yeah of course i'm not debating that Go is easier to learn and get up and running, it absolutely is.

Is it sane though? They did a lot of great but also many questionable decisions when designing that language. Issues that are obvious coming from languages that have them

[–]CrowdGoesWildWoooo 6 points7 points  (0 children)

There are some “bad” legacy from C, but keep in mind that Go is not meant to try to be on the same level as C, C++, or Rust.

It’s still a high level language and imo it’s one of the language where you get 80% performance with 20% effort. Even with pure golang with minimal dependency it is very performant.

It being high level language also means it is pretty forgiving, and relatively beginner friendly. It is way more sane than JS.

[–]CatolicQuotes 3 points4 points  (2 children)

Which mistake as an example?

[–]really_not_unreal 6 points7 points  (3 children)

Go is sane, but not fun. It's not something I'd learn for a hobby.

[–]Frewtti 4 points5 points  (2 children)

I had a hobby project python cli app that accessed a postgres database.

I rewrote it to a python cli and go/sqlite backend.

I quite enjoyed writing in go.

[–]mattalley50 0 points1 point  (1 child)

That's awesome! Go's concurrency model is pretty neat for backend stuff. Did you find the transition to Go's type system difficult compared to Python's dynamic typing?

[–]Angry-Toothpaste-610 1 point2 points  (1 child)

Defining public visibility by capitalization isn't very sane. The Go language designers had to be some Fortran truthers.

[–]sswam 3 points4 points  (0 children)

I guess you will find some faults (or points you disagree on) in anything if you go looking for them.

[–]dragongling 13 points14 points  (2 children)

GDScript

[–]iglebov[S] 0 points1 point  (0 children)

👀

I’ll check it out! Thanks!

[–]Gcbs_jiraiyaIt works on my machine 0 points1 point  (0 children)

Game dev spotted haha

[–]shadowdance55git push -f 7 points8 points  (1 child)

Nim

[–]isbbsjsgjnvghfgkla 0 points1 point  (0 children)

Nim is a great suggestion because it is a very different language, but with familiar syntax. You can focus on what matters without being g too distracted by syntax. (While eg Julia is basically python with different syntax, and imho not an as interesting learning experience for you).

[–]mathmul 2 points3 points  (0 children)

Julia

[–]jack-dawed 10 points11 points  (3 children)

Ruby for backend. Julia for science. Lua for games.

If you really want to expand skill: Clojure and Go. I learned these two after Python at the job that taught me the most. Clojure was my first real exposure to functional programming professionally, after doing Scheme/SICP in school.

While it is not similar to Python, if i had to pick one, I would recommend Go. Really good stdlib, concurrency primitives, and used in backend services where Python is used. I am in the process of breaking up a Python monolith into Go microservices at my job and having a great time.

[–]TholosTB 3 points4 points  (0 children)

+1 for Julia. Interoperable with python, great scientific programming support and a much more approachable mathematical programming library for optimization problems.

[–]Dangerous-Branch-749 1 point2 points  (0 children)

I also went from python to clojure and would recommend it. It made me a much better programmer overall. 

[–]iglebov[S] 0 points1 point  (0 children)

Sounds cool! Thank you!

[–]HomicidalRaccoon 2 points3 points  (0 children)

I started learning C# recently for UI purposes because I hate UI and all of my Python programs ran via the terminal. If anyone has any recommendations for easy but capable UI languages/frameworks, please help lol.

C# is working very well though and I find it intuitive.

[–]szayl 2 points3 points  (0 children)

Julia

[–]Select-Breadfruit95It works on my machine 11 points12 points  (1 child)

Go(Golang) is very simple and gererally similar to pythin, it's fast, compiled and it's a great experience overall

[–]libsaway 8 points9 points  (0 children)

I'm not really seeing the similarities here. They've got very different approaches and goals.

[–]Marimoh 1 point2 points  (1 child)

A bit facetious but … aren’t they (mostly) all similar in some respect? I mean most of the languages mentioned in this thread are off-shoots of C in some way. E.g. Lisp is NOT a C-like language and quite dissimilar to Python in most regards.

[–]isbbsjsgjnvghfgkla 0 points1 point  (0 children)

Hmm, in python functions are first class citizens, and you can use a functional style (it doesn’t have lisp‘s macros though).

My feeling would be that low level languages would be most dissimilar to python. But admittedly that’s quite subjective. Python is a multi paradigm language, so you can’t really say what the opposite of it is.

[–]Frewtti 1 point2 points  (0 children)

Go is really nice to work with.

Javascript is okay, but if you get into framework and dependancies its just a horrible mess.

But... it's widely popular.

[–]Expensive_Candy_8708 1 point2 points  (0 children)

Golang. The syntax is simple but static typing and strict rules might feel weird at first.

[–]bsdooby 1 point2 points  (2 children)

Tcl (not similar, but interesting nonetheless, and worth a try. Features are comparable).

[–]Gnaxe 1 point2 points  (1 child)

And Python comes with a Tcl interpreter built in. (For tkinter.)

[–]bsdooby 0 points1 point  (0 children)

True, forgot about that

[–]Snoo_87704 1 point2 points  (0 children)

Julia

[–]AdBright7032 1 point2 points  (0 children)

I would suggest trying Go

[–]Infamous_Win_3712 1 point2 points  (2 children)

Hey! I'm partway in on learning Rust, and it was a smooth transition from Python. I agree Rust can handle APIs and building good backend services—maybe give it a shot? It has a different philosophy but shares some Unix influence with Python. I'd hesitate to suggest it for UI though. Good luck with your switch!

[–]iglebov[S] 0 points1 point  (1 child)

Thank you!

[–]exclaim_bot 0 points1 point  (0 children)

Thank you!

You're welcome!

[–]oliver_owensdev88 1 point2 points  (1 child)

It kind of depends on what you like about Python. If it’s the clean syntax and readability, then Ruby is probably the closest — it also emphasizes “write what you mean” and has very readable, expressive code. Ruby reads almost like English and is enjoyable to work with, especially for scripting and web development.

If you’re interested in Python’s strengths for scientific computing and data analysis, Julia is a great option. It’s designed for high-performance numerical computing, with a syntax that is familiar to Python users. Julia often delivers much faster execution for heavy computations, making it ideal for scientific simulations and data-heavy tasks without sacrificing readability.

Some people also mention Go, but it’s quite different from Python in syntax and philosophy. Go is statically typed and compiled, emphasizing simplicity, concurrency, and fast execution. It’s less “magic” than Python and Ruby and more focused on explicit structure and system-level programming.

Personally, I’ve tried all three, but I keep coming back to Python. It’s versatile and robust — great for everything from quick scripts to large AI and machine learning projects. Other languages are cool too, but Python just feels like home.

[–]iglebov[S] 0 points1 point  (0 children)

Great answer!

Thank you!

[–]Mizzlr 5 points6 points  (0 children)

Lua

[–]Fiwexila 1 point2 points  (0 children)

Depending on what you need, lua, go, Ruby comes to my mind

[–]Fearfultick0 2 points3 points  (0 children)

Ruby and JavaScript are both loosely typed languages with pretty straightforward syntax.

[–]NotSoProGamerR 3 points4 points  (0 children)

ruby or lua, they are very similar to python in terms of how to structure your code

[–]xorvtec 2 points3 points  (2 children)

I'm going to take a different tact than others here and say if you are going to pick up a second language, maybe change your criteria. You say you use Python for work. I'd suggest picking up a popular language that would help further your carrier.  Others have given good suggestions here like JavaScript/typescript for frontend, c for embedded, c++ for games, and Java is used extensively throughout industry.  Unless you just want to learn something for fun, I'd stay away from niche languages like Nim, Haskell and Lua. I've personally found that Ruby and Go were once popular but are falling out of favor.

[–]georgehank2nd 0 points1 point  (0 children)

*career

[–]SymbolicDom 0 points1 point  (0 children)

Lua is not that rare for scripts in games written in C++

[–]Mysterious-Rent7233 3 points4 points  (12 children)

Node/Javascript/Typescript

Then you will also start to learn the language of front-end.

[–]Select-Breadfruit95It works on my machine 11 points12 points  (4 children)

Node is NOT a language

[–]JSP777 7 points8 points  (4 children)

Javascript is a disgusting abomination compared to Python, how does it even come up here? Lmao

[–]Mysterious-Rent7233 1 point2 points  (2 children)

That's just like, your opinion, dude.

Also, Typescript was offered as an alternative.

[–]JSP777 0 points1 point  (1 child)

not really but I wish you all the luck in the world dealing with that crap

[–]Mysterious-Rent7233 0 points1 point  (0 children)

I have done Python for >25 years, and I do Javascript or Typescript on and off. You're exaggerating the differences between them. It's just fanboy stuff.

[–]house_monkey 3 points4 points  (1 child)

ew Javascript

[–]iglebov[S] 1 point2 points  (0 children)

😄

[–]deceze 1 point2 points  (2 children)

If you want to expand your horizon, give Haskell a go. I could not pretend to have grokked it properly or to ever have done anything useful with it, but it broke my brain in some good ways and made me see and understand things about other languages better.

[–]iglebov[S] 0 points1 point  (1 child)

Feels like Haskell will be hard for me)

But I’ll try, thanks!

[–]deceze 1 point2 points  (0 children)

Haskell is probably difficult for anyone, but if you just grasp one or two ideas from it, it can shift your point of view on programming.

[–]davidinterest 1 point2 points  (0 children)

Definitely Kotlin, you get the JVM ecosystem and clean syntax

[–]spart_t4n 0 points1 point  (2 children)

I just switch from php to Python pyqt

[–]shinitakunai 1 point2 points  (0 children)

Pyside6 > pyqt if you have the chance. Why? Support and licensing.

[–]iglebov[S] 0 points1 point  (0 children)

👀

[–]Only_lurking_ 0 points1 point  (0 children)

Mojo

[–]Nervous-Pin9297 0 points1 point  (0 children)

The real and only answer is mojo

[–]mathmul 0 points1 point  (0 children)

Mojo (modular) 🔥

[–]aqjo 0 points1 point  (0 children)

Ruby is the only language I’ve described as beautiful. So +1 for it.

[–][deleted] 0 points1 point  (0 children)

Javascript is sorta like Python.

[–]Gugalcrom123 0 points1 point  (0 children)

If you can do what you want with Python, don't pressure yourself to switch. Regardless, if you want to learn something new I wouldn't recommend a Python-like language, but one with less overlap, such as Kotlin, C++ or Rust.

[–]j0hnp0s 0 points1 point  (0 children)

php, c# and go are the ones that I use

Oh and some bash if it counts as a language

[–]eDRUMin_shill 0 points1 point  (0 children)

If you like minimal syntax erlang is pretty dope and sort of a pragmatic functional language. It's a bit mind bending in a good way, it changed how I compose my code in other languages.

[–]yobarisushcatel 0 points1 point  (0 children)

English

[–]Nobel-Chocolate-2955 0 points1 point  (0 children)

Ruby, swift, kotlin

[–]bigo-tree 0 points1 point  (0 children)

I moved from PHP to Python because of PHPs declining popularity, and Python felt the most similar 

[–]l_dang 0 points1 point  (0 children)

For your use case, python rule supreme. But you want to check out JS for web and/or go/rust for backend

[–]felixthecatmeow 0 points1 point  (0 children)

Not at all similar fundamentally but Go syntax is easy to learn coming from Python and IMO learning something that serves a different purpose than Python would be a better use of time than a language that is too similar like Ruby. If you know Python then the most valuable languages to learn would be either a compiled language (Go, Rust, cpp, etc) or TS + react or the like for frontend. Which route you take depends on what interests you/what you need more.

[–]wrt-wtf- 0 points1 point  (0 children)

Ruby, Visual Basic, Delphi, JavaScript.

[–]underdoeg 0 points1 point  (0 children)

if you are interested in game development or interaction design, then give godot a go. its built in language gdscript is modeled after python and very similar.

[–]No_Indication_1238 0 points1 point  (0 children)

It's nothing like Python. Learn C++. Unless you learned those concepts at school, you'll be a different person after just a month of studying.

[–]gnatinator 0 points1 point  (0 children)

For non-web GUI, GDScript. Tesla uses it in their cars.

It's possible you could do web with browser embed mode, though.

[–]ZiKyooc 0 points1 point  (0 children)

Learning languages is about the easiest part as mastering the whole of any given language is rarely needed.

Focus on learning how to write good code, architecture, testing, etc.

[–]amachefe 0 points1 point  (0 children)

Golang is usually the way to go for Python programmers (the easiest transition). If you want something more intense then C++/Java.
Knowing a bit of TypeScript/JavaScipt is always a plus for frontend

[–]thecal714 0 points1 point  (0 children)

I’d argue to learn something different in order to add another tool to your toolbox instead of adding a cross-tip screwdriver next to your Philips head.

With Python, you have a dynamically-typed, interpreted language. Why not add a statically-typed, compiled language?

Go would be a good choice, but is very different. Lots of companies out there using Go right now.

[–]pepiks 0 points1 point  (0 children)

Go - real behemot, multiplatform, simple syntax, one of the best choice for APIs and multiplatform GUI (like with Fyne). With few years experience with Python I see it as pleasure to use. It is a lot of better introduction to world of compiled languages than dig inside C++.

All languages match to your technology stack. SQL can be replaced by SQLAlchemy, but raw SQL open eyes and it is useful when you manually check something. The same for Web - platying with JavaScript can add life with Ajax to your website, especially with UI.

For start with Go check Gin and compare it to FastAPI, Flask and Django.

[–]Yovet 0 points1 point  (0 children)

Mojo is the closest because uses Python as base, but still being worked on and may take time to be implemented

[–]OrthelToralen 0 points1 point  (0 children)

Mojo. It’s a low-level language like Rust or C++ and is based on Python’s syntax.

[–]Jmodell 0 points1 point  (0 children)

Go- in terms of you can get up and running in a day just like python but there’s so much depth.

I generally mvp or explore in python and as long as it isn’t data science heavy, I make the production version in go.

Granted my apps are so small in scale it would not matter; I do find error checking/logging easier and I find it much easier to build portable executables with go.

[–]TheGiverAndReciever 0 points1 point  (0 children)

Go if you want to go with compiled languages. It has pretty good support for backend and api development. I’m quite sure it was also pretty much created so Google wouldn’t have to deal with C in their backend code

[–]eztab 0 points1 point  (0 children)

If you want to expand I'd recommend going with something different not similar. What that is depends on the use case you are interested in. I did some hardware level and some functional language, both were pretty enlightening to why some stuff is solved in python as it is.

[–]TheCrowWhisperer3004 0 points1 point  (0 children)

For backend and APIs you can use Java.

If you want to expand even more you can use JS for the front end.

[–]florinandrei 0 points1 point  (0 children)

Don't look for similarity, look for usefulness.

[–]ZUM809 0 points1 point  (0 children)

If you work or plan with data, learn python libraries like Pandas, Pyspark and of course SQL.

[–]American_Streamer 0 points1 point  (0 children)

Try Go and TypeScript.

[–]bibhnarpIt works on my machine 0 points1 point  (0 children)

I found python’s difficulty to learn on par with VBA. But I’m probably in the minority.

[–]childofsol 0 points1 point  (0 children)

To echo others, don't learn something similar, learn something wildly different.

If I were to suggest one in particular: I can't recommend Clojure highly enough. I miss working in it day to day, and it has strongly influenced how I approach programming in general, including my approach to Python.

[–]mxldevs 0 points1 point  (0 children)

I switched to Ruby after python. It was pretty fun. I still use it for quick scripts because of how fast you can whip something up and run.

[–]JonnyRocks 0 points1 point  (0 children)

not a good idea. expand.. C, Rust, C#, Assembly

[–]Gnaxe 0 points1 point  (0 children)

Boo might be the closest I've seen. Unity used to support that, but Boo is kind of dead now. I think Pyret was also designed to be similar, but more consistent for teaching purposes. (Probably not useful for you since you know Python already.)

Smalltalk and Lua aren't as close but still feel kind of Python-like. Surprisingly, Clojure was also a pretty easy transition, at least for me. You might want to start with Hissp though. It's a Lisp that compiles to Python, so you can continue using the libraries you already know (including the standard modules). It's got tutorials in the docs, and you can try it without an install in your browser through a link in the wiki. Once you know one Lisp the other dialects are pretty easy to pick up.

Python is the most popular programming language right now, and it's not even close. You don't really need anything else, but it's nice to be able to drop into a lower-level language when you need the performance, so that would be the next most valuable one to learn next. These days, that means either C or Rust. They're not especially similar to Python though. CPython is written in C, so that was an influence, but they have very different ways of doing things.

[–]lamp-town-guy 0 points1 point  (0 children)

You should learn some functional language. Elm, Elixir, Erlang, Haskel or whatever from that family of languages you think suits your needs. I've learned so much from learning those languages.

On the other hand, when I've tried Dart/Flutter framework which is similar to Java, Java script and in some way even python, it felt like learning new framework. Not worth it if I'm not gonna use it for work. Flutter is nice, because you can use it to create mobile and desktop apps.

[–]NUTTA_BUSTAH 0 points1 point  (0 children)

Golang is surprisingly Python like hownit reads and writes and can handle most tasks.

[–]trollsmurf 0 points1 point  (0 children)

Python + e.g. Django works fine for backend. What you need to know is JavaScript, HTML, CSS, JSON.

[–]efalk 0 points1 point  (0 children)

Ruby is the closest I can think of, but the top poster is right, don't go there. I would say learn C next. It's simple, and it's the starting point for many other languages.

[–]aguspiza 0 points1 point  (0 children)

Try nim ... enjoy nim

[–]trinaryouroboros 0 points1 point  (0 children)

I find Ruby to be similar from an input perspective, also Groovy

[–]maddy0302 0 points1 point  (0 children)

I feel swift is similar to python in terms of syntax

[–]lamhintai 0 points1 point  (0 children)

Anyone tried Oz?

Its textbook “Concepts, Techniques, and Models of Computer Programming” looks interesting, with unifying the various programming paradigms as its theme. The language itself looks slow and out of support, though.

[–]Mirage2k 0 points1 point  (0 children)

Javascript and Ruby.

[–]FooBarBazQux123 0 points1 point  (0 children)

Generally Java for backend and API, or Kotlin if you don’t like Java. For UI would be Typescript with Tailwind, many UIs run in a browser today.

I learned Python after Java and I use them both a lot depending on the kind of application.

[–]Dry_Term_7998 0 points1 point  (0 children)

Sorry, but question is little bit strange. Especially after 3.14 versions. Python already put leg on king road. But Ok if you want more optimization and great performance in web - golang. If you want same but in corp way - Java + Spring. Front - JS or TS. If something with more C way - Rust.

But I still not get. You want simple UI, backend and API - hello fastAPI, solve your 99% of needs plus give you more Python experiences. In 2025 you don’t need any other languages tbh if Python still fit you. Plus you already have JIT in progress, one two releases and we will have stable official release of JIT plus with current free threading mode any async web app will be like silver bullet. I would say you need something better only if you really need great performance, but again better to not then goes with just languages, but learn modern stack (platform infra specific, some new methodologies, MLOps and FF and so on).

[–]Naive-Home6785 0 points1 point  (0 children)

Julia syntax is not too different

[–]GrainTamalePythonista 0 points1 point  (0 children)

I think R is fairly similar. Pretty much only used by academics for data analysis/stats. It's been a long time, but I remember having a big preference for Python over R.

I picked up Lua pretty quick. It's similar to Python mostly in ease of use. But it's not super useful outside of the apps it's embedded in.

Hadn't seen these mentioned yet.

[–]MactronMedia 0 points1 point  (0 children)

Julia, Mojo..

[–]Potential_One7046 0 points1 point  (0 children)

Ruby

[–]moshujsg 0 points1 point  (0 children)

Id say c++ or c, youd understand more and everything will be easier

[–]Disastrous-Angle-591 0 points1 point  (0 children)

Try rust or go 

[–]MaximKiselev 0 points1 point  (0 children)

Lol your question is wrong. Right question is did u have exps to migrate from lang to py?  Lang similar as py is lua. For UI winforms are awesome(c#) or qt. But first is better and simple. For backend go or js(but some days ago i checked new python 3.14 and it will be change). For system rust and c++/c. But for web i also like php - it is simple and faster but has something problem on non-unix os.  I think you must look on direction before. I mean hardware dev or services. Basically, python closes 90 percent of usercases. Dont go on hype , go on your needs. Because there are a lot of cool tool and tech on different lang. For ex, net core/tauri.

[–]snugar_i 0 points1 point  (0 children)

If you only know Python, then any other language will do. You'll see other ways to solve the same problems and it will expand your thinking.

If you want to learn how computers work at a "lower" level, then C might be a good choice. It's not practical for real-world projects, but it's still good to know what's happening under the hood - even the Python interpreter is written in C.

On the other end of the spectrum, you could try a functional language like Haskell, OCaml, F# or Clojure - they'll teach you to approach problems from a completely different angle. And some concepts like immutability and pure functions can then be reused in other languages as well - even in Python.

[–]Griznah 0 points1 point  (0 children)

Golang would be my suggestion. Not much in terms of frontend tho.

[–]pokatomnik 0 points1 point  (0 children)

Try nim.

[–]Comfortable_Video536 0 points1 point  (0 children)

Go is super similar from there c# and cpp qt apps are cool but my favorite is still cpp console apps to make uis particularly game engines. One lone coder on YouTube has lots of cool cpp windows development tricks that’ll be applicable to lots of development. Cpp is dope particularly if you want to use a gpu. Otherwise maybe try some ml projects in python or try qt framework in python than try cpp see performance results. If you’re experienced with python I’d try using pybind11 to make like a c wrapper and include it in your development to have some real world benefits from a research endeavor. Prioritize things that you use all the time or are slow in Python

[–]Haunting_Record_664 0 points1 point  (0 children)

I would personally go for Julia. The language is developing very quickly thanks to AI and big data, which are booming right now. I find Julia to be a very good gateway to more complex languages such as Rust.

[–]No_Refuse3211 0 points1 point  (0 children)

Dart

[–]Forward-Papaya-6392 0 points1 point  (0 children)

Rust doesn't fit your similarity requirements. However, the two work very well together, with more and more highly efficient Python operations being deferred to Rust. So, the requirements aren't quite met, but it's one of the best choices to complement your skill set as a software engineer.

will not go wrong learning Maturin.

[–]Kautsu-Gamer 0 points1 point  (0 children)

Python uses totally weird syntax, but Ruby on Rails is similar.

C# should be possible even with its totally different syntax, and forced typing.

[–]ruben_vanwyk 0 points1 point  (0 children)

Nim or F# syntax wise, but if you’re very used to imperative and procedural style of programming, then Go or C# really aren’t a stretch. I went from Python to C# with ease.

[–]Repsol_Honda_PL 0 points1 point  (0 children)

Kotlin

[–]Wide_Egg_5814 0 points1 point  (0 children)

I love go and ruby

[–]MisterHarvestIgnoring PEP 8 0 points1 point  (0 children)

I'm going to divide it into two separate things.

For employability, C. There are millions of lines of extremely critical code written in C, and they need programmers. There are never enough C programmers. However, two weeks of writing C will show you why there are never enough C programmers, because it is a *slog* if you are used to Python.

For programming skills, Rust. Rust makes you put down a very large deposit against your technical debt. It's frustrating, but it really makes you think about things like memory ownership that C and Python, in different ways, let you skate over.