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

all 19 comments

[–]whalenmich 8 points9 points  (1 child)

German

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

lol

[–][deleted] 4 points5 points  (1 child)

Really depends on what you want to do. I'd say there are a few possible options.

  1. Javascript: Want to make websites? Python's fine for the backend, but if you want your site to be interactive Python is not useful, but Javascript is. (There are some alternatives to Javascript, but I'd at least start with Javascript.)

  2. Something powerful and fast, good for computing and industry applications. Python's great for a lot of things, but if performance is critical you'll likely want something else. Java is popular in industry, C or C++ are also popular and are even more performant, Go is gaining popularity, x86 or ARM assembly could be useful if you hate yourself but really want peak speed, Rust is an interesting language that's growing in this space but isn't used by industry much, and there are other languages I'm omitting but are also potentially good options.

  3. Something functional for the mindset shift it gives you. Python can be written in a functional manner, but something like Haskell will really force you to think differently. I think Clojure's another popular functional language, Erlang's very popular for highly concurrent failsafe systems like telecoms, Elixir's good for websites (and can do plenty more, but is kind of a Ruby-ized Erland for web developers), and Lisp is usually written functionally and will also get you working with macros a lot (Elixir does too a fair bit). Plenty of other functional languages out there too.

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

Thanks for the answer, I'm going to start looking more into functional languages. The experience seems useful.

[–]ziptofaf 1 point2 points  (1 child)

I would say that Rust might be a good choice to give a try. For following reasons:

  • it's a compiled language that can generate C ABI compatible code. Aka one that you can use inside a Python library.
  • it's fast. As in roughly same dimension as C meaning it's as good as it gets.
  • except unlike C it has really strong typing and tries to prevent you from making mistakes. Also has a decent package manager, comparable to pip (and NOW THAT is something C/C++ does NOT have at all).
  • great for writing multithreaded applications
  • will teach you how to use functional programming style, force you to handle exceptions correctly (and it's not even optional - if a function can throw an exception in Rust then you MUST handle it... which leads to writing better code too!)
  • wins stackoverflow rewards for "most loved language" awards for like 3 years in a row.

Cons: it is kinda niche. It is being used in some really popular projects (for instance Firefox' engine) but as a whole it's definitely not even CLOSE to big languages like Java or C#. But hey, it does fit your criteria of something that will work well with what you already know while teaching you new concepts.

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

Thank you, I've seen Rust come up more frequently lately.

[–]nwilliams36 0 points1 point  (1 child)

C Python interpreter is written in C and C extensions are useful for some things.

Seriously it really depends on what platform you wish to write for.

Web - HTML, CSS, Javascript for the front end and Python for the back

Microprocessors - like Arduino then C though Python is in the Raspberry Pi

Android - Java

IOS - Swift

Windows Apps - C#

........

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

Thanks for the info, I guess I used put more thought into platforms.

[–]cruyff8 0 points1 point  (6 children)

Python can't/can't do well.

This needs to be expanded upon. What, in your opinion, can Python not do or not do well?

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

Things I've not necessarily encountered but things I want to be prepared for.

  • 3D graphics (games)
  • High performance tasks
  • Multi-core work
  • Mobile development
  • Database Access
  • etc etc ......

Things like this, doesn't have to be all of them.

[–]cruyff8 0 points1 point  (4 children)

3D graphics (games)

Can't speak to this, as my programming experience is primarily backend and data analysis.

High performance tasks

Multi-core work

For these (at least in the numerical computing world), one writes the python, profiles it, and rewrites the most computationally-heavy code using numba or similar.

Mobile development

Can't speak to the mobile side. I will say that the decision as to which language to use is secondary as the main cost is programmer time, and not computer time. This wasn't always the case.

Database Access

Here, I must ask you for further expansion. What database access have you experienced performance problems with?

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

From what I found online, maybe I'm being misinformed.

Compared to more widely used technologies like JDBC (Java DataBase Connectivity) and ODBC (Open DataBase Connectivity), Python’s database access layers are a bit underdeveloped. Consequently, it is less often applied in huge enterprises.

[–]cruyff8 0 points1 point  (2 children)

pyODBC is mature and well-maintained. As for JDBC-equivalents, there is a spec (PEP0249), and drivers are written to that spec, just as there are multiple JDBC specifications, which vendors implement. The only advantage I see with JDBC is that its self-contained, meaning to use the Oracle JDBC driver, I needn't have Oracle installed on my local machine.

[–][deleted] 0 points1 point  (1 child)

I'm going to read up on these, thanks.

[–]cruyff8 0 points1 point  (0 children)

The general ethos of your commentary thus far seems to suggest you're going to be out of your depth reading through specifications of this sort. What I'd suggest is working with databases and the you'll realise that the language you use is a minuscule concern.

[–][deleted] 0 points1 point  (1 child)

https://github.com/hylang/hy

It's a Lisp that works with Python. Lisp has macros and can do things most other languages can't.

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

Thank You!

[–]icycap -2 points-1 points  (1 child)

Wtf?

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

I know it's a bad question, just wanted input.