SlideShare a Scribd company logo
1 of 34
1IBM
_
Languages:
For the Man or the Machine?
Gireesh Punathil
JavaOne | Sep 18 – 22 | San Francisco
Agenda
❊ Machine and the Machine Code
❊ Language Classification
❊ Abstraction types and their implications
❊ Major Language paradigms
❊ Java Perspectives
❊ Stories from Scripts
❊ Expressiveness plus Efficiency
Introduction to the speaker
❊ 14 years of experience: Developing, Porting, and Debugging large and
complex System software modules
❊ Virtual machines, Language Runtimes, Compilers, Web Servers
❊ Active Contributor to Open source Projects
❊ Interests: Language semantics, Subroutine linkage, Code optimization,
Virtual machines, Process runtime, PaaS, Core file debugging
❊ Focus area: PaaS
linkedin: gireeshpunathil
Twitter : @gireeshpunam
Github : gireeshpunathil
Email : gpunathi@in.ibm.com
Machine and the Machine Code
❊ Logic implemented by Circuits
❊ Behavior specified by Architecture
❊ Capability abstracted by Instructions
❊ Instructions encoded in bits
❊ Code and Data referred by address
💻
Non-abstracted Capabilities
❊ Arithmetic: ADD
❊ Copy: MOV
❊ Compare: CMP
❊ Control: JMP, CALL, RET
❊ Port access: IN, OUT
❊ CAS: CMPXCHG
Benefits
❊ Fast and Powerful
❊ Direct access to devices
❊ Little code transformation
❊ Low resource consumption
Drawbacks
♨ Lacks portability
♨ Code maintenance difficult
♨ Hard to read
♨ Un-named data
♨ Hard to debug issues
♨ Very little runtime checks
💉 🔌
C – A thin wrapper around Assembly
❊ Arithmetic: +, -, *, /, +=, ++
❊ Copy: =, memset(), strcpy()
❊ Compare: ==, !=, <, >, >=
❊ Control: if, for, switch, (), return
❊ Port access: read(), write()
❊ CAS: mutex, semaphore, conditions
🚀
C – Often as powerful as Assembly
unsigned long mytime()
{
unsigned long time;
__asm__ volatile (”rdtsc”:"=A" (time));
return time;
}
http://www.tldp.org/HOWTO/text/IO-Port-Programming ⏱
Domain based
❊ Focus on problem domain
❊ Validation at business level
❊ Used in limited scope
❊ 3rd level of Abstraction
❊ HTML, SQL, SED, AWK
Paradigm based
Programming Language Classification
Script based
❊ General purpose
❊ Focus on S/W domain
❊ Rules on code & data
❊ 1st level of Abstraction
❊ C, C++, C#, Java
❊ Discrete commands strung
into a coherent whole
❊ Automate repeatable tasks
❊ 2nd level of Abstraction
❊ Py, PHP, JS, Ruby, Bash
💊🃋 🗡
Implications of Abstraction
❊ Compilers: Optimization, Transformation
❊ [ GCC, MSVC, Clang, Javac ]
❊ Transpilers: Source-Source Transformation
❊ [ CoffeeScript, Jython, Jruby ]
❊ Interpreters: Translation, Command-to-Action
❊ [ Bash, JVM, V8, Python ]
❊ Virtual machines: Virtualization and Simulation
❊ [ JVM, LLVM, CLR, ART ]
❊ Runtime Environments: Execution Support Subsystem
❊ [ GLIBC, JRE, PTHREAD, KERNEL32.DLL ]
🐞
🗡
⏳🔋 🗡🐌 🗡
Types of Abstraction
❊ High level semantics (instructions)
❊ Typed variables (raw memory)
❊ Virtual machine (CPU)
User space Kernel space
❊ System calls (devices)
❊ Threading (Scheduling)
❊ APIs(I/O, net, FS,
resources)
⚙ ⚓️
Major Language Paradigms
Object Orientation
Data organization
Data Modelling
Behavior specialization
Composition, Delegation
Polymorphism
Re-usability
Modularity
Data organization cost
Data access cost
Data optimization cost
Code optimization cost
Code bloating
Weak Spatial Locality
Runtime code verification
Runtime type verification
Runtime linking
Dynamic dispatch
Method de-virtualization
Dynamic memory
Synchronization
Serialization
Expressiveness Compiler Pressure Runtime Pressure
Functional Programming
Functions as variables
Continuation passing
Higher order functions
Code loosely bound to
data, applied as custom
agents
Data access validation
State definition
Contextualization
State Creation
Context management
Context Synchronization
Context lifecycle
Disambiguation
Runtime Code generation
Memory management
Expressiveness Compiler Pressure Runtime Pressure
Java Perspectives
Virtual Methods
Enable specialization
Runtime polymorphism
Mimic real world heritage
models
Hierarchy validation
Virtual method table creation
Class Hierarchy
Analysis
Method lookup
Dynamic binding
Code aggregation
Virtual guarding
Expressiveness Compiler Pressure Runtime Pressure
Synchronization
Synchronization intrinsic
to language
Locks intrinsic to Objects
Granular at function and
block level
Syntax and Semantics
validation
Lock word management
Implement sync. primitives
Fast path sync.
Slow path sync.
Exception handling
Expressiveness Compiler Pressure Runtime Pressure
Threading
Abstracts execution sequence
Flexible creation models
Lifecycle management
Backbone of concurrency
Backbone of Multicore exploitation
Cost of Native threading
Cost of stack management
Cost of context switching
Cost of synchronization
Expressiveness Compiler Pressure Runtime Pressure
Garbage Collection
Automatic Object
memory management
Cost of the Stopped World
Cost of Copy Collection
Cost of Stack walk
Cost of Marking
Cost of Sweeping
Cost of Compaction
Features Compiler Pressure Runtime Pressure
Native Interfacing
Special cases to descent
into a low level language
Fill the gap in platform
abstraction
Syntax validation
Type verification
Call semantics validation
Stub creation
Dynamic loading
Dynamic linking
Type conversion/validation
Environment management
Stack management
Context switching
Memory management
Expressiveness Compiler Pressure Runtime Pressure
this
Anchor Java Object
Disambiguate heredity
Syntax validation
Access verification
Instance check cost
Field access cost
Method access cost
Invocation cost
Locking cost
Expressiveness Compiler Pressure Runtime Pressure
Class
Custom Types
Glues Code with Data
Implements OO
Models real world entities
with attributes and
behaviors
Syntax validation
Hierarchy validation
Access validation
Semantic validation
Constant pool creation
Bytecode generation
Unitization
Class loading cost
Class loader cost
Class initialization cost
Reflection cost
Object header cost
Field access cost
Method access cost
Invocation cost
Expressiveness Compiler Pressure Runtime Pressure
Bytecode aka. Portability
Write Once Run Everywhere
Forget the real machine,
learn only language spec.
and virtual machine spec.
Syntax validation
Hierarchy validation
Access validation
Semantic validation
Constant pool creation
Bytecode generation
Unitization
Interpretation cost
Dynamic Compilation cost
Classloading cost
Runtime verification cost
Exception handling cost
Expressiveness Compiler Pressure Runtime Pressure
Stories from Scripts
Dynamic Typing
Model more real-world
like data
Data bound to Object not
with the Class
Data access cost
Type inference cost
Object Lookup cost
Data access cost
Type inference cost
Heterogeneous type
management cost
Features Compiler Pressure Runtime Pressure
Runtime Evaluation
Executable in a String
Run arbitrary,
unprepared code
Code verification
Data verification
Consistency check
Entire process of parsing,
compilation,
transformation,
interpretation initiated at a
call site
Features Compiler Pressure Runtime Pressure
When
Expressiveness
Balances
with
Efficiency
Python: Analytics
Packing and Zipping
Generator expressions
Tuples, Sets and Queues
OS module: thinnest wrapper
around platforms
•Beautiful is better than ugly
•Explicit is better than implicit
•Simple is better than complex
•Complex is better than complicated
•Readability counts
…
• Practicality beats purity
Deep learning Semantics Zen of Python
Swift: Concurrency and Parallelism
dispatch_async(queue) {
parseOneTBData();
}
Concurrency Semantics Multi-core exploitation
Node.js: Interactive Systems
Event driven Semantics Asynchronous Callbacks
http.get('http://www.google.com', function(res) {
console.log('net io');
});
Summary
❊ Ideal feature balances expressiveness with commutability
❊ A Seamless, Silky route from the feature to the platform
❊ It is OK to be Polyglot
❊ Each language specializes around a central theme
❊ Keep one eye on the intended workload, and other on the
underlying system
❊ Find the right tool for each jobs, and fuse them
Want to build a new Language?
❊ Obvious Challenge: Huge Initial Investment
❊ Build Language Runtime before building a Language:
 Platform Abstraction
 Memory management
 Dynamic Compiler
 Diagnostic support
❊ Eclipse OMR (Open Managed Runtime): (https://developer.ibm.com/open/omr)
 Create and supply all common infrastructure components
 Effort is better spent on Language features
 Reduces (Relegates) the complexity
References
Java Virtual Machine Specification
https://docs.oracle.com/javase/specs/jvms/se8/jvms8.pdf
Intel Architecture Specification
http://www.intel.in/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-
manual-325462.pdf
Programming Language Classification
https://en.wikipedia.org/wiki/Category:Programming_language_classification
Python Language Reference
https://docs.python.org/3/reference/index.html
Swift Language Reference
https://swift.org/documentation/TheSwiftProgrammingLanguage(Swift3).epub
Node.js API reference
https://nodejs.org/api
Eclipse OMR
https://developer.ibm.com/open/omr/
34IBM
_
Thank You!
Gireesh Punathil | gpunathi@in.ibm.com | @gireeshpunam

More Related Content

What's hot

.Net Framwork Architecture And components
.Net Framwork Architecture And components.Net Framwork Architecture And components
.Net Framwork Architecture And componentssyedArr
 
New c sharp4_features_part_iii
New c sharp4_features_part_iiiNew c sharp4_features_part_iii
New c sharp4_features_part_iiiNico Ludwig
 
Language Engineering in the Cloud
Language Engineering in the CloudLanguage Engineering in the Cloud
Language Engineering in the Cloudlennartkats
 
Integrated Language Definition Testing: Enabling Test-Driven Language Develop...
Integrated Language Definition Testing: Enabling Test-Driven Language Develop...Integrated Language Definition Testing: Enabling Test-Driven Language Develop...
Integrated Language Definition Testing: Enabling Test-Driven Language Develop...lennartkats
 
New c sharp4_features_part_vi
New c sharp4_features_part_viNew c sharp4_features_part_vi
New c sharp4_features_part_viNico Ludwig
 
Building scalable and language independent java services using apache thrift
Building scalable and language independent java services using apache thriftBuilding scalable and language independent java services using apache thrift
Building scalable and language independent java services using apache thriftTalentica Software
 
Using Aspects for Language Portability (SCAM 2010)
Using Aspects for Language Portability (SCAM 2010)Using Aspects for Language Portability (SCAM 2010)
Using Aspects for Language Portability (SCAM 2010)lennartkats
 
Green Custard Friday Talk 5: React-Native Performance
Green Custard Friday Talk 5: React-Native PerformanceGreen Custard Friday Talk 5: React-Native Performance
Green Custard Friday Talk 5: React-Native PerformanceGreen Custard
 
Enforcing API Design Rules for High Quality Code Generation
Enforcing API Design Rules for High Quality Code GenerationEnforcing API Design Rules for High Quality Code Generation
Enforcing API Design Rules for High Quality Code GenerationTim Burks
 
Remix Your Language Tooling (JSConf.eu 2012)
Remix Your Language Tooling (JSConf.eu 2012)Remix Your Language Tooling (JSConf.eu 2012)
Remix Your Language Tooling (JSConf.eu 2012)lennartkats
 
Join the dart side of webdevelopment reloaded
Join the dart side of webdevelopment reloadedJoin the dart side of webdevelopment reloaded
Join the dart side of webdevelopment reloadedClaudio d'Angelis
 
.Net overview
.Net overview.Net overview
.Net overviewteach4uin
 
List of programming_languages_by_type
List of programming_languages_by_typeList of programming_languages_by_type
List of programming_languages_by_typePhoenix
 
Week 8 intro to python
Week 8   intro to pythonWeek 8   intro to python
Week 8 intro to pythonbrianjihoonlee
 
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...Maarten Balliauw
 

What's hot (19)

.Net Framwork Architecture And components
.Net Framwork Architecture And components.Net Framwork Architecture And components
.Net Framwork Architecture And components
 
New c sharp4_features_part_iii
New c sharp4_features_part_iiiNew c sharp4_features_part_iii
New c sharp4_features_part_iii
 
Language Engineering in the Cloud
Language Engineering in the CloudLanguage Engineering in the Cloud
Language Engineering in the Cloud
 
Integrated Language Definition Testing: Enabling Test-Driven Language Develop...
Integrated Language Definition Testing: Enabling Test-Driven Language Develop...Integrated Language Definition Testing: Enabling Test-Driven Language Develop...
Integrated Language Definition Testing: Enabling Test-Driven Language Develop...
 
New c sharp4_features_part_vi
New c sharp4_features_part_viNew c sharp4_features_part_vi
New c sharp4_features_part_vi
 
.Net Introduction
.Net Introduction.Net Introduction
.Net Introduction
 
Building scalable and language independent java services using apache thrift
Building scalable and language independent java services using apache thriftBuilding scalable and language independent java services using apache thrift
Building scalable and language independent java services using apache thrift
 
Using Aspects for Language Portability (SCAM 2010)
Using Aspects for Language Portability (SCAM 2010)Using Aspects for Language Portability (SCAM 2010)
Using Aspects for Language Portability (SCAM 2010)
 
Green Custard Friday Talk 5: React-Native Performance
Green Custard Friday Talk 5: React-Native PerformanceGreen Custard Friday Talk 5: React-Native Performance
Green Custard Friday Talk 5: React-Native Performance
 
Enforcing API Design Rules for High Quality Code Generation
Enforcing API Design Rules for High Quality Code GenerationEnforcing API Design Rules for High Quality Code Generation
Enforcing API Design Rules for High Quality Code Generation
 
Remix Your Language Tooling (JSConf.eu 2012)
Remix Your Language Tooling (JSConf.eu 2012)Remix Your Language Tooling (JSConf.eu 2012)
Remix Your Language Tooling (JSConf.eu 2012)
 
.Net overview by cetpa
.Net overview by cetpa.Net overview by cetpa
.Net overview by cetpa
 
Join the dart side of webdevelopment reloaded
Join the dart side of webdevelopment reloadedJoin the dart side of webdevelopment reloaded
Join the dart side of webdevelopment reloaded
 
Net overview
Net overviewNet overview
Net overview
 
.Net overview
.Net overview.Net overview
.Net overview
 
List of programming_languages_by_type
List of programming_languages_by_typeList of programming_languages_by_type
List of programming_languages_by_type
 
Week 8 intro to python
Week 8   intro to pythonWeek 8   intro to python
Week 8 intro to python
 
.Net overview
.Net overview.Net overview
.Net overview
 
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
 

Viewers also liked

IBM IMPACT 2009 Conference Session 2024 - WebSphere sMash Integration, PHP wi...
IBM IMPACT 2009 Conference Session 2024 - WebSphere sMash Integration, PHP wi...IBM IMPACT 2009 Conference Session 2024 - WebSphere sMash Integration, PHP wi...
IBM IMPACT 2009 Conference Session 2024 - WebSphere sMash Integration, PHP wi...Robert Nicholson
 
2011-03-15 Lockheed Martin Open Source Day
2011-03-15 Lockheed Martin Open Source Day2011-03-15 Lockheed Martin Open Source Day
2011-03-15 Lockheed Martin Open Source DayShawn Wells
 
Accelerating Innovation with Java: The Future is Today
Accelerating Innovation with Java: The Future is TodayAccelerating Innovation with Java: The Future is Today
Accelerating Innovation with Java: The Future is TodayJohn Duimovich
 
Wicket Introduction
Wicket IntroductionWicket Introduction
Wicket IntroductionEyal Golan
 
Eclipse + Maven + OSGi has never been so easy - Atllia Kiss
Eclipse + Maven + OSGi has never been so easy - Atllia KissEclipse + Maven + OSGi has never been so easy - Atllia Kiss
Eclipse + Maven + OSGi has never been so easy - Atllia Kissmfrancis
 
Ekon20 mORMot SOA Delphi Conference
Ekon20 mORMot SOA Delphi Conference Ekon20 mORMot SOA Delphi Conference
Ekon20 mORMot SOA Delphi Conference Arnaud Bouchez
 
Why a DevOps approach is critical to achieve digital transformation
Why a DevOps approach is critical to achieve digital transformationWhy a DevOps approach is critical to achieve digital transformation
Why a DevOps approach is critical to achieve digital transformationAgileSparks
 
OSGi & Java in Industrial IoT - More than a Solid Trend - Essential to Scale ...
OSGi & Java in Industrial IoT - More than a Solid Trend - Essential to Scale ...OSGi & Java in Industrial IoT - More than a Solid Trend - Essential to Scale ...
OSGi & Java in Industrial IoT - More than a Solid Trend - Essential to Scale ...mfrancis
 
OOW16 - Migrating and Managing Customizations for Oracle E-Business Suite 12....
OOW16 - Migrating and Managing Customizations for Oracle E-Business Suite 12....OOW16 - Migrating and Managing Customizations for Oracle E-Business Suite 12....
OOW16 - Migrating and Managing Customizations for Oracle E-Business Suite 12....vasuballa
 
PHP, Java EE & .NET Comparison
PHP, Java EE & .NET ComparisonPHP, Java EE & .NET Comparison
PHP, Java EE & .NET ComparisonHaim Michael
 
Comparison of Programming Platforms
Comparison of Programming PlatformsComparison of Programming Platforms
Comparison of Programming PlatformsAnup Hariharan Nair
 
OOW16 - Advanced Architectures for Oracle E-Business Suite [CON6705]
OOW16 - Advanced Architectures for Oracle E-Business Suite [CON6705]OOW16 - Advanced Architectures for Oracle E-Business Suite [CON6705]
OOW16 - Advanced Architectures for Oracle E-Business Suite [CON6705]vasuballa
 
Difference between Java and c#
Difference between Java and c#Difference between Java and c#
Difference between Java and c#Sagar Pednekar
 
JDV for Codemotion Rome 2017
JDV for Codemotion Rome 2017JDV for Codemotion Rome 2017
JDV for Codemotion Rome 2017Luigi Fugaro
 
The Digital Maturity Matrix -A Methodology for Digital Transformation
The Digital Maturity Matrix -A Methodology for Digital TransformationThe Digital Maturity Matrix -A Methodology for Digital Transformation
The Digital Maturity Matrix -A Methodology for Digital TransformationJoakim Jansson
 
Java Batch for Cost Optimized Efficiency
Java Batch for Cost Optimized EfficiencyJava Batch for Cost Optimized Efficiency
Java Batch for Cost Optimized EfficiencySridharSudarsan
 

Viewers also liked (20)

IBM IMPACT 2009 Conference Session 2024 - WebSphere sMash Integration, PHP wi...
IBM IMPACT 2009 Conference Session 2024 - WebSphere sMash Integration, PHP wi...IBM IMPACT 2009 Conference Session 2024 - WebSphere sMash Integration, PHP wi...
IBM IMPACT 2009 Conference Session 2024 - WebSphere sMash Integration, PHP wi...
 
3.1 oracle salonika
3.1 oracle salonika3.1 oracle salonika
3.1 oracle salonika
 
Final Presentation
Final PresentationFinal Presentation
Final Presentation
 
2011-03-15 Lockheed Martin Open Source Day
2011-03-15 Lockheed Martin Open Source Day2011-03-15 Lockheed Martin Open Source Day
2011-03-15 Lockheed Martin Open Source Day
 
Accelerating Innovation with Java: The Future is Today
Accelerating Innovation with Java: The Future is TodayAccelerating Innovation with Java: The Future is Today
Accelerating Innovation with Java: The Future is Today
 
Wicket Introduction
Wicket IntroductionWicket Introduction
Wicket Introduction
 
Eclipse + Maven + OSGi has never been so easy - Atllia Kiss
Eclipse + Maven + OSGi has never been so easy - Atllia KissEclipse + Maven + OSGi has never been so easy - Atllia Kiss
Eclipse + Maven + OSGi has never been so easy - Atllia Kiss
 
Ekon20 mORMot SOA Delphi Conference
Ekon20 mORMot SOA Delphi Conference Ekon20 mORMot SOA Delphi Conference
Ekon20 mORMot SOA Delphi Conference
 
Why a DevOps approach is critical to achieve digital transformation
Why a DevOps approach is critical to achieve digital transformationWhy a DevOps approach is critical to achieve digital transformation
Why a DevOps approach is critical to achieve digital transformation
 
Java Enterprise Edition
Java Enterprise EditionJava Enterprise Edition
Java Enterprise Edition
 
OSGi & Java in Industrial IoT - More than a Solid Trend - Essential to Scale ...
OSGi & Java in Industrial IoT - More than a Solid Trend - Essential to Scale ...OSGi & Java in Industrial IoT - More than a Solid Trend - Essential to Scale ...
OSGi & Java in Industrial IoT - More than a Solid Trend - Essential to Scale ...
 
OOW16 - Migrating and Managing Customizations for Oracle E-Business Suite 12....
OOW16 - Migrating and Managing Customizations for Oracle E-Business Suite 12....OOW16 - Migrating and Managing Customizations for Oracle E-Business Suite 12....
OOW16 - Migrating and Managing Customizations for Oracle E-Business Suite 12....
 
PHP, Java EE & .NET Comparison
PHP, Java EE & .NET ComparisonPHP, Java EE & .NET Comparison
PHP, Java EE & .NET Comparison
 
Comparison of Programming Platforms
Comparison of Programming PlatformsComparison of Programming Platforms
Comparison of Programming Platforms
 
OOW16 - Advanced Architectures for Oracle E-Business Suite [CON6705]
OOW16 - Advanced Architectures for Oracle E-Business Suite [CON6705]OOW16 - Advanced Architectures for Oracle E-Business Suite [CON6705]
OOW16 - Advanced Architectures for Oracle E-Business Suite [CON6705]
 
Unlocking the power of digital healthcare
Unlocking the power of digital healthcareUnlocking the power of digital healthcare
Unlocking the power of digital healthcare
 
Difference between Java and c#
Difference between Java and c#Difference between Java and c#
Difference between Java and c#
 
JDV for Codemotion Rome 2017
JDV for Codemotion Rome 2017JDV for Codemotion Rome 2017
JDV for Codemotion Rome 2017
 
The Digital Maturity Matrix -A Methodology for Digital Transformation
The Digital Maturity Matrix -A Methodology for Digital TransformationThe Digital Maturity Matrix -A Methodology for Digital Transformation
The Digital Maturity Matrix -A Methodology for Digital Transformation
 
Java Batch for Cost Optimized Efficiency
Java Batch for Cost Optimized EfficiencyJava Batch for Cost Optimized Efficiency
Java Batch for Cost Optimized Efficiency
 

Similar to Languages formanandmachine

Web Development Environments: Choose the best or go with the rest
Web Development Environments:  Choose the best or go with the restWeb Development Environments:  Choose the best or go with the rest
Web Development Environments: Choose the best or go with the restgeorge.james
 
Using Pony for Fintech
Using Pony for FintechUsing Pony for Fintech
Using Pony for FintechC4Media
 
Can i service this from my raspberry pi
Can i service this from my raspberry piCan i service this from my raspberry pi
Can i service this from my raspberry piThoughtworks
 
Petapath HP Cast 12 - Programming for High Performance Accelerated Systems
Petapath HP Cast 12 - Programming for High Performance Accelerated SystemsPetapath HP Cast 12 - Programming for High Performance Accelerated Systems
Petapath HP Cast 12 - Programming for High Performance Accelerated Systemsdairsie
 
JavaScript for Enterprise Applications
JavaScript for Enterprise ApplicationsJavaScript for Enterprise Applications
JavaScript for Enterprise ApplicationsPiyush Katariya
 
WebCamp 2016: PHP.Алексей Петров.PHP at Scale: System Architect Toolbox
WebCamp 2016: PHP.Алексей Петров.PHP at Scale: System Architect ToolboxWebCamp 2016: PHP.Алексей Петров.PHP at Scale: System Architect Toolbox
WebCamp 2016: PHP.Алексей Петров.PHP at Scale: System Architect ToolboxWebCamp
 
Apache Samza 1.0 - What's New, What's Next
Apache Samza 1.0 - What's New, What's NextApache Samza 1.0 - What's New, What's Next
Apache Samza 1.0 - What's New, What's NextPrateek Maheshwari
 
Odog : A Framework for Concurrent and Distributed software design
Odog : A Framework for Concurrent and Distributed software designOdog : A Framework for Concurrent and Distributed software design
Odog : A Framework for Concurrent and Distributed software designivanjokerbr
 
The "Holy Grail" of Dev/Ops
The "Holy Grail" of Dev/OpsThe "Holy Grail" of Dev/Ops
The "Holy Grail" of Dev/OpsErik Osterman
 
Node.js Web Apps @ ebay scale
Node.js Web Apps @ ebay scaleNode.js Web Apps @ ebay scale
Node.js Web Apps @ ebay scaleDmytro Semenov
 
Compiler Construction
Compiler ConstructionCompiler Construction
Compiler ConstructionAhmed Raza
 
Node.js for enterprise - JS Conference
Node.js for enterprise - JS ConferenceNode.js for enterprise - JS Conference
Node.js for enterprise - JS ConferenceTimur Shemsedinov
 
Runing JMeter Tests On Rancher
Runing JMeter Tests On RancherRuning JMeter Tests On Rancher
Runing JMeter Tests On RancherBogdan Marian
 
Building scalable and language-independent Java services using Apache Thrift ...
Building scalable and language-independent Java services using Apache Thrift ...Building scalable and language-independent Java services using Apache Thrift ...
Building scalable and language-independent Java services using Apache Thrift ...IndicThreads
 
Building and deploying LLM applications with Apache Airflow
Building and deploying LLM applications with Apache AirflowBuilding and deploying LLM applications with Apache Airflow
Building and deploying LLM applications with Apache AirflowKaxil Naik
 
Overview of VS2010 and .NET 4.0
Overview of VS2010 and .NET 4.0Overview of VS2010 and .NET 4.0
Overview of VS2010 and .NET 4.0Bruce Johnson
 
Optimization In Mobile Systems
Optimization In Mobile SystemsOptimization In Mobile Systems
Optimization In Mobile Systemsmomobangalore
 

Similar to Languages formanandmachine (20)

Web Development Environments: Choose the best or go with the rest
Web Development Environments:  Choose the best or go with the restWeb Development Environments:  Choose the best or go with the rest
Web Development Environments: Choose the best or go with the rest
 
Using Pony for Fintech
Using Pony for FintechUsing Pony for Fintech
Using Pony for Fintech
 
Can i service this from my raspberry pi
Can i service this from my raspberry piCan i service this from my raspberry pi
Can i service this from my raspberry pi
 
Petapath HP Cast 12 - Programming for High Performance Accelerated Systems
Petapath HP Cast 12 - Programming for High Performance Accelerated SystemsPetapath HP Cast 12 - Programming for High Performance Accelerated Systems
Petapath HP Cast 12 - Programming for High Performance Accelerated Systems
 
JavaScript for Enterprise Applications
JavaScript for Enterprise ApplicationsJavaScript for Enterprise Applications
JavaScript for Enterprise Applications
 
WebCamp 2016: PHP.Алексей Петров.PHP at Scale: System Architect Toolbox
WebCamp 2016: PHP.Алексей Петров.PHP at Scale: System Architect ToolboxWebCamp 2016: PHP.Алексей Петров.PHP at Scale: System Architect Toolbox
WebCamp 2016: PHP.Алексей Петров.PHP at Scale: System Architect Toolbox
 
Apache Samza 1.0 - What's New, What's Next
Apache Samza 1.0 - What's New, What's NextApache Samza 1.0 - What's New, What's Next
Apache Samza 1.0 - What's New, What's Next
 
Avro
AvroAvro
Avro
 
Odog : A Framework for Concurrent and Distributed software design
Odog : A Framework for Concurrent and Distributed software designOdog : A Framework for Concurrent and Distributed software design
Odog : A Framework for Concurrent and Distributed software design
 
The "Holy Grail" of Dev/Ops
The "Holy Grail" of Dev/OpsThe "Holy Grail" of Dev/Ops
The "Holy Grail" of Dev/Ops
 
Node.js Web Apps @ ebay scale
Node.js Web Apps @ ebay scaleNode.js Web Apps @ ebay scale
Node.js Web Apps @ ebay scale
 
Compiler Construction
Compiler ConstructionCompiler Construction
Compiler Construction
 
Tml for Ruby on Rails
Tml for Ruby on RailsTml for Ruby on Rails
Tml for Ruby on Rails
 
Node.js for enterprise - JS Conference
Node.js for enterprise - JS ConferenceNode.js for enterprise - JS Conference
Node.js for enterprise - JS Conference
 
Runing JMeter Tests On Rancher
Runing JMeter Tests On RancherRuning JMeter Tests On Rancher
Runing JMeter Tests On Rancher
 
Building scalable and language-independent Java services using Apache Thrift ...
Building scalable and language-independent Java services using Apache Thrift ...Building scalable and language-independent Java services using Apache Thrift ...
Building scalable and language-independent Java services using Apache Thrift ...
 
erlang 101
erlang 101erlang 101
erlang 101
 
Building and deploying LLM applications with Apache Airflow
Building and deploying LLM applications with Apache AirflowBuilding and deploying LLM applications with Apache Airflow
Building and deploying LLM applications with Apache Airflow
 
Overview of VS2010 and .NET 4.0
Overview of VS2010 and .NET 4.0Overview of VS2010 and .NET 4.0
Overview of VS2010 and .NET 4.0
 
Optimization In Mobile Systems
Optimization In Mobile SystemsOptimization In Mobile Systems
Optimization In Mobile Systems
 

Recently uploaded

Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceanilsa9823
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 

Recently uploaded (20)

Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 

Languages formanandmachine

  • 1. 1IBM _ Languages: For the Man or the Machine? Gireesh Punathil JavaOne | Sep 18 – 22 | San Francisco
  • 2. Agenda ❊ Machine and the Machine Code ❊ Language Classification ❊ Abstraction types and their implications ❊ Major Language paradigms ❊ Java Perspectives ❊ Stories from Scripts ❊ Expressiveness plus Efficiency
  • 3. Introduction to the speaker ❊ 14 years of experience: Developing, Porting, and Debugging large and complex System software modules ❊ Virtual machines, Language Runtimes, Compilers, Web Servers ❊ Active Contributor to Open source Projects ❊ Interests: Language semantics, Subroutine linkage, Code optimization, Virtual machines, Process runtime, PaaS, Core file debugging ❊ Focus area: PaaS linkedin: gireeshpunathil Twitter : @gireeshpunam Github : gireeshpunathil Email : gpunathi@in.ibm.com
  • 4. Machine and the Machine Code ❊ Logic implemented by Circuits ❊ Behavior specified by Architecture ❊ Capability abstracted by Instructions ❊ Instructions encoded in bits ❊ Code and Data referred by address 💻
  • 5. Non-abstracted Capabilities ❊ Arithmetic: ADD ❊ Copy: MOV ❊ Compare: CMP ❊ Control: JMP, CALL, RET ❊ Port access: IN, OUT ❊ CAS: CMPXCHG
  • 6. Benefits ❊ Fast and Powerful ❊ Direct access to devices ❊ Little code transformation ❊ Low resource consumption Drawbacks ♨ Lacks portability ♨ Code maintenance difficult ♨ Hard to read ♨ Un-named data ♨ Hard to debug issues ♨ Very little runtime checks 💉 🔌
  • 7. C – A thin wrapper around Assembly ❊ Arithmetic: +, -, *, /, +=, ++ ❊ Copy: =, memset(), strcpy() ❊ Compare: ==, !=, <, >, >= ❊ Control: if, for, switch, (), return ❊ Port access: read(), write() ❊ CAS: mutex, semaphore, conditions 🚀
  • 8. C – Often as powerful as Assembly unsigned long mytime() { unsigned long time; __asm__ volatile (”rdtsc”:"=A" (time)); return time; } http://www.tldp.org/HOWTO/text/IO-Port-Programming ⏱
  • 9. Domain based ❊ Focus on problem domain ❊ Validation at business level ❊ Used in limited scope ❊ 3rd level of Abstraction ❊ HTML, SQL, SED, AWK Paradigm based Programming Language Classification Script based ❊ General purpose ❊ Focus on S/W domain ❊ Rules on code & data ❊ 1st level of Abstraction ❊ C, C++, C#, Java ❊ Discrete commands strung into a coherent whole ❊ Automate repeatable tasks ❊ 2nd level of Abstraction ❊ Py, PHP, JS, Ruby, Bash 💊🃋 🗡
  • 10. Implications of Abstraction ❊ Compilers: Optimization, Transformation ❊ [ GCC, MSVC, Clang, Javac ] ❊ Transpilers: Source-Source Transformation ❊ [ CoffeeScript, Jython, Jruby ] ❊ Interpreters: Translation, Command-to-Action ❊ [ Bash, JVM, V8, Python ] ❊ Virtual machines: Virtualization and Simulation ❊ [ JVM, LLVM, CLR, ART ] ❊ Runtime Environments: Execution Support Subsystem ❊ [ GLIBC, JRE, PTHREAD, KERNEL32.DLL ] 🐞 🗡 ⏳🔋 🗡🐌 🗡
  • 11. Types of Abstraction ❊ High level semantics (instructions) ❊ Typed variables (raw memory) ❊ Virtual machine (CPU) User space Kernel space ❊ System calls (devices) ❊ Threading (Scheduling) ❊ APIs(I/O, net, FS, resources) ⚙ ⚓️
  • 13. Object Orientation Data organization Data Modelling Behavior specialization Composition, Delegation Polymorphism Re-usability Modularity Data organization cost Data access cost Data optimization cost Code optimization cost Code bloating Weak Spatial Locality Runtime code verification Runtime type verification Runtime linking Dynamic dispatch Method de-virtualization Dynamic memory Synchronization Serialization Expressiveness Compiler Pressure Runtime Pressure
  • 14. Functional Programming Functions as variables Continuation passing Higher order functions Code loosely bound to data, applied as custom agents Data access validation State definition Contextualization State Creation Context management Context Synchronization Context lifecycle Disambiguation Runtime Code generation Memory management Expressiveness Compiler Pressure Runtime Pressure
  • 16. Virtual Methods Enable specialization Runtime polymorphism Mimic real world heritage models Hierarchy validation Virtual method table creation Class Hierarchy Analysis Method lookup Dynamic binding Code aggregation Virtual guarding Expressiveness Compiler Pressure Runtime Pressure
  • 17. Synchronization Synchronization intrinsic to language Locks intrinsic to Objects Granular at function and block level Syntax and Semantics validation Lock word management Implement sync. primitives Fast path sync. Slow path sync. Exception handling Expressiveness Compiler Pressure Runtime Pressure
  • 18. Threading Abstracts execution sequence Flexible creation models Lifecycle management Backbone of concurrency Backbone of Multicore exploitation Cost of Native threading Cost of stack management Cost of context switching Cost of synchronization Expressiveness Compiler Pressure Runtime Pressure
  • 19. Garbage Collection Automatic Object memory management Cost of the Stopped World Cost of Copy Collection Cost of Stack walk Cost of Marking Cost of Sweeping Cost of Compaction Features Compiler Pressure Runtime Pressure
  • 20. Native Interfacing Special cases to descent into a low level language Fill the gap in platform abstraction Syntax validation Type verification Call semantics validation Stub creation Dynamic loading Dynamic linking Type conversion/validation Environment management Stack management Context switching Memory management Expressiveness Compiler Pressure Runtime Pressure
  • 21. this Anchor Java Object Disambiguate heredity Syntax validation Access verification Instance check cost Field access cost Method access cost Invocation cost Locking cost Expressiveness Compiler Pressure Runtime Pressure
  • 22. Class Custom Types Glues Code with Data Implements OO Models real world entities with attributes and behaviors Syntax validation Hierarchy validation Access validation Semantic validation Constant pool creation Bytecode generation Unitization Class loading cost Class loader cost Class initialization cost Reflection cost Object header cost Field access cost Method access cost Invocation cost Expressiveness Compiler Pressure Runtime Pressure
  • 23. Bytecode aka. Portability Write Once Run Everywhere Forget the real machine, learn only language spec. and virtual machine spec. Syntax validation Hierarchy validation Access validation Semantic validation Constant pool creation Bytecode generation Unitization Interpretation cost Dynamic Compilation cost Classloading cost Runtime verification cost Exception handling cost Expressiveness Compiler Pressure Runtime Pressure
  • 25. Dynamic Typing Model more real-world like data Data bound to Object not with the Class Data access cost Type inference cost Object Lookup cost Data access cost Type inference cost Heterogeneous type management cost Features Compiler Pressure Runtime Pressure
  • 26. Runtime Evaluation Executable in a String Run arbitrary, unprepared code Code verification Data verification Consistency check Entire process of parsing, compilation, transformation, interpretation initiated at a call site Features Compiler Pressure Runtime Pressure
  • 28. Python: Analytics Packing and Zipping Generator expressions Tuples, Sets and Queues OS module: thinnest wrapper around platforms •Beautiful is better than ugly •Explicit is better than implicit •Simple is better than complex •Complex is better than complicated •Readability counts … • Practicality beats purity Deep learning Semantics Zen of Python
  • 29. Swift: Concurrency and Parallelism dispatch_async(queue) { parseOneTBData(); } Concurrency Semantics Multi-core exploitation
  • 30. Node.js: Interactive Systems Event driven Semantics Asynchronous Callbacks http.get('http://www.google.com', function(res) { console.log('net io'); });
  • 31. Summary ❊ Ideal feature balances expressiveness with commutability ❊ A Seamless, Silky route from the feature to the platform ❊ It is OK to be Polyglot ❊ Each language specializes around a central theme ❊ Keep one eye on the intended workload, and other on the underlying system ❊ Find the right tool for each jobs, and fuse them
  • 32. Want to build a new Language? ❊ Obvious Challenge: Huge Initial Investment ❊ Build Language Runtime before building a Language:  Platform Abstraction  Memory management  Dynamic Compiler  Diagnostic support ❊ Eclipse OMR (Open Managed Runtime): (https://developer.ibm.com/open/omr)  Create and supply all common infrastructure components  Effort is better spent on Language features  Reduces (Relegates) the complexity
  • 33. References Java Virtual Machine Specification https://docs.oracle.com/javase/specs/jvms/se8/jvms8.pdf Intel Architecture Specification http://www.intel.in/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer- manual-325462.pdf Programming Language Classification https://en.wikipedia.org/wiki/Category:Programming_language_classification Python Language Reference https://docs.python.org/3/reference/index.html Swift Language Reference https://swift.org/documentation/TheSwiftProgrammingLanguage(Swift3).epub Node.js API reference https://nodejs.org/api Eclipse OMR https://developer.ibm.com/open/omr/
  • 34. 34IBM _ Thank You! Gireesh Punathil | gpunathi@in.ibm.com | @gireeshpunam