Lingua Franca is een reactor-georiënteerde coördinatietaal die is ontworpen voor het ontwikkelen van deterministische, multi-threaded en gedistribueerde systemen. Het lost veelvoorkomende problemen bij concurrent programmeren op, zoals race-condities en complexe synchronisatie, door deze via de constructie van de taal te elimineren.
De belangrijkste kenmerken zijn:
- Deterministische Concurrentie: Het wegvallen van zorgen over threadbeheer en synchronisatie.
- Ingebouwde Timing-semantiek: Nauwkeurige afhandeling van tijdgevoelige taken zonder complexe logica.
- Vereenvoudigde Distributie: Een naadloze overgang van enkelvoudige naar gedistribueerde architecturen.
Een uniek aspect is dat Lingua Franca geen volledig nieuwe programmeertaal is; ontwikkelaars kunnen de functionele blokken schrijven in talen zoals C, C++, Python, TypeScript en Rust. Het project is het resultaat van uitgebreid academisch onderzoek door instellingen zoals UC Berkeley, de Universiteit van Kiel en de TU Dresden.
Intuïtief concurrent programmeren in elke taal | Lingua Franca
Lingua Franca is een coördinatietaal voor efficiënte, deterministische, multi-threaded, tijdgevoelige, embedded en gedistribueerde programma's. Het is het resultaat van decennia aan onderzoek en biedt een meer reproduceerbaar gedrag dan andere frameworks voor concurrent programmeren, waaronder threads, pub-sub, actors en service-georiënteerde architecturen.
Kernfuncties
Deterministische Concurrentie
Lingua Franca biedt een eenvoudige manier om deterministische multi-threaded en gedistribueerde applicaties te schrijven, waardoor zorgen over threadbeheer, synchronisatie en race-condities worden weggenomen.
Ingebouwde Timing-semantiek
Timing is ingebed in de kern van Lingua Franca. Hierdoor kunnen ontwikkelaars tijdgevoelige taken met precisie afhandelen, zonder de complexe timing-logica die gewoonlijk vereist is bij concurrent programmeren.
Vereenvoudigde Distributie
Lingua Franca maakt een naadloze overgang mogelijk van enkelvoudige naar gedistribueerde systeemarchitecturen met minimale aanpassingen, door de complexiteiten van het programmeren van gedistribueerde systemen te abstraheren.
Architectuur in Lingua Franca
Hieronder volgt een voorbeeld van een applicatie-architectuur in LF:
import Player from "../Player.lf"
main reactor RockPaperScissors {
// Initialiseer hier twee Player-reactoren
player1 = new Player(id=1)
player2 = new Player(id=2)
// Maak verbindingen tussen hen
player2.reveal -> player1.observe
player1.reveal -> player2.observe
}
Bijschrift: Lingua Franca-diagram voor het RockPaperScissors-programma (player1:Player, player2:Player, observe, reveal).
Een nieuw programmeerparadigma
Lingua Franca is de eerste reactor-georiënteerde coördinatietaal. Het stelt je in staat om reactieve componenten te specificeren en deze samen te voegen. Lingua Franca elimineert race-condities door constructie, maakt het eenvoudig om getimed gedrag te specificeren en verwijdert de noodzaak voor handmatige synchronisatie.
Neem als voorbeeld een spelletje "steen, papier, schaar" waarbij twee spelers hun keuze gelijktijdig moeten onthullen. In Lingua Franca heeft "op hetzelfde moment" een duidelijke en precieze betekenis. Dit maakt de implementatie eenvoudig en intuïtief, en garandeert dat het spel eerlijk verloopt. Als de Player-klasse de keuze van de ander zou observeren voordat deze zijn eigen keuze onthult, zou de causaliteitsanalyse van Lingua Franca een causaliteitslus vinden en aangeven dat het programma ongeldig is.
Geen nieuwe programmeertaal
Met Lingua Franca vergeet je thread-bibliotheken of message-passing middleware, maar blijf je de talen gebruiken die je leuk vindt. De blokken reactieve code die de functionaliteit van de reactoren vormen, worden geschreven in de programmeertaal naar keuze. Momenteel wordt ondersteuning geboden voor:
- C
- C++
- Python
- TypeScript
- Rust
Open-source en ondersteund door onderzoek
Lingua Franca is oorspronkelijk ontwikkeld aan UC Berkeley, waar het werd beïnvloed door decennia aan onderzoek naar computationele modellen.
Kort na de start slootten onderzoekers van de Universiteit van Kiel en de TU Dresden zich aan bij het team. Zij droegen bij aan diagramsynthese en lay-outtechnologie, zeer efficiënte runtime-implementaties en diverse compiler-verbeteringen. Sindsdien is er samengewerkt met experts in real-time systemen van UT Dallas, specialisten in embedded systemen van NTNU, en onderzoekers op het gebied van netwerken en beveiliging van Hanyang University en ASU.
Intuïtief concurrent programmeren in elke taal | Lingua Franca
Lingua Franca is een coördinatietaal voor efficiënte, deterministische, multi-threaded, tijdgevoelige, embedded en gedistribueerde programma's. Het is het resultaat van decennia aan onderzoek en biedt een meer reproduceerbaar gedrag dan andere frameworks voor concurrent programmeren, waaronder threads, pub-sub, actors en service-georiënteerde architecturen.
Kernfuncties
Deterministische Concurrentie
Lingua Franca biedt een eenvoudige manier om deterministische multi-threaded en gedistribueerde applicaties te schrijven, waardoor zorgen over threadbeheer, synchronisatie en race-condities worden weggenomen.
Ingebouwde Timing-semantiek
Timing is ingebed in de kern van Lingua Franca. Hierdoor kunnen ontwikkelaars tijdgevoelige taken met precisie afhandelen, zonder de complexe timing-logica die gewoonlijk vereist is bij concurrent programmeren.
Vereenvoudigde Distributie
Lingua Franca maakt een naadloze overgang mogelijk van enkelvoudige naar gedistribueerde systeemarchitecturen met minimale aanpassingen, door de complexiteiten van het programmeren van gedistribueerde systemen te abstraheren.
Architectuur in Lingua Franca
Hieronder volgt een voorbeeld van een applicatie-architectuur in LF:
import Player from "../Player.lf"
main reactor RockPaperScissors {
// Initialiseer hier twee Player-reactoren
player1 = new Player(id=1)
player2 = new Player(id=2)
// Maak verbindingen tussen hen
player2.reveal -> player1.observe
player1.reveal -> player2.observe
}
Bijschrift: Lingua Franca-diagram voor het RockPaperScissors-programma (player1:Player, player2:Player, observe, reveal).
Een nieuw programmeerparadigma
Lingua Franca is de eerste reactor-georiënteerde coördinatietaal. Het stelt je in staat om reactieve componenten te specificeren en deze samen te voegen. Lingua Franca elimineert race-condities door constructie, maakt het eenvoudig om getimed gedrag te specificeren en verwijdert de noodzaak voor handmatige synchronisatie.
Neem als voorbeeld een spelletje "steen, papier, schaar" waarbij twee spelers hun keuze gelijktijdig moeten onthullen. In Lingua Franca heeft "op hetzelfde moment" een duidelijke en precieze betekenis. Dit maakt de implementatie eenvoudig en intuïtief, en garandeert dat het spel eerlijk verloopt. Als de Player-klasse de keuze van de ander zou observeren voordat deze zijn eigen keuze onthult, zou de causaliteitsanalyse van Lingua Franca een causaliteitslus vinden en aangeven dat het programma ongeldig is.
Geen nieuwe programmeertaal
Met Lingua Franca vergeet je thread-bibliotheken of message-passing middleware, maar blijf je de talen gebruiken die je leuk vindt. De blokken reactieve code die de functionaliteit van de reactoren vormen, worden geschreven in de programmeertaal naar keuze. Momenteel wordt ondersteuning geboden voor:
- C
- C++
- Python
- TypeScript
- Rust
Open-source en ondersteund door onderzoek
Lingua Franca is oorspronkelijk ontwikkeld aan UC Berkeley, waar het werd beïnvloed door decennia aan onderzoek naar computationele modellen.
Kort na de start slootten onderzoekers van de Universiteit van Kiel en de TU Dresden zich aan bij het team. Zij droegen bij aan diagramsynthese en lay-outtechnologie, zeer efficiënte runtime-implementaties en diverse compiler-verbeteringen. Sindsdien is er samengewerkt met experts in real-time systemen van UT Dallas, specialisten in embedded systemen van NTNU, en onderzoekers op het gebied van netwerken en beveiliging van Hanyang University en ASU.