Skip to content
0:00 / 0:00

#tangiblevalues#visualprogramming#combinators

Tangible Functional Programming

Google TechTalks

349K subscribers • 56 videos on Hallway

YouTube
  • Recommended by 3 people: 1 in engineering communities and 2 curated lists.
  • Presented by Conal Elliott

Advanced. Deep dive for people who know the field.

59K views18 years ago3 recommendations

Programming languagesComputer scienceFunctional programmingLanguage design and type systems

Conal Elliott presents a visual and interactive approach to functional programming using tangible values and gestural composition.

Google Tech Talks November, 7 2007 ABSTRACT We present a user-friendly approach to unifying program creation and execution, based on a notion of "tangible values" (TVs), which are visual and interactive manifestations of pure values, including functions. Programming happens by gestural composition of TVs. Our goal is to give end-users the ability to create parameterized, composable content without imposing the usual abstract and linguistic working style of programmers. We hope that such a system will put the essence of programming into the hands of many more people, and in particular people with artistic/visual creative style. In realizing this vision, we develop algebras for visual presentation and for "deep" function application, where function and argument may both be nested within a structure of tuples, functions, etc. Composition gestures are translated into chains of combinators that act simultaneously on statically typed values and their visualizations. Speaker: Conal Elliott Most of my research is aimed at supporting the creation of interactive synthetic media content, including computer animation, human-computer interaction, images, 2D and 3D geometry, and programmable shaders. In all cases, I aim to preserve or improve on the flexibility and performance of mainstream programming approaches, while greatly simplifying the creation process. Synthetic media programs are almost always implemented in sequential, imperative (often object-oriented) languages. My research explores use of declarative languages, resulting in much simpler and more reusable and composable programs. These languages are also more amenable to execution on parallel architectures such as modern graphics processors, because declarative languages abstract away from order of execution, removing the accidental sequentiality found in imperative programs. Even on sequential machines, declarative formulations have much simpler mathematical semantics, which facilitates automatic optimization. They also tend to be spatially and temporally continuous (resolution-independent), allowing them to adapt naturally to machines with different speeds and display resolutions. After exploring explicit programming of synthetic media content for several years, I'm now also keenly interested in supporting artists. The goal of my new new research agenda is to give artists access to the expressive power of computers and programming languages, while retaining an artist's working style. I mean "artist" in a broad sense, in contrast to the verbal and sequential style of an engineer. (I don't mean to suggest that people fit neatly into these two categories.) My ideal audience includes graphic designers, musicians, and children -- really, the playful and curious in all of us. This abstract has 2796 This abstract has 2820

Why it's here

3 people recommend this

What people say. Included in curated lists of notable functional programming talks.

u/leperLlamain r/haskell • Recommends

Composable MVCs (or UIs), a google talk by Conal Elliot

programming-talkscurated list on GitHubRecommends

Under “Functional Programming”

Tangible Functional Programming 00:56:25 by **Conal Elliott** (2007)

awesome-talkscurated list on GitHubRecommends

Under “Functional Programming”

Tangible Functional Programming by **Conal Elliott** (Google TechTalks 2007) 56:24

u/continuationalFirefly, TopShellin r/ProgrammingLanguages • Mentions

On “We need visual programming. No, not like that.”

I agree that text is already a very good representation of code, and it's hard to beat. Visual code is only helpful to absolute beginners who struggle with syntax. What visual programming can do is show the *live data* that's flowing through the program: - Excel shows the numbers. - Shader builders show the intermediate textures. - Scratch/Unity/Unreal shows the game objects. - Bash, REPLs, notebooks etc. show the intermediate and past results. There's also tangible programming, where you can manipulate the program by manipulating the data: - link to this video - link to this video

u/continuationalFunkin r/ProgrammingLanguages • Mentions

On “is there any good general purpose visual programming language?”

Not completely general purpose, but there's Unreal Engine Blueprints. Another interesting visual paradigm is Tangible Functional Programming.

u/--comedian--in r/ProgrammingLanguages • Mentions

On “Are there any libraries that do the MVU (Elm) pattern using reactive extensions?”

I agree, though I would say this also also is a pattern. :) I was first introduced to this style with an older version of K, data structures rendering themselves (as a separate representation). Conal Elliot has something similar with his "Tangible Values" approach. The latter is up on YouTube for anyone interested. Edit: Conal's video on "Tangible Functional Programming": link to this video I definitely recommend watching it. IMO, there are problems with the approach, but it feels like a fresh and interesting take on the subject.