Ruby är levande och väl och tänker på de närmaste 25 åren
NyheterDet globala Ruby-samhället är synonymt med vänlighet och stöd, som använder frasen "Matz är snäll och så är vi snälla", som vanligtvis förkortas till MINASWAN. Matz vet hur man berömmer sin publik, och han sparkade av sin nyckelord på Bath Ruby Conference med kommentaren: “Vi japanska älskling bad, vi tar bad varje dag i stället för att ta duschar så det betyder att Bath är trevligt, det här är en mycket trevlig stad, så vi är trevliga. BINSWAN" Kredit: Dan Bartlett
Hur är programvara född? Det är inte riktigt den första frågan du förväntar dig att höra uttalas av en keynote-talare vid en programmeringskonferens, men det här är den geniala japanska skaparen av Ruby-programmeringsspråket Yukihiro “Matz” Matsumoto, och han pratar med över 500 Ruby-utvecklare på den årliga två dagars Bath Ruby Conference.
Ruby-språket firade 25 år i februari, även om officiellt den första versionen av Ruby, 0,95, var i december 1995. Som svar på sin egen filosofiska fråga föreslår Matz att programvara är född när den heter. När det gäller Ruby det var två år tidigare den 24 februari 1993, därmed den stora firandet i Tokyo och över sociala medier. Matz säger att han ville namnge det efter en juvel: “Ruby var kort, Ruby var vacker och dyrare, så jag heter mitt språk Ruby,” säger han och skojar med sin gemenskap.
Matz var dock inte i Storbritannien för första gången på fem år för att bara äta födelsedagstårta. Ruby kan ha nått mognad, men det finns fortfarande frågor om huruvida det kan överleva ytterligare 25 år. Gilla det är skaparen, Ruby-språket är väldigt trevligt och samlar passionerat anhängare. Syntaxen är till exempel mycket läsbar men uttrycksfull på ett tätt sätt och som ett dynamiskt, reflekterande, objektorienterat, allmänt programmerat språk är det intuitivt och lätt att lära sig. Ruby försöker inte begränsa dem som använder det eller som Matz ofta citeras och säger: “Ruby är utformad för att göra programmerare lyckliga.”
Men inte alla är glada. Rubinspråkens popularitet har under många år stärkts av framgången med Ruby on Rails (RoR) webbapplikationsramen som dominerat webbscenen, särskilt bland startups som ville ha något som handlar om mycket av den tunga lyftningen. Den dominerande upplökssågen Ruby suger sig till femte plats i RedMonk Language Rankings 2012, som använder en kombination av GitHub och Stack Overflow språk ranking för att bedöma ett språk popularitet, [sedan dess drivs den till åttonde].
Men RoR, även om det är populärt, är inte superstjärnan som det var och det har mött hård konkurrens, eftersom frågor som skalning har blivit ett större problem för webbföretag. JavaScript Framework Node.js, till exempel, har blivit populär eftersom det kräver mindre minne att hantera många anslutningar på grund av dess återuppringningsfunktioner.
Rubins position bland de tio bästa språket har sakta fallit i RedMonk-rankningarna sedan 2012 - i Tiobe-språkets popularitet Index - det har fallit in och ut ur topp 10 - men det är troligt en återspegling av att ha nått mognad och den avtagande dominansen av Ruby on Rails webbapplikationsramen.
(Bild: © Redmonk.com)Det är uppenbart att Matz är medveten om att antagandet av något programmeringsspråk stimuleras av de projekt och ramar som växer från ett språk samhälle och ekosystem. RoR var ett häpnadsväckande exempel på det - och inte allmänt från själva språken, även om Ruby ger en mycket kärlek från sina användare. Så medan han var angelägen att uttrycka sin ånger för tidigare misstag som han hade gjort på sitt språk vid Bath Ruby Conference, ville han också definiera vägen framåt för att ta itu med de prestanda och skalaproblem som utvecklare har för att inte använda Ruby.
Matzs tillvägagångssätt för att ta itu med nyckelproblemen har också ett öga på två nyckeltrender han ser för framtiden: skalbarhet och vad han kallade den smartare följeslagaren.
För att bekämpa skalbarhet och skapa större produktivitet, tror Matz, “Snabbare körning, mindre kod, mindre team [är] nycklarna för produktiviteten.”
Datorer blir snabbare men det räcker inte, “Vi behöver snabbare utförande eftersom vi behöver bearbeta mer data och mer trafik, erkänner Matz. “Vi når gränsen för kärnans prestanda. Därför har Ruby 3.0 ett mål att vara tre gånger snabbare än Ruby 2.0” eller vad Matz kallar 'Ruby3x3'. “Detta är lätt att säga” Matz antog och i dagarna 1,8, säger han Ruby var “för långsam” och det var ett misstag.
Koichi Sasadas arbete med YARV (ännu en Ruby VM) förbättrade prestanda för Ruby 1.9, och “Sedan dess,” säger Matz, “Vi har jobbat hårt för att förbättra prestandan hos den virtuella maskinen, men det räcker inte.”
Tid för JIT
För att förbättra prestanda ytterligare introducerar Ruby JIT (Just-In-Time) -tekniken, som redan används av JVM och andra språk. “Så vi har skapat en prototyp av den här JIT-kompilatorn så att det här året, förmodligen på juldagen, kommer Ruby 2.6 att släppas,” Matz bekräftat.
Du kan prova den initiala implementeringen av MJIT-kompilatorn i 2.6-förhandsvisning1. För närvarande kan du kolla och kompilera Ruby-program i inbyggt kod med alternativet --jit, men Matz säger att det är “inte optimerad” även om för “åtminstone CPU-intensivt arbete går det två gånger snabbare än Ruby 2.0,” vilket han säger “låter lovande och erbjuder mycket utrymme för att förbättra JIT-kompilatorns prestanda”. För CPU-intensiva uppgifter visade Matz sig säker på att de skulle kunna uppnå tre gånger prestandaförbättringen.
Enligt kommentarer som hittades i John Hawthorns MJIT-kod, har den nuvarande prototypen JIT-kompilatorn en ganska ovanlig inställning, eftersom den använder C-kompilatorer, GCC och LLVM Clang, för genomförandet och även om Ruby-kod är enkelgängad, är MJIT sammanställd på en andra tråd.
Förmodligen är den tydligaste översiktliga förklaringen av hur MJIT fungerar levereras av Shannon Skipper:
“Med MJIT konverteras vissa Ruby YARV instruktioner till C-kod och läggs i en .c-fil, som kompileras av GCC eller Clang i en .so dynamisk biblioteksfil. RubyVM kan sedan använda den cachade, förkompilerade inbyggda koden från det dynamiska biblioteket nästa gång RubyVM ser samma YARV-instruktion.
Skalbarhet, Matz tror också, borde innebära att skapa mindre kod som “mer kod är mer underhåll, mer debugging, mer tid, mindre produktivitet,” och han skämt “mer mardröm.”
Yukihiro “Matz” Matsumo, den japanska datavetenskapare som skapade Ruby, var i Storbritannien för att driva landets första Hack Challenge för ambitiösa kommittärer till språket, som hölls på Cookpad i Bristol och att tala vid Bath Ruby Conference.
Mindre Ruby-kod kommer inte att innebära betydande ändringar av språkets syntax framåt. Starkt eftersom det finns lite utrymme för förändring: “vi har slutat med tecken. Nästan alla av dem används,” säger Matz.
Att vara en exponent av egolär utveckling är inte heller beredd att ändra syntaxen för hans självkänsla och se de befintliga Ruby-programmen sönder, så han var försiktig med att säga: “Vi kommer inte att ändra Ruby-syntax så mycket.”
Processen ska också hanteras av mindre grupper, enligt Matz, för att hantera skalbarhet och öka produktiviteten: “Om ditt lag är större än det faktum att de kan äta två pizzor,” citerar VD för Amazon Jeff Bezos "Two-Pizza Rule" “då är laget ditt för stort.” Uppriktigt sagt kan det bero på vem som är på ditt lag och hur mycket de tycker om pizza, men tanken, säger Matz, bygger på personlig erfarenhet, “Om ditt lag är större så behöver du mer kommunikation och kommunikation är kostnaden.”
Mer abstraktion
Det har varit ganska uppvärmda debatter de senaste åren om behovet av fler Ruby-abstraktioner som ger tjänster för utvecklare att bygga applikationer som är anpassade till olika områden, så det var intressant att höra Matz säga att Ruby behövde “mer abstraktion”, och nämner Ruby on Rails användning av modell-View-Controller (MVC) abstraktion som ett exempel. Ruby skaparen trodde inte att de var perfekta “men de ger den typ av abstraktion som är avgörande för produktiviteten i framtiden.”
En nyckelabstraktion han utarbetade var ett samtidigt abstraktionsprojekt som kallades Guild.
“En sak som jag ångrar i Rubys design var tråd [...] det är för primitivt,” Matz medger. Men Ruby är ett offer för sin egen framgång: Språket används av så många människor, så Matz känner att det är för sent att ta bort tråden.
“Jag tycker att det är okej att inkludera en ny abstraktion,” han vågade “och avskräcka från användningen av trådar” i framtiden. "Guild är Rubys experiment för att ge ett bättre tillvägagångssätt. Guild är helt isolerat,” Matz berättade för publiken i Bath.
“I grund och botten har vi inte ett delat tillstånd mellan gudar. Det betyder att vi inte behöver oroa oss för delningen av staten, så vi behöver inte bry sig om låserna eller ömsesidiga uteslutningar. Mellan Guilds kommunicerar vi med en kanal eller kö.”
Matz förväntar sig att skicka Guilds samtidiga abstraktion i Ruby 2.7 eller 2.8.
Ett annat kodnamnsprojekt som Ruby har i verket är brant. Detta är ett försök på statisk typanalys för Ruby: “Det är svårt att analysera Ruby-typinformationen, eftersom Ruby är ett dynamiskt typat språk, så att du kan göra någonting med alla typer,” förklarade Matz. Vissa undergrupper av Ruby kan skrivas statiskt, så Matz säger att de kan lägga till de statiska typkontrollerna, som är “typ av som en TypScript-användardefinierad typinformation [...]. Vi kommer att utgå så mycket som möjligt och vi försöker få informationen från de externa typdefinierade filerna eller från runtime-profiltypsanalysen ... ”
Med hjälp av denna analys föreslår Matz att utvecklare kommer att kunna upptäcka fler fel vid sammanställningstiden, “Vi kommer inte att genomföra 100% upptäcka säkerhet, det är inte möjligt för Ruby, men vi kan upptäcka 20-40% av fel,” vilket Matz säger är mycket bättre än ingenting alls.
Ruby kände sig inte särskilt död vid Bath Ruby-konferensen, där över 500 utvecklare samlades i två dagar med talare och workshops (och karaoke). Årskonferensen är den största Ruby-utvecklaren i Storbritannien och den första händelsen om fem år som värd för Yukihiro “Matz” Matsumoto, skaparen av Ruby.
(Bild: © Bath Ruby)Matsumoto berörde också att Ruby blev a “smartare följeslagare” såväl som programmerarens bästa vän. “Vi är nu i början av smartare datorer, så, till exempel, RuboCop [statisk kodanalysator] är ett sätt att hjälpa dig,” Även om Matz kommenterade mycket skratt i publiken, är han “inte ett stort fan av RuboCops standardbok.” Matz föreslog att i framtiden när du sammanställer ett program “Ruby kan föreslå [till exempel] "Du kallar den här metoden med en argumentsträng men du förväntade dig att kalla denna metod med heltal"”. Talz till honom efter hans keynote, utarbetade Matz lite mer på hans förhoppningar för programmeringsinteraktiviteten, som han kom överens som de lät som Tony Starks Jarvis. Matz säger att han väsentligen vill se “en AI [som] kommer att interagera med mig för att organisera bättre programvara.”
Tänk gapet
Förändring medför möjligheten till programvara som inte längre fungerar som avsedd eller alls. Det är en oro som hyser Matz från tidigare misstag: “Tidigare gjorde vi ett stort gap, till exempel mellan 1,8 och 1,9,” säger Matz. “Vi gjorde ett stort gap och introducerade många brytande förändringar, så att vårt samhälle var uppdelat i två i fem år.”
Även om denna typ av sak har hänt tidigare, är det klassiska exemplet med Python 2 och Python 3, Matz ser detta som en tragedi: “Vi kommer inte att göra det misstag igen så vi kommer att göra en kontinuerlig utveckling. Vi ska lägga till JIT-kompilatorn till 2.6 och inte vänta till Ruby 3.0, vi kommer att lägga till någon typ av samtidig abstraktion i framtiden i Ruby 2.7 till 2.8, men det kommer inte att bli en brytande förändring. [...] Vi kommer att få det så att varje Ruby 2-program körs i Ruby 3.”
Omvänd Ruby s nuvarande långsamma bana nedåt kommer inte att vara en lätt uppgift och Matz verkar inser detta. Kommenterade att se de senaste resultaten från Stack Overflow Developer Survey på morgonen av keynote försvann hans leende kort: “Gå och ro är de mest älskade språken och Ruby är inte i listan, tyvärr. Jag tror att Ruby blir varm igen i framtiden. Folk älskar ny teknik. För tio år sedan var Ruby riktigt varmt på grund av Rails. Idag anses Ruby inte vara varmt, men det är stabilt.“
Ruby har dock korsat det gapet i mognad och Matz har ingen avsikt att ge upp: “Ruby är ett bra språk för att hjälpa dig att bli produktiv och jag vill att Ruby ska vara så för evigt, om möjligt. Det betyder att vi måste utvecklas kontinuerligt för evigt, så vi kan inte sluta, vi kan inte sluta”
En del av den här drivkraften återspeglas i den första Ruby Hack Challenge som hölls utanför Japan. Detta ägde rum förra veckan vid Cookpads nya internationella huvudkontor, en receptplattform som använder Ruby-utvecklare i Bristol. Dessa utmaningar är ett tillfälle för ambitiösa ambitioner att lära sig att utöka Ruby-funktioner, fixa fel och förbättra prestanda Ruby.
Enligt Miles Woodroffe, CTO of Cookpad, huvudsponsor för Bath Ruby-konferensen, fokuserade denna hack på Ruby Interpreter som instruerar datorer hur man kör program skrivna i Ruby code.
Ett av målen för hacket gjorde det möjligt för deltagarna att direkt bidra till nästa version av Ruby Interpreter.
När utsläppet av Ruby 3 drar närmare, slated officiellt för 2020, är det klart att Matz vill fortsätta tillhandahålla ett verktyg som hjälper dig att koncentrera dig på de roliga och roliga aspekterna av programmering.
Två saker är uppenbara när man pratar med Yukihiro “Matz” Matsumoto. För det första att han kommer att göra allt han kan för att göra det möjligt för Ruby att överleva och trivas, och för det andra att han verkligen njuter av att göra vad han gör. Han är passionerad om Ruby och dess samhälle och hans utsikter är ganska enkla: Programmering är kul, han har haft kul under de senaste 25 åren som gör Ruby och i 52 års ålder hoppas han att han kommer att spendera de närmaste 25 åren med så mycket kul på det språk han drömde och skrev ner i en nu förlorad anteckningsbok, vid 17 års ålder.
- Detta är ett utdrag ur en artikel för den månatliga Linux-användaren och utvecklarmagasinet, den respekterade myndigheten på GNU / Linux och det fria och öppna källkososystemet för Linux-entusiaster, IT-proffs och utvecklare. Prenumerera idag och få 5 utgåvor för £ 5 (endast i Storbritannien. Erbjudandet slutar 30 april 2018).