do we really need new languages?

Post on 15-Apr-2017

127 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

QUALITY. PRODUCTIVITY. INNOVATION.

endava.com

Do we really need new languages?

Moldova ICT Summit 2016

2

2

“Programs must be written for people to read, and only incidentally for machines to execute.”

Harold Abelson, SICP

3

3

Evolution, beginning

QUALITY. PRODUCTIVITY. INNOVATION.

Machine language • Flat

Assembler • Procedural

C • Structural

C++/Java • OPP

4

4

Evolution, beginning

QUALITY. PRODUCTIVITY. INNOVATION.

Trololo!!!How about

FP?Alonzo ChurchParent of Lambda Calculus

5

5

FP advantages

QUALITY. PRODUCTIVITY. INNOVATION.

• Expressions• Immutability • Declarative programming• No need to track order• You know it from school*

*math classes

EZ

6

6

What we have today

QUALITY. PRODUCTIVITY. INNOVATION.

In mobile development we use mostly Java and Objective-C

So what’s wrong guys,Don’t you like my

OOPs?

Alan KayFather of OOP

7

7

Huston, we have a problem!

QUALITY. PRODUCTIVITY. INNOVATION.

• State is root of all evil*• Statements (you have to track ex order)• There is no OOP

Oh my...

8

8

…and what should we do?

QUALITY. PRODUCTIVITY. INNOVATION.

Update our languages!

9

9

It’s not so easy

QUALITY. PRODUCTIVITY. INNOVATION.

We want to keep backward compatibility

Not so fast boy!

James GoslingAuthor of Java

10

10

So what to do?

QUALITY. PRODUCTIVITY. INNOVATION.

That’s easyInvent new language!

Kotlin, Swift, Scala, Go…

11

11

Kotlin vs Java

QUALITY. PRODUCTIVITY. INNOVATION.

Laconic Kotlindata class Country(val name: String? = null)

Java public class Country { private String name;

public Country(String name) { }

public String getName() { return name; } public void setName(String name) { this.name = name; } }

12

12

Kotlin vs Java

QUALITY. PRODUCTIVITY. INNOVATION.

Kotlin - type inferenceval myMap = HashMap<String, List<String>>()

JavaMap<String, List<String>> myMap = new HashMap<String, List<String>>();

// Or:

Map<String, List<String>> myMap = new HashMap<>();

13

13

Kotlin vs Java

QUALITY. PRODUCTIVITY. INNOVATION.

Kotlin - extensions functionsfun String.encodeSpaces(): String { return this.replaceAll(" ", "_")}

Javapublic final class StringUtils { public static String encodeString(String str) { return str.replaceAll(" ", "_") }}

14

14

Kotlin vs Java

QUALITY. PRODUCTIVITY. INNOVATION.

Functional Kotlinfun <T> lock(lock: Lock, body: () -> T): T {

lock.lock()

try {

return body()

}

finally {

lock.unlock()

}

}

15

15

Kotlin vs Java

QUALITY. PRODUCTIVITY. INNOVATION.

Safe Kotlin

var a: String = "abc"a = null // compilation error

var b: String? = "abc"b = null // ok

if (b != null && b.length > 0) print("String of length ${b.length}")else print("Empty string")

16

16

Kotlin vs Java

QUALITY. PRODUCTIVITY. INNOVATION.

● Function literals and inline functions● Smart casts● String templates● Class delegation● Type inference● Range expressions● Default arguments● Named arguments● More

17

17

Kotlin vs Java

QUALITY. PRODUCTIVITY. INNOVATION.

http://kotlinlang.org http://try.kotlinlang.org

18

18

Swift vs Objective-C

QUALITY. PRODUCTIVITY. INNOVATION.

Swifthello = “Hello”world = “World”str = ”\(hello) \(world)!”

Obj-CNSString *hello = @”Hello”;NSString *world = @”World”;NSString *str = [NSString stringWithFormat:@”%@ %@!”, hello, world];

19

19

Swift vs Objective-C

QUALITY. PRODUCTIVITY. INNOVATION.

Obj-Cfor(int i = 0; i < 10; i++) {

if (i % 2 == 0) {[array addObject:@i];

}}

Swiftfunc isEven(Int) -> {

return number % 2 ==0}array = Array(1..10).filter(isEven)

20

20

Swift vs Objective-C

QUALITY. PRODUCTIVITY. INNOVATION.

• It’s not binded to C• Say “bye-bye nil”• Simpler code• Optionals• No [], namespaces…• It’s Open Source

21

21

Swift vs Objective-C

QUALITY. PRODUCTIVITY. INNOVATION.

22

22

How new languages help us to build better products

QUALITY. PRODUCTIVITY. INNOVATION.

• Readability• Predictability• Testability• Expressivity

Robert MartinUncle Bob

My style, boy!

23

23

More benefits?

QUALITY. PRODUCTIVITY. INNOVATION.

• Write less code• More joy from work• Think less• More time for coffee• Less possibility to be fired• On step closer to nirvana

Î-mi place atmosfera

de aici!

Guido Van RossumAuthor of Python

24

24

What if I’m not a mobile developer?

QUALITY. PRODUCTIVITY. INNOVATION.

C/C++ Rust

Java Scala

C# ???

Python Go

Erlang Elixir

Ruby Crystal

Java Script Dart

25

25

Conclusion

Make it by yourself =)

Do we really need new languages?

26

Thank you

QUALITY. PRODUCTIVITY. INNOVATION.

Vlad DrahneaSoftware Engineer

Vlad.drahnea@endava.com

Stefan PopaSoftware Engineer

Stefan.popa@endava.com

top related