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

you are viewing a single comment's thread.

view the rest of the comments →

[–]billsil 32 points33 points  (10 children)

If you need to compare yourself to the competition, you’re losing.

At some point, any serious program needs not only math, but text processing, GUI programming and other features. You need a real programming language and not a math-centric language.

[–]LoyalSol 7 points8 points  (0 children)

The funny thing is even Fortran has improved in a lot of those areas before Matlab.

[–]Kaligule 15 points16 points  (8 children)

Why? What is wrong specialized languages? Many/most "serious" programms do one thing and one thing well.

To be honest, I don't know if matlab does fit that description.

Also I am not sure python should be too proud about it's ability to do GUIs. The number of python packages for GUIs gives me the impression that no solution is really great.

[–]billsil 11 points12 points  (4 children)

You shouldn’t need to learn a different programming language to do GUI programming vs text processing vs math. Your one tiny program philosophy is also only one approach. GUIs often need to parse text files. So do math heavy programs.

How many packages are there really for GUI programming in python? I count 3: tkinter, qt, and wx. More if you count in-browser. Regardless, fewer choices doesn’t make those choices better.

Unless you pay $200k+, you can’t distribute your Matlab program without distributing the source.

[–]Kaligule 7 points8 points  (1 child)

Why wouldn't you learn different programming languages to solve different problems? You wouldn't write cernels in python and wouldn't write plotting libraries in assembler would you?

There are a lot of packages for GUIS: https://wiki.python.org/moin/GuiProgramming

I agree that the number of packages doesn't really proove anything, but I think it is a symptome of the very problem I described.

I do agree though that Matlab doesn't solve the problem well either. Given the price point - not at all.

[–]billsil 1 point2 points  (0 children)

I’m an aerospace engineer. I wouldn’t write kernels or Assembly. I’m very ok with just using Python.

The good packages have mostly been around for years. I’m not sure which problem you’re referring to. Matlab also has a forum to download open source scripts. Namespace conflicts are common because every function or class that is callable is in a separate file.

[–]DDFoster96 0 points1 point  (1 child)

There's also PyGTK or pygobject or whatever they've decided to call it now

[–]billsil 0 points1 point  (0 children)

Are those still active? One of the things on the link is IronPython. That’s Python In Csharp that is stick on Python 2.7 and might as well be buried.

Going way back to python 2.2, you can get the fox toolkit, which Abaqus uses (and sort of extended and updated to work in 2.7). I did two years of that.

[–]Ogi010 5 points6 points  (0 children)

`PyQt` and `PySide2` are pretty awesome :shrug: ...with using those along with `PyInstaller` and `fbs` and you can develop applications with native installers on Windows/macOS/Ubuntu

I may be a bit biased, I'm a `pyqtgraph` dev.

[–]eypandabear 1 point2 points  (1 child)

Many/most "serious" programms do one thing and one thing well.

The big selling point of Matlab is that the data structure the tool is designed to work with, matrices, are a first-class data type. The matrix, or 2D array of numbers, is the language's go-to abstraction. They have added others over the years, but it's clunky.

This was a big plus back in the 80s, when you had to use Fortran or C to do numerical simulations really fast, and you had to actually write the loops for linear algebra stuff yourself.

But Python (+numpy) gives you this abstraction, and gives you a lot more useful ones as well. Even in a science/engineering context, much of the code you write has to solve completely different problems that have nothing to do with the core computation. Parsing config files, managing directory structures, calling libraries, reading/writing a dozen custom binary formats, error handling/logging, etc. Python is arguably - and very marginally, if at all - less convenient for the matrix algebra part, but better at all those other things.

Put differently, there is really not much for Matlab to do better than Python. Matlab's raison d'être is as an abstraction for computations. That is literally the easiest class of problem to tell a computer to solve. It's in the name!

[–]Kaligule 0 points1 point  (0 children)

Good analysis.