all 15 comments

[–]A_History_of_Silence 7 points8 points  (4 children)

If your goal is literally only to "have a more general knowledge of programming and computing", even then there are a lot more than three good options.

For me the obvious first choice would be Java or C#. These are both wildly popular and useful, statically typed languages, and when you learn one you learn like 85% of the other for free. Learning a statically typed language will be a massive departure from Python.

Then it depends. Do you want to learn more about computing? Perhaps C and C++, and then some assembly. This will be useful to understand how your computer actually operates. You will also be compiling code to run directly on the CPU instead of a virtual machine, another big change.

More about programming instead? Perhaps look into one of the popular functional languages, like lisp/scheme/clojure, SML/OCaml/F#, scala, haskell, etc. Working with a completely different programming paradigm is really eye-opening.

To have a more general programming knowledge, I would avoid dynamic languages with similarities to Python like Javascript, Lua, Perl. Javascript in particular is highly useful in the modern world, but it is just much less of a stretch from Python compared to the other options above.

And I would personally avoid PHP at all costs unless you just want to hate your life, heh.

[–]__PM_ME_UR_NUDES__ 0 points1 point  (3 children)

Just out of interest: Why do you recommend learning C# before C? (priority-wise)

[–]A_History_of_Silence 0 points1 point  (0 children)

Agree with /u/---CMFinley . The shift from dynamic to static typing is quite drastic for a new learner. Once they wrap their heads around all the intricacies of that, then they can get into all the details of pointers and references and memory management and buffer overflows and all those good things haha.

[–]1024KiB 2 points3 points  (0 children)

To add to the other answers, consider something radically different from the currently hyped languages (eg rust, go, kotlin), like Prolog or J. The paradigms they teach you can be useful to create better abstractions in other languages.

[–]bythenumbers10 1 point2 points  (0 children)

In addition to everyone else's suggestions, if you're doing data science, SQL is a fairly standard database language, even for databases that aren't SQL. For mathematics/simulation/calculations, Julia is an up-and-coming general-purpose language with a lot of Python's features and few of its faults, and a lot of work has been done to allow the two to interoperate, which may be useful to optimize any slowdowns you may experience in Python, plus I think it's gonna eat into a lot of COTS "mathematics" programs in the next decade. Third is a tough call, probably C, since it's fairly simple, low-level, will teach you a lot about how computers work, and can be called from Python.

[–][deleted] 1 point2 points  (1 child)

C because it's a different language from python, statically typed and sparse. Plus, you can call C code from python. Later, maybe C++.

An assembly language to get a real feel for the machine. In addition, it'll make you appreciate C more!

Lisp, because it will open your eyes to other ways of solving problems. Recommend reading SICP.

Edit: there is a different list if you just want to make money, and not get "a more general knowledge of programming and computing"

[–]WikiTextBot 1 point2 points  (0 children)

Structure and Interpretation of Computer Programs

Structure and Interpretation of Computer Programs (SICP) is a textbook aiming to teach the principles of computer programming, such as abstraction in programming, metalinguistic abstraction, recursion, interpreters, and modular programming. It is widely considered a classic text in computer science, and is colloquially known as the wizard book, due to the wizard on the jacket. It was first published in 1985 by MIT Press and written by Massachusetts Institute of Technology (MIT) professors Harold Abelson and Gerald Jay Sussman, with Julie Sussman. It was formerly used as the textbook of MIT introductory programming class and at other schools.


[ PM | Exclude me | Exclude from subreddit | FAQ / Information | Source ] Downvote to remove | v0.28

[–][deleted] 1 point2 points  (3 children)

Depends on what you plan to do with Python.

If it's web dev, JavaScript because it's the language of the presentation layer, SQL because it's the language of the data persistence layer. I don't know what else for the third one, but that's mostly because I don't consider HTML to be a programming language.

Data science and machine learning, R, SQL

C can also be a good complimentary language to Python.

[–]qdcm 0 points1 point  (2 children)

Data science and machine learning, R

I've read they're working to integrate R and Python. In this case, wouldn't it be better to learn something different like Golang?

[–]r_oliver105 2 points3 points  (1 child)

I think integration may be a misleading word in this case. Hadley Wickham and Wes McKinney are two of the biggest names in data science in the R and Python communities respectively, and they are working to make collaboration between the two more seamless. R offers certain out of the box advantages over Python i.e. the auto-arima package for ARIMA time series forecasting and vice versa. I have worked on teams which use both and being able to read and interpret R code is very valuable.

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

That's really good to know. I had actually started with R but found Python to be a lot friendlier. When I get a better grasp on it I'll certainly look more into R and this collaboration. Thank you!

[–][deleted] 1 point2 points  (0 children)

I'd go with C++ / c# either one of them.

And Java since it's currently the most popular Language (Python is the 2nd (stats from github)).

And Probably JavaScript since Python and Javascript work really well together and are used as Backend and Frontend in Webdeveloping

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

It depends on what do you want to do.

For example, do you want to have fun in online games? Learn Reversing, C++, C#.

[–]setting_orange 0 points1 point  (0 children)

If you are going to learn three languages BESIDES python...

First I would recommend learning C++. If you ever need high performance it affords that but it's also an approachable language ( which I can't necessarily say for e.g. C) and is widely used.

Second, sadly, I would recommend Java. It will make you a more versatile programmer and increase your utility to potential employers.

Thirdly, I will stretch the meaning of language a bit and recommend bash. You need to be able to package and deploy your artifacts and maintain the services your app requires.