Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
LightningTalk GOLO MixIT 2013
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Philippe CHARRIERE
November 04, 2013
Programming
72
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
LightningTalk GOLO MixIT 2013
Philippe CHARRIERE
November 04, 2013
More Decks by Philippe CHARRIERE
See All by Philippe CHARRIERE
The Plan v3 pour BDX.io
k33g
1
210
Le Plan
k33g
0
220
Prog Fonctionnelle 🐑
k33g
1
400
Apéro fonctionnel
k33g
0
130
Scala Facile
k33g
0
300
Golo, the Tiny Language that gives super powers
k33g
0
150
Golo, the Tiny Language that gives super powers
k33g
0
310
Apéro Fonctionnel
k33g
0
280
Programmation fonctionnelle 🐑 en JS
k33g
2
300
Other Decks in Programming
See All in Programming
残高管理から台帳サービスへの進化
artoy
1
200
PumaからFalconに移行したRailsアプリケーションでの実践
falcon8823
0
170
Optunaを作ったときにやりたかったこと、その後 (2026/10/16, Optuna Meetup #3)
iwiwi
1
430
最近”作らせてる” ローカルAIアプリの話
akit37
0
470
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
1.2k
Rでドレミ/Do-Re-Mi_with_R
florets1
0
130
IBM Bob Dojo #1 仕様駆動開発入門
oniak3ibm
PRO
0
390
AI時代のコードレビューは人に向けるな、仕組みに向けろ
texmeijin
5
3.7k
AWSに止められる覚悟してますか?
morizo_1984
2
530
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
28
32k
気持ちぃ〜角丸 Squircle
ryu1013
0
310
パスワード再設定メールのURLについて知っておこう
uyuki234
0
160
Featured
See All Featured
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.5k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
780
Visualization
eitanlees
153
17k
brightonSEO & MeasureFest 2025 - Winning Strategies for Black Friday CRO & PPC - Christian Goodrich
cargoodrich
3
870
Typedesign – Prime Four
hannesfritz
42
3.2k
How to Ace a Technical Interview
jacobian
280
24k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
We Are The Robots
honzajavorek
0
400
Navigating Weather and Climate Data
rabernat
0
560
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
500
YesSQL, Process and Tooling at Scale
rocio
174
15k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
58k
Transcript
on peut aussi prendre du plaisir en codant ...
• Un nouveau langage de script dans la JVM (>=7)
• à base d’InvokeDynamic • créé par @jponge http://golo-lang.org/ Golo ?
Encore un langage pour la JVM !?! Oui mais •
SIMPLE, facilité d’apprentissage • LEGER (<270 KB tout mouillé) • EN SYMBIOSE totale avec Java • EVOLUTIF : né pour être modifié
points abordés • 4 éléments de langage • La cohabitation
Golo & Java • Comment “Augmenter” Golo • L’Ecosystème Golo
4 éléments de langage
❶ λ, closures
-‐> let world = |who, where| {
return who + " from " + where } let hello = |who| -‐> "Hello, " + who world(hello("John Carter"), "Mars")
andThen ? let welcome = (|who| -‐> "Hello,
" + who): andThen(|who, where| -‐> who + " from " + where) welcome("John Carter", "Mars")
❷ Class augmentation
augment augment java.util.ArrayList { ! function each =
|this, iterator| { for(var i=0, i < this:size(), i = i + 1{ iterator(this:get(i)) } } }
augment let list = ArrayList() list:add("A Princess
of Mars") list:add("The Gods of Mars") list:add("The Chessmen of Mars") list:each(|item|-‐>println(item))
❸ DynamicObjects —
let dad = DynamicObject() :name("Bugs") :define("hello",
|this| -‐> "I'm "+ this:name()) let mum = DynamicObject() :name("Lola"):hair("pink") let baby = DynamicObject() :mixin(dad):mixin(mum) :name("Babs") println( baby:hello() + ", my hair are " + baby:hair() ) ! #I'm Babs, my hair are pink
❹ Workers “les threads ULTRA faciles”
let enHouse = WorkerEnvironment.builder(): withCachedThreadPool() let
worker1 = enHouse:spawn(|message| { println("w1 : " + message) foreach (i in range(0, 10)) { println("w1 : " + i) } }) let worker2 = enHouse:spawn(|message| { println(message) foreach (i in range(0, 10)) { println("w2 : " +i) } if message:equals("shutdown") {enHouse:shutdown()} }) worker1:send("go") worker2:send("go"):send("go again"):send("shutdown")
Golo — Java
1 classe java ... package acme.looniversity; public
class Toon { private String name = null; private static int counter = 0; public String getName() { return name;} public Toon(String name) { this.name = name; counter+=1; } public static int getCounter() { return counter; } }
... utilisée en Golo import acme.looniversity.Toon function
main = |args| { let elmira = Toon("Elmira Duff") let buster = Toon("Buster Bunny") println( elmira:getName() +" "+ buster:getName() ) println( Toon.getCounter() ) }
Compiler du Golo ... module org.fortytwo.H2G2 function
theAnswer = |args...| -‐> 42 ! #goloc -‐output classes 42.golo #cd classes/ #jar -‐cf 42.jar org/fortytwo/H2G2.class
... L’utiliser en java import org.fortytwo.*; public
class Main { public static void main(String[] args) { System.out.println( H2G2.theAnswer() + " " + H2G2.theAnswer("6b13 × 9b13") + " " + H2G2.theAnswer(54) ); } } ! //42 42 42
Et aussi : Golo Class Loader ➼ Applications scriptables
“Augmenter” Golo trop simple, même pour moi
git clone https://github.com/ golo-‐lang/golo-‐lang.git public class Predefined {
public static int theAnswer() { return 42; } public static int theAnswer(Object question) { return theAnswer(); } rake special:bootstrap
Et hop ! println( theAnswerToLife() + "
" + theAnswerToLife("6b13 × 9b13") + " " + theAnswerToLife(54) ) ! # 42 42 42
Ecosystème
Ecosystème Serveurs d’application Outils d’install° Installation via Homebrew par @rlespinasse
Installation via RPM par @hgomez Librairies Golosa par @danielpetisme Mais aussi GoloHttpServer par @titimoby Vert.x-Golo par @julienviet Fast 1 “mini” Play Plugin Gradle par @marcinerdmann Plugin Jenkins par @danielpetisme
Tout ça pour dire • Faites du Golo, vous allez
redécouvrir Java • Faites des projets, faites les connaître • Suivez Golo, il est évolue • ET MERCI A @jponge :)