Slutredovisning för NUTEK-projektet "Grafiska användargränssnitt i lata funktionella språk"

9 Maj 1996, uppdaterad 18 Sep 1996.

(There is also an English version.)

Projektet har resulterat i en programvaruprodukten Fudgets (Functional Widgets), som är ett bibliotek som kan användas för programmering av grafiska gränssnitt på hög nivå i det funktionella språket Haskell. Som en spin-off har Fudgets även stöd för utveckling av klient/betjänt-baserad Internetprogramvara.

På vilka sätt har projektets resultat redovisats till forskarsamhället resp. till andra intressenter?

Forskarsamhället:
  • Information om Fudgets har främst spridits via World Wide Web, genom att en hemsida har skapats och annonserats ut. Från denna sida kan man bland annat testköra ett antal olika demonstrationprogram. Som ett grovt mått på den uppmärksamhet som Fudgets har fått kan man studera antal referenser som finns från WWW-sidor utanför Chalmers till Fudgets. Man hittar då över 40 referenser (Maj 1996). Begreppet Fudgets har också kommit in i The Free On-line Dictionary of Computing.
  • Fudgets togs upp som ett av ämnena på First International Spring School on Advanced Functional Programming. Målet för denna vårskola var att lära ut de senaste teknikerna inom funktionell programmering, och den fick goda betyg av deltagarna.
  • Thomas Hallgren och Magnus Carlsson inviterades till workshopen Graphical User Interface Toolkits and Functional Programming i Glasgow. Under en veckas tid studerades Fudgets och andra liknande system av forskare och specialister från tio universitet och ett företag.
  • 7th Nordic Workshop in Programming Theory (November 1995) presenterades den underliggande teorin med så kallade strömprocessorer.

Industrin:
Fudgets kommer att presenteras på ett industriseminarium den 4 juni.

Utbildning:
Fudgets har använts som del i den ordinarie undervisningen i programmeringsutbildningar på Chalmers, och universiteten i Linköping, Leuven (Belgien), och Singapore. Studenter har använt Fudgets i projektarbeten på flera universitet, se t ex Habitat i Nottingham.

Har målen med projektarbetet uppnåtts?

Det huvudsakliga målet var följande:
Still, to make it really useful to the community and for our own related projects, resources must be spent in developing a complete set of interface elements, and documenting the system with a tutorial, user's manual and a hypertext reference manual. Thus, we plan to dedicate a full time programmer during three years on developing the toolkit in this direction. We do not want to spend too much PhD-student time into this, since the work does not necessarily lead to a thesis.
Anslaget till projektet var ju bara 50 procent jämfört med ansökan - men fudgetbiblioteket har ändå utvecklats med ett antal nya gränssnittselement, en hypertextmanual och ett antal exempelapplikationer. Dessutom har programmeringsmetodiken visat sig vara generellt användbar för problem som inbegriper parallellism. Fudgetbiblioteket har också stöd för utveckling av klient/betjänt-baserad programvara - något som använts för utveckling av grupp-planeringsverktyg för internt bruk på vår institution.

Ange i vad mån projektarbetet innefattat samarbete med annan forskargrupp

Ange i vad mån projektarbetet innefattat internationellt samarbete

Under projektarbetet har vi besökt forskare som använt Fudgets på universitetet i Singapore och haft kontakter med studenter i Leuven i Belgien som använt Fudgets i programmeringsprojekt och dessutom översatt delar av fudgetmanualen till holländska.

Ange i vad mån projektarbetet innefattat samarbete med företag

Tillsammans med Carlstedt Research & Technology AB har Fudgets använts för rapid prototyping av mobitexsystem åt Eritel AB.

Summary in English

The Fudget Library is primarily a toolkit for the construction of Graphical User Interfaces (GUIs) on a high level of abstraction in the lazy functional language Haskell, but it also allows you to construct programs that communicate across the Internet with other programs.

The design of the Fudget Library started with the desire to find a good abstraction of GUI building blocks, i.e., an abstraction that makes use of the powerful abstraction mechanisms found in functional languages (higher order functions, polymorphism, etc.) and thereby, hopefully, is better than the abstractions you find in typical GUI toolkits for conventional, imperative languages.

The main abstraction used in the Fudget Library is the fudget. Fudgets are processes which can, via type safe message passing, communicate with other concurrently running fudgets and with the outside world. Fudgets are still ordinary values that can be arguments to functions, etc. A fudget may have an internal state, which is not visible in the type of the fudget. Fudget programming in this respect resembles object oriented programming, where state information is distributed and hidden within objects rather than centralized and exposed to arbitrary use or misuse. This also makes fudgets easy to compose, like functions in functional languages.

Kommentera hur forskningsprojektet utvecklats vad gäller forskningsansats/mål och förväntat resultat

Det som började som ett experiment i att utreda huruvida det överhuvudtaget var möjligt att programmera grafiska gränsnitt funktionella språk har utvecklats till en produkt som kallats "standard toolkit" av andra forskare inom området. Arbetet med att dokumentera projektet är dock inte färdigt, på grund av bristande resurser.

[an error occurred while processing this directive]