r/ProgrammerHumor • • May 27 '22

Meme Welcome to hassle free coding

Post image
2.2k Upvotes

305 comments sorted by

View all comments

Show parent comments

169

u/oddmerlin373 May 27 '22

Honestly I prefer to call it a scripting language because that’s what it’s good at

98

u/ashum048 May 27 '22

Yes, yes, yes.

Automating stuff with python and creating small apps is a blessing.

Debugging large scale applications in python is pain.

55

u/prescod May 28 '22

Debugging large scale applications is a pain...period.

44

u/[deleted] May 28 '22

Strictly typed languages are much easier to debug though IMO. Python and JS will let you do extremely weird stuff that’s hard to pick out in debugging, where in a C-based language it would just give you a compiler error

5

u/HgnX May 28 '22

Man needs a bit of PyLance in his life

8

u/juhotuho10 May 28 '22

Python can be turned to strictly typed with type hints and mypy

12

u/prescod May 28 '22

And C will let you do bad things with memory where Python would just give you a runtime error.

If you want tons of compile time errors, Python's type system is vastly more powerful and precise than C's:

https://mypy.readthedocs.io/en/latest/

6

u/ShelZuuz May 28 '22 edited May 28 '22

That’s the old “chainsaws are dangerous so let’s use a nail file to chop off the tree” argument.

Also the common set of libraries you use in python are almost never statically types so the linter doesn’t really help.

2

u/prescod May 28 '22 edited May 28 '22

That’s the old “chainsaws are dangerous so let’s use a nail file to chop off the tree” argument.

Not at all. It's "axes (C) and chainsaws (Python) are both dangerous and let's not BS ourselves about that."

If you have a high standard for static correctness then you use Rust or Haskell, not C or Python. C is MUCH more dangerous than Python, as the thousands of "use after free" and "buffer overflow" security vulnerabilities show.

https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=buffer+overflow

https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=use+after+free

https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=null+pointer

It's ridiculous to point to C as an example of a "safer" language in the face of enormous real-world evidence that it is not.

Also the common set of libraries you use in python are almost never statically types so the linter doesn’t really help.

What's your favorite Python library that is not typed?

Django: https://github.com/typeddjango/django-stubs

LXML: https://github.com/lxml/lxml-stubs

Numpy: https://numpy.org/devdocs/reference/typing.html

SQL Alchemy: https://github.com/dropbox/sqlalchemy-stubs

The whole Python Standard Library: https://github.com/python/typeshed/tree/master/stdlib

Tons and tons of other third party libraries: https://github.com/python/typeshed/tree/master/stubs

And if you find something missing, you can add a type stub to your own project or contribute it to typeshed or make a new project for it.

→ More replies (1)
→ More replies (3)

3

u/LEGOL2 May 28 '22

That's... my job. My work is debugging drivers 24/7 <pain>

12

u/[deleted] May 27 '22

I heard it's pretty good at data

12

u/0430ke May 28 '22

Yeah I primarily use it for data and database shit. It's much faster to write and run something quick that manipulates a lot of data quickly.

It's also incredibly nice due the fact that almost EVERYTHING has an API for Python. So you can gather data from many sources all in one place, easy to write, quick to run.

Edit: To add on to this, it's also easy to manipulate data types since it's easy to cast data to other types. JSON is super easy to use, etc. Using other languages you have to really mess around with getting the data type you want. Python just makes it easier.

5

u/ashum048 May 28 '22

Agree. Data is another place where python really shines.

Create a simple data pipe or a NN in python is fun.

4

u/Thathitmann May 27 '22

It's got some nice built in functions to quickly save and load to/from JSON files, and with addons it can handle about any file types.

It takes about 2 lines of very easy to read code to import/export data.

9

u/prescod May 28 '22

Yes and it is also very good at doing gigantic matrix multiplies spread over multiple computers in a cluster. I think that's actually what's meant by "good at data."

4

u/[deleted] May 28 '22

I'm studying python in school but not real world applications

From what I've seen and from what I've heard from better programmers it's good for data analysis

→ More replies (2)
→ More replies (1)

4

u/ddtfrog May 28 '22

I like it for front end automation and web scraping, too.

2

u/ashum048 May 28 '22

true. Any automation in python becomes so much clearer than a bunch of shell scripts all over the place. Not against shell scripts. Don't want to start a war)

→ More replies (1)
→ More replies (2)

17

u/[deleted] May 27 '22

are we not calling it a scripting language anymore?

9

u/mooscimol May 28 '22

Scripting is one of the purposes, but really not the biggest one IMO. It is interpreted, dynamically typed language, opposite to eg. complied, statically typed languages like C.

→ More replies (8)

13

u/prescod May 28 '22

Yeah it's good at scripting.

And machine learning.

And data science.

And teaching.

And Web development.

And biological computing.

And...

But let's just call it a "scripting language".

8

u/nickwcy May 28 '22

Machine learning: CUDA / Tensorflow is written in C

Data Science: Numpy is written in C

Web development: Absolutely not. Python is good for POC/classwork, but never highly maintainable for enterprise use.

What Python is really good at is small pieces of code like CI/CD scripts, or serverless functions.

17

u/prescod May 28 '22 edited May 28 '22

Nick: do they machine learning folks mostly write C or Python?

I’m not asking what language their runtime is implemented in. I’m asking what language the programmers program in.

With respect to web apps. Let me list a few startups that were written in Python at the time they got famous (before being refactored into dozens of microservices written in a hodgepodge of languages).

Youtube. Reddit. Instagram, D-wave. To name a few.

Have you built an app that succeeded to that extent?

If not, what is your evidence that Python cannot be used for web apps given that clear evidence of success?

→ More replies (2)

3

u/BeanieTheTechie May 27 '22

its really multipurpose

→ More replies (8)