Just realised people are still filling in my sprea...
# thinking-together
d
Just realised people are still filling in my spreadsheet with their projects: https://docs.google.com/spreadsheets/d/12sTu7RT-s_QlAupY1v-3DfI1Mm9NEX5YMWWTDAKHLfc/edit#gid=0 😄 This is now becoming a very useful resource, I think - useful to me at least! Feel free to update and/or complete your column, or that of someone not on this Slack.
💯 3
I've added a row for USP/elevator pitch, which I'd really love to see people fill in for their projects!
I've moved "Most unusual feature(s)" next to that so you can fill in both cells at the same time!
d
Just added another!
👍 1
d
Is Curv "state first" or "state last"? No idea. Pure functional and OOP languages are both "state last", even though I think they are polar opposites in how they treat state. Spreadsheets are "state first". Why is that? Are you asking if the language supports abstract data types with information hiding?
d
FP and OO have the philosophy that state should be deprecated one way or another: FP that it's all about values in function arguments and referential transparency; OO that you never have access to state except via methods. Spreadsheets flip that in a way and give you visible state first, then hide functions.
d
Is Curv "dynamically typed" or "untyped"? Untyped systems are rare: the ones that spring to mind are machine code, the untyped lambda calculus, and Turing machines. Eve has types (it has numbers, strings and records, at least), and appears to be dynamically typed. But it is classified as untyped. Why?
d
Machine code is typed, 1 bit 8 bit 16 bit 32 bit 64 bit!
@Doug Moen not sure who classified Curv as untyped, but it's your record - do what you want with it!
I've sorted the columns by team size, then age of project, so @Bosmon and Tucker Taft (not sure who that is here or who represents Parasail here) can you fill in your team size so you can win the race by the age of your projects!
@jonathoda can't see Subtext - shall I have a go at filling it in? 😄
Thanks to everyone for filling in their USP cells, I'm finding that really useful and I'm sure everyone viewing the table will also.
j
@Duncan Cragg OK I’ll give it a go. BTW I’ll be at PPIG in Newcastle
👍🏼 1
😄 1
d
I'm on holiday on those PPIG dates but maybe you're travelling via London?
d
I still don't understand "State First, State Last". For Curv, I wrote: Expressions are referentially transparent. No objects, values are immutable. But there are mutable local variables, assignments, a while statement, to support imperative programming style.
d
sounds like "state last" to me! 😄
anything imperative is control flow driven, so state isn't the first thing you see
As a programmer, you have to have a mental model of the evolving state, or print it out while running the program
spreadsheets and many of the other projects have a model where state is right in your face
d
Is the "State First, State Last" terminology defined anywhere else on the internet? If so please provide a URL.
d
nope
I thought it was clear and useful
but if it's not clear or not useful to you
then leave it blank!
d
In a spreadsheet, the "state" (the contents of cells) is actually the model. Curv is a declarative language for creating shapes, and the model is a scene containing geometric shapes. The Curv visual programming environment will allow you to change the model using direct manipulation. I suppose that is "state first"?
d
sounds like it .. so you can change the model with direct manipulation, or by writing the "animation" code?
Airtable is state-first, cos the first thing you're working on is the state of your application
but you can write functions
d
Excel and Curv both have user defined functions. Excel doesn't (AFAIK) let you visualize the execution of user defined functions by showing you intermediate states of execution: instead, "you have to have a mental model of the evolving state, or print it out while running the program". Curv is the same way for now, but @Sébastien has ambitious plans for the visual programming IDE.
d
Well Excel's user defined functions are likely to be short and not where the important state is: most users will just fiddle with them until the state they can see comes around. They may even put down any more important intermediate values in the cells so they can see what's going on.
User defined functions are advanced usage that tends towards imperative, state-last style anyway, so aren't really part of the main programming model of the spreadsheet
(assuming you mean VBA, or JS in the case of Google Sheets)
d
User defined functions are intended to be an advanced feature in Curv. I now see that state-first isn't a feature of the language itself, it's a feature of the IDE or user interface.