Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
LightningTalk GOLO MixIT 2013
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Philippe CHARRIERE
November 04, 2013
Programming
62
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
140
Golo, the Tiny Language that gives super powers
k33g
0
290
Apéro Fonctionnel
k33g
0
280
Programmation fonctionnelle 🐑 en JS
k33g
2
300
Other Decks in Programming
See All in Programming
吝嗇家のためのAI活用 / AI development for miser - ChatGPT + Issue Driven Development
tooppoo
0
190
型も通る、synthも通る、それでも危ない 〜AIのCDKの権限とコストを機械で検証する〜 / It Passes Type Checks, It Passes Synth Checks, but It’s Still Risky — Automatically Verifying Permissions and Costs in AI’s CDK —
seike460
PRO
1
420
任せる範囲はこう広がった / How the Scope of AI Delegation Has Expanded
nrslib
1
280
Go言語とトイモデルで学ぶTransformerの気持ち / fukuokago23-transformer
monochromegane
0
140
php-fpmのプロセスが枯渇した日-調査・対処・そして本当にやるべきだったこと-
shibuchaaaan
0
140
AIキャラアプリkaiwaの低遅延音声通話基盤をどう作ったか - AWS Gravitonで支える低遅延・低コストAI Agent基盤
mogamit
0
190
PHP に部分適用が来るぞ!……ところで何それ?おいしいの? #phpcon / phpcon-2026
shogogg
0
350
AI駆動開発を妨げる技術的負債の解消アプローチ / ai-refactoring-approach
minodriven
17
9.3k
Laravel Boostに学ぶ、AIにPHPを書かせる技術 〜OSSの実装から蒸留するエージェント制御の王道〜
kentaroutakeda
3
530
FDEが実現するAI駆動経営の現在地
gonta
2
220
JAWS-UG横浜 #102 AWSサ終供養LT会 成仏できない AWS サービスたち 〜本日、三体供養します〜
maroon1st
0
240
鹿野さんに聞く!『TypeScriptコードレシピ集』で磨く実践力
tonkotsuboy_com
4
1.2k
Featured
See All Featured
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
470
The Mindset for Success: Future Career Progression
greggifford
PRO
0
430
KATA
mclloyd
PRO
35
15k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
410
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
340
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
Discover your Explorer Soul
emna__ayadi
2
1.2k
So, you think you're a good person
axbom
PRO
2
2.1k
Git: the NoSQL Database
bkeepers
PRO
432
67k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
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 :)