Python Forum
Killer features/libraries of various languages
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Killer features/libraries of various languages
What's a strong reason to use a particular language? For python, there's a strong argument for ML (pyTorch, TensorFlow, etc), or scipy/numpy. Either a feature of the language, or a library that's best-in-class, and single handedly drives users to that language. Something that you might say "I really wish I could do X, but I'm not using language Y".

I'll start with linq from c#. It's very similar to SQL, in that you describe the data you want, and where it comes from, and the backend figures out how to get that data for you. Linq, in particular, I think is very clean and well done.

This might not be true anymore, but Rails was a huge draw to Ruby. These days, the framework you use matters significantly less than it used to (just throw a caching layer in front of the app, and 99% of the time that's all you have to do to solve performance issues).

What do you think?
I can't count the number of computer languages I have used (over 100) in my 52 year career. But I usually pick the one that is going to:
  • Be available to the largest audience
  • Have a large set of extensions that cover a broad range of subjects.
  • Have suitable, comprehensive multi platform editors (IDE's preferred) that support the language.
  • Not necessarily a condition, but easy to learn is a plus (used C for many years, and not so easy to learn)
  • Has been in use for at least 5 years, with popularity growing, not declining.
  • Most likely many more criteria that I can't think of now, so leave open ended.
I used to hate that at the beginning but Java's strongly-typed data object strategy is paying off HUGELY.

Once I started writing critical programs, in tight schedule, with all sorts of coders involved, it makes so much sense.

I remember my first "aha" moment. When I was writing my first really complex program (I mean, it wasn't super complex but it had to be done from scratch, as there was nothing like it at the time): So, I was coding and noticed how the language steers me towards creating representations of the real stuff that my program handles.

I really wanted to keep everything as strings jumping between static methods... But kept reaching these situations where it's so much redundant code everywhere that I can just define a type and handle things "in one place"... But then when I started putting THIS type together, it didn't make sense without THAT type too... So, I noticed about half of my time budget went on just creating types and methods that nothing is yet using... I got scared and though I'd have to stay after work to actually put things together into an actual solution!

But... The moment I lined all my types in a row... I was like... Wait, all I need is this little trigger here and things will just work... But that can't be true, can it?
I tried, it worked and we are using this project, with those initial types and nothing new, for two years now Cool

And now I actually like how Java tries to enforce people to represent reality in object types

Although that is not necessarily a Java "feature" - I bet C# is very much that way (although I don't know, I never really programmed in C#)...
Then again, nothing about TensorFlow is inherently "Python". It could have been a Java library just as well (I think?)
oh, and (again, not a feature) the fact that pretty much everything is implemented in C is kinda awesome for C :)

Honestly, I don't think any of those new languages have a *Language* feature that makes them super special. It's all a popularity contest and, well, no one is going to start writing a critical library in multiple language... They are going to choose a language and then flesh out the library... And the chosen language becomes the "favorite" of people using that library, because the library is popular, not so much the language.

Actually, I thought that Prolog would have been the language of choice for all the ML going on right now with Python.
Prolog actually forces you to think about branching out possible outcomes and then backtracking to the one that is "true". I did quite a bit of work back then with Prolog which I think now is pretty similar to ML.
Guess the ML guys just wanted to do it in Python and the rest is history...
I think you're Barking up the wrong tree.

If you like Java, it's a fine language, stick with it.

As for myself, after 54 years of programming (started in 1968), and using a good percentage of all languages ever written, I am quite happy with python, probably for the rest of my programming career.
I think the nature of this question was essentially to bark all sorts of trees :)

I actually wanted to start my career with Python but, at the time, Java was much bigger.
Now, I am kinda stuck with Java, as my Java level is so much higher than my Python level and I am not in that stage of my life where I can take a financial hit for doing the things I like :)

It's fascinating to witness the life-cycle of a language in real time.

I actually started with Prolog, which has this really cool predicate system. Pity it didn't turn it into the ML beast it could have been.

Then, I continued with COBOL, which, to answer the question, is the "Python" of the CICS ecosystem. CICS is very much still a HUGE thing. Any financial thing that is not cash is most likely being processed by a CICS system right now.
Heck, even your ATM is likely to be managed by a CICS server.

But, as COBOL was once the Lingua Franca of programming and now is kind of a running gag... So is Java, in my opinion, getting phased out (for no particular reason other than NOT being "that fancy shiny thing everyone is talking about").

Python will too, I guess a few decades from now, be kinda "we can't hire young bloods, all the new graduates want to do _____ now" (even though Python is older than Java)
Python is actually older than Java:

1st release of Python: Feb 20, 1991
1st release of Java: Jan 26, 1996
" (even though Python is older than Java)"
I worked on OSX 10.4.6 to 10.8 with RealBasic (Xojo) and was happy with it.
After I switched to Linux, Xojo was no longer useful because the IDE is very slow under Linux.
Python is ideal for me because I can also use it for Qt and Gtk.

And little things (parsing, replacing, etc.) can be done quickly with Python.
I've been looking into Erlang recently, and one really cool thing it has built into the language itself, is distributed processing. As a language construct, you can pass messages not only between processes on a machine, but running processes on separate machines.

From a function's perspective, there is no difference at all between a function running in the current process, or one running on a different machine. I think that's really cool.

Possibly Related Threads…
Thread Author Replies Views Last Post
  How many languages do you use. Jan_97 5 1,219 Feb-24-2020, 08:57 PM
Last Post: ndc85430

Forum Jump:

User Panel Messages

Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020