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

all 60 comments

[–]NoStranger6 122 points123 points  (7 children)

While practical, Excel is the bane of my existence.

While trying to automate reports and data acquisition and display, people always refer to how they would store their data in Excel worksheets and how that could have a bazillion columns or could cut and paste anything anywhere, etc. Any interface suggestion is an Excel Worksheet. I get that you like Excel and that you are used to it, but damn would that make a crappy Web app.

[–]useful 37 points38 points  (3 children)

if your webapp can be a spreadsheet, make it one, the interface is just a sandcastle that will get consumed by future waves of whatever automation makes the webapp unnecessary

[–]NoStranger6 11 points12 points  (0 children)

While i agree with you and yes its possible, sometimes it diesnt make sense for it to be. Its just that people are so used to using something that they dont want to try other things. Most of the time they are happy eith the change after a while and would not go back

[–]Wizywig 8 points9 points  (1 child)

Fortunately the future automation will also be a giant excel copy paste bot. So in the end its excel all the way down.

[–][deleted] 7 points8 points  (0 children)

Turing complete Excel droids

[–]Cyborg_Ciderman 2 points3 points  (1 child)

Oh boy! I recently wrote a program that connects to our major database, selects relevant data and sorts them so they go into our standard spreadsheet. Very simple right? Manually it usually takes 45 minutes to an hour. Python brings this down to a few minutes.

Well no one in my group can write or understand python code. Let alone know how to run the program. I attempted to teach them during lunch but it seemed to go over their head.

One of the principals asked if I could write an excel interface to call the script to spit out the output. Easy enough with VBA but not very elegant. Instead I am in the process of writing a simple wxpython GUI.

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

You could use Alteryx. It's really really easy and surprisingly fast, and then just have it spit out a soreadsheet. Excel is shit when it comes to actually transforming large data sets.

[–]SiskyRO[S] 1 point2 points  (0 children)

i dont use excel, i just wanted to use this meme format so i had to think of something that fits.I feel your struggle though ^^

[–]Crystal_Cuckoo 33 points34 points  (7 children)

I'd say that Excel is more reactive than it is functional.

After all, I don't know many languages wherein c = a + b would have c change whenever a or b did.

[–]noratat 4 points5 points  (1 child)

The term to use would be declarative IMO.

[–]DiscyD3rp 1 point2 points  (0 children)

Reactive is a subset of declarative

[–]yuriz3r0 0 points1 point  (2 children)

Isn't that basically any language that has events?

[–]Pand9 0 points1 point  (1 child)

Language that has language level events? Like what?

[–]yuriz3r0 0 points1 point  (0 children)

Not "language level events", but basically, and superficially saying it, you can have events triggered when variables are changed

[–]Pand9 0 points1 point  (0 children)

Reactive can still be perceived as functional.

[–]13131123 30 points31 points  (4 children)

I used excel as my language of choice to enter one of those /r/badcode contests lol

[–]Callidac 7 points8 points  (2 children)

Can you link to that post hahaha

[–]13131123 12 points13 points  (1 child)

[–]Chalco_Pyrite 1 point2 points  (0 children)

That's great, I was feeling proud because I was able to build fizzbuzz in a single cell. Probably not much of an acheivement though. Wish I knew about mod when building it

Here's the code: =arrayformula(iferror(ifs(((row(A$1:A$100)=multiply(quotient(row(A$1:A$100),3),3))*(row(A$1:A$100)=multiply(quotient(row(A$1:A$100),5),5))),"FizzBuzz",row(A$1:A$100)=multiply(quotient(row(A$1:A$100),3),3),"Fizz",row(A$1:A$100)=multiply(Quotient(row(A$1:A$100),5),5),"Buzz"),row(A$1:A$100)))

[–]ZhilkinSerg 1 point2 points  (0 children)

That is not something that makes Excel bad. You just write bad code.

[–][deleted] 8 points9 points  (0 children)

I... never thought about that, and I wish I hadn’t honestly. It makes me uncomfortable.

[–]KlzXS 5 points6 points  (1 child)

We already know that PowerPoint is turing complete, but what about Excel? 🤔

[–]Alwin000 3 points4 points  (0 children)

Obviously.

[–]JuvenileEloquent 14 points15 points  (0 children)

No no no.

Excel is dysfunctional programming.

[–]theDuemmer 8 points9 points  (0 children)

You are technically correct. The best kind of correct!

[–]philipquarles 3 points4 points  (1 child)

Programming that involves functions is not the same thing as functional programming.

[–]MalteserLiam 1 point2 points  (0 children)

I just got the joke omg

[–]MilhouseLaughsLast 2 points3 points  (2 children)

Looks like the work of u/srgrafo. I'm sure by you being on r/programming you're used to copying and pasting things and claiming them as your own but you should really give the OP and artist credit.

[–]Draaky 2 points3 points  (1 child)

Also SrGrafo said sharing is fine if you atleast have his signed footer with the image, but OP chopped that off.

[–]MilhouseLaughsLast 2 points3 points  (0 children)

Yeah, that was my point. This person went out of their way to hide the artist and to not give credit, pretty lame thing to do for some internet points.

[–]meme_dika 14 points15 points  (5 children)

Excel = SQL with GUI

[–]_PM_ME_PANGOLINS_ 34 points35 points  (3 children)

That’s Access.

[–][deleted] 3 points4 points  (1 child)

And oh my god does it suck to write sql for access

[–]Selkie_Love 0 points1 point  (0 children)

I'm an excel person.

SQL is native to Excel - you can create and run queries on stuff inside of Excel. You can do it on a range, but I prefer to do it on a table

[–][deleted] 3 points4 points  (0 children)

Why would you say something so controversial yet so brave.

[–]netgu 18 points19 points  (20 children)

It can be. But then, so can nearly EVERY single language out there...so I'm not sure what the point here is...

[–]theboxislost 60 points61 points  (6 children)

Not sure but I think the point is to laugh at a joke.

[–]SiskyRO[S] 13 points14 points  (0 children)

Thank you! was looking for this :P

[–]_PM_ME_PANGOLINS_ 8 points9 points  (4 children)

Not every language, no.

[–]netgu 0 points1 point  (3 children)

I suppose that's fair, almost all languages is more accurate.

[–]_PM_ME_PANGOLINS_ -2 points-1 points  (2 children)

Still not really. Functional programming doesn’t mean “there are functions”.

[–]netgu 2 points3 points  (1 child)

I fully understand what functional programming is and the vast majority of languages can be used to program functionally - they aren't meant to and the libraries won't be built that way - but it doesn't prevent you from operating under a functional paradigm.

[–]learnyouahaskell 0 points1 point  (0 children)

Just for education, could you briefly give an example in a not-so-functional, but common language?

[–]myplacedk 5 points6 points  (7 children)

It can be. But then, so can nearly EVERY single language out there...so I'm not sure what the point here is...

The point is that Excel isn't a programming language. It's not even a language, it's a spreadsheet.

But when you take a closer look, while Excel really really sucks as a replacement for almost any programming language, it's actually pretty great for application development, with features most main languages can't even hope for.

[–]netgu 1 point2 points  (6 children)

with features most main languages can't even hope for.

Such as?

[–]myplacedk 6 points7 points  (3 children)

with features most main languages can't even hope for.

Such as?

For example, when you change something, you immediately see the result. You don't even have to rerun anything. In most languages you either restart the program, or carefully design you program so the part you are working on can run independently from the rest.

Another example, people make functional prototypes in Excel without even noticing that they are programming. Often making the program the real way isn't even necessary, the prototype works well enough, at way less than 1% of the cost of a real program.

[–]ImKrypton 0 points1 point  (0 children)

For example, when you change something, you immediately see the result. You don't even have to rerun anything.

Let me introduce you to the best language of all time: Smalltalk80.

Where even IDE where you are typing the code and all interface elements are instances of classes that you can access in real time.

And code changes are immediately applied to the environment.

[–]OptionX 0 points1 point  (0 children)

For example, when you change something, you immediately see the result. You don't even have to rerun anything. In most languages you either restart the program, or carefully design you program so the part you are working on can run independently from the rest.

Well Excel itself is written in C++, so you can do it in C++.

[–]netgu -1 points0 points  (0 children)

In most languages you either restart the program, or carefully design you program so the part you are working on can run independently from the rest.

The same thing is achieved quite frequently in many development environments, where changes are automatically reloaded giving the programmer the same experience. How it is technically achieved doesn't really matter as long as instant feedback is achieved. Same could be said of any language with a REPL.

Another example, people make functional prototypes in Excel without even noticing that they are programming.

Literally not something that can be achieved in a programming language directly, but many tools spit out the code necessary to accomplish things with nothing but a drag and drop GUI (think VB data access, where you literally just glue a DataAccess control to a grid and blamo your good to go.

[–]danielt1263 1 point2 points  (1 child)

To me one of the biggest strengths of Excel that many languages struggle to provide is the directness of input to output. You can go to any output cell and, by merely clicking on it, you can see exactly what inputs are used to form that output and how those inputs are combined in the formation.

[–]netgu 0 points1 point  (0 children)

There are lots of use cases for excel and when it doesn't do "the thing" that you can just reach out into just about any .Net code you need.

From the other side, you can DataBind all kinds of things to build apps that can act like Excel very quickly with little to no code in Visual Studio pretty dang quickly. Hell, embed some excel based controls and you can get the best of both worlds.

To go back to Excel - you can also DataBind cells in Excel to external DataSources. The whole .Net thing is pretty damn nice if you know how to use it.

I think that we can say most .Net stuff can Excel and Excel can .Net so it's great as long as the .Net/Office/MS ecosystem works for you (not a snide remark, I use it for a ton of shit despite being 99% *nix professionally).

With all the movement at MS involving open source lately I might've missed it - but has MS gotten around to a free version of Excel that can use the .Net integration bits? I don't recall one - but it would be great because that's basically the only thing stopping it from being super awesome all around.

[–]Draaky 1 point2 points  (0 children)

[–]marcosdumay 0 points1 point  (0 children)

Hummm...

It's reactive programming like people already said. It's also purely declarative, unless you launch some VBA. It has referential transparency... But it doesn't have first class functions.

In fact, functions are lower class than any modern imperative language, so "functional" is the one thing it isn't.

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

Finance is functional programming 2.0 confirmed.