Think beyond frameworks, The real gems are in the languages
-
Upload
naresha-k -
Category
Technology
-
view
119 -
download
2
Transcript of Think beyond frameworks, The real gems are in the languages
![Page 1: Think beyond frameworks, The real gems are in the languages](https://reader030.fdocuments.in/reader030/viewer/2022032613/587e311a1a28abb93e8b6ff1/html5/thumbnails/1.jpg)
Think Beyond Frameworks, the Real Gems are in the
Languages
Naresha K Chief Technologist, Channel Bridge Software Labs
[email protected] @naresha_k
1
![Page 2: Think beyond frameworks, The real gems are in the languages](https://reader030.fdocuments.in/reader030/viewer/2022032613/587e311a1a28abb93e8b6ff1/html5/thumbnails/2.jpg)
2
![Page 3: Think beyond frameworks, The real gems are in the languages](https://reader030.fdocuments.in/reader030/viewer/2022032613/587e311a1a28abb93e8b6ff1/html5/thumbnails/3.jpg)
DISCLAIMER
3
The contents of this presentation may hurt your feelings! Proceed with
caution
![Page 4: Think beyond frameworks, The real gems are in the languages](https://reader030.fdocuments.in/reader030/viewer/2022032613/587e311a1a28abb93e8b6ff1/html5/thumbnails/4.jpg)
4
![Page 5: Think beyond frameworks, The real gems are in the languages](https://reader030.fdocuments.in/reader030/viewer/2022032613/587e311a1a28abb93e8b6ff1/html5/thumbnails/5.jpg)
5
![Page 6: Think beyond frameworks, The real gems are in the languages](https://reader030.fdocuments.in/reader030/viewer/2022032613/587e311a1a28abb93e8b6ff1/html5/thumbnails/6.jpg)
6
![Page 7: Think beyond frameworks, The real gems are in the languages](https://reader030.fdocuments.in/reader030/viewer/2022032613/587e311a1a28abb93e8b6ff1/html5/thumbnails/7.jpg)
Grails
4
Opensource, Forums, Slack
Community3
On-demand capabilities,
Reuse, Share
Plugin Ecosystem
2
Convention over configuration,
Groovy
Productivity1
JVM, Spring, Hibernate
Built on proven tech
![Page 8: Think beyond frameworks, The real gems are in the languages](https://reader030.fdocuments.in/reader030/viewer/2022032613/587e311a1a28abb93e8b6ff1/html5/thumbnails/8.jpg)
Business Goals
8
1
Time To Market
2
Economy
![Page 9: Think beyond frameworks, The real gems are in the languages](https://reader030.fdocuments.in/reader030/viewer/2022032613/587e311a1a28abb93e8b6ff1/html5/thumbnails/9.jpg)
9
![Page 10: Think beyond frameworks, The real gems are in the languages](https://reader030.fdocuments.in/reader030/viewer/2022032613/587e311a1a28abb93e8b6ff1/html5/thumbnails/10.jpg)
10
Layer 4
Layer 3
Layer 2
Layer 1
![Page 11: Think beyond frameworks, The real gems are in the languages](https://reader030.fdocuments.in/reader030/viewer/2022032613/587e311a1a28abb93e8b6ff1/html5/thumbnails/11.jpg)
![Page 12: Think beyond frameworks, The real gems are in the languages](https://reader030.fdocuments.in/reader030/viewer/2022032613/587e311a1a28abb93e8b6ff1/html5/thumbnails/12.jpg)
What it takes to succeed?
12
Architecture
Framework
Domain
Practices
Libraries
Language
![Page 13: Think beyond frameworks, The real gems are in the languages](https://reader030.fdocuments.in/reader030/viewer/2022032613/587e311a1a28abb93e8b6ff1/html5/thumbnails/13.jpg)
13
Why should we care for the language?
![Page 14: Think beyond frameworks, The real gems are in the languages](https://reader030.fdocuments.in/reader030/viewer/2022032613/587e311a1a28abb93e8b6ff1/html5/thumbnails/14.jpg)
Programming Concepts
Objects
Functions
Higher Order Functions
Inheritance
Encapsulation
Polymorphism
Statically Typed
Dynamic Typing
Immutability
Composition
Parallel processing
Lazy Evaluation
![Page 15: Think beyond frameworks, The real gems are in the languages](https://reader030.fdocuments.in/reader030/viewer/2022032613/587e311a1a28abb93e8b6ff1/html5/thumbnails/15.jpg)
15
Frameworks reflect the opinion
of the language they are built on
![Page 16: Think beyond frameworks, The real gems are in the languages](https://reader030.fdocuments.in/reader030/viewer/2022032613/587e311a1a28abb93e8b6ff1/html5/thumbnails/16.jpg)
16
Lesser the opinionated the
language => more decisions to be made
by it’s users
![Page 17: Think beyond frameworks, The real gems are in the languages](https://reader030.fdocuments.in/reader030/viewer/2022032613/587e311a1a28abb93e8b6ff1/html5/thumbnails/17.jpg)
Groovy & Grails EvolutionTIMELINES
17
Initial
DynamicGroovy 2.0
Static Typing
Groovy 1.6
AST Transformation
![Page 18: Think beyond frameworks, The real gems are in the languages](https://reader030.fdocuments.in/reader030/viewer/2022032613/587e311a1a28abb93e8b6ff1/html5/thumbnails/18.jpg)
18
Language Evolution Influences Framework
Evolution
![Page 19: Think beyond frameworks, The real gems are in the languages](https://reader030.fdocuments.in/reader030/viewer/2022032613/587e311a1a28abb93e8b6ff1/html5/thumbnails/19.jpg)
19
![Page 20: Think beyond frameworks, The real gems are in the languages](https://reader030.fdocuments.in/reader030/viewer/2022032613/587e311a1a28abb93e8b6ff1/html5/thumbnails/20.jpg)
20
Groovy & Grails
![Page 21: Think beyond frameworks, The real gems are in the languages](https://reader030.fdocuments.in/reader030/viewer/2022032613/587e311a1a28abb93e8b6ff1/html5/thumbnails/21.jpg)
21
https://twitter.com/venkat_s/status/815686401870200833
![Page 22: Think beyond frameworks, The real gems are in the languages](https://reader030.fdocuments.in/reader030/viewer/2022032613/587e311a1a28abb93e8b6ff1/html5/thumbnails/22.jpg)
Specifying Types
22
def friend = new Person(name: 'Raj')def friend = new Person(name: 'Raj')def friend = new Person(name: 'Raj')
def friend = new Person(name: ‘Ravi')// vsPerson me = new Person(name: 'Naresha')
![Page 23: Think beyond frameworks, The real gems are in the languages](https://reader030.fdocuments.in/reader030/viewer/2022032613/587e311a1a28abb93e8b6ff1/html5/thumbnails/23.jpg)
Specifying Types
23
class Person {String nameInteger age
}
![Page 24: Think beyond frameworks, The real gems are in the languages](https://reader030.fdocuments.in/reader030/viewer/2022032613/587e311a1a28abb93e8b6ff1/html5/thumbnails/24.jpg)
Specifying Types
24
class MyController {def myService// vsAnotherService anotherService
}
![Page 25: Think beyond frameworks, The real gems are in the languages](https://reader030.fdocuments.in/reader030/viewer/2022032613/587e311a1a28abb93e8b6ff1/html5/thumbnails/25.jpg)
Hierarchies -> Capabilities
25
1 Inheritance
2 Composition (Traits)
![Page 26: Think beyond frameworks, The real gems are in the languages](https://reader030.fdocuments.in/reader030/viewer/2022032613/587e311a1a28abb93e8b6ff1/html5/thumbnails/26.jpg)
Leveraging Meta Programming
26
class MyService { @Transactional(propagation = Propagation.REQUIRES_NEW)
def m1(){}
def m2() {m1()// vsmyProxy.m1()
}}
![Page 27: Think beyond frameworks, The real gems are in the languages](https://reader030.fdocuments.in/reader030/viewer/2022032613/587e311a1a28abb93e8b6ff1/html5/thumbnails/27.jpg)
Leveraging Meta Programming
27
sc.clazz.metaClass.getMyProxy = { -> grailsApplication.mainContext.getBean(propertyName) }
![Page 28: Think beyond frameworks, The real gems are in the languages](https://reader030.fdocuments.in/reader030/viewer/2022032613/587e311a1a28abb93e8b6ff1/html5/thumbnails/28.jpg)
Leveraging DSLs
28
class MenuItem {String menuCodeString groupString labelString controllerString action
}
![Page 29: Think beyond frameworks, The real gems are in the languages](https://reader030.fdocuments.in/reader030/viewer/2022032613/587e311a1a28abb93e8b6ff1/html5/thumbnails/29.jpg)
Leveraging DSLs
29
menuItems = [new MenuItem(
menuCode: 'customer_new', group: ‘customer',
label: 'Add Customer',controller: ‘customer',
action: 'create'),
]
![Page 30: Think beyond frameworks, The real gems are in the languages](https://reader030.fdocuments.in/reader030/viewer/2022032613/587e311a1a28abb93e8b6ff1/html5/thumbnails/30.jpg)
Leveraging DSLs
30
menuItems = [menuItem {
menuCode 'customer_new' group 'customer'label: 'Add Customer'controller: 'customer'action: 'create'
}]
![Page 31: Think beyond frameworks, The real gems are in the languages](https://reader030.fdocuments.in/reader030/viewer/2022032613/587e311a1a28abb93e8b6ff1/html5/thumbnails/31.jpg)
Leveraging DSLs
31
menuItems = [menuItem {
menuCode 'customer_new' group 'customer'label 'Add Customer'controller 'customer'action 'create'
}]
![Page 32: Think beyond frameworks, The real gems are in the languages](https://reader030.fdocuments.in/reader030/viewer/2022032613/587e311a1a28abb93e8b6ff1/html5/thumbnails/32.jpg)
Leveraging DSLs
32
class MenuItem {String menuCode// Other attributes
def menuItem(Closure config){}menuCode(val) { menuCode = val}
}
![Page 33: Think beyond frameworks, The real gems are in the languages](https://reader030.fdocuments.in/reader030/viewer/2022032613/587e311a1a28abb93e8b6ff1/html5/thumbnails/33.jpg)
33
Frameworks are gateways to
productivity, not barriers for innovation
![Page 34: Think beyond frameworks, The real gems are in the languages](https://reader030.fdocuments.in/reader030/viewer/2022032613/587e311a1a28abb93e8b6ff1/html5/thumbnails/34.jpg)
Think Beyond Frameworks, Learn Languages
Happy Learning…“