Been doing a lot of coding in python lately. While some of the hackability of the language is nice for doing some cool things, overall, I cant say im a fan. Its a little too obscured for writing algorithms where effiency is important. Its hard to tell what data types are truly backing various variables and thus makes it tricky to pick the right implementation. I think im working with raw arrays and they turn out to be linked lists or worse. Even then things like a "Dict" isnt always clear if its a Tree implementation or a hashmap implementation or something else entirely.

Granted this isnt an impossible task, I have managed to figure it out by pulling open the source code of the libraries I call and using profiling tools. But python seems to not care or obscures a lot of that.

@freemo I think that python is optimised for reducing *development* time. It's good for when you need to do something quick-and-dirty, the sort of thing where you need to only ever run it once or twice and you're really not going to be stretching the processing or memory bounds of the computer. The sort of thing where it's important that the code be readable, because there's a good chance that if you ever want to run it again, you'll need to tweak it a bit, first.

And in that narrow domain, it's really very good. But outside of that domain, it's probably not the best choice...

@ccc

While I might agree that it is geared towards shorter development time it seems odd to me it finds so much use in scientific circles considering its not well suited for it.

Also I think readability can be interpreted in different ways here. I'd say due to the ability to hack code it really isnt very readable in a meaningful way. You can look at code and have no idea what it is **really** doing and can be rather difficult to find out. thats the opposite of readability in my mind.

The only way I sorta see the readability thing is just with the tabs and the syntax it might be easier to scan lines of code, but thats a small part of readability in my eyes.

But I do agree that it does a fine job at minimizing single-developer start time on small projects where performance doesnt matter.

@freemo Python is used in a lot of places that it is not really all that well suited for. This seems to be largely because someone discovers how great it is with short, quickly coded, demonstration problems - which is where it is at its best - and then starts trying to use it for everything.

Now, it can *do* just about everything; and having a shorter development time is a solid advantage in a large slice of 'everything'. It's just that, once you get away from simple demonstration problems and into large, serious projects, then there are usually other languages that work out better; but even there, there's a very large category of problems where the difference might be fairly marginal.

So it gets used in a lot of places where it's not the best choice - because in some of those places, it's still a *decent* choice, just not the *best* choice.

@ccc @freemo

I mean every Turing-complete language can β€œdo just about everything”…

I got turned off from python a while ago. It was the lack of static typing, the overcomplicated bizarrely behaved parallel processing, and the fact that if my text editor is incapable of understanding a program’s structure, then how the hell am I supposed to understand it?

Oh and the fact that it’s slow.

Every time I wrote a python extension to go with my old awful python code, and it segfaults from a double free again with no way to tell how or why it happened, I just started asking myself, β€œWhy don’t I just write EVERYTHING in C?” At least C has a debugger that isn’t pants-on-head retarded.

@cy

While I do agree with your sentiments on python I also wouldnt go so far as writing everything in C. C is not well suited for many things and certainly isnt a good drop in for high level scripted languages. But otherwise your point by point on python seems accurate to me.

@ccc

@freemo @cy @ccc python is good for prototyping.
Also somehow it's nice for buildsystems as I use waf and meson in my C/C++ projects.

But writing something complicated in it? Uhhh... no.
Follow

@a1batross

Agreed. The thing about prototying is, while python is fine at doing that, it also means if it isnt suited to the full system you are prototying to demonstrate (as in it isnt suited to a more complex application) then your prototype is essentially a throw-away prototype.

In that sense I'd argue it isnt really well suited to prototying at all as one would hope that when you go past the prototype stage you would not need to start completely from scratch. So as a prototype it has less value than a prototype written in another language.

@cy @ccc

Β· Β· 1 Β· 0 Β· 1
@freemo @cy @ccc Yeah, it highly depends on the complexity of the idea. Something simple is fine.

I would rather say that if time to fix bugs that usually appear in the language you prefer is bigger than writing throw-away prototype in Python, then it's fine. Ship prototype first, then rewrite it to something better.

Otherwise... nah.

@a1batross

Well I've coded in python before, and I'm doing it again. So clearly I do think it is workable and has a place. Though after this project I might use it a little less.

@cy @ccc

@a1batross

My projects can be big, but not interdependent. Like a huge API layer is fine since each component tends to be pass through and very isolated.

@cy @ccc

@freemo @cy @ccc sounds fair.

It's always fun to write something that is going to be used as part of something else. Well, it was in my case. :)
Sign in to participate in the conversation
Qoto Mastodon

QOTO: Question Others to Teach Ourselves
An inclusive, Academic Freedom, instance
All cultures welcome.
Hate speech and harassment strictly forbidden.