SlideShare a Scribd company logo
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

PDF
Ola Bini Evolving The Java Platform
PPTX
single pass compiler and its architecture
PDF
New c sharp4_features_part_iv
PPT
Modified.net overview
PPT
.Net overview
KEY
Test-driven language development
PDF
Clojure presentation
PDF
The Spoofax Language Workbench (SPLASH 2010)
Ola Bini Evolving The Java Platform
single pass compiler and its architecture
New c sharp4_features_part_iv
Modified.net overview
.Net overview
Test-driven language development
Clojure presentation
The Spoofax Language Workbench (SPLASH 2010)

What's hot (19)

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

Viewers also liked (20)

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

Similar to Languages formanandmachine (20)

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

Recently uploaded (20)

PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PDF
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
PPTX
Introduction to Artificial Intelligence
PPTX
VVF-Customer-Presentation2025-Ver1.9.pptx
PDF
How to Choose the Right IT Partner for Your Business in Malaysia
PDF
How Creative Agencies Leverage Project Management Software.pdf
PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
PDF
Digital Strategies for Manufacturing Companies
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PPTX
Odoo POS Development Services by CandidRoot Solutions
PDF
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
PPTX
Essential Infomation Tech presentation.pptx
PDF
How to Migrate SBCGlobal Email to Yahoo Easily
PDF
Nekopoi APK 2025 free lastest update
PDF
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
PDF
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
PDF
AI in Product Development-omnex systems
PPTX
ai tools demonstartion for schools and inter college
PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PDF
medical staffing services at VALiNTRY
Which alternative to Crystal Reports is best for small or large businesses.pdf
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
Introduction to Artificial Intelligence
VVF-Customer-Presentation2025-Ver1.9.pptx
How to Choose the Right IT Partner for Your Business in Malaysia
How Creative Agencies Leverage Project Management Software.pdf
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
Digital Strategies for Manufacturing Companies
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
Odoo POS Development Services by CandidRoot Solutions
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
Essential Infomation Tech presentation.pptx
How to Migrate SBCGlobal Email to Yahoo Easily
Nekopoi APK 2025 free lastest update
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
AI in Product Development-omnex systems
ai tools demonstartion for schools and inter college
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
medical staffing services at VALiNTRY

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