Scala: A Multi-Paradigmatic Language

undefined
 
COMP 4210
David J Stucki
 
Get Scala 4
th
 ed. text asap
Read chapters 1-3 for Monday (or asap)
Download, install, & become familiar with IntelliJ (with Scala addin)
 
You should join CS Club!!
 
4TH ANNUAL WOMEN
IN STEM PANEL
TUESDAY, JAN. 26
4:00-5:00 PM
 
Register via Handshake
https://otterbein.joinhandshake.com/
 
École Polytechnique Fédérale de Lausanne (EPFL) (in Lausanne, Switzerland)
Martin Odersky, in 2001, began working on a new language
He previously had worked on Generic Java (added to Java 5) and implemented the
GJ compiler that became the basis of the javac compiler
Scala was designed to be both 
functional
 and 
object-oriented
 from the beginning,
and was also designed as a 
statically typed language 
that would 
run on the JVM
.
A public version was released in 2004, with version 2 following in 2006.
The current version is 2.13.4
 
What does it mean to be 
object-oriented
?
Objects, classes, inheritance, polymorphism, overloading, encapsulation, info-hiding, ...
 
What does it mean to be 
functional
?
Mathematics, recursion, side-effects, first-class functions, lambda functions (literals), ...
 
What does it mean to be 
statically-typed
?
Type annotation, type inference, mutable & immutable, type-checking, ...
 
What does it mean to 
run on the JVM
?
Java bytecode (.class), interoperability, ‘run everywhere’, ...
 
Functional programming has its origins in the 1930s research of Alonzo Church and
the 1958 introduction of John McCarthy’s LISP language
Object-oriented programming has its origins in the 1960s language Simula and
Alan Kay’s Smalltalk of the 1970s
Historically these paradigms have been independent and largely incompatible
Modern languages such as Ruby & Python have incorporated aspects of both (and
Java and Scheme have both evolved to include both), but none of these fully
integrated the two paradigms
Scala is fully object-oriented: every value is an object
Scala is fully functional: every function is a value (including methods)
 
The language design incorporated modern abstractions that allow the language to
be easily extended in ways that make new features ‘look and feel’ like they are
built in syntactically even though they are not.
Methods can be named with non-traditional non-identifier symbols and be defined
to use operator syntax
In fact, 
every
 operator in Scala is really a method
Ex: 
recipient ! msg 
(see chapter 1)
Ex: 
mywhile (i < 1) {
...
New types can also be cleanly integrated into Scala’s natural syntax
The language can ‘grow’ organically without becoming cumbersome.
 
Runs on the JVM
 
(Compatible)
Can use any Java code in Scala
Almost as fast as Java (within 10%)
Much shorter code
 
(Concise)
Odersky reports 50% reduction in most code over Java
Local type inference
Fewer errors
  
(Safe)
No Null Pointer problems
More flexibility
 
(Fun)
As many public classes per source file as you want
Operator overloading
in 
Java 1.5:
 
Pair p = 
new
 Pair<Integer, String>(1, "Scala");
in 
Scala:
val
 p = 
new
 MyPair(1, "scala");
 
Let’s play around with it a bit...
Slide Note
Embed
Share

Scala is a powerful language designed by Martin Odersky that seamlessly blends object-oriented and functional programming paradigms. With origins in the 1930s and a release in 2004, Scala runs on the JVM, offering features like type inference, first-class functions, and full object orientation. Its multi-paradigmatic nature sets it apart, integrating both functional and object-oriented approaches, making it a versatile choice for modern software development.

  • Scala
  • Programming Language
  • Multi-Paradigmatic
  • Object-Oriented
  • Functional Programming

Uploaded on Sep 24, 2024 | 0 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. Download presentation by click this link. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

E N D

Presentation Transcript


  1. INTRODUCTION TO SCALA COMP 4210 David J Stucki

  2. ALERTS Get Scala 4thed. text asap Read chapters 1-3 for Monday (or asap) Download, install, & become familiar with IntelliJ (with Scala addin) You should join CS Club!!

  3. Panelists: 4TH ANNUAL WOMEN IN STEM PANEL TUESDAY, JAN. 26 4:00-5:00 PM Carol Ventresca, President & CEO, Syngenics Reagan Nemec, Virtual Maturation Engineer, Honda Sarah Hoagland, Tax Manager, SchneiderDowns Allie Brackbill, Customer Support Manager, CEM Corp. Dr. Nita Seibel, Head of the Pediatric Solid Tumor Therapeutics, National Cancer Institute Alexis McQueen, Software Engineer, JP Morgan Chase Register via Handshake https://otterbein.joinhandshake.com/ Moderated by Dr. Elena Caruthers, Assistant Professor, Engineering

  4. HISTORY cole Polytechnique F d rale de Lausanne (EPFL) (in Lausanne,Switzerland) Martin Odersky, in 2001, began working on a new language He previously had worked on Generic Java (added to Java 5) and implemented the GJ compiler that became the basis of the javac compiler Scala was designed to be both functional and object-oriented from the beginning, and was also designed as a statically typed language that would run on the JVM. A public version was released in 2004, with version 2 following in 2006. The current version is 2.13.4

  5. SCALA BY DESIGN What does it mean to be object-oriented? Objects, classes, inheritance, polymorphism, overloading, encapsulation, info-hiding, ... What does it mean to be functional? Mathematics, recursion, side-effects, first-class functions, lambda functions (literals), ... What does it mean to be statically-typed? Type annotation, type inference, mutable & immutable, type-checking, ... What does it mean to run on the JVM? Java bytecode (.class), interoperability, run everywhere , ...

  6. MULTI-PARADIGMATIC Functional programming has its origins in the 1930s research of Alonzo Church and the 1958 introduction of John McCarthy s LISP language Object-oriented programming has its origins in the 1960s language Simula and Alan Kay s Smalltalk of the 1970s Historically these paradigms have been independent and largely incompatible Modern languages such as Ruby & Python have incorporated aspects of both (and Java and Scheme have both evolved to include both), but none of these fully integrated the two paradigms Scala is fully object-oriented: every value is an object Scala is fully functional: every function is a value (including methods)

  7. SCALA...BLE The language design incorporated modern abstractions that allow the language to be easily extended in ways that make new features look and feel like they are built in syntactically even though they are not. Methods can be named with non-traditional non-identifier symbols and be defined to use operator syntax In fact, every operator in Scala is really a method Ex: recipient ! msg (see chapter 1) Ex: mywhile (i < 1) {... New types can also be cleanly integrated into Scala s natural syntax The language can grow organically without becoming cumbersome.

  8. WHY SCALA? (IF YOURE NOT ALREADY CONVINCED...) Runs on the JVM Can use any Java code in Scala Almost as fast as Java (within 10%) (Compatible) Much shorter code Odersky reports 50% reduction in most code over Java Local type inference (Safe) No Null Pointer problems (Fun) As many public classes per source file as you want Operator overloading (Concise) Fewer errors in Java 1.5: Pair p = new Pair<Integer, String>(1, "Scala"); More flexibility in Scala: val p = new MyPair(1, "scala");

  9. DEMO Let s play around with it a bit...

More Related Content

giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#