SlideShare a Scribd company logo
Design concerns for concrete syntax
Concrete syntax Quorum A. Stefik (University of Nevada),
S. Siebert (Washington School of Medicine)
integer a variable that holds whole values
if doing something after verifying that something is true
Boolean equals checking whether one thing is the same as another thing
array a variable that references one or more values in a row
class representing something in the computer that exists in the real world
method a list of instructions that represents a tangible behavior
general-purpose language
public a part of a computer program that can be accessed by another program
try attempting to run code that may not run correctly
Concrete syntax Quorum
notion non-programmerprogrammer score score
integer numberinteger
number
real
integer
real
8.38
6.20
5.88
6.63
6.46
5.91
float numberdecimal
number
float
decimal
rational
6.81
6.79
6.68
6.70
6.43
6.07
Concrete syntax Quorum
Boolean conditionboolean
bool
binary
logic
binary
7.68
7.63
6.25
5.32
5.26
5.11
string charactersstring
text
charstring
text
charstring
7.48
7.23
7.21
6.37
6.15
5.89
notion non-programmerprogrammer score score
Concrete syntax Quorum
assignment x = 1024x = 1024
x is 1024
x =: 1024
x is 1024
x : 1024
7.87
5.77
5.45
6.90
6.32
5.51
type cast use t as Doghandle t as Dog
use t as Dog
cast(t, Dog)
handle t as Dog
apply Dog to t
6.15
5.99
5.85
5.90
5.82
5.46
in Java: (Dog)t
notion non-programmerprogrammer score score
Concrete syntax Quorum
increment x = x + 1x = x + 1
x++
x += 1
x + 1
raise x
8.37
7.44
7.14
7.06
5.93
5.49
if statement ifif
when
whenever
when
require
8.37
7.49
6.86
6.89
6.59
6.46
notion non-programmerprogrammer score score
Concrete syntax Quorum
notion non-programmerprogrammer
class objectobject structure class structure framework
parent sourcesource parent foundation foundation parentsuper
this selfself me myself myself me
abstract blueprintprototype frame blueprint frame model
return providereturn report provide report return
constant permanentconstant const permanent constant const
try checktest check try test on error
static constantfixed constant static permanent fixed
Viscosity of notations
print ”text1” in bold
print ”text2” in bold + italic
print ”text3” in bold + red
print ”text4” in bold
introduce “styles”
style MyStyle is bold
using MyStyle {
print “text1”
print “text2” in italic
print “text3” in red
print “text4”
}
can be easily changed for all usages
modify the style of several items at once
no need to change the style of each individual item repetition viscosity
repetition viscosity
Viscosity of notations
knock-on viscosity
repetition viscosity
scope viscosity
violates internal constrains in the programchange in code
their resolution violates further constraints
change in size of input data requires changes to program structure
Turbo Pascal didn’t allow for
dynamic arrays
single action within model requires many repetitive actions
Writability and readability
writable syntax
users
not necessarily readable
tool support
readable syntax
can be written effectively
can be read effectively
concise
have to type less
editing support from IDE  writability of syntax
code completion
quickfixes
a more concise syntax
tables emphasize readability over writability
Writability and readability APL “A Programming Language”
central datatype multidimensional array
to represent most functions and operatorsspecial graphic symbols
very concise code
IBM 2741 special keyboard
Writability and readability MUMPS
Massachusetts General
Hospital Utility Multi-
Programming System
no reserved words
abbreviations for concepts
no priority of arithmetic operations
keywords can be used as identifiers
2+3*10 50
Writability and readability Piet esoteric language
program that prints
“Hello, world!”
Learnability and effectiveness
learnable syntax
conceptsthe more
effective syntax
useful for novices
can be “explored” by exploiting IDE support
“press Ctrl+Space
and the tool will
tell you what you
can type next”
have direct meaning in the domain
the easier to learn the language
after learning the language
users can express domain problems effectively
Multiple notations
different syntaxes for the same abstract syntax
let users choose
more learnable and verbosebeginners
more effective syntaxexperienced
easy to define several notations
projectional editors
IDE supportability SQL
SELECT field1, field2
FROM table1
WHERE ...
FROM table1
SELECT field1, field2
WHERE ...
textual languages syntax can be supported by IDE
code completion
when typing this code,
a user can’t get any support from IDE
because table has not yet been specified
a better syntax
with respect to IDE support
IDE supportability functional languages
advantage in terms of IDE support
function call
in either case, function comes first
f(a,b,c)
a.f(b,c)
alternative notation first argument before the dot (optional syntax)
(f a b c)
after the user types “a.”
suggest all functions available for the type of acode completion
much better explorability of the language

More Related Content

What's hot

CS152 Programming Paradigm
CS152 Programming Paradigm CS152 Programming Paradigm
CS152 Programming Paradigm
Kaya Ota
 
Programming Paradigm & Languages
Programming Paradigm & LanguagesProgramming Paradigm & Languages
Programming Paradigm & Languages
Gaditek
 
Importance of the quality of code
Importance of the quality of codeImportance of the quality of code
Importance of the quality of code
Shwe Yee
 
Text Editors and IDEs
Text Editors and IDEsText Editors and IDEs
Text Editors and IDEs
Forrester High School
 
Programming paradigms
Programming paradigmsProgramming paradigms
Programming paradigms
AVC College of Engineering
 
Programming Languages
Programming LanguagesProgramming Languages
Programming Languages
Edward Blurock
 
Quick Intro to Clean Coding
Quick Intro to Clean CodingQuick Intro to Clean Coding
Quick Intro to Clean Coding
Ecommerce Solution Provider SysIQ
 
SD & D Implementation
SD & D ImplementationSD & D Implementation
SD & D Implementation
Forrester High School
 
SD & D Types of programming language
SD & D Types of programming languageSD & D Types of programming language
SD & D Types of programming language
Forrester High School
 
Jsx language-notes
Jsx language-notesJsx language-notes
Jsx language-notes
Goro Fuji
 
Programming paradigm and web programming
Programming paradigm and web programmingProgramming paradigm and web programming
Programming paradigm and web programming
Mohammad Kamrul Hasan
 
Ch07 Programming for Security Professionals
Ch07 Programming for Security ProfessionalsCh07 Programming for Security Professionals
Ch07 Programming for Security Professionals
phanleson
 
WordCamp Pune 2017- WordPress Coding standards
WordCamp Pune 2017- WordPress Coding standardsWordCamp Pune 2017- WordPress Coding standards
WordCamp Pune 2017- WordPress Coding standards
Swapnil Patil
 
Architecting Domain-Specific Languages
Architecting Domain-Specific LanguagesArchitecting Domain-Specific Languages
Architecting Domain-Specific Languages
Markus Voelter
 
Basics of c# by sabir
Basics of c# by sabirBasics of c# by sabir
Basics of c# by sabir
Sabir Ali
 
Error hanadling in c programming presentation
Error hanadling in c programming presentationError hanadling in c programming presentation
Error hanadling in c programming presentation
PranaliPatil76
 
Best Practices of Software Development
Best Practices of Software DevelopmentBest Practices of Software Development
Best Practices of Software Development
Folio3 Software
 
Intro1
Intro1Intro1
Intro1
phanleson
 
over all view programming to computer
over all view programming to computer over all view programming to computer
over all view programming to computer
muniryaseen
 
mbeddr meets IncQuer - Combining the Best Features of Two Modeling Worlds
mbeddr meets IncQuer - Combining the Best Features of Two Modeling Worldsmbeddr meets IncQuer - Combining the Best Features of Two Modeling Worlds
mbeddr meets IncQuer - Combining the Best Features of Two Modeling Worlds
Istvan Rath
 

What's hot (20)

CS152 Programming Paradigm
CS152 Programming Paradigm CS152 Programming Paradigm
CS152 Programming Paradigm
 
Programming Paradigm & Languages
Programming Paradigm & LanguagesProgramming Paradigm & Languages
Programming Paradigm & Languages
 
Importance of the quality of code
Importance of the quality of codeImportance of the quality of code
Importance of the quality of code
 
Text Editors and IDEs
Text Editors and IDEsText Editors and IDEs
Text Editors and IDEs
 
Programming paradigms
Programming paradigmsProgramming paradigms
Programming paradigms
 
Programming Languages
Programming LanguagesProgramming Languages
Programming Languages
 
Quick Intro to Clean Coding
Quick Intro to Clean CodingQuick Intro to Clean Coding
Quick Intro to Clean Coding
 
SD & D Implementation
SD & D ImplementationSD & D Implementation
SD & D Implementation
 
SD & D Types of programming language
SD & D Types of programming languageSD & D Types of programming language
SD & D Types of programming language
 
Jsx language-notes
Jsx language-notesJsx language-notes
Jsx language-notes
 
Programming paradigm and web programming
Programming paradigm and web programmingProgramming paradigm and web programming
Programming paradigm and web programming
 
Ch07 Programming for Security Professionals
Ch07 Programming for Security ProfessionalsCh07 Programming for Security Professionals
Ch07 Programming for Security Professionals
 
WordCamp Pune 2017- WordPress Coding standards
WordCamp Pune 2017- WordPress Coding standardsWordCamp Pune 2017- WordPress Coding standards
WordCamp Pune 2017- WordPress Coding standards
 
Architecting Domain-Specific Languages
Architecting Domain-Specific LanguagesArchitecting Domain-Specific Languages
Architecting Domain-Specific Languages
 
Basics of c# by sabir
Basics of c# by sabirBasics of c# by sabir
Basics of c# by sabir
 
Error hanadling in c programming presentation
Error hanadling in c programming presentationError hanadling in c programming presentation
Error hanadling in c programming presentation
 
Best Practices of Software Development
Best Practices of Software DevelopmentBest Practices of Software Development
Best Practices of Software Development
 
Intro1
Intro1Intro1
Intro1
 
over all view programming to computer
over all view programming to computer over all view programming to computer
over all view programming to computer
 
mbeddr meets IncQuer - Combining the Best Features of Two Modeling Worlds
mbeddr meets IncQuer - Combining the Best Features of Two Modeling Worldsmbeddr meets IncQuer - Combining the Best Features of Two Modeling Worlds
mbeddr meets IncQuer - Combining the Best Features of Two Modeling Worlds
 

Similar to Design concerns for concrete syntax

FaSaT An Interoperable Test Automation Solution
FaSaT An Interoperable Test Automation SolutionFaSaT An Interoperable Test Automation Solution
FaSaT An Interoperable Test Automation Solution
QuEST Global (erstwhile NeST Software)
 
Envisioning the Future of Language Workbenches
Envisioning the Future of Language WorkbenchesEnvisioning the Future of Language Workbenches
Envisioning the Future of Language Workbenches
Markus Voelter
 
Mit4021 c# and .net
Mit4021   c# and .netMit4021   c# and .net
Mit4021 c# and .net
smumbahelp
 
Training 8051Report
Training 8051ReportTraining 8051Report
Training 8051Report
Kuldeep Kaushik
 
C++ programing lanuage
C++ programing lanuageC++ programing lanuage
C++ programing lanuage
Nimai Chand Das
 
Software development slides
Software development slidesSoftware development slides
Software development slides
iarthur
 
Implementing Refactorings in IntelliJ IDEA
Implementing Refactorings in IntelliJ IDEAImplementing Refactorings in IntelliJ IDEA
Implementing Refactorings in IntelliJ IDEA
intelliyole
 
CASE tools and their effects on software quality
CASE tools and their effects on software qualityCASE tools and their effects on software quality
CASE tools and their effects on software quality
Utkarsh Agarwal
 
Modern C++
Modern C++Modern C++
Modern C++
Richard Thomson
 
Illustrated Code (ASE 2021)
Illustrated Code (ASE 2021)Illustrated Code (ASE 2021)
How to do code review and use analysis tool in software development
How to do code review and use analysis tool in software developmentHow to do code review and use analysis tool in software development
How to do code review and use analysis tool in software development
Mitosis Technology
 
FULL DOCUMENT.docx
FULL DOCUMENT.docxFULL DOCUMENT.docx
FULL DOCUMENT.docx
Usha Ravichandran
 
Differences between method overloading and method overriding
Differences between method overloading and method overridingDifferences between method overloading and method overriding
Differences between method overloading and method overriding
Pinky Anaya
 
Code review
Code reviewCode review
Code review
Abhishek Sur
 
Automation Testing theory notes.pptx
Automation Testing theory notes.pptxAutomation Testing theory notes.pptx
Automation Testing theory notes.pptx
NileshBorkar12
 
Design Patterns- Course for students .pptx
Design Patterns- Course for students  .pptxDesign Patterns- Course for students  .pptx
Design Patterns- Course for students .pptx
khaledmohamedadelkam
 
Tools for the Toolmakers
Tools for the ToolmakersTools for the Toolmakers
Tools for the Toolmakers
Caleb Callaway
 
Early Detection of Collaboration Conflicts & Risks in Software Development
Early Detection of Collaboration Conflicts & Risks in Software DevelopmentEarly Detection of Collaboration Conflicts & Risks in Software Development
Early Detection of Collaboration Conflicts & Risks in Software Development
Roopesh Jhurani
 
50120140503001
5012014050300150120140503001
50120140503001
IAEME Publication
 
50120140503001
5012014050300150120140503001
50120140503001
IAEME Publication
 

Similar to Design concerns for concrete syntax (20)

FaSaT An Interoperable Test Automation Solution
FaSaT An Interoperable Test Automation SolutionFaSaT An Interoperable Test Automation Solution
FaSaT An Interoperable Test Automation Solution
 
Envisioning the Future of Language Workbenches
Envisioning the Future of Language WorkbenchesEnvisioning the Future of Language Workbenches
Envisioning the Future of Language Workbenches
 
Mit4021 c# and .net
Mit4021   c# and .netMit4021   c# and .net
Mit4021 c# and .net
 
Training 8051Report
Training 8051ReportTraining 8051Report
Training 8051Report
 
C++ programing lanuage
C++ programing lanuageC++ programing lanuage
C++ programing lanuage
 
Software development slides
Software development slidesSoftware development slides
Software development slides
 
Implementing Refactorings in IntelliJ IDEA
Implementing Refactorings in IntelliJ IDEAImplementing Refactorings in IntelliJ IDEA
Implementing Refactorings in IntelliJ IDEA
 
CASE tools and their effects on software quality
CASE tools and their effects on software qualityCASE tools and their effects on software quality
CASE tools and their effects on software quality
 
Modern C++
Modern C++Modern C++
Modern C++
 
Illustrated Code (ASE 2021)
Illustrated Code (ASE 2021)Illustrated Code (ASE 2021)
Illustrated Code (ASE 2021)
 
How to do code review and use analysis tool in software development
How to do code review and use analysis tool in software developmentHow to do code review and use analysis tool in software development
How to do code review and use analysis tool in software development
 
FULL DOCUMENT.docx
FULL DOCUMENT.docxFULL DOCUMENT.docx
FULL DOCUMENT.docx
 
Differences between method overloading and method overriding
Differences between method overloading and method overridingDifferences between method overloading and method overriding
Differences between method overloading and method overriding
 
Code review
Code reviewCode review
Code review
 
Automation Testing theory notes.pptx
Automation Testing theory notes.pptxAutomation Testing theory notes.pptx
Automation Testing theory notes.pptx
 
Design Patterns- Course for students .pptx
Design Patterns- Course for students  .pptxDesign Patterns- Course for students  .pptx
Design Patterns- Course for students .pptx
 
Tools for the Toolmakers
Tools for the ToolmakersTools for the Toolmakers
Tools for the Toolmakers
 
Early Detection of Collaboration Conflicts & Risks in Software Development
Early Detection of Collaboration Conflicts & Risks in Software DevelopmentEarly Detection of Collaboration Conflicts & Risks in Software Development
Early Detection of Collaboration Conflicts & Risks in Software Development
 
50120140503001
5012014050300150120140503001
50120140503001
 
50120140503001
5012014050300150120140503001
50120140503001
 

More from Mikhail Barash

MODELS 2020 Tutorial on MPS - Supplementary Material 8 - TextGen
MODELS 2020 Tutorial on MPS - Supplementary Material 8 - TextGen MODELS 2020 Tutorial on MPS - Supplementary Material 8 - TextGen
MODELS 2020 Tutorial on MPS - Supplementary Material 8 - TextGen
Mikhail Barash
 
MODELS 2020 Tutorial on MPS - Supplementary Material 5 - Creating concept Ent...
MODELS 2020 Tutorial on MPS - Supplementary Material 5 - Creating concept Ent...MODELS 2020 Tutorial on MPS - Supplementary Material 5 - Creating concept Ent...
MODELS 2020 Tutorial on MPS - Supplementary Material 5 - Creating concept Ent...
Mikhail Barash
 
MODELS 2020 Tutorial on MPS - Supplementary Material 3 - Creating editors for...
MODELS 2020 Tutorial on MPS - Supplementary Material 3 - Creating editors for...MODELS 2020 Tutorial on MPS - Supplementary Material 3 - Creating editors for...
MODELS 2020 Tutorial on MPS - Supplementary Material 3 - Creating editors for...
Mikhail Barash
 
MODELS 2020 Tutorial on MPS - Supplementary Material 1 - Creating concept Entity
MODELS 2020 Tutorial on MPS - Supplementary Material 1 - Creating concept EntityMODELS 2020 Tutorial on MPS - Supplementary Material 1 - Creating concept Entity
MODELS 2020 Tutorial on MPS - Supplementary Material 1 - Creating concept Entity
Mikhail Barash
 
Towards a mnemonic classification of software languages
Towards a mnemonic classification of software languagesTowards a mnemonic classification of software languages
Towards a mnemonic classification of software languages
Mikhail Barash
 
Worst practices for domain-specific modelling
Worst practices for domain-specific modellingWorst practices for domain-specific modelling
Worst practices for domain-specific modelling
Mikhail Barash
 
An ABC of JetBrains MPS
An ABC of JetBrains MPSAn ABC of JetBrains MPS
An ABC of JetBrains MPS
Mikhail Barash
 
KernelF: a functional core for domain-specific languages in JetBrains MPS
KernelF: a functional core for domain-specific languages in JetBrains MPSKernelF: a functional core for domain-specific languages in JetBrains MPS
KernelF: a functional core for domain-specific languages in JetBrains MPS
Mikhail Barash
 
Reflections on teaching JetBrains MPS within a university course
Reflections on teaching JetBrains MPS within a university courseReflections on teaching JetBrains MPS within a university course
Reflections on teaching JetBrains MPS within a university course
Mikhail Barash
 
Language Workbench Language Wheel
Language Workbench Language WheelLanguage Workbench Language Wheel
Language Workbench Language Wheel
Mikhail Barash
 
Design dimensions of DSLs
Design dimensions of DSLsDesign dimensions of DSLs
Design dimensions of DSLs
Mikhail Barash
 
JetBrains MPS: Typesystem Aspect
JetBrains MPS: Typesystem AspectJetBrains MPS: Typesystem Aspect
JetBrains MPS: Typesystem Aspect
Mikhail Barash
 
JetBrains MPS: Editor Aspect
JetBrains MPS: Editor AspectJetBrains MPS: Editor Aspect
JetBrains MPS: Editor Aspect
Mikhail Barash
 
JetBrains MPS: Structure Aspect
JetBrains MPS: Structure AspectJetBrains MPS: Structure Aspect
JetBrains MPS: Structure Aspect
Mikhail Barash
 
Xtext: type checking and scoping
Xtext: type checking and scopingXtext: type checking and scoping
Xtext: type checking and scoping
Mikhail Barash
 
Xtext: code generation
Xtext: code generationXtext: code generation
Xtext: code generation
Mikhail Barash
 
Xtext: validation, quickfixes, custom formatting
Xtext: validation, quickfixes, custom formattingXtext: validation, quickfixes, custom formatting
Xtext: validation, quickfixes, custom formatting
Mikhail Barash
 
Xtend Programming Language
Xtend Programming LanguageXtend Programming Language
Xtend Programming Language
Mikhail Barash
 
Xtext: Eclipse Modeling Framework
Xtext: Eclipse Modeling FrameworkXtext: Eclipse Modeling Framework
Xtext: Eclipse Modeling Framework
Mikhail Barash
 
Xtext: writing a grammar
Xtext: writing a grammarXtext: writing a grammar
Xtext: writing a grammar
Mikhail Barash
 

More from Mikhail Barash (20)

MODELS 2020 Tutorial on MPS - Supplementary Material 8 - TextGen
MODELS 2020 Tutorial on MPS - Supplementary Material 8 - TextGen MODELS 2020 Tutorial on MPS - Supplementary Material 8 - TextGen
MODELS 2020 Tutorial on MPS - Supplementary Material 8 - TextGen
 
MODELS 2020 Tutorial on MPS - Supplementary Material 5 - Creating concept Ent...
MODELS 2020 Tutorial on MPS - Supplementary Material 5 - Creating concept Ent...MODELS 2020 Tutorial on MPS - Supplementary Material 5 - Creating concept Ent...
MODELS 2020 Tutorial on MPS - Supplementary Material 5 - Creating concept Ent...
 
MODELS 2020 Tutorial on MPS - Supplementary Material 3 - Creating editors for...
MODELS 2020 Tutorial on MPS - Supplementary Material 3 - Creating editors for...MODELS 2020 Tutorial on MPS - Supplementary Material 3 - Creating editors for...
MODELS 2020 Tutorial on MPS - Supplementary Material 3 - Creating editors for...
 
MODELS 2020 Tutorial on MPS - Supplementary Material 1 - Creating concept Entity
MODELS 2020 Tutorial on MPS - Supplementary Material 1 - Creating concept EntityMODELS 2020 Tutorial on MPS - Supplementary Material 1 - Creating concept Entity
MODELS 2020 Tutorial on MPS - Supplementary Material 1 - Creating concept Entity
 
Towards a mnemonic classification of software languages
Towards a mnemonic classification of software languagesTowards a mnemonic classification of software languages
Towards a mnemonic classification of software languages
 
Worst practices for domain-specific modelling
Worst practices for domain-specific modellingWorst practices for domain-specific modelling
Worst practices for domain-specific modelling
 
An ABC of JetBrains MPS
An ABC of JetBrains MPSAn ABC of JetBrains MPS
An ABC of JetBrains MPS
 
KernelF: a functional core for domain-specific languages in JetBrains MPS
KernelF: a functional core for domain-specific languages in JetBrains MPSKernelF: a functional core for domain-specific languages in JetBrains MPS
KernelF: a functional core for domain-specific languages in JetBrains MPS
 
Reflections on teaching JetBrains MPS within a university course
Reflections on teaching JetBrains MPS within a university courseReflections on teaching JetBrains MPS within a university course
Reflections on teaching JetBrains MPS within a university course
 
Language Workbench Language Wheel
Language Workbench Language WheelLanguage Workbench Language Wheel
Language Workbench Language Wheel
 
Design dimensions of DSLs
Design dimensions of DSLsDesign dimensions of DSLs
Design dimensions of DSLs
 
JetBrains MPS: Typesystem Aspect
JetBrains MPS: Typesystem AspectJetBrains MPS: Typesystem Aspect
JetBrains MPS: Typesystem Aspect
 
JetBrains MPS: Editor Aspect
JetBrains MPS: Editor AspectJetBrains MPS: Editor Aspect
JetBrains MPS: Editor Aspect
 
JetBrains MPS: Structure Aspect
JetBrains MPS: Structure AspectJetBrains MPS: Structure Aspect
JetBrains MPS: Structure Aspect
 
Xtext: type checking and scoping
Xtext: type checking and scopingXtext: type checking and scoping
Xtext: type checking and scoping
 
Xtext: code generation
Xtext: code generationXtext: code generation
Xtext: code generation
 
Xtext: validation, quickfixes, custom formatting
Xtext: validation, quickfixes, custom formattingXtext: validation, quickfixes, custom formatting
Xtext: validation, quickfixes, custom formatting
 
Xtend Programming Language
Xtend Programming LanguageXtend Programming Language
Xtend Programming Language
 
Xtext: Eclipse Modeling Framework
Xtext: Eclipse Modeling FrameworkXtext: Eclipse Modeling Framework
Xtext: Eclipse Modeling Framework
 
Xtext: writing a grammar
Xtext: writing a grammarXtext: writing a grammar
Xtext: writing a grammar
 

Recently uploaded

AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
Google
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
Łukasz Chruściel
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
Octavian Nadolu
 
Webinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for EmbeddedWebinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for Embedded
ICS
 
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsUI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
Peter Muessig
 
Oracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptxOracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptx
Remote DBA Services
 
KuberTENes Birthday Bash Guadalajara - IntroducciĂłn a Argo CD
KuberTENes Birthday Bash Guadalajara - IntroducciĂłn a Argo CDKuberTENes Birthday Bash Guadalajara - IntroducciĂłn a Argo CD
KuberTENes Birthday Bash Guadalajara - IntroducciĂłn a Argo CD
rodomar2
 
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise EditionWhy Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Envertis Software Solutions
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
Adele Miller
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
Deuglo Infosystem Pvt Ltd
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
Philip Schwarz
 
APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)
Boni GarcĂ­a
 
Revolutionizing Visual Effects Mastering AI Face Swaps.pdf
Revolutionizing Visual Effects Mastering AI Face Swaps.pdfRevolutionizing Visual Effects Mastering AI Face Swaps.pdf
Revolutionizing Visual Effects Mastering AI Face Swaps.pdf
Undress Baby
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
rickgrimesss22
 
E-commerce Application Development Company.pdf
E-commerce Application Development Company.pdfE-commerce Application Development Company.pdf
E-commerce Application Development Company.pdf
Hornet Dynamics
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
Alina Yurenko
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
Aftab Hussain
 
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeA Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
Aftab Hussain
 
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, FactsALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
Green Software Development
 

Recently uploaded (20)

AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
 
Webinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for EmbeddedWebinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for Embedded
 
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsUI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
 
Oracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptxOracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptx
 
KuberTENes Birthday Bash Guadalajara - IntroducciĂłn a Argo CD
KuberTENes Birthday Bash Guadalajara - IntroducciĂłn a Argo CDKuberTENes Birthday Bash Guadalajara - IntroducciĂłn a Argo CD
KuberTENes Birthday Bash Guadalajara - IntroducciĂłn a Argo CD
 
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise EditionWhy Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
 
APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)
 
Revolutionizing Visual Effects Mastering AI Face Swaps.pdf
Revolutionizing Visual Effects Mastering AI Face Swaps.pdfRevolutionizing Visual Effects Mastering AI Face Swaps.pdf
Revolutionizing Visual Effects Mastering AI Face Swaps.pdf
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
 
E-commerce Application Development Company.pdf
E-commerce Application Development Company.pdfE-commerce Application Development Company.pdf
E-commerce Application Development Company.pdf
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
 
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeA Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
 
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, FactsALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
 

Design concerns for concrete syntax

  • 1. Design concerns for concrete syntax
  • 2. Concrete syntax Quorum A. Stefik (University of Nevada), S. Siebert (Washington School of Medicine) integer a variable that holds whole values if doing something after verifying that something is true Boolean equals checking whether one thing is the same as another thing array a variable that references one or more values in a row class representing something in the computer that exists in the real world method a list of instructions that represents a tangible behavior general-purpose language public a part of a computer program that can be accessed by another program try attempting to run code that may not run correctly
  • 3. Concrete syntax Quorum notion non-programmerprogrammer score score integer numberinteger number real integer real 8.38 6.20 5.88 6.63 6.46 5.91 float numberdecimal number float decimal rational 6.81 6.79 6.68 6.70 6.43 6.07
  • 4. Concrete syntax Quorum Boolean conditionboolean bool binary logic binary 7.68 7.63 6.25 5.32 5.26 5.11 string charactersstring text charstring text charstring 7.48 7.23 7.21 6.37 6.15 5.89 notion non-programmerprogrammer score score
  • 5. Concrete syntax Quorum assignment x = 1024x = 1024 x is 1024 x =: 1024 x is 1024 x : 1024 7.87 5.77 5.45 6.90 6.32 5.51 type cast use t as Doghandle t as Dog use t as Dog cast(t, Dog) handle t as Dog apply Dog to t 6.15 5.99 5.85 5.90 5.82 5.46 in Java: (Dog)t notion non-programmerprogrammer score score
  • 6. Concrete syntax Quorum increment x = x + 1x = x + 1 x++ x += 1 x + 1 raise x 8.37 7.44 7.14 7.06 5.93 5.49 if statement ifif when whenever when require 8.37 7.49 6.86 6.89 6.59 6.46 notion non-programmerprogrammer score score
  • 7. Concrete syntax Quorum notion non-programmerprogrammer class objectobject structure class structure framework parent sourcesource parent foundation foundation parentsuper this selfself me myself myself me abstract blueprintprototype frame blueprint frame model return providereturn report provide report return constant permanentconstant const permanent constant const try checktest check try test on error static constantfixed constant static permanent fixed
  • 8. Viscosity of notations print ”text1” in bold print ”text2” in bold + italic print ”text3” in bold + red print ”text4” in bold introduce “styles” style MyStyle is bold using MyStyle { print “text1” print “text2” in italic print “text3” in red print “text4” } can be easily changed for all usages modify the style of several items at once no need to change the style of each individual item repetition viscosity repetition viscosity
  • 9. Viscosity of notations knock-on viscosity repetition viscosity scope viscosity violates internal constrains in the programchange in code their resolution violates further constraints change in size of input data requires changes to program structure Turbo Pascal didn’t allow for dynamic arrays single action within model requires many repetitive actions
  • 10. Writability and readability writable syntax users not necessarily readable tool support readable syntax can be written effectively can be read effectively concise have to type less editing support from IDE  writability of syntax code completion quickfixes a more concise syntax tables emphasize readability over writability
  • 11. Writability and readability APL “A Programming Language” central datatype multidimensional array to represent most functions and operatorsspecial graphic symbols very concise code IBM 2741 special keyboard
  • 12. Writability and readability MUMPS Massachusetts General Hospital Utility Multi- Programming System no reserved words abbreviations for concepts no priority of arithmetic operations keywords can be used as identifiers 2+3*10 50
  • 13. Writability and readability Piet esoteric language program that prints “Hello, world!”
  • 14. Learnability and effectiveness learnable syntax conceptsthe more effective syntax useful for novices can be “explored” by exploiting IDE support “press Ctrl+Space and the tool will tell you what you can type next” have direct meaning in the domain the easier to learn the language after learning the language users can express domain problems effectively
  • 15. Multiple notations different syntaxes for the same abstract syntax let users choose more learnable and verbosebeginners more effective syntaxexperienced easy to define several notations projectional editors
  • 16. IDE supportability SQL SELECT field1, field2 FROM table1 WHERE ... FROM table1 SELECT field1, field2 WHERE ... textual languages syntax can be supported by IDE code completion when typing this code, a user can’t get any support from IDE because table has not yet been specified a better syntax with respect to IDE support
  • 17. IDE supportability functional languages advantage in terms of IDE support function call in either case, function comes first f(a,b,c) a.f(b,c) alternative notation first argument before the dot (optional syntax) (f a b c) after the user types “a.” suggest all functions available for the type of acode completion much better explorability of the language