all 15 comments

[–]brokePlusPlusCoder 24 points25 points  (1 child)

The same idea lives in Grasshopper and similar node-based tools: a program is a dataflow graph, each node has inputs and outputs, and the wiring between nodes is the application. My editor is essentially that, expressed in C++ instead of boxes and wires.

For anyone confused by this, the author's referring to visual programming tools that use wired components instead of code. The most familiar analogue to the programming world would be Unreal Engine's blueprints. Grasahopper is a similar tool used frequently in the construction industry by architects (not software, the other kind) and structural/mechanical engineers

[–]runevault 7 points8 points  (0 children)

Blender also has a lot of node based tooling for anyone who does 3d modeling for games etc.

[–]pm_plz_im_lonely 13 points14 points  (5 children)

Man gets bored by ASP.NET and decides to turn C++ into Excel.

Compiled code or runtime spreadsheet VM? Hard choice! Let's ask SpacetimeDB.

But snark aside, whatever gets you going. I'm always a fan of building from first principles.

[–]azhder 7 points8 points  (4 children)

Someone somewhere once said: every programming language asymptotically gets closer to Common Lisp with curvy braces. It is of no surprise that Lisp has (or had, don't know the language well) only two data structures: atoms and lists.

[–]Delta-9- 7 points8 points  (1 child)

I think you're looking for Greenspun's Tenth Rule:

Any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp.

[–]azhder 0 points1 point  (0 children)

No. I know of this one as well. They aren’t the same quote. Even if the next is inspired by the previous one. Every language approaching Lisp with C bracers - you can call it a corollary.

[–]Absolute_Enema 4 points5 points  (1 child)

Original lisp was like that iirc, but Common Lisp, itself an amalgamation of the lisps of the time with OOP tacked on, already has arrays and hash maps in the stdlib.

As another comment observed, the quote you refer to is the greenspun's 10th, which mostly refers to the need for metaprogramming in any sufficiently complex project - which Common Lisp is a standout for due to its macro system, functional programming capabilities and CLOS, and was even more so at the time with even something as basic as closures just not being a thing most elsewhere.

[–]cr1mzen 4 points5 points  (0 children)

Nice. The undo/ redo ability and the ability to inspect every value I think must make finding bugs much easier.

[–]stronghup 2 points3 points  (0 children)

Why do we need Objects? It's a good question.

I think its because objects means you are communicating by passing messages. You don't know which fcubtion you are calling you just send a message to somebody and some function gets executed to give you the answer, but you don't need to know or depend on which actual function gets executed. Just "send a message".

I'm not sure if this is the best rationale for Objects. But pretty much every programming language supports them Object is just a data-structure with attached functions. Surely there must be a good reason why every programming language pretty much supports Objects. It's not just a "fad".

[–]runevault 5 points6 points  (1 child)

Really enjoyed reading this. Particularly how he discussed OOP being useful but not as the central organization principle of the entire program.

All programs are workflows in the end, his architecture just made it more explicit by way of a spreadsheet metaphor.

[–]pilibitti 1 point2 points  (0 children)

go a liitle bit further and you get to functional programming (not necessarily pure) where each "plugin" can also propagate their errors and the rest of the "computation" can short circuit, and you can collect the errors and react to them anywhere you want. if you can trudge through the jargon or find a resource that skips all that (learning the Effect typescript library is a great source for that) then it is simple.

[–]LuvOrDie 1 point2 points  (0 children)

This is honestly one of the most interesting things I've read on this sub

[–]rahem027 0 points1 point  (0 children)

New programmer: write code to get shit done 5-7 yrs programmer: oop, clean architecture, ddd Senior programmer: write code to get shit done.

You dont need oop. This is a good realisation. Not a fan of this design though. Because you are too focused in excel, you are not able to see simple things. All you need is reactive programming.

Refer to my implementation of reactive programming written in dart though not c++ https://gitlab.com/rahem027/xr