Infrastructuur / Achtergrond
Multicore hoeft niet moeilijk te zijn
Erlang-ontwerper Joe Armstrong: het is alleen maar een andere manier van kijken
Het is moeilijk efficiënt te programmeren voor multicore-processoren. Dat hoeft helemaal niet, vertelt Joe Armstrong die begin jaren tachtig de functionele programmeertaal Erlang ontwierp. Dat soort talen leent zich goed voor parallelle programma’s.
Onlangs deed Joe Armstrong Nederland aan. Zijn boek Programming Erlang verscheen juli vorig jaar en werd meteen een bestseller. Opmerkelijk, want Armstrong ontwierp en implementeerde de functionele programmeertaal Erlang al in de jaren tachtig voor Ericsson. Sindsdien kende Erlang slechts een zeer bescheiden aantal gebruikers, tot anderhalf jaar geleden. Computable sprak met Joe Armstrong over programmeren in multicore systemen, zijn plotselinge succes en ‘out of the box'-denken.
Het is een lastige kwestie voor processorfabrikanten als Intel. Zij zijn er allang klaar voor: zij kunnen multicore-processoren leveren die zóveel extra rekenkracht en snelheidswinst bieden. Nu nog met enkele kernen, maar over een paar jaar met honderden of zelfs duizenden kernen. De softwaremarkt blijft echter vooralsnog achter. Er is geen goed bruikbare programmeertaal voor multicoresystemen. Althans, plots was daar het boek van Joe Armstrong getiteld Programming Erlang. Geen nieuwe taal, maar eentje van niet minder dan twintig jaar oud.
Bestaan in de marge
Dezelfde Joe Armstrong, nog altijd softwarearchitect bij Ericcson, was de belangrijkste man achter de ontwikkeling van Erlang. Hij implementeerde de eerste versie in 1986. Even was Erlang populair, maar het aantal gebruikers daalde al snel. De taal verdween niet, gebruikers zijn er altijd gebleven, maar leidde toch een bestaan in de marge. Anno 2008 is de belangstelling voor Erlang echter groter dan ooit. Waarom? Wellicht omdat je met functionele programmeertalen als Erlang multicore-systemen wél optimaal kunt gebruiken. Reden voor ict-bedrijf Sioux, gespecialiseerd in embedded software, om Armstrong te laten vertellen over Erlang en het eventuele nut van deze taal voor programmeren in multicore-systemen.
Onder de titel ‘Hot or Not' organiseert Sioux sessies waarvoor het ict'ers naar Nederland haalt die aan de wieg stonden van een belangrijke ontwikkeling. Zo is Armstrong al voorgegaan door Linux-grondlegger Alan Cox en RUP-expert (Rational Unified Process) Ivar Jacobson. Begin mei was Armstrong in Eindhoven waar hij een meerdaagse cursus verzorgde voor medewerkers van Sioux en een lezing gaf waar ongeveer honderd geïnteresseerde ict'ers uit heel Nederland op af kwamen.
Blij met de aandacht
Armstrong, 57 jaar, Engelsman van geboorte, maar al "langer dan de helft van zijn leven" woonachtig in Zweden, is een vrolijke, hartelijke man, die graag met zijn handen praat. Hij is overduidelijk blij met de aandacht die hij krijgt sinds zijn boek Programming Erlang medio 2007 uitkwam en meteen een bestseller werd. Toch heeft hij nog wel iets te klagen. "Ik vind het geweldig, ik ontmoet zoveel interessante en ontzettend aardige mensen, maar ik kom qua werk helemaal nergens meer aan toe. De afgelopen maand heb ik op vijf conferenties gesproken. Ter vergelijking: twee jaar geleden kreeg ik ongeveer één uitnodiging per jaar."
Hoe verklaart u de enorme, plotselinge belangstelling voor Erlang?
"Je vraagt me: wat heb je gedaan? Geen idee, gewoon geluk gehad. Niet alleen voor Erlang is er veel belangstelling, ook voor andere functionele programmeertalen zoals Haskell, is de belangstelling gigantisch. En dat is allemaal gebeurd in de laatste 18 maanden. Misschien heeft mijn boek Programming Erlang iets in gang gezet. Mijn timing was in elk geval goed."
Heeft het iets te maken met marketing: meer cursussen en beter onderwijs in Erlang? Wellicht ook in combinatie met de opkomst van multicore-systemen?
"Nee, ik denk niet dat het iets met marketing te maken heeft. Voor multicore-systemen is inderdaad veel interesse. We weten nu hoe we ze moeten programmeren: met functionele programmeertalen. Die blijken daarvoor veel beter geschikt te zijn dan talen als Java, C of C++. En dat is een grote stimulans."
"Misschien is een verklaring voor het succes dat ontwikkelaars teleurgesteld zijn in de meest gebruikte talen. Voor nieuwe talen ontstaat er aanvankelijk een enorm enthousiasme. Iedereen gelooft: dit gaat al onze problemen oplossen. Zo dacht men tot voor kort over Java. Dat is nu voorbij: Java is niet trendy meer, het enthousiasme is weg. Zo verging het voorganger Ruby ook. Nu zijn functionele programmeertalen het helemaal. En dat is opmerkelijk, want ze zijn niet nieuw. Ze zijn echt oud. De basis is wiskunde uit de jaren dertig."
"Er speelt nog iets meer: als je boek genoeg aandacht krijgt door stom toeval, dan kan het plots uit zichzelf meer aandacht vergaren. Je kunt er een wiskundig model op loslaten. Mijn boek kwam op nummer 1 terecht en bleef daar tijden staan. Mensen kopen het omdat het in de top 10 staat. Er ontstaat een sneeuwbaleffect. Én, Erlang heeft kunnen rijpen. Er zit twintig jaar aan ontwikkeling in. En niet alleen door mij: honderden mensen hebben er jarenlang aan gewerkt. Het is sowieso goed."
De interesse is er. Toch zijn er nog altijd weinig Erlang-gebruikers. Waarom?
"Ook grote talen waren eens klein! Het aantal gebruikers groeit enorm."
Komen er nu meer trainingen in Erlang?
"Niet door mij. Er zijn bedrijven die dat doen; bijvoorbeeld een adviesbureau in Londen dat trainingen geeft. Erlang-programmeurs zijn niet aan te slepen. De bedrijven die ze leveren, groeien met de maximale groei die ze aankunnen."
Zijn er nadelen aan Erlang?
"Oh ja, absoluut. Het is moeilijker om dingen te doen waar een taal als C juist heel bruikbaar voor is. Het snel manipuleren van het geheugen is moeilijker in Erlang. Net als bijvoorbeeld video coding. Erlang is niet handig voor dingen die een hele kleine memory footprint nodig hebben: je kunt er geen wasmachine mee programmeren. Ook voor het programmeren van graphics in games heb je niet veel aan Erlang. Daarvoor is C++ het meest bruikbaar."
"Erlang is goed te gebruiken in controller logics. Over het algemeen loopt hardware niet echt efficiënt op Erlang, net zo min als op Haskell of andere functionele programmeertalen. Dat kan overigens wel, als je het echt zou willen. Maar dat vergt aanpassing van hardware."
Waarom is Erlang zo nuttig voor het programmeren in multi- of manycore systemen?
"Multicore-chips zijn de toekomst. Het verhogen van de kloksnelheid heeft nu eenmaal een limiet. Stel dat we in 2019 een miljoen cpu's krijgen: en waarom niet? Ik heb nu op mijn werk 64 cpu's. Het verdubbelt elk jaar. Over tien jaar hebben we de miljoen bereikt. Als je een programma schrijft dat loopt op een van die cpu's en de andere 999.999 doen helemaal niks of nauwelijks iets; dat gaat nergens over. Dus, de kern van programmeren is de rekencapaciteit verspreiden over de cpu's. En met Erlang kan dat. Ik denk graag dat de Erlang-gemeenschap daarin voorop loopt."
Is een taal als Java zo aan te passen dat die wel goed bruikbaar is voor het schrijven van software voor multicore-systemen?
"Nee. Nou ja, niets is onmogelijk, maar het is ongelooflijk moeilijk. Dat heeft te maken met thread safety. Als je twee threads hebt, moet je kunnen garanderen dat ze niet door elkaar heen lopen. Als je niet kunt garanderen dat ze elkaar niet in de weg gaan zitten, dan is multicore-gebruik uitgesloten. Je wilt namelijk cores en computers parallel gebruiken. Het is een fundamentele eigenschap van talen als Java dat ze niet thread safe zijn. Daar is niets aan te doen. Die talen zijn zo gemaakt."
Hoe denkt u over een nieuwe taal, gebaseerd op Erlang, geschreven door u?
"Nee, niet door mij. Ik heb het al gedaan: ik weet hoeveel werk het is. Maar ik ben er wel een groot voorstander van. Overigens zijn verschillende groepen jonge ict'ers daar mee bezig: alle bestaande technologie overboord gooien en met de kennis van nu opnieuw schrijven." Armstrong roept uit: "Laten we ict opnieuw uitvinden en alles tienduizend keer korter maken"
"Ik word enorm enthousiast van die manier van denken. Er zijn zoveel dingen die beter kunnen. En dat is maar goed ook. Stel je voor, er komt iemand met de ultieme technologie. En dan, wat gaan we dan doen de komende tienduizend jaar? Bovendien hebben we echte problemen vandaag de dag. We hebben milieuproblemen en we moeten heel snel naar zero energy computing."
"Oplossingen zijn er altijd. We moeten ze alleen zien. Mensen zijn vaak blind voor juist dat wat vlak voor hun neus ligt. Zo is het ook met de ontwikkeling van Erlang gegaan: de basis is wiskunde, en wij hebben bepaalde wiskundige wetten losgelaten. Veel mensen denken dat dit niet kan of dat het moeilijk is. Maar dat is het niet. Het is alleen maar een andere manier van kijken."
- Hulp in zicht voor ‘multithreaden’ van software
- Intel geeft Visual Studio multicore-plugins
- Multicore wacht nog op software
- GHz-race blijft uit, multicore wint
- Google en Amazon kiezen Erlang
- Onderzoekscentra naar rekenmethoden voor multicores
- Multicore is moeilijk
- Multicore vraagt om nieuwe taal
- Ontwerper C++: multicore vraagt om nieuwe taal
- Multicore processors niet zaligmakend
- Multicore voor de massa
- Oracle zwicht met licenties voor multicore
- Sun lanceert Niagara-servers met multicore T1
Met name het reduceren van overhead veroorzaakt door task switching en exception handling en de task rendez-vous zijn zeer krachtige aspecten van Ada.
Ada is helaas buiten het safety/security domein weinig bekend, maar de vliegtuig en ruimtevaart industrie gebruiken het al jaren!
- 10:55 Red Hat levert software voor de cloud
- 15:54 Tot 500 GB 2,5-ich schijf van Freecom
- 21:35 UC: Unified Communications of UnCertainty?
- 15:22 Hitachi: harde schijven zijn niet passé
- 15:20 NEC MultiSync E221W lcd-monitor
- 11:35 Markt voor geheugenchips zakt in
- 09:55 Spoelstra spreekt: Apple-fan
- 08:42 Test: Streamen op twee frequenties
- 12:45 ASML vreest kaalslag chipsector
- 12:42 ECM onmisbaar in het 'nieuwe werken'
Vergroot efficiëntie met Guest Virtual Memories
Wanneer de gebruiksintensiviteit van een netwerk door middel van virtual memory (VM) wordt losgekoppeld van de fysieke beperkingen van het systeem, verkleint het risico op software downtime aanzienlijk. Deze whitepaper bespreekt een manier om dit te bereiken. ... Download nu
Data-opslag 'disaster-proof' maken met virtualisatie
Het virtualiseren van de IT-infrastructuur kan van grote waarde zijn bij rampen als uitvallende systemen. Van de coverage voor meer applicaties en een kortere recovery time profiteert een bedrijf direct, zo blijkt uit deze whitepaper.... Download nu
Meer Infrastructuur whitepapersVialis uses virtualization to keep traffic information flowing
16-07 11:46 "Server virtualization enables us to give our customers more reliable and more flexible services and brings us the benefit of greater economy in the area of IT operation." - Johan...
Meer infrastructuur praktijkSSD komt langzaam naar servers
01-12 09:29 Ssd's (solid state drives) komen gestaag naar de markt voor serieuze opslagsystemen, zoals servers. Micron brengt zijn supersnelle prototype binnen een jaar op de markt, maar...
Meer infrastructuur achtergrondUC: Unified Communications of UnCertainty?
03-12 21:35 Unified communications is hot. Althans, dat is wat de marketingmachines ons doen laten geloven. Over het doel is iedereen het wel eens, UC zou moeten staan voor vereenvoudigde en...
Meer infrastructuur opinieTot 500 GB 2,5-ich schijf van Freecom
04-12 15:54 Freecom komt met de Mobile Drive XXS, een kleine externe harde schijf met maximaal 500 GB opslagcapaciteit. De 2.5-inch schijfeenheid is met nauwelijks 10 centimeter lengte net...
Meer infrastructuur productenBekijk de leveranciers op het gebied van Infrastructuur.


Ik zet mijn geld op de compilers die ervoor zorgen dat programma's naar multi/paralel thread worden gecompileerd.