Alef (programming language)

{{Short description|Concurrent programming language}}

{{Infobox programming language

| name = Alef

| logo =

| caption =

| file_ext =

| paradigm = compiled, concurrent, structured

| year = {{Start date and age|1992}}

| designer = Phil Winterbottom

| developer =

| latest_release_version =

| latest_release_date =

| latest_test_version =

| latest_test_date =

| typing = Static, strong

| implementations =

| dialects =

| influenced_by = C, Newsqueak

| influenced = Limbo, Rust, Go

| operating_system = Plan 9 from Bell Labs

| license =

| website =

| wikibooks =

}}

Alef is a discontinued concurrent programming language, designed as part of the Plan 9 operating system by Phil Winterbottom of Bell Labs. It implemented the channel-based concurrency model of Newsqueak in a compiled, C-like language.

History

Alef appeared in the first and second editions of Plan 9, but was abandoned during development of the third edition. Rob Pike later explained Alef's demise by pointing to its lack of automatic memory management, despite Pike's and other people's urging Winterbottom to add garbage collection to the language;{{cite conference |first=Rob |last=Pike |url=https://www.youtube.com/watch?v=3DtUzH3zoFo |archive-url=https://ghostarchive.org/varchive/youtube/20211213/3DtUzH3zoFo |archive-date=2021-12-13 |url-status=live|title=Origins of Go concurrency style |conference=OSCON Emerging Languages Camp |year=2010}}{{cbignore}}

also, in a February 2000 slideshow, Pike noted: "…although Alef was a fruitful language, it proved too difficult to maintain a variant language across multiple architectures, so we took what we learned from it and built the thread library for C."{{cite web|last=Pike|first=Rob|title=Rio: Design of a Concurrent Window System|url=http://doc.cat-v.org/plan_9/3rd_edition/rio/rio_slides.pdf|access-date=8 March 2013}}

Alef was superseded by two programming environments. The Limbo programming language can be considered a direct successor of Alef and is the most commonly used language in the Inferno operating system. The Alef concurrency model was replicated in the third edition of Plan 9 in the form of the libthread library, which makes some of Alef's functionality available to C programs and allowed existing Alef programs (such as Acme) to be translated.

Example

This example was taken from the Alef reference manual. The piece illustrates the use of the tuple data type.

(int, byte*, byte)

func()

{

return (10, "hello", 'c');

}

void

main()

{

int a;

byte* str;

byte c;

(a, str, c) = func();

}

See also

References

{{Reflist|refs=

{{cite book

| title = Plan 9 Manual

| section = Preface to the Third (2000) Edition

| section-url = http://plan9.bell-labs.com/sys/man/preface3.html

| publisher = Bell Labs

| location = Murray Hill

| date = June 2000

| access-date = 2012-10-29

| archive-date = 2015-02-05

| archive-url = https://web.archive.org/web/20150205030100/http://plan9.bell-labs.com/sys/man/preface3.html

| url-status = dead

}}

{{cite book

| first = Phil

| last = Winterbottom

| chapter = Alef Language Reference Manual

| title = Plan 9 Programmer's Manual: Volume Two

| publisher = AT&T

| location = Murray Hill

| year = 1995

| chapter-url = http://doc.cat-v.org/plan_9/2nd_edition/papers/alef/ref

}}

{{cite book

| title = Plan 9 Manual

| section = thread(2)

| section-url = http://plan9.bell-labs.com/magic/man2html/2/thread

| access-date = 2012-10-29

}}

}}

  • {{cite book

| first = Bob

| last = Flandrena

| chapter = Alef Users' Guide

| title = Plan 9 Programmer's Manual: Volume Two

| publisher = Bell Labs

| location = Murray Hill

| year = 1995

| chapter-url = http://doc.cat-v.org/plan_9/2nd_edition/papers/alef/ug

}}

  • {{cite newsgroup

| author = Phil Winterbottom

| author-link = Phil Winterbottom

| title = Plan9 VM

| date = 1992-10-20

| newsgroup = comp.os.research

|message-id= 1c1denINN441@darkstar.UCSC.EDU

| url = https://groups.google.com/group/comp.os.research/msg/a7dce2f02eb44ffd?&hl=en

}}

{{Programming language}}

Category:C programming language family

Category:Concurrent programming languages

Category:Plan 9 from Bell Labs

Category:Programming languages created in 1992

{{prog-lang-stub}}